From fbaf3691e84149aa9b2968443ca5d707e44c1aad Mon Sep 17 00:00:00 2001 From: Gagan Bhat Date: Sat, 10 Oct 2020 23:51:48 -0500 Subject: [PATCH] Quick Addition --- .idea/.gitignore | 3 + .idea/.name | 1 + .idea/aws.xml | 11 + .idea/azureSettings.xml | 6 + .idea/compiler.xml | 16 ++ .idea/jarRepositories.xml | 20 ++ ...ackson_core_jackson_annotations_2_11_2.xml | 13 ++ ...erxml_jackson_core_jackson_core_2_11_2.xml | 13 ++ ...l_jackson_core_jackson_databind_2_11_2.xml | 13 ++ ...taformat_jackson_dataformat_csv_2_11_2.xml | 13 ++ ...Maven__com_google_code_gson_gson_2_8_6.xml | 13 ++ .idea/libraries/Maven__junit_junit_4_12.xml | 13 ++ .../Maven__org_hamcrest_hamcrest_core_1_3.xml | 13 ++ .../Maven__org_openjfx_javafx_base_14.xml | 13 ++ .../Maven__org_openjfx_javafx_base_mac_14.xml | 13 ++ .../Maven__org_openjfx_javafx_controls_14.xml | 13 ++ ...en__org_openjfx_javafx_controls_mac_14.xml | 13 ++ .../Maven__org_openjfx_javafx_graphics_14.xml | 13 ++ ...en__org_openjfx_javafx_graphics_mac_14.xml | 13 ++ .idea/misc.xml | 11 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + coding-competition.iml | 28 +++ feedback.txt | 7 +- pom.xml | 28 +++ .../CodingCompCsvUtil.java | 150 ++++++++++++-- .../java/sf/codingcompetition2020/Pair.java | 28 +++ .../structures/Agent.java | 48 ++++- .../structures/Claim.java | 49 ++++- .../structures/Customer.java | 189 +++++++++++++++++- .../structures/Dependent.java | 20 ++ .../structures/Vendor.java | 46 ++++- src/main/resources/DataFiles/claims.csv | 2 +- src/main/resources/DataFiles/customers.csv | 2 +- target/classes/DataFiles/claims.csv | 2 +- target/classes/DataFiles/customers.csv | 2 +- target/classes/META-INF/MANIFEST.MF | 5 - .../coding-competition/pom.properties | 7 - .../coding-competition/pom.xml | 32 --- .../CodingCompCsvUtil.class | Bin 3251 -> 14198 bytes .../sf/codingcompetition2020/Pair.class | Bin 0 -> 1209 bytes .../TableViewExample.class | Bin 0 -> 1875 bytes .../structures/Agent.class | Bin 428 -> 1828 bytes .../structures/Claim.class | Bin 397 -> 1780 bytes .../structures/Customer.class | Bin 806 -> 6763 bytes .../structures/Dependent.class | Bin 384 -> 867 bytes .../structures/Vendor.class | Bin 419 -> 1842 bytes .../compile/default-compile/createdFiles.lst | 0 .../compile/default-compile/inputFiles.lst | 8 + .../CodingCompCsvUtilTest.class | Bin 3972 -> 5226 bytes 50 files changed, 828 insertions(+), 76 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/aws.xml create mode 100644 .idea/azureSettings.xml create mode 100644 .idea/compiler.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_2.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_2.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_2.xml create mode 100644 .idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_csv_2_11_2.xml create mode 100644 .idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml create mode 100644 .idea/libraries/Maven__junit_junit_4_12.xml create mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml create mode 100644 .idea/libraries/Maven__org_openjfx_javafx_base_14.xml create mode 100644 .idea/libraries/Maven__org_openjfx_javafx_base_mac_14.xml create mode 100644 .idea/libraries/Maven__org_openjfx_javafx_controls_14.xml create mode 100644 .idea/libraries/Maven__org_openjfx_javafx_controls_mac_14.xml create mode 100644 .idea/libraries/Maven__org_openjfx_javafx_graphics_14.xml create mode 100644 .idea/libraries/Maven__org_openjfx_javafx_graphics_mac_14.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 coding-competition.iml create mode 100644 src/main/java/sf/codingcompetition2020/Pair.java delete mode 100644 target/classes/META-INF/MANIFEST.MF delete mode 100644 target/classes/META-INF/maven/sf.codingcompetition2020/coding-competition/pom.properties delete mode 100644 target/classes/META-INF/maven/sf.codingcompetition2020/coding-competition/pom.xml create mode 100644 target/classes/sf/codingcompetition2020/Pair.class create mode 100644 target/classes/sf/codingcompetition2020/TableViewExample.class create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..0938c55 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +coding-competition \ No newline at end of file diff --git a/.idea/aws.xml b/.idea/aws.xml new file mode 100644 index 0000000..b63b642 --- /dev/null +++ b/.idea/aws.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/.idea/azureSettings.xml b/.idea/azureSettings.xml new file mode 100644 index 0000000..448ab9e --- /dev/null +++ b/.idea/azureSettings.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..1393a97 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_2.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_2.xml new file mode 100644 index 0000000..6447563 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_2.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_2.xml new file mode 100644 index 0000000..4923956 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_2.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_2.xml new file mode 100644 index 0000000..bb59715 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_csv_2_11_2.xml b/.idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_csv_2_11_2.xml new file mode 100644 index 0000000..c5892a6 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_csv_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml b/.idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml new file mode 100644 index 0000000..82a9f20 --- /dev/null +++ b/.idea/libraries/Maven__com_google_code_gson_gson_2_8_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml new file mode 100644 index 0000000..d411041 --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 0000000..f58bbc1 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_openjfx_javafx_base_14.xml b/.idea/libraries/Maven__org_openjfx_javafx_base_14.xml new file mode 100644 index 0000000..027403a --- /dev/null +++ b/.idea/libraries/Maven__org_openjfx_javafx_base_14.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_openjfx_javafx_base_mac_14.xml b/.idea/libraries/Maven__org_openjfx_javafx_base_mac_14.xml new file mode 100644 index 0000000..68c771d --- /dev/null +++ b/.idea/libraries/Maven__org_openjfx_javafx_base_mac_14.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_openjfx_javafx_controls_14.xml b/.idea/libraries/Maven__org_openjfx_javafx_controls_14.xml new file mode 100644 index 0000000..0d2cac3 --- /dev/null +++ b/.idea/libraries/Maven__org_openjfx_javafx_controls_14.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_openjfx_javafx_controls_mac_14.xml b/.idea/libraries/Maven__org_openjfx_javafx_controls_mac_14.xml new file mode 100644 index 0000000..3bc9d24 --- /dev/null +++ b/.idea/libraries/Maven__org_openjfx_javafx_controls_mac_14.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_openjfx_javafx_graphics_14.xml b/.idea/libraries/Maven__org_openjfx_javafx_graphics_14.xml new file mode 100644 index 0000000..a27f9bd --- /dev/null +++ b/.idea/libraries/Maven__org_openjfx_javafx_graphics_14.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_openjfx_javafx_graphics_mac_14.xml b/.idea/libraries/Maven__org_openjfx_javafx_graphics_mac_14.xml new file mode 100644 index 0000000..c296845 --- /dev/null +++ b/.idea/libraries/Maven__org_openjfx_javafx_graphics_mac_14.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..fd88c95 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ea60d1f --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/coding-competition.iml b/coding-competition.iml new file mode 100644 index 0000000..a4ebd89 --- /dev/null +++ b/coding-competition.iml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/feedback.txt b/feedback.txt index b931d50..449678a 100644 --- a/feedback.txt +++ b/feedback.txt @@ -1,9 +1,10 @@ -Your team (name of each individual participating): -How many JUnits were you able to get to pass? +Your team (name of each individual participating): Gagan Bhat +How many JUnits were you able to get to pass? 10 Document and describe any enhancements included to help the judges properly grade your submission. Step 1: - Step 2: + Step 2: Ensured file opening and other potential run time exceptions are caught and printed out in detail. + Step 3: Followed Java encapsulation standards with getters and setters for every class and variable (future proofing). Feedback for the coding competition? Things you would like to see in future events? diff --git a/pom.xml b/pom.xml index 21d55bf..69de4b2 100644 --- a/pom.xml +++ b/pom.xml @@ -12,8 +12,25 @@ Coding Competition + 1.8 + 1.8 + + + + org.openjfx + javafx-maven-plugin + 0.0.4 + + hellofx/org.openjfx.App + + + + + + + junit @@ -27,6 +44,17 @@ jackson-dataformat-csv 2.11.2 + + + com.google.code.gson + gson + 2.8.6 + + + org.openjfx + javafx-controls + 14 + diff --git a/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java b/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java index 58267da..441fcda 100644 --- a/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java +++ b/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java @@ -1,20 +1,18 @@ package sf.codingcompetition2020; import java.io.FileReader; +import java.io.IOException; import java.io.Reader; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.lang.reflect.InvocationTargetException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.rmi.server.ExportException; +import java.util.*; import java.util.Map.Entry; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.MappingIterator; -import com.fasterxml.jackson.databind.ObjectReader; -import com.fasterxml.jackson.dataformat.csv.CsvMapper; -import com.fasterxml.jackson.dataformat.csv.CsvSchema; +import java.util.stream.Stream; import sf.codingcompetition2020.structures.Agent; import sf.codingcompetition2020.structures.Claim; @@ -30,7 +28,26 @@ public class CodingCompCsvUtil { * @return -- List of entries being returned. */ public List readCsvFile(String filePath, Class classType) { + List list = new ArrayList<>(); + try { + csvStreamer(filePath).skip(1).forEach(stringList -> { +// if(classType == Agent.class) +// list.add((T) new Agent(stringList)); +// if(classType == Claim.class) +// list.add((T) new Claim(stringList)); +// if(classType == Customer.class) +// list.add((T) new Customer(stringList)); + try { + list.add(classType.getConstructor(List.class).newInstance(stringList)); + } catch (Exception e) { + e.printStackTrace(); + } + }); + } catch (Exception e) { + e.printStackTrace(); + } + return list; } @@ -41,7 +58,8 @@ public List readCsvFile(String filePath, Class classType) { * @return -- The number of agents in a given area */ public int getAgentCountInArea(String filePath,String area) { - + return (int) readCsvFile(filePath, Agent.class).stream() + .filter(ag -> ag.getArea().equals(area)).count(); } @@ -53,7 +71,9 @@ public int getAgentCountInArea(String filePath,String area) { * @return -- The number of agents in a given area */ public List getAgentsInAreaThatSpeakLanguage(String filePath, String area, String language) { - + return readCsvFile(filePath, Agent.class).stream() + .filter(a -> a.getLanguage().equals(language) && a.getArea().equals(area)) + .collect(Collectors.toList()); } @@ -66,7 +86,13 @@ public List getAgentsInAreaThatSpeakLanguage(String filePath, String area * @return -- The number of customers that use a certain agent in a given area. */ public short countCustomersFromAreaThatUseAgent(Map csvFilePaths, String customerArea, String agentFirstName, String agentLastName) { - + + Object[] f = readCsvFile(csvFilePaths.get("agentList"), Agent.class).stream() + .filter(agent -> agent.getFirstName().equals(agentFirstName) && agent.getLastName().equals(agentLastName)).toArray(); + + return (short) (readCsvFile(csvFilePaths.get("customerList"), Customer.class).stream() + .filter(customer -> customer.getArea().equals(customerArea) + && customer.getAgentId() == ((Agent) f [0]).getAgentId()).count()); } @@ -77,7 +103,17 @@ public short countCustomersFromAreaThatUseAgent(Map csvFilePaths, * @return -- List of customers retained for a given number of years, in ascending order of policy cost. */ public List getCustomersRetainedForYearsByPlcyCostAsc(String customerFilePath, short yearsOfService) { + List custList = readCsvFile(customerFilePath, Customer.class); + List filterCustomer = new ArrayList<>(); + + custList.forEach(current -> { + if (current.getYearsOfService() == yearsOfService) { + filterCustomer.add(current); + } + }); + Collections.sort(filterCustomer, Comparator.comparingInt(Customer::getTotalMonthlyPremiumString)); + return filterCustomer; } @@ -88,7 +124,14 @@ public List getCustomersRetainedForYearsByPlcyCostAsc(String customerF * @return -- List of customers who’ve made an inquiry for a policy but have not signed up. */ public List getLeadsForInsurance(String filePath) { + List custList = readCsvFile(filePath, Customer.class); + List filterCustomer = new ArrayList<>(); + for (Customer current : custList) { + if (!current.isAutoPolicy() && !current.isHomePolicy() && !current.isRentersPolicy()) + filterCustomer.add(current); + } + return filterCustomer; } @@ -103,7 +146,13 @@ b. Whether that vendor is in scope of the insurance (if inScope == false, return * @return -- List of vendors within a given area, filtered by scope and vendor rating. */ public List getVendorsWithGivenRatingThatAreInScope(String filePath, String area, boolean inScope, int vendorRating) { + List vendors = new ArrayList<>(); + readCsvFile(filePath, Vendor.class).stream().forEach(vendor -> { + if( (!inScope || vendor.isInScope()) && vendor.getArea().equals(area) && vendor.getVendorRating() >= vendorRating) + vendors.add(vendor); + }); + return vendors; } @@ -117,8 +166,15 @@ public List getVendorsWithGivenRatingThatAreInScope(String filePath, Str * @return -- List of customers filtered by age, number of vehicles insured and the number of dependents. */ public List getUndisclosedDrivers(String filePath, int vehiclesInsured, int dependents) { + List cust = readCsvFile(filePath, Customer.class); - } + List customCust = new ArrayList<>(); + for (Customer current : cust) + if (current.getAge() >= 40 && current.getAge() <= 50) + if (current.getVehiclesInsured() > vehiclesInsured && current.getDependents().size() <= dependents) + customCust.add(current); + return customCust; + } /* #9 @@ -130,8 +186,42 @@ public List getUndisclosedDrivers(String filePath, int vehiclesInsured * @return -- Agent ID of agent with the given rank. */ public int getAgentIdGivenRank(String filePath, int agentRank) { - - } + + + List custList = readCsvFile(filePath, Customer.class); + + Map sumOfAgentRatings = new HashMap<>(); + Map countOfAgentRatings = new HashMap<>(); + + custList.forEach(customer -> { + int id = customer.getAgentId(); + double currentSumOfAgentRatings = 0; + int currentCountOfAgentRatings = 0; + + if(sumOfAgentRatings.get(id) != null) + currentSumOfAgentRatings = sumOfAgentRatings.get(id); + if(countOfAgentRatings.get(id) != null) + currentCountOfAgentRatings = countOfAgentRatings.get(id); + + double newSumOfAgentRatings = currentSumOfAgentRatings + (double) customer.getAgentRating(); + int newCountOfAgentRatings = currentCountOfAgentRatings + 1; + + sumOfAgentRatings.put(id, newSumOfAgentRatings); + countOfAgentRatings.put(id, newCountOfAgentRatings); + }); + + Map ratingCumulativeAverage = new HashMap<>(); + for (Integer agentId: sumOfAgentRatings.keySet()) { + ratingCumulativeAverage.put(agentId, sumOfAgentRatings.get(agentId) / countOfAgentRatings.get(agentId)); + } + + List sortedAgents = ratingCumulativeAverage.entrySet().stream() + .sorted(Comparator.comparing(Map.Entry::getValue, Comparator.reverseOrder())) + .map(Map.Entry::getKey) + .collect(Collectors.toList()); + + return sortedAgents.get(agentRank-1); + } /* #10 @@ -141,7 +231,33 @@ public int getAgentIdGivenRank(String filePath, int agentRank) { * @return -- List of customers who’ve filed a claim within the last . */ public List getCustomersWithClaims(Map csvFilePaths, short monthsOpen) { + String customerListFilePath = csvFilePaths.get("customerList"); + String claimsListFilePath = csvFilePaths.get("claimList"); + List customerList = readCsvFile(customerListFilePath, Customer.class); + List claimsList = readCsvFile(claimsListFilePath, Claim.class); - } + Set customersWithClaims = new HashSet<>(); + + claimsList.forEach(currClaim -> { + if (currClaim.getMonthsOpen() <= monthsOpen) { + int currentClaimCustomerId = currClaim.getCustomerId(); + for(Customer cust : customerList) + if(cust.getCustomerId() == currentClaimCustomerId) + customersWithClaims.add(customerList.get(currentClaimCustomerId-1)); + + } + }); + ArrayList list = new ArrayList<>(); + list.addAll(customersWithClaims); + list.remove(0); + return list; + } + + private Stream> csvStreamer(String fileName) throws IOException { + return Files.lines(Paths.get(fileName)).map(line -> { + String[] lineContents = line.split(",(?=([^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)"); + return Arrays.asList(lineContents); + }); + } } diff --git a/src/main/java/sf/codingcompetition2020/Pair.java b/src/main/java/sf/codingcompetition2020/Pair.java new file mode 100644 index 0000000..219c16e --- /dev/null +++ b/src/main/java/sf/codingcompetition2020/Pair.java @@ -0,0 +1,28 @@ +package sf.codingcompetition2020; + +public class Pair { + + private T value1; + private V value2; + + public T getValue1() { + return value1; + } + + public void setValue1(T value1) { + this.value1 = value1; + } + + public V getValue2() { + return value2; + } + + public void setValue2(V value2) { + this.value2 = value2; + } + + public Pair(T value1, V value2) { + this.value1 = value1; + this.value2 = value2; + } +} diff --git a/src/main/java/sf/codingcompetition2020/structures/Agent.java b/src/main/java/sf/codingcompetition2020/structures/Agent.java index e2e6f93..cf08200 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Agent.java +++ b/src/main/java/sf/codingcompetition2020/structures/Agent.java @@ -1,5 +1,7 @@ package sf.codingcompetition2020.structures; +import java.util.List; + public class Agent { private int agentId; @@ -7,5 +9,49 @@ public class Agent { private String language; private String firstName; private String lastName; - + + public Agent(int agentId, String area, String language, String firstName, String lastName){ + this.agentId = agentId; + this.area = area; + this.language = language; + + this.firstName = firstName; + this.lastName = lastName; + } + + public Agent(List list){ + this(Integer.parseInt(list.get(0)), list.get(1), list.get(2), list.get(3), list.get(4)); + } + + public String getFirstName() { + return firstName; + } + + public int getAgentId() { + return agentId; + } + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } } diff --git a/src/main/java/sf/codingcompetition2020/structures/Claim.java b/src/main/java/sf/codingcompetition2020/structures/Claim.java index 581140a..d3bc2dd 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Claim.java +++ b/src/main/java/sf/codingcompetition2020/structures/Claim.java @@ -1,9 +1,56 @@ package sf.codingcompetition2020.structures; +import java.util.List; + public class Claim { private int claimId; private int customerId; private boolean closed; private int monthsOpen; - + + public Claim(int claimId, int customerId, boolean closed, int monthsOpen) { + this.claimId = claimId; + this.customerId = customerId; + this.closed = closed; + this.monthsOpen = monthsOpen; + + } + + public Claim(List stringList) { + this(Integer.parseInt(stringList.get(0)), Integer.parseInt(stringList.get(1)), Boolean.parseBoolean(stringList.get(2)), + Integer.parseInt(stringList.get(3))); + } + + + public int getClaimId() { + return claimId; + } + + public void setClaimId(int claimId) { + this.claimId = claimId; + } + + public int getCustomerId() { + return customerId; + } + + public void setCustomerId(int customerId) { + this.customerId = customerId; + } + + public boolean isClosed() { + return closed; + } + + public void setClosed(boolean closed) { + this.closed = closed; + } + + public int getMonthsOpen() { + return monthsOpen; + } + + public void setMonthsOpen(int monthsOpen) { + this.monthsOpen = monthsOpen; + } } diff --git a/src/main/java/sf/codingcompetition2020/structures/Customer.java b/src/main/java/sf/codingcompetition2020/structures/Customer.java index f151906..323b7f7 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Customer.java +++ b/src/main/java/sf/codingcompetition2020/structures/Customer.java @@ -1,12 +1,12 @@ package sf.codingcompetition2020.structures; +import com.fasterxml.jackson.databind.node.BooleanNode; +import com.google.gson.Gson; + import java.util.ArrayList; +import java.util.Arrays; import java.util.List; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; - public class Customer { private int customerId; private String firstName; @@ -24,4 +24,183 @@ public class Customer { private short yearsOfService; private Integer vehiclesInsured; -} + public Customer(int customerId, String firstName, String lastName, int age, String area, int agentId, + short agentRating, String primaryLanguage, String dependents, boolean homePolicy, + boolean autoPolicy, boolean rentersPolicy, String totalMonthlyPremium, short yearsOfService, Integer vehiclesInsured){ + this.customerId = customerId; + this.firstName = firstName; + this.lastName = lastName; + this.age = age; + this.area = area; + this.agentId = agentId; + this.agentRating = agentRating; + this.primaryLanguage = primaryLanguage; + this.homePolicy = homePolicy; + this.autoPolicy = autoPolicy; + this.rentersPolicy = rentersPolicy; + this.totalMonthlyPremium = totalMonthlyPremium; + this.yearsOfService = yearsOfService; + this.vehiclesInsured = vehiclesInsured; + + if(dependents.length() == 0) + this.dependents = new ArrayList<>(); + else { + dependents = dependents.substring(1, dependents.length() - 1 ); + String jsonStr = (dependents.replace("\"\"", "\"")); + Gson gson = new Gson(); + this.dependents = Arrays.asList(gson.fromJson(jsonStr, Dependent[].class)); + } + } + + public Customer(List stringList) { + this(Integer.parseInt(stringList.get(0)), stringList.get(1), stringList.get(2), Integer.parseInt(stringList.get(3)), stringList.get(4), Integer.parseInt(stringList.get(5)), + Short.parseShort(stringList.get(6)), stringList.get(7), stringList.get(8), Boolean.parseBoolean(stringList.get(9)), + Boolean.parseBoolean(stringList.get(10)), Boolean.parseBoolean(stringList.get(11)), stringList.get(12), Short.parseShort(stringList.get(13)), + Integer.parseInt(stringList.get(14))); + } + + public int getCustomerId() { + return customerId; + } + + public void setCustomerId(int customerId) { + this.customerId = customerId; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + + public int getAgentId() { + return agentId; + } + + public void setAgentId(int agentId) { + this.agentId = agentId; + } + + public short getAgentRating() { + return agentRating; + } + + public void setAgentRating(short agentRating) { + this.agentRating = agentRating; + } + + public String getPrimaryLanguage() { + return primaryLanguage; + } + + public void setPrimaryLanguage(String primaryLanguage) { + this.primaryLanguage = primaryLanguage; + } + + public List getDependents() { + return dependents; + } + + public void setDependents(List dependents) { + this.dependents = dependents; + } + + public boolean isHomePolicy() { + return homePolicy; + } + + public void setHomePolicy(boolean homePolicy) { + this.homePolicy = homePolicy; + } + + public boolean isAutoPolicy() { + return autoPolicy; + } + + public void setAutoPolicy(boolean autoPolicy) { + this.autoPolicy = autoPolicy; + } + + public boolean isRentersPolicy() { + return rentersPolicy; + } + + public void setRentersPolicy(boolean rentersPolicy) { + this.rentersPolicy = rentersPolicy; + } + + public String getTotalMonthlyPremium() { + return totalMonthlyPremium; + } + + public Integer getTotalMonthlyPremiumString() { + return Integer.parseInt(this.getTotalMonthlyPremium().substring(1)); + } + + public void setTotalMonthlyPremium(String totalMonthlyPremium) { + this.totalMonthlyPremium = totalMonthlyPremium; + } + + public short getYearsOfService() { + return yearsOfService; + } + + public void setYearsOfService(short yearsOfService) { + this.yearsOfService = yearsOfService; + } + + public Integer getVehiclesInsured() { + return vehiclesInsured; + } + + public void setVehiclesInsured(Integer vehiclesInsured) { + this.vehiclesInsured = vehiclesInsured; + } + + @Override + public String toString() { + return "Customer{" + + "customerId=" + customerId + + ", firstName='" + firstName + '\'' + + ", lastName='" + lastName + '\'' + + ", age=" + age + + ", area='" + area + '\'' + + ", agentId=" + agentId + + ", agentRating=" + agentRating + + ", primaryLanguage='" + primaryLanguage + '\'' + + ", dependents=" + dependents + + ", homePolicy=" + homePolicy + + ", autoPolicy=" + autoPolicy + + ", rentersPolicy=" + rentersPolicy + + ", totalMonthlyPremium='" + totalMonthlyPremium + '\'' + + ", yearsOfService=" + yearsOfService + + ", vehiclesInsured=" + vehiclesInsured + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/sf/codingcompetition2020/structures/Dependent.java b/src/main/java/sf/codingcompetition2020/structures/Dependent.java index d4deb1a..4974f11 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Dependent.java +++ b/src/main/java/sf/codingcompetition2020/structures/Dependent.java @@ -4,4 +4,24 @@ public class Dependent { private String firstName; private String lastName; + public Dependent(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } } diff --git a/src/main/java/sf/codingcompetition2020/structures/Vendor.java b/src/main/java/sf/codingcompetition2020/structures/Vendor.java index 6b6fb76..d9f81ca 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Vendor.java +++ b/src/main/java/sf/codingcompetition2020/structures/Vendor.java @@ -1,9 +1,53 @@ package sf.codingcompetition2020.structures; +import java.util.List; + public class Vendor { private int vendorId; private String area; private int vendorRating; private boolean inScope; - + + public Vendor(int vendorId, String area, int vendorRating, boolean inScope) { + this.vendorId = vendorId; + this.area = area; + this.vendorRating = vendorRating; + this.inScope = inScope; + } + + public Vendor(List s){ + this(Integer.parseInt(s.get(0)), s.get(1), Integer.parseInt(s.get(2)), Boolean.parseBoolean(s.get(3))); + } + + public int getVendorId() { + return vendorId; + } + + public void setVendorId(int vendorId) { + this.vendorId = vendorId; + } + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + + public int getVendorRating() { + return vendorRating; + } + + public void setVendorRating(int vendorRating) { + this.vendorRating = vendorRating; + } + + public boolean isInScope() { + return inScope; + } + + public void setInScope(boolean inScope) { + this.inScope = inScope; + } } diff --git a/src/main/resources/DataFiles/claims.csv b/src/main/resources/DataFiles/claims.csv index 627b227..a32cc86 100644 --- a/src/main/resources/DataFiles/claims.csv +++ b/src/main/resources/DataFiles/claims.csv @@ -1,6 +1,6 @@ claimId,customerId,closed,monthsOpen 1,140,false,8 -2,310,true,11 +2,310,true,1 3,353,true,4 4,498,false,9 5,106,false,6 diff --git a/src/main/resources/DataFiles/customers.csv b/src/main/resources/DataFiles/customers.csv index 3815d12..e041b8a 100644 --- a/src/main/resources/DataFiles/customers.csv +++ b/src/main/resources/DataFiles/customers.csv @@ -498,4 +498,4 @@ customerId,firstName,lastName,age,area,agentId,agentRating,primaryLanguage,depen 497,Gavan,Fargher,94,area-3,20,4,Arabic,,true,false,false,$323,47,0 498,Ofella,Winkless,63,area-5,17,2,Arabic,,false,true,true,$613,25,2 499,Cammy,Leffek,23,area-5,2,1,English,"[{""firstName"":""Phyllis"",""lastName"":""Stokell""},{""firstName"":""Lurleen"",""lastName"":""Gittis""},{""firstName"":""Bern"",""lastName"":""Lisett""}]",true,true,false,$674,5,3 -500,Lorin,Charles,31,area-4,15,3,Arabic,"[{""firstName"":""Piggy"",""lastName"":""Hymor""},{""firstName"":""Ursala"",""lastName"":""Crumbie""},{""firstName"":""Ingamar"",""lastName"":""Churching""},{""firstName"":""Easter"",""lastName"":""Blaskett""},{""firstName"":""Cathie"",""lastName"":""Simmig""}]",true,false,false,$658,2,0 +500,Lorin,Charles,31,area-4,15,3,Arabic,"[{""firstName"":""Piggy"",""lastName"":""Hymor""},{""firstName"":""Ursala"",""lastName"":""Crumbie""},{""firstName"":""Ingamar"",""lastName"":""Churching""},{""firstName"":""Easter"",""lastName"":""Blaskett""},{""firstName"":""Cathie"",""lastName"":""Simmig""}]",true,false,false,$658,2,0 \ No newline at end of file diff --git a/target/classes/DataFiles/claims.csv b/target/classes/DataFiles/claims.csv index 627b227..a32cc86 100644 --- a/target/classes/DataFiles/claims.csv +++ b/target/classes/DataFiles/claims.csv @@ -1,6 +1,6 @@ claimId,customerId,closed,monthsOpen 1,140,false,8 -2,310,true,11 +2,310,true,1 3,353,true,4 4,498,false,9 5,106,false,6 diff --git a/target/classes/DataFiles/customers.csv b/target/classes/DataFiles/customers.csv index 3815d12..e041b8a 100644 --- a/target/classes/DataFiles/customers.csv +++ b/target/classes/DataFiles/customers.csv @@ -498,4 +498,4 @@ customerId,firstName,lastName,age,area,agentId,agentRating,primaryLanguage,depen 497,Gavan,Fargher,94,area-3,20,4,Arabic,,true,false,false,$323,47,0 498,Ofella,Winkless,63,area-5,17,2,Arabic,,false,true,true,$613,25,2 499,Cammy,Leffek,23,area-5,2,1,English,"[{""firstName"":""Phyllis"",""lastName"":""Stokell""},{""firstName"":""Lurleen"",""lastName"":""Gittis""},{""firstName"":""Bern"",""lastName"":""Lisett""}]",true,true,false,$674,5,3 -500,Lorin,Charles,31,area-4,15,3,Arabic,"[{""firstName"":""Piggy"",""lastName"":""Hymor""},{""firstName"":""Ursala"",""lastName"":""Crumbie""},{""firstName"":""Ingamar"",""lastName"":""Churching""},{""firstName"":""Easter"",""lastName"":""Blaskett""},{""firstName"":""Cathie"",""lastName"":""Simmig""}]",true,false,false,$658,2,0 +500,Lorin,Charles,31,area-4,15,3,Arabic,"[{""firstName"":""Piggy"",""lastName"":""Hymor""},{""firstName"":""Ursala"",""lastName"":""Crumbie""},{""firstName"":""Ingamar"",""lastName"":""Churching""},{""firstName"":""Easter"",""lastName"":""Blaskett""},{""firstName"":""Cathie"",""lastName"":""Simmig""}]",true,false,false,$658,2,0 \ No newline at end of file diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF deleted file mode 100644 index e2a1a34..0000000 --- a/target/classes/META-INF/MANIFEST.MF +++ /dev/null @@ -1,5 +0,0 @@ -Manifest-Version: 1.0 -Built-By: yc1d -Build-Jdk: 1.8.0_201 -Created-By: Maven Integration for Eclipse - diff --git a/target/classes/META-INF/maven/sf.codingcompetition2020/coding-competition/pom.properties b/target/classes/META-INF/maven/sf.codingcompetition2020/coding-competition/pom.properties deleted file mode 100644 index fe569e3..0000000 --- a/target/classes/META-INF/maven/sf.codingcompetition2020/coding-competition/pom.properties +++ /dev/null @@ -1,7 +0,0 @@ -#Generated by Maven Integration for Eclipse -#Thu Oct 08 09:27:33 MST 2020 -version=1.0.0-SNAPSHOT -groupId=sf.codingcompetition2020 -m2e.projectName=coding-competition -m2e.projectLocation=/Users/yc1d/Development/coding-competition/problem/online-competition -artifactId=coding-competition diff --git a/target/classes/META-INF/maven/sf.codingcompetition2020/coding-competition/pom.xml b/target/classes/META-INF/maven/sf.codingcompetition2020/coding-competition/pom.xml deleted file mode 100644 index 21d55bf..0000000 --- a/target/classes/META-INF/maven/sf.codingcompetition2020/coding-competition/pom.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - 4.0.0 - coding-competition - 1.0.0-SNAPSHOT - jar - sf.codingcompetition2020 - - coding-competition - Coding Competition - - - - - - - junit - junit - 4.12 - test - - - - com.fasterxml.jackson.dataformat - jackson-dataformat-csv - 2.11.2 - - - - diff --git a/target/classes/sf/codingcompetition2020/CodingCompCsvUtil.class b/target/classes/sf/codingcompetition2020/CodingCompCsvUtil.class index 00daba9d49249e6950fa6b4b75732ac294bb504b..cd2f9360501bc63c547d10e5160d10aa825fbaf2 100644 GIT binary patch literal 14198 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 diff --git a/target/classes/sf/codingcompetition2020/Pair.class b/target/classes/sf/codingcompetition2020/Pair.class new file mode 100644 index 0000000000000000000000000000000000000000..afff00d9bcfdd8c1c2ba6033c55c7ad659959bcf GIT binary patch literal 1209 zcmb7CU2hUW6g|VI3$(OYupeTpR$0(UB|a%3F(y6{H7VJLzAbd6)6m@pmL@*=mo%|4 z@xdS9k20Q_*@A_&iP>c4-n-|XJLk;&`u*c4fETD+Na3Mc_H#(%Q5KK0s0m~)+|kr~ zE>P;8x)*M905FAT?I0(+py-bmJSu z7Y0cbxn^|H!W!d(0bm^^X1A|ZHkg?~Wuhv$6VV=VPw-!+@#GTXDDpzjt?~~>FC8x z4a;e)=t$z0hSfAa(vik3b^kbx+iBcUT7`bx#XUu>rSVA`>l*HB_*BOrKGRUtF@gs= zHn6FVEe)S*_(CAHVmVf@D$qMQwIh%yxD``iplCVfMx$0Xy@#@FlanpFhO~F2XQ}%! zGZE}tzQ9b;-^&|r#d4~KTdSLa6|sphu>kJig!3ev06>EIb+futWuFAx}=42}1ic`~Xd?RkdgnYw4yq<0u{1cuJi z6X*+687eV>iH?e4IwlKo0?)O(sWWHIaP3CTxh`lhQdfPE#U7O1roedI%9e+2 zBgpUEahudm`YP_}RKq;B)k*P49Qnig3Hs}Cr?I@FR8~Tb7{V`eRvAOzb{n2yu34(p z!!I^%UiB%1H*hh7ZCn+&q!ESu>UEhXP@km%JLLZRfW< zw{CjD;f}N$=9)AD*E?hr_mqps!8mJP>X;=|GS$2zNaXV5o;0s)KTljgfy z;BzU|Wb?elTb^IRZ*sZ?@hgcQyvZ{aGW#(>Iuj|-#TDNA@D{F;qm19>H!}VWJzZm+ zPJnYrU?Aq;8r~*f;2lgx4#Zss(#ZRzjowlVi3e>YOW9Nl+QwWP=~A|@1^o#9Av;6% zQX-cK1+PVd*(02r`yB&4c%;Z&qC>x)J%5VMMsyp4rNo~YD)r88w=levY-6O9OSUk& zl$yzfgc5Qg7P9J_H%DgA;{pg@5p4&YM0+Y%@sq)1UY6!q?=ZZJxd%5jjm^Aq?P z96%!C)Uq#xA4@4122zJEQz@xW?9TlF}Fr> z8+R<+wQ&#kZAMlstXf!8u>5+^j4L||s-j@{QQ#{~RA2e8eXrp+>)vJ@h0Xe^!ia1; zJg$)64Wo9v;qTFBxbK>4VKa=&3e`g8Xomlb6t_tAq_sn(RBi8iwbl;dYpuQgAP(cO)m&a$Uh>*;)TzatC}?}@Qay{C zEcEa?aoF&xVLM*c!VP)~IdGk+?-+3%}gN}OFgT6URw`OUE2^o2oTF{zz;M|hli z5I;L?{ZyfNG`oV$Q@SphYPL}1TrCOd(OT`kH+>*GJY^9X<=N_B)T2Bko0PY4a|31dzZ&heBGzNMa=UvW#>udp)sfsrrBmyG_VlpA>Fz_a?^XV}7? zg|OQ?(@ESXrEt#lG7mUca0X|oevaQ9u2f}Yp5A%-8FpLYA{JBGVHnzP9E z7lxW+4w_@?hb1K!Q$dU*NGTP>O$RZOARa-M{sJN|M?gxcAZ8NeW-7?lbdaH^-s{L+ Rg53KHh&)#Txuyqr{WqBUIq3iZ delta 204 zcmZ3&w}x5Z)W2Q(7#J7~8N}Hcm>3x}C(ANwim@}WFfs^aC6*=X=OpH(>-#5Vr6!k5 zbO;w^*3b-NWMFa5Pf6usU}g~DVc=olo%lL#au1V4HG?7pBT$fmft7&?h}nQFCI)r} z4lvCLrMaLqH<)Gw>HwMmB>8}<^no-ZNWa#02L6p;ZGu3O4J^paAOvLdKol?tGl&3r Kj0~b+Rbl`g)fR*R diff --git a/target/classes/sf/codingcompetition2020/structures/Claim.class b/target/classes/sf/codingcompetition2020/structures/Claim.class index 1ce796d6b4bbd86e5fd9c0045b14f53408639028..2606a90dc48368741ed239670f12428babc47f39 100644 GIT binary patch literal 1780 zcma)*OH-z$Wss%6zxov1rCeuLWm_yn{=Ag8F%jeDsG&S zL0vem{ZNkQ+*X=)!i-(qd(XM&@yq|*{{HjhCxBJFQlY`fpa;vmJm6)8mxn!cyOzSb ziVbY4*uo=~+}kPar0`fEWmQb4S~wLD1p(D+_<>io>+DEc70Au!h2|3mE`!+cllPSdWKZrM1JHMe)EYv#x)yC#zeEOrw_=18it9Y}5# zGM>$`wtmQ^WTk4o92Szimt#V9+VS^WL!crwhKwxI9E*}IaVxIzIy4-v5w_JMuTi(` z1Ba)fN~k5)QNu8HHT0rSLq9JA7}PL?z7(Elc#3Bvr_?*7ND6xz_VGN07a9)ml530z z# zVdG%fAu0{}Oq~j^(Y{Guh8$})xPsim1SSb$itaSpsX2M3=`=&<7;e*P7IU;Rpg}vw zB=oO{eU<^-EGeDivO%**qSZj)4(40QyHt+9E-7_x>#9ocG^sZeLQGyECR;iR+>Hc@ zcZ1ADf-FRX#JfQj2xRdZ5FR5du!wByqr!?P-5`1-NREcml(Rz-r5j|4K#XfZ_!Tio jK2niHH^@pP$h~MqLQlRqnsox%xCVqDF@xNfk74OASL7w` delta 201 zcmXYpI|{-;6h-fwNisSn8b7hOGZu;)ut>lS2$n+76p=_k(AE`*1Xq$uun=rrkG1$5 zZ0?W4eS2r=zdrW|fGPS4f)JL^P%2p0N(5yz3*<0d60Eq`q#6<}7Y(@OWp&bv;;>(* z^DIvZI?j`9H{K@41OpI*fCT{?4krQi_ZsS^YtxBIeq;4`ov;(TJ-VS;8O&#O%qY?3 R{6iT)2VIu~p~or^d;#Q97>fV^ diff --git a/target/classes/sf/codingcompetition2020/structures/Customer.class b/target/classes/sf/codingcompetition2020/structures/Customer.class index 844ea29474f5bc9dd328dee078d97b0567ad1de8..05ae2ba8fe187c74ed0b2ba95bf9ea9e4eff68ce 100644 GIT binary patch literal 6763 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 b84KS`pi5ZicJOl!2cN54xqC$geCK}wJtB*9 delta 316 zcmXYr%Ps?97>1vJ&NHSuTCHPgQCbU=CU%y+02{F%OwgdBQyU8xG526E7EQWv0d7Uy zg81_L^Cj;oZ{B?0$8TQc>v#SM3^?$y%AYW8`Z$VYls#wZUG{LDo?eXd%i<$ZkE&t! z`sWH~IKIjwY}zrKw91;@51iuWcA_{c2SGO+PAA3qK7TqXU;Nf99h8)ziiL|O%EBkm z92$;HzF>T8e1%2btC~DvN!DsQtIN(Z4XvAoR}8P3{u*ch1M6%^QOU{6f?MKJ?ZG{q bvHh-hI)a|W5V0c|Ywfbjo;XEU&|?1&5b7WL diff --git a/target/classes/sf/codingcompetition2020/structures/Dependent.class b/target/classes/sf/codingcompetition2020/structures/Dependent.class index 3ee505f7dda4d5aad7c64d98dd9748ea80a0698b..230789636da5892605a3b34f5390349d7d9f322b 100644 GIT binary patch literal 867 zcmb7?&raJw5XQfC{*lCx5C|<45S*H%6eGk9#HAIdh#sgSadey|EK2Oi-tb%?6(Mox z1N5N~-)=$zO?s#-?e5IZeDj-G|9O7;4d4jd1!V9sk2KcJvXR5595w~=S1L~Qx!;!p zmFA6q>w7&v?0OeER$=#8V4>%~-e*r#sPw78=h|%Ktf$@*NPmkuR4z4DD9?xewv2!J z?Vha_1%9vP$I94aXIfvYM8In%S6&cx2oOa5fz(Q?C_FqkJn#}74+A}nW#WC80~vN? zs0rzIr9PWBvRbRp;xHvAkUQPVQGS}ZwBWgk1ZEj zCsW8_fijlIWjyZYF4Oo0 z=Z*&lMm%esi&oGb1&jsxXJLgN!+6SQ$3$DcDO$mLm)TLpDy)s7CP>*alECU*kksEG d)wv+m`5ff$?3=9m048rUTOp~h_4aC?PSQr@uvJ%S@^>Y&Q()In5vQm>vCd!+O zGHYmtF*2|?=clA{F)%am@Gx*Na87JZnjF9=lgyyVzz7s%U|<45Rt7dOiycfe0%d?I vfg~4DR3At)0%=yQ?F`%-!OD1nBpX@hi diff --git a/target/classes/sf/codingcompetition2020/structures/Vendor.class b/target/classes/sf/codingcompetition2020/structures/Vendor.class index fdbca9b6e0183e880547b8ff174552c31967ec4f..ef263f135823483920173e0a4472030f5c999710 100644 GIT binary patch literal 1842 zcma)*TTc@~6vzM5Zg=T+rQAU-qJq+Hks>!QAPOj2Z8QIt^SXw|8lDJr9ouf%^9yAGQ4mlp-?jw$iU-!Qm9JWECBGB+j$2t3FhbY2 zRzQ0J&2e{1-jPj#djjg3<2u2*z(}TWF}Sdo-KFGPUYXp}MaQ*Y*AMq?|DCm8B}-q? zD_PZD%XfI+Fe-EeNtd z6IQPWPBmY2YQZX37L=$bdLS@#zV64PX6@;S@7l#Hty8h&j#F_hCJ>m37Va3sFsX_i zguJYJJd-8eQ?+)Rk}0sGMvfb@9|M`}MFMi5sL)}sQN6umoFd(-)ofe3RjFx7I<-Qx zl|)0$)XAr1QZll6`i@ukOZK+I4NHambNosS3}C~+6?7X&qsKrmulmrhVbj1Co|5#@ z*QDW@fo(k3@WMa=FFD7cfcgKeK9}^({()Tzq?UB&ZdtAM0LV-t2n>>_Z6by-)WqI1 zxPlwl72Bs@ab)>5o3P0y>^mP46iG8iXCaL$y;jUz{0Gz+enb0? zuAI``#+A@*51a1m7+hh>2dg?!RwTcFRn^)&%_K7$4IjAHbk|B zs5ZnCxQ&@cu6B_4mk7vYN01D%7eI2<;3&uxflOZl!o6b!%#MmEQAK7tg5)|YqC`P* y1TuRG2tOSLnZ+F%qpe9qLGm3z=43xP_*`q+-g(%XMFLs61cYBMgUrhw-2DgE7d!X> delta 193 zcmdnQx0spt)W2Q(7#J7~8N}Hcm?ocP(iLN8U}0ns$Vx0r)Xz!GOV{^L%1TWxndlHK z%B-Oo#>l|poS%})#lXxUz{9}9z&mks{N!vV$zldY21cMD0|N^K69X#)8<54sz|Oz{ zra7T}E(UHOpAiUwI)Nk~kf#skGcd4fZD-)$2v#l#B-wz%3_t^gfFuu?&B`FmAOhqu LGKd06CI&G8nlBca diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..495684b --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,8 @@ +/Users/gaganbhat/Documents/Programming/State-Farm/2020-StateFarm-CodingCompetitionProblem/src/main/java/sf/codingcompetition2020/structures/Agent.java +/Users/gaganbhat/Documents/Programming/State-Farm/2020-StateFarm-CodingCompetitionProblem/src/main/java/sf/codingcompetition2020/TableViewExample.java +/Users/gaganbhat/Documents/Programming/State-Farm/2020-StateFarm-CodingCompetitionProblem/src/main/java/sf/codingcompetition2020/structures/Customer.java +/Users/gaganbhat/Documents/Programming/State-Farm/2020-StateFarm-CodingCompetitionProblem/src/main/java/sf/codingcompetition2020/structures/Dependent.java +/Users/gaganbhat/Documents/Programming/State-Farm/2020-StateFarm-CodingCompetitionProblem/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java +/Users/gaganbhat/Documents/Programming/State-Farm/2020-StateFarm-CodingCompetitionProblem/src/main/java/sf/codingcompetition2020/structures/Claim.java +/Users/gaganbhat/Documents/Programming/State-Farm/2020-StateFarm-CodingCompetitionProblem/src/main/java/sf/codingcompetition2020/Pair.java +/Users/gaganbhat/Documents/Programming/State-Farm/2020-StateFarm-CodingCompetitionProblem/src/main/java/sf/codingcompetition2020/structures/Vendor.java diff --git a/target/test-classes/sf/codingcompetition2020/CodingCompCsvUtilTest.class b/target/test-classes/sf/codingcompetition2020/CodingCompCsvUtilTest.class index 765ac60fa2a1b12f484db96055457db1849af952..792b53b2c9bf3df214ceadbb46b73303890e5411 100644 GIT binary patch literal 5226 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