From eecb9cfaebef8764fb3d03b5c374273ade73847c Mon Sep 17 00:00:00 2001 From: Kha Nguyen Date: Sat, 10 Oct 2020 23:54:04 -0500 Subject: [PATCH 1/2] submission --- .classpath | 49 ++++ .project | 23 ++ .settings/org.eclipse.jdt.apt.core.prefs | 2 + .settings/org.eclipse.jdt.core.prefs | 16 ++ .settings/org.eclipse.m2e.core.prefs | 4 + pom.xml | 14 +- .../CodingCompCsvUtil.java | 264 +++++++++++++----- .../structures/Agent.java | 44 ++- .../structures/Claim.java | 34 ++- .../structures/Customer.java | 154 +++++++++- .../structures/Dependent.java | 16 ++ .../structures/Vendor.java | 34 ++- target/classes/META-INF/MANIFEST.MF | 4 +- .../coding-competition/pom.properties | 8 +- .../coding-competition/pom.xml | 14 +- .../CodingCompCsvUtil.class | Bin 3251 -> 6423 bytes .../structures/Agent.class | Bin 428 -> 1355 bytes .../structures/Claim.class | Bin 397 -> 1124 bytes .../structures/Customer.class | Bin 806 -> 4209 bytes .../structures/Dependent.class | Bin 384 -> 783 bytes .../structures/Vendor.class | Bin 419 -> 1189 bytes .../CodingCompCsvUtilTest.class | Bin 3972 -> 5230 bytes 22 files changed, 595 insertions(+), 85 deletions(-) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.apt.core.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs 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/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 00daba9d49249e6950fa6b4b75732ac294bb504b..738f62eb7b6808860c68f82b96ef14f0daac7f30 100644 GIT binary patch literal 6423 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 literal 3251 zcmb`JU2_{X6o!x7q;a-|mb3}wdmH)@x1~-)OG|7#6I=qGF$8KmrMXjf6YW-y&%b{C9RTh@Z3zklZt0_PBx5eR zk?aqc;f71GwYjxfu4kil9Ifl)j^W7?ED*T(oF3D1LPfW{clew|hQQe>7u?hcoY^St z6Ij3(Spa8X`8+JbSppZDT(ED_{vlIsdYCW*D@_^EWS=T-??;0RrpGmbJI(xxDg@3c zMq?DX%Psi9MsuRCWfZ1WnHs4lRO?DskUoD04wmOwf_o%RgZF8r%PRCcDhWMx=e*> zh#hp2z)er|lp7;YON}DDOJHw~(z!4Jfp9EJ4+XV*)U*bSzGz~{rL>Fn`6`z}kLKC3 zr*lG8U){6Xs5G*TrOTPw*dRr?O5o`nt;?#O(Q9bodSvTa$2O6Dru43oeOp@VWJj|s zY+_Yy`ty@-ljx)_wb{`Tf$N^eX?fO_PM)}Y-7}V!HPCGW2XnL_YoPH5Y!6*V zFPgZpYRtbObgHO`aOz$2q~poDog?gjCyh%JirQx)mP$Y6ruQX3X5tC1m7;5V8+*JV zT9F)}&PN^rvpsmw@Mu3e<*WJf8OqN}_%VU+=Uu`f-WG5bz3PaV>nM?$#g7%5rSR{1 z!;@aa=fi%kz)RrYd5?eaYI)X6mlp3cyvsT@&uc0M6kR?w0Vlgm+~;6Fe{8dI`l} z@S*?#9_?d*D;NxLei(q~*YJ+O>u>?1F5-0o-pC;L5pChYZ?N)g5d`y+cgA%#<< zz>(g9w~=RM{FCsGhj80Vcn{upT0U^31*awSkREzT>+qo?U2~*GN4oAIJ@%4r!iFQ2 z9BJYYIz8jho|kk7K60eHj#O}(e53;}sSKNrbkC6{*=>0=aWCmUJaD8>9BJaXPty-x g(nENZyZS$Q37^8Y(^7F-{@dxFy`(C7T7b{~2FpNm>;M1& diff --git a/target/classes/sf/codingcompetition2020/structures/Agent.class b/target/classes/sf/codingcompetition2020/structures/Agent.class index 26bf31f236fb6fb54997543cc9d682faad0ab137..7d4891ea4798ce28a2793bd7e28c678dbe05e4b9 100644 GIT binary patch literal 1355 zcma))U2hUW6o%j7vn->fNWW~WrPjJY?P9&uG%+SkNJzbC)B9!F;x@2rb_aiz7n<0Z zc;OH5M;Xr0b$~uy0IqfznM7C+fl-(VVtt)57Z@4AhxG)^1!=vbRy+w~$3eLgJplYBvb|i}9%E z$5(D|Nakuc^4#II8wb3eZsyecAQ5PF|GPP&vj)D>jdCkgzf*$1mP8%}I!yjL%-J2L zE3!d%TeBOB{j&X$L=h__WxJNH+lxw0R;Fa#>GiPliA0H=Wpd8;1th7?XE(>PXA&06 zB+339%(6{xm1Ql7@;uw@wyn!(9DDwGz!z!h-cR`1P$x^4K1m)KZl7iu?n6hS(viyQ zNO>ui$w4nf<9%8=6a~e6^BY#bXxSQ#1-+R?mF99Hzys81C9sYS8viwa#pb7!SsKmT zcsMnm5ov}?HFxf?IWKML-3oQHrZa3zRMYZ|#(gsN4t5P7d!JJvH6zGl>@R?{?y#2z z*`jjWOF;Od8KiCmIY@)-8bJ=tAO~rXeFCX30pXWskf%nFqcq5&5yUow9Hl{Q0%Hq)$ delta 35 rcmX@jwT7AN)W2Q(7#J7~8N@eo2{2CPVe(>RoE*;N#LB?H#2^L$z?lde diff --git a/target/classes/sf/codingcompetition2020/structures/Claim.class b/target/classes/sf/codingcompetition2020/structures/Claim.class index 1ce796d6b4bbd86e5fd9c0045b14f53408639028..ed4ef8b80b07e169f1f93c4270fa7dd1eeda789f 100644 GIT binary patch literal 1124 zcma))O>fgc5Qg7%+@vv1(*{VPfqp^TBuKa_M^G=3kRkDX@O!-nfqMhBN1EawWY~pysi6I28~>0n5vhGzw(Q7gf)X z63L!1d4ecRFO#!t8ItFn3RQY4Q0ey01F{b3yfn>JQZC1>)F)9enJuE7EGwpjhl zMvc`CR?j^Gt121fEmPt#OZRN7qApO^iEqbYcE@*lKg@^1;zJwOUEYONLPP`-e04Om2dz6 delta 34 qcmaFD(aX$r>ff$?3=9m03}O?xeoo%T=)}l4`6r_jD+2=)gD3#j1PU7f diff --git a/target/classes/sf/codingcompetition2020/structures/Customer.class b/target/classes/sf/codingcompetition2020/structures/Customer.class index 844ea29474f5bc9dd328dee078d97b0567ad1de8..e3500940660ea1c428fef36bc72430850d71221d 100644 GIT binary patch literal 4209 zcmb7`TW=dh6vxjbY0@~Gdz+G8pyleOr4E4>+O&ZrCDe_Zrf~^0g~ED0aW=Jg!|pm# zK;i);9zfy&BpyKG0VE!P2asAJ@xTY*Lm~dh-+|8Aw z?d2B3-38YxFYK+@H90G&*YT_MnkT4#(+$FiR|Sm~S_c=S0K~97ShZul+pfT>#}1?| zs1FZb#5em6(C|*+*6d)ffGgA+PMNXxM74-`ipMG zvpE)m<~8|p;ZY)ZH9lZ=4*O-c5Y1J;>Nj)XF<|~p7E?G3ln7uH-5-N=~)EtX*77ej?AB&AT z%qUMTMK)NlXqde-%3D?FP;3(yDMC_Y>$fZ#p;4qdwvG*YvPFg;gX3yvEwfv}qA{iz zgPSI+@b4ER@;4R-vc29H6N`^u(KsDaIc-05yqS&GnS7nA`s(8!%G*qIR_oqQ zT(OoLUTf<+M0tZDH!M0rPbkQCy(hcD+revozd70d1B)hO`<8;fal^It#${W_qN8j( zf>d;fz(n$HCmWl+Di$5%1Wv%qU?OM~zIQs>pWW_Tbezj&6mFfWDwTD8J{*qI+!*HZ zgy5}qEIL6?suD`LO|DeT&f_s%eNai8O<4^IR5 zK8U~m5Q|;hxk(`d0X>-%EC}euq%a5peV7!6AfW$}0#l*YlEMfCG*eO-gMiw`=V9EV zizf8@jAIdXmGnFU0R@y4CLy3&lEP64D2SwR3<6S~6plkc0+YfC%y_|b9-pTGp2N4m z_kpRu=;=QjH+dGH93sMvp2Mf54Cr}!0Z)RmbQ+(X&JSqncZgloa=u`6K1(k)o#$ZP z1)tujV-IPnbu_1&=o0E-wz0#6vT7dBXsUeh>S@sHAk%+nAah2L8T$ax)P$q4eQ8RWbUavdPcDIlsn1ifZV%|$&mD@Kr6b80T?AZq|A zrhuq+6m;1bkt=#c){P*qnJaOWgR2{NSFem z#;Kqcx{20S({nX3Pj2ZzyGEcQ-QM5i?Zzgncvf=-?R<;Dx*JnT&6SS<_DKpDk8?rm z@K7VK7Xy9*D}vskcboBV&C3ULM^E0TM#Q`HUemcXX^^}-ddxlp+UF@~>O~^xeIv*{ z9pnom$cJW-dpgLM0Qo8fM7_8K*+!6(4)V1Tq-+K$=^)<#7w zkS%jLZ|Wf51LTJk5cOgfedU+0gDGUJelI7{?7JDKzf8lQr+HAUwE#&XGV=(tS9 z=2e&1sH14utSR>`+IH_a?>g_fe&5{>7)npcLJ(_;BB5Hx&1Q{H4;O>R5Y}^ N$BemOHaZ;5Xb+^n^GR~5?=>zfYA~>YPe`P5jF3w`2Y^eQ#1UdR_eO^0423!jPMokESs-?Xht;m~cxnBuB#aWY?T=hJ0uB-jgm>zG6sB&Ev%p1|SrD z%w>CpTddZ$fsWCsn`QBQ7sk)u6=15W5PB5gBALxiHd5YxAID^)67OutHLd})= z-Rp%~8BR$SrhgNnk6QaTszGOzUT8UFHS!EPnTpomkb3sh(qv5cc1_lO024QvvCPoI`i5GPz+8&u)$7s&TIC&eR6DtD)6N3-{6N?J< diff --git a/target/classes/sf/codingcompetition2020/structures/Vendor.class b/target/classes/sf/codingcompetition2020/structures/Vendor.class index fdbca9b6e0183e880547b8ff174552c31967ec4f..4f8e17b780711d1ec14d741e54f3ba9468b865b3 100644 GIT binary patch literal 1189 zcma))!EVz)5QhIv+_-T}T|%2cOIsSCangdTas*XENJx<)kO;~lH^*7RR;gXtPM?Yc zNK{B1cmN&>F=MAGbsUMyu6OtUXTF*7?>|3(0eFFDItl{q=#%3GBju01;QT_yDprAi za(r^^L~%Iv;%O)&r!W0c5bDqb*3aBa*O|Ef*m*xZlU^*adYL?TMgpQEpt+%R1*+W} zWiJjX!Ak)%m40wzIt%E^?|H$6B;!D!^h)_EJ{2h1tv7DTC<~RWOV delta 35 rcmZ3=xtN*j)W2Q(7#J7~8N@eo@iI>S%ILz#IN6HHiIstYi9rki#w-Y} diff --git a/target/test-classes/sf/codingcompetition2020/CodingCompCsvUtilTest.class b/target/test-classes/sf/codingcompetition2020/CodingCompCsvUtilTest.class index 765ac60fa2a1b12f484db96055457db1849af952..66d84534e8a1bedaafaf6d69f22ba87911380f25 100644 GIT binary patch literal 5230 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 literal 3972 zcmcguYjYD-7=BJ~Nz)~5)3n@F76h6`Xxc&r3Zf;Y7znpsg5{!aH>b_Eo87v*2~*U; zK~esVxqkafPc6 z!yaXs8_u+*^IM8jVo2m0duAPr;Lp>htZCSeVmJjwuka{383t`j&6E|*$XMJqE0)Ub z%#`9N0?E#}p!Tq8S4mmb6|Edth(damvb*0`?olhYW0twq(C=nQ?`S+w@gd?>ZWPTX zfCNKoM*vU3SMPMslGkh}iav%;mz^i}Gf06kZ)Pt;uNM^0{RQEEh7$zM351F+;tAcFpNXO;FyH{IKa@I*9?B6QeNcNoU*8MkvgWT=mo{ngzQhYIVH_z z7`$YdN!0A$Mh5wFpSFyOF|| zEz7i`_<-T>c|&BXUgbquRE(y(Ao7}J5^C9=kYk;5B`%k_Q!n>H>qd8YnoY^(5 ztmdg@Rj3f7m}mIwwIk_bz9Jm%o~_~d9~2pms3I^yOzmmQEN3-m-J!$J+uWrP#U~7R zcRsgB;K2(Q2W4}OTZ%(DN=Zw#A}hLXKJ?SpYt^#Ot6Y~CIW5Se!)Ia)L*)88g&FQp zXXnLf(^}w)WnWsqrK{^%({?6pHHv$T{kSuikZKCRUlE32+tx_9JZ>({a;vJTJ6Gg( z5OdTw^y{YKl=Ssm7B6d+^3DYsRM{K#h3#16m0dKI?Udj62nLtgP$=sL@YtL}UkRPYFj3~{&H)>kAfVVN#1TYE%z0^MLa z>Lz5n;NHUa9nC3S(ddSqq4sMmiwdWPlrv^kO51==R}^$>dTnW3P%|WyU^1Kyq4siH zx|@56Zh+hp45TP3fr(Re6Ye_w#{z_ILF|!)FYy&MU(%m9ikhwJrp=2}79G)|c6U64 zaBh2g@uqg2EBbyiRs)l*!sNFS9^*TPfiP&{?StYhn_7x+x_jLaqu8wbS`+Unh6AB* z#bFUq9Hz^@mF|cr65_EzQiP-ySEeUNUGAcFdU(|3ILY+}1VqXm>(l0Q)@EjvGjQ&L0EjUHrG(DPtZnUA7MuKl229P9M{WwCS6fqhm z4(DjkY1%1ymNAa^Nn$udJ6mv;#)9`b`WFmO`wU|*FtL!h@EjNapjpqN*asYHLW|YW zCPUHgkk^IIu_P{~f5vDcnwZ+a^wVFEOX8+KbK9S394+n!ZIBL?!ch!089Y`uI2&qk zGyS;``Xfzf4f=&$pxp^UJ0FU+unV-iA!t`a(e8($O;O;5YX_2e;5stCfzN)$B7^X5 z!6Ivt3zbBu!;D`SJu06wI From a312c204625db506c2674f8b95985de5d8515e2e Mon Sep 17 00:00:00 2001 From: Kha Nguyen Date: Sat, 10 Oct 2020 23:56:29 -0500 Subject: [PATCH 2/2] feedback --- feedback.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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!