From c66e1611dacc660bef8b4df07e63614cff6be86d Mon Sep 17 00:00:00 2001 From: Rachel Masters Date: Sat, 10 Oct 2020 19:33:42 -0600 Subject: [PATCH 1/3] test --- src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java b/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java index 58267da..07ea8a0 100644 --- a/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java +++ b/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java @@ -30,7 +30,7 @@ public class CodingCompCsvUtil { * @return -- List of entries being returned. */ public List readCsvFile(String filePath, Class classType) { - + //this is a test } From b22be010798ff2c58ce7478be92f361ca95da4f4 Mon Sep 17 00:00:00 2001 From: Rachel Masters Date: Sat, 10 Oct 2020 22:50:22 -0600 Subject: [PATCH 2/3] Current Code --- .../CodingCompCsvUtil.java | 141 ++++++++++++++++-- .../structures/Agent.java | 32 ++++ .../structures/Claim.java | 27 ++++ .../structures/Customer.java | 91 +++++++++++ .../structures/Dependent.java | 15 ++ .../structures/Vendor.java | 26 ++++ 6 files changed, 323 insertions(+), 9 deletions(-) diff --git a/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java b/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java index 07ea8a0..d731415 100644 --- a/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java +++ b/src/main/java/sf/codingcompetition2020/CodingCompCsvUtil.java @@ -1,6 +1,9 @@ package sf.codingcompetition2020; +import java.io.BufferedReader; +import java.io.File; import java.io.FileReader; +import java.io.IOException; import java.io.Reader; import java.util.ArrayList; import java.util.HashMap; @@ -29,8 +32,106 @@ 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) { //this is a test + try { + File file = new File(filePath); + FileReader fr = new FileReader(file); + BufferedReader br = new BufferedReader(fr); + + if(classType==Agent.class) { + List agents = new ArrayList(); + String vars = br.readLine(); + String line=""; + String[] arr = new String[5]; + + while((line = br.readLine())!=null) { + arr=line.split(","); + Agent p = new Agent(); + p.setAgentId(Integer.parseInt(arr[0])); + p.setArea(arr[1]); + p.setLanguage(arr[2]); + p.setFirstName(arr[3]); + p.setLastName(arr[4]); + agents.add(p); + } + return (List)agents; + } + else if(classType==Claim.class) { + List claims = new ArrayList(); + String vars = br.readLine(); + String line=""; + String[] arr = new String[4]; + + while((line = br.readLine())!=null) { + arr=line.split(","); + Claim c = new Claim(); + c.setClaimId(Integer.parseInt(arr[0])); + c.setCustomerId(Integer.parseInt(arr[1])); + c.setClosed(Boolean.parseBoolean(arr[2])); + c.setMonthsOpen(Integer.parseInt(arr[3])); + claims.add(c); + } + return (List)claims; + } + else if(classType==Customer.class) { + List customers = new ArrayList(); + String vars = br.readLine(); + String line=""; + String[] arr = new String[15]; + + while((line = br.readLine())!=null) { + arr=line.split(","); + Customer c = new Customer(); + c.setCustomerId(Integer.parseInt(arr[0])); + c.setFirstName(arr[1]); + c.setLastName(arr[2]); + c.setAge(Integer.parseInt(arr[3])); + c.setArea(arr[4]); + c.setAgentId(Integer.parseInt(arr[5])); + c.setAgentRating((short) Integer.parseInt(arr[6])); + c.setPrimaryLanguage(arr[7]); + + //String dependent = arr[8]; + + //c.setDependents(); + + + //c.setHomePolicy(Boolean.parseBoolean(arr[9])); + //c.setAutoPolicy(Boolean.parseBoolean(arr[10])); + //c.setRentersPolicy(Boolean.parseBoolean(arr[11])); + //c.setTotalMonthlyPremium(arr[12]); + //c.setYearsOfService((short) Integer.parseInt(arr[13])); + //c.setVehiclesInsured(Integer.parseInt(arr[14])); + customers.add(c); + } + return (List)customers; + } + else { + List vendors = new ArrayList(); + String vars = br.readLine(); + String line=""; + String[] arr = new String[4]; + + while((line = br.readLine())!=null) { + arr=line.split(","); + Vendor v = new Vendor(); + v.setVendorId(Integer.parseInt(arr[0])); + v.setArea(arr[1]); + v.setVendorRating(Integer.parseInt(arr[2])); + v.setInScope(Boolean.parseBoolean(arr[3])); + vendors.add(v); + } + return (List)vendors; + } + + } + catch(IOException e) { + System.out.println(e); + + } + return null; } @@ -41,7 +142,12 @@ public List readCsvFile(String filePath, Class classType) { * @return -- The number of agents in a given area */ public int getAgentCountInArea(String filePath,String area) { - + List agents = readCsvFile(filePath,Agent.class); + int numInArea = 0; + for(Agent a : agents) { + if(a.getArea().equals(area)) numInArea++; + } + return numInArea; } @@ -53,7 +159,12 @@ 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 agents = readCsvFile(filePath,Agent.class); + List agentsInParam = new ArrayList(); + for(Agent a : agents) { + if(a.getArea().equals(area) & a.getLanguage().equals(language)) agentsInParam.add(a); + } + return agentsInParam; } @@ -66,7 +177,19 @@ 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) { - + List agents = readCsvFile(csvFilePaths.get("agentList"),Agent.class); + List customers = readCsvFile(csvFilePaths.get("customerList"),Customer.class); + int agentId = -1; + short numCustomers = 0; + for(Agent a : agents) { + if(a.getFirstName().equals(agentFirstName) & a.getLastName().equals(agentLastName)) { + agentId = a.getAgentId(); + } + } + for(Customer c : customers) { + if(c.getArea().equals(customerArea) & c.getAgentId()==agentId) numCustomers++; + } + return numCustomers; } @@ -77,7 +200,7 @@ 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) { - + return null; } @@ -88,7 +211,7 @@ 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) { - + return null; } @@ -103,7 +226,7 @@ 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) { - + return null; } @@ -117,7 +240,7 @@ 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) { - + return null; } @@ -130,7 +253,7 @@ public List getUndisclosedDrivers(String filePath, int vehiclesInsured * @return -- Agent ID of agent with the given rank. */ public int getAgentIdGivenRank(String filePath, int agentRank) { - + return 0; } @@ -141,7 +264,7 @@ 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) { - + return null; } } diff --git a/src/main/java/sf/codingcompetition2020/structures/Agent.java b/src/main/java/sf/codingcompetition2020/structures/Agent.java index e2e6f93..f75bf2b 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Agent.java +++ b/src/main/java/sf/codingcompetition2020/structures/Agent.java @@ -8,4 +8,36 @@ public class Agent { 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..45757d2 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Claim.java +++ b/src/main/java/sf/codingcompetition2020/structures/Claim.java @@ -6,4 +6,31 @@ public class Claim { 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..e9640b5 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Customer.java +++ b/src/main/java/sf/codingcompetition2020/structures/Customer.java @@ -23,5 +23,96 @@ public class Customer { private String totalMonthlyPremium; private short yearsOfService; 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..4e8c5fb 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Dependent.java +++ b/src/main/java/sf/codingcompetition2020/structures/Dependent.java @@ -3,5 +3,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..28e1742 100644 --- a/src/main/java/sf/codingcompetition2020/structures/Vendor.java +++ b/src/main/java/sf/codingcompetition2020/structures/Vendor.java @@ -6,4 +6,30 @@ public class Vendor { 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; + } + + } From 178651e8e50589d8d079c277b833a5e602c9b7b2 Mon Sep 17 00:00:00 2001 From: Rachel Masters Date: Sat, 10 Oct 2020 22:57:29 -0600 Subject: [PATCH 3/3] Final Commit --- .classpath | 32 ++++++++++++++++++ .gitignore | 1 + .project | 23 +++++++++++++ .settings/org.eclipse.jdt.core.prefs | 15 ++++++++ .settings/org.eclipse.m2e.core.prefs | 4 +++ feedback.txt | 5 +-- target/classes/META-INF/MANIFEST.MF | 5 --- .../coding-competition/pom.properties | 7 ---- .../coding-competition/pom.xml | 32 ------------------ .../CodingCompCsvUtil.class | Bin 3251 -> 8005 bytes .../structures/Agent.class | Bin 428 -> 1355 bytes .../structures/Claim.class | Bin 397 -> 1124 bytes .../structures/Customer.class | Bin 806 -> 3882 bytes .../structures/Dependent.class | Bin 384 -> 783 bytes .../structures/Vendor.class | Bin 419 -> 1189 bytes .../CodingCompCsvUtilTest.class | Bin 3972 -> 5230 bytes 16 files changed, 78 insertions(+), 46 deletions(-) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs 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 diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..5e8d853 --- /dev/null +++ b/.classpath @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target/ 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.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..b9a1035 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,15 @@ +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.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..17e7197 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): Rachel Masters, Caspian Siebert +How many JUnits were you able to get to pass? 4 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? +It was really cool! \ 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..ae872bea41f24cb17f79a73734d29864361e044d 100644 GIT binary patch literal 8005 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 diff --git a/target/classes/sf/codingcompetition2020/structures/Agent.class b/target/classes/sf/codingcompetition2020/structures/Agent.class index 26bf31f236fb6fb54997543cc9d682faad0ab137..a840a8474e99e6d913c3beae0adac2127ceb42fa 100644 GIT binary patch literal 1355 zcma))U2hUW6o%j7qm*S7#6qjIRj{@TXt$}CnkL4i2??neHN9V!Ep7w5W_R#cd7+7o zi5LC=f0Xf@0YsM}@n+6^yze>BnVFxzzW)I50!{%Lfp&83c+oHjM_x4f;Hy9dQFwZC zdg3H1o_cB;`-$^<XG zQ~H+zo9vsCT%dRz#EH6aCp4$+#dPCU5C-Z@AZxd;DA}86=v&C5A|Y`{pxh5a|6)2B z`0+b;FeY=gA9?Qh%8dhF&o^`GeUJ!r`~Te>(ODy3=|;H~s^2R@U`Ha44LVHzI?UNU zrYo>Pce`b`SNmoAzC;0=BxSpn*6dX!Co561{``8_`9z|~&JsBn`vQ_w=Zl+T*^z|B zGD)&O2a9a8TV+{SqO{DmxNYk)n#P`g9`Hq4y7yy#HZ;kSrB9MahTErEhWpTwsC1;V zI#OPWC34UU(Ri0u4n;vR-}#2}7cIL-=Of@ghXxt}LH?V5}+54OVsTx5Z;qeMc_ZE9; zkQ$Y%uL0qUW{{>4q?HEQF@hYJL0V~$27&CZ0pXWskf%nF!!*dg5yUow9Hv2<1kzdq k!e5O++D4F08sxwT^2`jqyPW_ 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..aad8492f891c89d07f145474a4ba93b006315c2d 100644 GIT binary patch literal 1124 zcma))&u-H|5XQev+@vv18`=_RQ)mhlk|5!#96`NALW&gV0n|foj zC&zB8lg!syB2#x5cq**J5@=m|pFKD5qPcrEy_CKdsQc_4%>=|q!1l9L$DvI4qUHy2 zD%mq3PZ&q~B0am35qaLINa<67YOjATU=8D$v{A*TgFA2pHpeQG@3U|!laJmskOEud z*!O~SFHwBXFD-qcQh^ua|L)>7fy|{g9Wf%+A2lFw-@zJc7OVFi z)LGqR^}-{tuF_%NG9{j{^w7aN8UhWI_<9^xZ*r6O-C`&#e&)cw$-DFr)rUAseEC-K zBy0o!l3xOc6jY_>v`}Gw+Etj$SSo8QWhBe#X|%L9>Ex0XWY-2iu<_N%TC~>8Wfga6 z&r%X#3)^G`c5si@+ri(^{zA?Qmce#u@B{4T!Kb9IP)u#m`HuFov~6yiRB*#&XkV-H z@{Gp)G4)<4NT&$WDg}914$>)tY*V?N6(Brd26==7T8k6u7D3vjAdm4R556^#ZV_ac pK=xLE@C!4@)6$6?6+!k(L7taSff$?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..6801c3422f8e7efa21998c0d2d54d52bd073d9d1 100644 GIT binary patch literal 3882 zcmb7`Yg5}s6o!w$fndZv&`Z*iOOu#OFd=D@0&zo42~HhwF>w<}lL}ebqPFBpGBffB(EEqI={GQlCbP{&CuL%eGT7 z-Fm|c?7()NmF1P?v>$j)GiZ92pUyV@z^z+QBs3a7F;0zi&2TE|-J=uB3^YobErVQH zBQ2-V(6R0L!H!Y4G@8t}1;xO_PHP%ntQpaIzfplz!tg9Zqd`140lOI%cY8(v0h|^! z8f$oV-SE!x*t#i1$+Fe3oH7(XxWav!fn7`IZ9l*+Lq)sd82ku&@c?3Ze)K#QxPei7?m9uWc2@ALy4|d6G1lZWARkh8U<>wq9q*pvSNAId|=&n>>#62e`>CTfMwmXm85>Us?!zv z0)FzgW9>BSN0zs59MweRUDK$Q4A180)?^~6+KATD2fcojcx*pXv4ZH4^8iR4-S1vcq;ia@L$=i}hD)irj+bkd1G`z$X^<|$9&S49r&GP=>~?$MYNKMY!9$&rj5z=UOrg?v4K>G$YdQ_HdXN`I9VSC1mm(W{tCP;^WT*}+ zbTqPwiWDI!vh}7;BQ%OsN7j)+B2{GgNeBzwwal`dPGd|l37NDUhX1@6k-y0(ke&6O z?V0@eDrb^ioyKV*%xUMQQ>|>Y_vF{vlxIJFQ+6|x@2b|bMpUu7?QeJV9in`|kU!~k ziKauy&h!XdHcPM&8o6a zpK=0cpi-DNV#F(9oP`z#9j;&EDUDIXcwzo;n*CFl zUBh)iOeX0%?)A`sZqQeF(L!nIrc7v26{5?@h@=V-nq&Vam+x0=8Fj&8TNPKw!C zMCq#VFcVs}wr4bsA5$;Tq5|a39}>uQB}kfxJE@(>`8VnDcu804`sA{jX%t4fe3>WE}ykjDVY#DH)UGsp&ghpXH*SsCPs66AZ@ zYKgnLCM$zv0kRnb!lwv>JXNMs4j|8BK=>GAkRK?I)((%c=RJ|x zk%96`paT7P?qp9mDd0IgSJ2Ko4Azg+m+;%dv%3H*#DIn8Y7ti9kvD*^_mn{0rxzII zQU{0=1Hzwq205W$ag~d;CP$>91aZi1iQC1BKB~zeK0tyP5dP0#kOn%b HkAC|f*B?;e delta 35 rcmZ1_w~USJ)W2Q(7#J7~8Pqp&=`l?fW?RO{IC&SF6DtD)6N4H6%FPKF diff --git a/target/classes/sf/codingcompetition2020/structures/Dependent.class b/target/classes/sf/codingcompetition2020/structures/Dependent.class index 3ee505f7dda4d5aad7c64d98dd9748ea80a0698b..c157c6f44630656f4d281ac66b3bb3ecb13edc4a 100644 GIT binary patch literal 783 zcmb7>OHaZ;5Xb+^o3`=>@pbS97%jo0hKq(1!2^bSDGM%vmb8nXOB0QW2S0!x$~ap= z!o!1UGP^T7|C!%RKfm5T09@iEju6ASKQwK3Ae@oyPG?*SDO{&fZ`4g+dUIROJ?@*g ze8!ytcVrw9hRoP{w9JX+jLf_KnA?&eITW5RJJyslcTE#G6;!V$8` z5Ux~v43Qgmz%_(n7)T(=kZucycjnVR_wKF!B&g`x)}&{7LivkeL_P?g!EFC)075ZF zT((xYg-UfBI0=S=fhb~>@2}+-E8FR64xP%j7egxffq}S^>m*;s8MLlD_iWx0YOd7p zUN6+ja7wZ;{hJVd)H=9P4LYOrLdzkmk!RA$RJ8U6{W(b6BO42XVWjA8{3IZa40#M$ z5cc1_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..7fa26ad27a54d41f2408b6fa2f5bba2a8ba313a3 100644 GIT binary patch literal 1189 zcma))-EPxB5QWbsZrnI-6Vf!LfAoh!owVSpT!JbgB&0|YNTkX|?i^=Hw@U5GcKTFY zfJBAF1rNYOA!h6}rH&(Uv+LbGXXcw3|Nisy7l2oIp(7{I3_shhKTzJ#^{=jFq$1^e zrzfW;b{GX?HyQ^rw7b$9_<;^hpmOQlIQGc#hW5w)rF0{K#hduKH4qRj0nG`dBT#MM zD?3p@30@1BiS&~b(OE!OUdQ#XB^i4Hg*VDm(V0NrYIG^iJAWVzDFA)~v>Cwd{XlLdPOW$)8A9tyv`pD^K$$&0+Ub6GhHmo@T#mTv3IsyVenF zkJXk510?~2)YC`J>Tz_VRWBafEuJnxtnmu8*lVv6TU`{WS$r$pqQK?hMG$Ew+%mLvEGsrVMr!_sA!!*cNCP)L#iTS~34$~kz R1hP8^gnuyxIf`d+{1?cZsq+8; 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