diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..1a99fc8 --- /dev/null +++ b/.classpath @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..5edc1ee --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + coding-competition + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..d4313d4 --- /dev/null +++ b/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=false diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..b33f257 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,16 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.processAnnotations=disabled +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/feedback.txt b/feedback.txt index b931d50..4b6e18b 100644 --- a/feedback.txt +++ b/feedback.txt @@ -1,5 +1,5 @@ -Your team (name of each individual participating): -How many JUnits were you able to get to pass? +Your team (name of each individual participating): Huong Nguyen +How many JUnits were you able to get to pass? 2 Document and describe any enhancements included to help the judges properly grade your submission. Step 1: @@ -7,3 +7,4 @@ Document and describe any enhancements included to help the judges properly grad Feedback for the coding competition? Things you would like to see in future events? +Challenging problems. I'll try my best next time! diff --git a/pom.xml b/pom.xml index 21d55bf..8e7181f 100644 --- a/pom.xml +++ b/pom.xml @@ -21,11 +21,17 @@ 4.12 test - + + + com.fasterxml.jackson.dataformat + jackson-dataformat-csv + 2.11.2 + + - com.fasterxml.jackson.dataformat - jackson-dataformat-csv - 2.11.2 + com.opencsv + opencsv + 4.1 diff --git a/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java b/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java index 58267da..ce03cfd 100644 --- a/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java +++ b/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java @@ -1,147 +1,285 @@ package sf.codingcompetition2020; +import java.io.FileNotFoundException; import java.io.FileReader; -import java.io.Reader; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; -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 com.opencsv.CSVReader; +import com.opencsv.bean.CsvToBean; +import com.opencsv.bean.HeaderColumnNameMappingStrategy; import sf.codingcompetition2020.structures.Agent; -import sf.codingcompetition2020.structures.Claim; import sf.codingcompetition2020.structures.Customer; import sf.codingcompetition2020.structures.Vendor; public class CodingCompCsvUtil { - - /* #1 - * readCsvFile() -- Read in a CSV File and return a list of entries in that file. + + /* + * #1 readCsvFile() -- Read in a CSV File and return a list of entries in that + * file. + * * @param filePath -- Path to file being read in. + * * @param classType -- Class of entries being read in. + * * @return -- List of entries being returned. */ public List readCsvFile(String filePath, Class classType) { + HeaderColumnNameMappingStrategy strategy = new HeaderColumnNameMappingStrategy(); + strategy.setType(classType); + + CSVReader csvReader = null; + try { + csvReader = new CSVReader(new FileReader(filePath)); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + + CsvToBean csvToBean = new CsvToBean(); + + // call the parse method of CsvToBean + // pass strategy, csvReader to parse method + List list = csvToBean.parse(strategy, csvReader); + + return list; } - - /* #2 - * getAgentCountInArea() -- Return the number of agents in a given area. + /* + * #2 getAgentCountInArea() -- Return the number of agents in a given area. + * * @param filePath -- Path to file being read in. + * * @param area -- The area from which the agents should be counted. + * * @return -- The number of agents in a given area */ - public int getAgentCountInArea(String filePath,String area) { + public int getAgentCountInArea(String filePath, String area) { + List agents = new ArrayList<>(); + agents = readCsvFile(filePath, Agent.class); + int count = 0; + + for (int i = 0; i < agents.size(); i++) { + if (agents.get(i).getArea().equals(area)) { + count++; + } + + } + + return count; } - - /* #3 - * getAgentsInAreaThatSpeakLanguage() -- Return a list of agents from a given area, that speak a certain language. + /* + * #3 getAgentsInAreaThatSpeakLanguage() -- Return a list of agents from a given + * area, that speak a certain language. + * * @param filePath -- Path to file being read in. + * * @param area -- The area from which the agents should be counted. + * * @param language -- The language spoken by the agent(s). + * * @return -- The number of agents in a given area */ public List getAgentsInAreaThatSpeakLanguage(String filePath, String area, String language) { + List agents = new ArrayList<>(); + agents = readCsvFile(filePath, Agent.class); + + List newAgents = new ArrayList<>(); + + for (int i = 0; i < agents.size(); i++) { + if (agents.get(i).getArea().equals(area) && agents.get(i).getLanguage().equals(language)) { + newAgents.add(agents.get(i)); + } + + } + + return newAgents; } - - - /* #4 - * countCustomersFromAreaThatUseAgent() -- Return the number of individuals from an area that use a certain agent. + + /* + * #4 countCustomersFromAreaThatUseAgent() -- Return the number of individuals + * from an area that use a certain agent. + * * @param filePath -- Path to file being read in. + * * @param customerArea -- The area from which the customers should be counted. + * * @param agentFirstName -- First name of agent. + * * @param agentLastName -- Last name of agent. + * * @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) { - + public short countCustomersFromAreaThatUseAgent(Map csvFilePaths, String customerArea, + String agentFirstName, String agentLastName) { + List agents = new ArrayList<>(); + agents = readCsvFile(csvFilePaths.get("agentList"), Agent.class); + + List customers = new ArrayList<>(); + customers = readCsvFile(csvFilePaths.get("customerList"), Customer.class); + + short count = 0; + int agentId = 0; + + for (int i = 0; i < customers.size(); i++) { + for (int j = 0; j < agents.size(); j++) { + if (agents.get(j).getFirstName().equals(agentFirstName) + && agents.get(j).getLastName().equals(agentLastName)) { + agentId = agents.get(j).getAgentId(); + + } + + if (customers.get(i).getArea().equals(customerArea) && customers.get(i).getAgentId() == agentId) { + count++; + } + + } + + } + + return count; + } - - /* #5 - * getCustomersRetainedForYearsByPlcyCostAsc() -- Return a list of customers retained for a given number of years, in ascending order of their policy cost. + /* + * #5 getCustomersRetainedForYearsByPlcyCostAsc() -- Return a list of customers + * retained for a given number of years, in ascending order of their policy + * cost. + * * @param filePath -- Path to file being read in. + * * @param yearsOfServeice -- Number of years the person has been a customer. - * @return -- List of customers retained for a given number of years, in ascending order of policy cost. + * + * @return -- List of customers retained for a given number of years, in + * ascending order of policy cost. */ public List getCustomersRetainedForYearsByPlcyCostAsc(String customerFilePath, short yearsOfService) { + return null; } - - /* #6 - * getLeadsForInsurance() -- Return a list of individuals who’ve made an inquiry for a policy but have not signed up. - * *HINT* -- Look for customers that currently have no policies with the insurance company. + /* + * #6 getLeadsForInsurance() -- Return a list of individuals who’ve made an + * inquiry for a policy but have not signed up. *HINT* -- Look for customers + * that currently have no policies with the insurance company. + * * @param filePath -- Path to file being read in. - * @return -- List of customers who’ve made an inquiry for a policy but have not signed up. + * + * @return -- List of customers who’ve made an inquiry for a policy but have not + * signed up. */ public List getLeadsForInsurance(String filePath) { + return null; } - - /* #7 - * getVendorsWithGivenRatingThatAreInScope() -- Return a list of vendors within an area and include options to narrow it down by: - a. Vendor rating - b. Whether that vendor is in scope of the insurance (if inScope == false, return all vendors in OR out of scope, if inScope == true, return ONLY vendors in scope) + /* + * #7 getVendorsWithGivenRatingThatAreInScope() -- Return a list of vendors + * within an area and include options to narrow it down by: a. Vendor rating b. + * Whether that vendor is in scope of the insurance (if inScope == false, return + * all vendors in OR out of scope, if inScope == true, return ONLY vendors in + * scope) + * * @param filePath -- Path to file being read in. + * * @param area -- Area of the vendor. + * * @param inScope -- Whether or not the vendor is in scope of the insurance. + * * @param vendorRating -- The rating of the vendor. - * @return -- List of vendors within a given area, filtered by scope and vendor rating. + * + * @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) { + public List getVendorsWithGivenRatingThatAreInScope(String filePath, String area, boolean inScope, + int vendorRating) { + List vendors = new ArrayList<>(); + vendors = readCsvFile(filePath, Vendor.class); - } + List newVendors = new ArrayList<>(); + + List result = new ArrayList<>(); + + for (int i = 0; i < vendors.size(); i++) { + if(vendors.get(i).getArea().equals(area)) { + newVendors.add(vendors.get(i)); + } + } + + for (int j = 0; j < newVendors.size(); j++) { + if(inScope) { + if(newVendors.get(j).getVendorRating() == vendorRating && newVendors.get(j).isInScope()) { + result.add(newVendors.get(j)); + } + + } else { + if(newVendors.get(j).getVendorRating() == vendorRating) { + result.add(newVendors.get(j)); + } + } + } + + + return result; - /* #8 - * getUndisclosedDrivers() -- Return a list of customers between the age of 40 and 50 years (inclusive), who have: - a. More than X cars - b. less than or equal to X number of dependents. + } + + /* + * #8 getUndisclosedDrivers() -- Return a list of customers between the age of + * 40 and 50 years (inclusive), who have: a. More than X cars b. less than or + * equal to X number of dependents. + * * @param filePath -- Path to file being read in. + * * @param vehiclesInsured -- The number of vehicles insured. + * * @param dependents -- The number of dependents on the insurance policy. - * @return -- List of customers filtered by age, number of vehicles insured and the number of dependents. + * + * @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) { + return null; - } - + } - /* #9 - * getAgentIdGivenRank() -- Return the agent with the given rank based on average customer satisfaction rating. - * *HINT* -- Rating is calculated by taking all the agent rating by customers (1-5 scale) and dividing by the total number - * of reviews for the agent. + /* + * #9 getAgentIdGivenRank() -- Return the agent with the given rank based on + * average customer satisfaction rating. *HINT* -- Rating is calculated by + * taking all the agent rating by customers (1-5 scale) and dividing by the + * total number of reviews for the agent. + * * @param filePath -- Path to file being read in. + * * @param agentRank -- The rank of the agent being requested. + * * @return -- Agent ID of agent with the given rank. */ public int getAgentIdGivenRank(String filePath, int agentRank) { - - } + return agentRank; + + } - - /* #10 - * getCustomersWithClaims() -- Return a list of customers who’ve filed a claim within the last (inclusive). + /* + * #10 getCustomersWithClaims() -- Return a list of customers who’ve filed a + * claim within the last (inclusive). + * * @param filePath -- Path to file being read in. + * * @param monthsOpen -- Number of months a policy has been open. - * @return -- List of customers who’ve filed a claim within the last . + * + * @return -- List of customers who’ve filed a claim within the last + * . */ - public List getCustomersWithClaims(Map csvFilePaths, short monthsOpen) { + public List getCustomersWithClaims(Map csvFilePaths, short monthsOpen) { + return null; - } + } } diff --git a/src/main/java/sf/codingcompetition2020/structures/Agent.java b/src/main/java/sf/codingcompetition2020/structures/Agent.java index e2e6f93..01bad39 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Agent.java +++ b/src/main/java/sf/codingcompetition2020/structures/Agent.java @@ -1,11 +1,51 @@ package sf.codingcompetition2020.structures; public class Agent { - + private int agentId; private String area; private String language; private String firstName; private String lastName; - + + public int getAgentId() { + return agentId; + } + + public void setAgentId(int agentId) { + this.agentId = 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 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/Claim.java b/src/main/java/sf/codingcompetition2020/structures/Claim.java index 581140a..aed23ca 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Claim.java +++ b/src/main/java/sf/codingcompetition2020/structures/Claim.java @@ -5,5 +5,37 @@ public class Claim { private int customerId; private boolean closed; private int monthsOpen; - + + 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..6f3e4eb 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Customer.java +++ b/src/main/java/sf/codingcompetition2020/structures/Customer.java @@ -1,27 +1,173 @@ package sf.codingcompetition2020.structures; -import java.util.ArrayList; import java.util.List; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; +import com.opencsv.bean.CsvBindByName; public class Customer { + @CsvBindByName(column = "customerId") private int customerId; + + @CsvBindByName(column = "firstName") private String firstName; + + @CsvBindByName(column = "lastName") private String lastName; + + @CsvBindByName(column = "age") private int age; + + @CsvBindByName(column = "area") private String area; + + @CsvBindByName(column = "agentId") private int agentId; + + @CsvBindByName(column = "agentRating") private short agentRating; + + @CsvBindByName(column = "primaryLanguage") private String primaryLanguage; + + @CsvBindByName(column = "dependents") private List dependents; + + @CsvBindByName(column = "homePolicy") private boolean homePolicy; + + @CsvBindByName(column = "autoPolicy") private boolean autoPolicy; + + @CsvBindByName(column = "rentersPolicy") private boolean rentersPolicy; + + @CsvBindByName(column = "totalMonthlyPremium") private String totalMonthlyPremium; + + @CsvBindByName(column = "yearsOfService") private short yearsOfService; + + @CsvBindByName(column = "vehiclesInsured") private Integer vehiclesInsured; + 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 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; + } + } diff --git a/src/main/java/sf/codingcompetition2020/structures/Dependent.java b/src/main/java/sf/codingcompetition2020/structures/Dependent.java index d4deb1a..e5d7cb6 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Dependent.java +++ b/src/main/java/sf/codingcompetition2020/structures/Dependent.java @@ -4,4 +4,20 @@ public class Dependent { private String firstName; private String 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..31314e3 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Vendor.java +++ b/src/main/java/sf/codingcompetition2020/structures/Vendor.java @@ -5,5 +5,37 @@ public class Vendor { private String area; private int vendorRating; private boolean inScope; - + + 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/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF index e2a1a34..e2b362d 100644 --- a/target/classes/META-INF/MANIFEST.MF +++ b/target/classes/META-INF/MANIFEST.MF @@ -1,5 +1,5 @@ Manifest-Version: 1.0 -Built-By: yc1d -Build-Jdk: 1.8.0_201 +Built-By: killiannguyen +Build-Jdk: 11.0.2 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 index fe569e3..ffa17e4 100644 --- a/target/classes/META-INF/maven/sf.codingcompetition2020/coding-competition/pom.properties +++ b/target/classes/META-INF/maven/sf.codingcompetition2020/coding-competition/pom.properties @@ -1,7 +1,7 @@ #Generated by Maven Integration for Eclipse -#Thu Oct 08 09:27:33 MST 2020 -version=1.0.0-SNAPSHOT -groupId=sf.codingcompetition2020 +#Sat Oct 10 22:42:01 CDT 2020 +m2e.projectLocation=/Users/killiannguyen/Documents/Git/Alice/AliceCodingSF/2020-StateFarm-CodingCompetitionProblem m2e.projectName=coding-competition -m2e.projectLocation=/Users/yc1d/Development/coding-competition/problem/online-competition +groupId=sf.codingcompetition2020 artifactId=coding-competition +version=1.0.0-SNAPSHOT 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 index 21d55bf..8e7181f 100644 --- a/target/classes/META-INF/maven/sf.codingcompetition2020/coding-competition/pom.xml +++ b/target/classes/META-INF/maven/sf.codingcompetition2020/coding-competition/pom.xml @@ -21,11 +21,17 @@ 4.12 test - + + + com.fasterxml.jackson.dataformat + jackson-dataformat-csv + 2.11.2 + + - com.fasterxml.jackson.dataformat - jackson-dataformat-csv - 2.11.2 + com.opencsv + opencsv + 4.1 diff --git a/target/classes/sf/codingcompetition2020/CodingCompCsvUtil.class b/target/classes/sf/codingcompetition2020/CodingCompCsvUtil.class index 00daba9..738f62e 100644 Binary files a/target/classes/sf/codingcompetition2020/CodingCompCsvUtil.class and b/target/classes/sf/codingcompetition2020/CodingCompCsvUtil.class differ diff --git a/target/classes/sf/codingcompetition2020/structures/Agent.class b/target/classes/sf/codingcompetition2020/structures/Agent.class index 26bf31f..7d4891e 100644 Binary files a/target/classes/sf/codingcompetition2020/structures/Agent.class and b/target/classes/sf/codingcompetition2020/structures/Agent.class differ diff --git a/target/classes/sf/codingcompetition2020/structures/Claim.class b/target/classes/sf/codingcompetition2020/structures/Claim.class index 1ce796d..ed4ef8b 100644 Binary files a/target/classes/sf/codingcompetition2020/structures/Claim.class and b/target/classes/sf/codingcompetition2020/structures/Claim.class differ diff --git a/target/classes/sf/codingcompetition2020/structures/Customer.class b/target/classes/sf/codingcompetition2020/structures/Customer.class index 844ea29..e350094 100644 Binary files a/target/classes/sf/codingcompetition2020/structures/Customer.class and b/target/classes/sf/codingcompetition2020/structures/Customer.class differ diff --git a/target/classes/sf/codingcompetition2020/structures/Dependent.class b/target/classes/sf/codingcompetition2020/structures/Dependent.class index 3ee505f..473fbc6 100644 Binary files a/target/classes/sf/codingcompetition2020/structures/Dependent.class and b/target/classes/sf/codingcompetition2020/structures/Dependent.class differ diff --git a/target/classes/sf/codingcompetition2020/structures/Vendor.class b/target/classes/sf/codingcompetition2020/structures/Vendor.class index fdbca9b..4f8e17b 100644 Binary files a/target/classes/sf/codingcompetition2020/structures/Vendor.class and b/target/classes/sf/codingcompetition2020/structures/Vendor.class differ diff --git a/target/test-classes/sf/codingcompetition2020/CodingCompCsvUtilTest.class b/target/test-classes/sf/codingcompetition2020/CodingCompCsvUtilTest.class index 765ac60..66d8453 100644 Binary files a/target/test-classes/sf/codingcompetition2020/CodingCompCsvUtilTest.class and b/target/test-classes/sf/codingcompetition2020/CodingCompCsvUtilTest.class differ