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..14a0591 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + 2020-StateFarm-CodingCompetitionProblem + + + + + + 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/.~lock.Problem_Statement_2020_Final.docx# b/.~lock.Problem_Statement_2020_Final.docx# new file mode 100644 index 0000000..620c471 --- /dev/null +++ b/.~lock.Problem_Statement_2020_Final.docx# @@ -0,0 +1 @@ +,gabe,gabe-XPS-8500,10.10.2020 20:08,file:///home/gabe/.config/libreoffice/4; \ No newline at end of file diff --git a/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java b/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java index 58267da..c318c87 100644 --- a/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java +++ b/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java @@ -1,12 +1,23 @@ package sf.codingcompetition2020; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; import java.io.FileReader; +import java.io.IOException; import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Scanner; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -19,6 +30,7 @@ import sf.codingcompetition2020.structures.Agent; import sf.codingcompetition2020.structures.Claim; import sf.codingcompetition2020.structures.Customer; +import sf.codingcompetition2020.structures.Dependent; import sf.codingcompetition2020.structures.Vendor; public class CodingCompCsvUtil { @@ -29,10 +41,85 @@ public class CodingCompCsvUtil { * @param classType -- Class of entries being read in. * @return -- List of entries being returned. */ + @SuppressWarnings("unchecked") public List readCsvFile(String filePath, Class classType) { - + + try (Scanner scanner = new Scanner(new File(filePath));) { + scanner.nextLine(); + + String line = scanner.nextLine(); + if(classType == Agent.class) { + while (scanner.hasNextLine()) { + String[] params = line.split(","); + List output = new ArrayList(); + output.add(new Agent(Integer.parseInt(params[0]), params[1], params[2], + params[3],params[4])); + } + } + + + else if(classType == Claim.class) { + while (scanner.hasNextLine()) { + System.out.println(scanner.nextLine()); + String[] params = line.split(","); + for(String line1: params) { + System.out.println(line1); + } + List output = new ArrayList(); + output.add(new Claim(Integer.parseInt(params[0]),Integer.parseInt(params[1]), + Boolean.parseBoolean(params[2]), Integer.parseInt(params[3]))); + return (List) output; + } + } + + else if(classType == Customer.class) { + while (scanner.hasNextLine()) { + List output = new ArrayList(); + String[] params = line.split(","); + List dependentList = new ArrayList(); + if(line.indexOf("[") != -1) + { + String dependentChunk = line.substring(line.indexOf("["), line.indexOf("]")); + String[] dependents = dependentChunk.split(","); + + for(int i = 0; i < dependents.length; i+=2) { + dependentList.add( new Dependent(dependents[i].substring(dependents[i].indexOf(":\"") + 3, dependents[i].lastIndexOf("\"")).replaceAll("[^a-zA-Z0-9]", ""), + dependents[i +1].substring(dependents[i +1].indexOf(":\"") + 3, + dependents[i +1].lastIndexOf("\"")).replaceAll("[^a-zA-Z0-9]", ""))); + } + } + // get index of last dependent in params + int lastDependent = 8; + for(int i = 0; i < params.length -1; i++) { + if(params[i].contains("{")) lastDependent = i; + } + if(params.length == 15) { + output.add(new + Customer(Integer.parseInt(params[0]),params[1], params[2], + Integer.parseInt(params[3]), params[4], Integer.parseInt(params[5]), + Short.parseShort(params[6]), params[7], dependentList, + Boolean.parseBoolean(params[lastDependent]), Boolean.parseBoolean(params[lastDependent + 1]), + Boolean.parseBoolean(params[lastDependent + 2]), params[lastDependent + 3], Short.parseShort(params[lastDependent + 4]), + Integer.parseInt(params[lastDependent + 5]))); + } + return (List) output; + } + } + + + + + //return output; + + } catch (Exception e) { + // TODO Auto-generated catch block + System.out.println(e.toString()); + } + return null; } + + /* #2 * getAgentCountInArea() -- Return the number of agents in a given area. @@ -41,7 +128,18 @@ public List readCsvFile(String filePath, Class classType) { * @return -- The number of agents in a given area */ public int getAgentCountInArea(String filePath,String area) { - + int agentCount = 0; // Number of agents in the area + List agents = readCsvFile(filePath, Agent.class); + + // Loop through list add increment agentCount for every agent + // that is in the specified area + for (Agent a : agents) { + if(a.getArea().equals(area)) { + agentCount++; // Increment agent + } + } + + return agentCount; } @@ -53,7 +151,18 @@ 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) { - + List list = readCsvFile(filePath, Agent.class); // List of all agents + List agents = new ArrayList(); // List that will contain all agents that meet the requirements + + // Loop through all of the agents in list and append all agents that meet the area + // and language requirement into the list agents + for(Agent a : list) { + if(a.getArea().equals(area) && a.getLanguage().equals(language)) { + agents.add(a); + } + } + + return agents; } @@ -66,7 +175,26 @@ 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) { + short result = 0; // number of customers from specified area that use specified agent + + // Breaking the map into two separate ArrayList for iteration + List agents = readCsvFile(csvFilePaths.get("agentList"), Agent.class); + List customers = readCsvFile(csvFilePaths.get("customerList"), Customer.class); + // Iterate through customers and if the customer is in the correct area + // then iterate through agents and make sure they are the correct agent + // if they meet the requirements increment the result + for(Customer c : customers) { + if(c.getArea().equals(customerArea)) { + for (Agent a : agents) { + if(c.getAgentId() == a.getAgentId() && a.getFirstName().equals(agentFirstName) && a.getLastName().equals(a.getLastName())) { + result++; + } + } + } + } + + return result; } @@ -77,7 +205,20 @@ 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) { - + // Obtain list of customers and initialize empty list result + List customers = readCsvFile(customerFilePath, Customer.class); + List result = new ArrayList(); + + // Iterate through all of the customers and if they have retained for the + // specified number of years add them to the result list + for (Customer customer : customers) { + if(customer.getYearsOfService() >= yearsOfService) { + result.add(customer); + } + } + + Collections.sort(result); // Sort the result list + return result; // return the result } @@ -88,7 +229,19 @@ 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) { - + // Obtain list of customers and initialize result list + List customers = readCsvFile(filePath, Customer.class); + List result = new ArrayList(); + + // For customer if they don;t have an auto policy, home policy, or + // an renters policy add current customer to the result list + for (Customer customer : customers) { + if (!customer.isAutoPolicy() && !customer.isHomePolicy() && !customer.isRentersPolicy()) { + result.add(customer); + } + } + + return result; } @@ -103,7 +256,20 @@ 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) { - + // Obtain list of all vendors and initialize the result list + List vendors = readCsvFile(filePath, Vendor.class); + List result = new ArrayList(); + + // For vendor in the vendors list, if the vendor is inScope and + // the vendors rating is == to the vendorRating add current vendor + // to the result list + for (Vendor vendor : vendors) { + if (vendor.isInScope() == inScope && vendor.getVendorRating() == vendorRating) { + result.add(vendor); + } + } + + return result; //MAY NOT BE CORRECT } @@ -117,7 +283,21 @@ 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 of all customers and initialize the empty array list which will + // be returned + List customers = readCsvFile(filePath, Customer.class); + List result = new ArrayList(); + + // Loop through customers and if customer has more than X vehicles insured + // and less than or equal to X dependents than add current customer to + // result list + for (Customer c : customers) { + if(c.getVehiclesInsured() > vehiclesInsured && c.getDependents().size() <= dependents) { + result.add(c); + } + } + + return result; } @@ -130,7 +310,34 @@ public List getUndisclosedDrivers(String filePath, int vehiclesInsured * @return -- Agent ID of agent with the given rank. */ public int getAgentIdGivenRank(String filePath, int agentRank) { + // List of Agents and Customers + List agents = readCsvFile(filePath, Agent.class); + List customers = readCsvFile("src/main/resources/DataFiles/customers.csv", Customer.class); + int agentId = -1; // Current agent id to be returned if actual agent not found + + // Loop through agents and customers, if customers agent is the current agent + // increment totalCustomers and add the customers rating of their agent to + // customer ratings + for(Agent agent : agents) { + int totalCustomers = 0; + int customerRatings = 0; + + for(Customer customer : customers) { + if(customer.getAgentId() == agent.getAgentId()) { + totalCustomers++; + customerRatings += customer.getAgentRating(); + } + } + // IF customer ratings / totalCustomers == agentRank + // set agentId == to the current agents ID and break; + if(customerRatings / totalCustomers == agentRank) { + agentId = agent.getAgentId(); + break; + } + } + + return agentId; // return the agentId } @@ -141,7 +348,26 @@ 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) { - + List customers = readCsvFile(csvFilePaths.get("customerList"), Customer.class); + List claims = readCsvFile(csvFilePaths.get("claimList"), Claim.class); + List result = new ArrayList(); + + // Loop through list of claims, if claim was opened within monthsOpen + // The loop through customers and if the claim customer ID == the + // customer customer ID add that customer to the result list. + for (Claim claim : claims) { + if (claim.getMonthsOpen() < monthsOpen) { + for (Customer customer : customers) { + if (claim.getCustomerId() == customer.getCustomerId()) { + result.add(customer); // Add customer to result list + } + } + } + } + + return result; } } + + diff --git a/src/main/java/sf/codingcompetition2020/structures/Agent.java b/src/main/java/sf/codingcompetition2020/structures/Agent.java index e2e6f93..7fe6785 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Agent.java +++ b/src/main/java/sf/codingcompetition2020/structures/Agent.java @@ -1,11 +1,65 @@ package sf.codingcompetition2020.structures; public class Agent { - private int agentId; private String area; private String language; private String firstName; private String lastName; + public Agent() { + + } + + 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 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..4fe0c24 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Claim.java +++ b/src/main/java/sf/codingcompetition2020/structures/Claim.java @@ -6,4 +6,44 @@ public class Claim { 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 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..1796f50 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Customer.java +++ b/src/main/java/sf/codingcompetition2020/structures/Customer.java @@ -1,27 +1,178 @@ 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; -public class Customer { +public class Customer implements Comparable{ private int customerId; private String firstName; private String lastName; private int age; + private String area; private int agentId; private short agentRating; private String primaryLanguage; + private List dependents; + private boolean homePolicy; + private boolean autoPolicy; private boolean rentersPolicy; private String totalMonthlyPremium; private short yearsOfService; private Integer vehiclesInsured; + + public Customer(int customerId, String firstName, String lastName, int age, String area, int agentId, + short agentRating, String primaryLanguage, List 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.dependents = dependents; + this.homePolicy = homePolicy; + this.autoPolicy = autoPolicy; + this.rentersPolicy = rentersPolicy; + this.totalMonthlyPremium = totalMonthlyPremium; + this.yearsOfService = yearsOfService; + this.vehiclesInsured = 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; + } + + public int compareTo(Customer customer) { + return Integer.parseInt(getTotalMonthlyPremium()) - Integer.parseInt(customer.getTotalMonthlyPremium()); + } + + + } diff --git a/src/main/java/sf/codingcompetition2020/structures/Dependent.java b/src/main/java/sf/codingcompetition2020/structures/Dependent.java index d4deb1a..ada97be 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Dependent.java +++ b/src/main/java/sf/codingcompetition2020/structures/Dependent.java @@ -3,5 +3,9 @@ public class Dependent { private String firstName; private String lastName; + public Dependent(String firstName,String lastName) { + this.firstName = firstName; + 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..b09476e 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Vendor.java +++ b/src/main/java/sf/codingcompetition2020/structures/Vendor.java @@ -6,4 +6,36 @@ public class Vendor { 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 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..fa8a0de 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: gabe +Build-Jdk: 14.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..558b363 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 +#Sat Oct 10 20:11:10 CDT 2020 +m2e.projectLocation=/home/gabe/Desktop/2020/2020-StateFarm-CodingCompetitionProblem +m2e.projectName=2020-StateFarm-CodingCompetitionProblem groupId=sf.codingcompetition2020 -m2e.projectName=coding-competition -m2e.projectLocation=/Users/yc1d/Development/coding-competition/problem/online-competition artifactId=coding-competition +version=1.0.0-SNAPSHOT diff --git a/target/classes/sf/codingcompetition2020/CodingCompCsvUtil.class b/target/classes/sf/codingcompetition2020/CodingCompCsvUtil.class index 00daba9..91ae266 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..f83eb5b 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..0560e23 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..146aff9 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..42af068 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..02793b7 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