From 94d6627a3ed48973c88dc4456ab1493c2cceed92 Mon Sep 17 00:00:00 2001 From: Juanjo Pedraza Date: Thu, 3 Feb 2022 18:57:16 +0100 Subject: [PATCH] inicio --- .classpath | 26 ++++++++ .idea/.gitignore | 8 +++ .idea/misc.xml | 6 ++ .idea/vcs.xml | 6 ++ .project | 23 +++++++ .settings/org.eclipse.core.resources.prefs | 4 ++ .settings/org.eclipse.jdt.core.prefs | 5 ++ .settings/org.eclipse.m2e.core.prefs | 4 ++ Untitled.gif | Bin 0 -> 3552 bytes pom.xml | 25 ++++++++ s00.badcoupledsample.jpg.jpg | Bin 0 -> 16688 bytes s00.badcoupledsample.jpg.ucls | 55 ++++++++++++++++ s00.badcoupledsample.png | Bin 0 -> 9091 bytes s00.badcoupledsample.ucls | 59 ++++++++++++++++++ .../spring/badcode/s00/badcoupled/App.java | 9 +++ .../s00/badcoupled/CsvFileDataSource.java | 24 +++++++ .../badcode/s00/badcoupled/CustomerList.java | 21 +++++++ .../badcode/s00/badcoupledsample/AppTest.java | 38 +++++++++++ 18 files changed, 313 insertions(+) create mode 100644 .classpath create mode 100644 .idea/.gitignore create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 Untitled.gif create mode 100644 pom.xml create mode 100644 s00.badcoupledsample.jpg.jpg create mode 100644 s00.badcoupledsample.jpg.ucls create mode 100644 s00.badcoupledsample.png create mode 100644 s00.badcoupledsample.ucls create mode 100644 src/main/java/es/anaya/spring/badcode/s00/badcoupled/App.java create mode 100644 src/main/java/es/anaya/spring/badcode/s00/badcoupled/CsvFileDataSource.java create mode 100644 src/main/java/es/anaya/spring/badcode/s00/badcoupled/CustomerList.java create mode 100644 src/test/java/es/anaya/spring/badcode/s00/badcoupledsample/AppTest.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..0a1dadd --- /dev/null +++ b/.classpath @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..0890f5f --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..21e3ec3 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + s00.badcoupledsample + + + + + + 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.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..f9fe345 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..abec6ca --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.5 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/Untitled.gif b/Untitled.gif new file mode 100644 index 0000000000000000000000000000000000000000..c630d5b119a32e5651f0f06d76d3155f7c080116 GIT binary patch literal 3552 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 literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..3b0a946 --- /dev/null +++ b/pom.xml @@ -0,0 +1,25 @@ + + 4.0.0 + + es.anaya.spring.badcode + s00.badcoupled + 0.0.1-SNAPSHOT + jar + + s00.badcoupled + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + diff --git a/s00.badcoupledsample.jpg.jpg b/s00.badcoupledsample.jpg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3269ee9b115c786ca2ec34842e83788b89af969e GIT binary patch literal 16688 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 literal 0 HcmV?d00001 diff --git a/s00.badcoupledsample.jpg.ucls b/s00.badcoupledsample.jpg.ucls new file mode 100644 index 0000000..e308e67 --- /dev/null +++ b/s00.badcoupledsample.jpg.ucls @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/s00.badcoupledsample.png b/s00.badcoupledsample.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc60ceb8a97e869f94435f9a2c0f4915292866f GIT binary patch literal 9091 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 literal 0 HcmV?d00001 diff --git a/s00.badcoupledsample.ucls b/s00.badcoupledsample.ucls new file mode 100644 index 0000000..53fb7db --- /dev/null +++ b/s00.badcoupledsample.ucls @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/es/anaya/spring/badcode/s00/badcoupled/App.java b/src/main/java/es/anaya/spring/badcode/s00/badcoupled/App.java new file mode 100644 index 0000000..7bcfd80 --- /dev/null +++ b/src/main/java/es/anaya/spring/badcode/s00/badcoupled/App.java @@ -0,0 +1,9 @@ +package es.anaya.spring.badcode.s00.badcoupled; + +public class App { + public static void main(String[] args) { + CustomerList customerList = new CustomerList(); + customerList.loadFile("samplefile.csv", ";"); + System.out.println(customerList.showAll()); + } +} diff --git a/src/main/java/es/anaya/spring/badcode/s00/badcoupled/CsvFileDataSource.java b/src/main/java/es/anaya/spring/badcode/s00/badcoupled/CsvFileDataSource.java new file mode 100644 index 0000000..c3dd4cc --- /dev/null +++ b/src/main/java/es/anaya/spring/badcode/s00/badcoupled/CsvFileDataSource.java @@ -0,0 +1,24 @@ +package es.anaya.spring.badcode.s00.badcoupled; + +import java.util.ArrayList; + +public class CsvFileDataSource { + private String filename; + private String separator; + + public CsvFileDataSource(String filename, String separator) { + this.filename = filename; + this.separator = separator; + } + + public ArrayList loadData() { + ArrayList lines = new ArrayList(); + + lines.add("Customer1, customer1@sample.com, 234 street"); + lines.add("Customer2, customer2@sample.com, 523 street"); + lines.add("Customer3, customer3@sample.com, 231 street"); + + return lines; + } + +} diff --git a/src/main/java/es/anaya/spring/badcode/s00/badcoupled/CustomerList.java b/src/main/java/es/anaya/spring/badcode/s00/badcoupled/CustomerList.java new file mode 100644 index 0000000..46248ba --- /dev/null +++ b/src/main/java/es/anaya/spring/badcode/s00/badcoupled/CustomerList.java @@ -0,0 +1,21 @@ +package es.anaya.spring.badcode.s00.badcoupled; + +import java.util.ArrayList; + +public class CustomerList { + private CsvFileDataSource csvFileDataSource; + private ArrayList customerData; + + public CustomerList () { + this.customerData = new ArrayList(); + } + + public void loadFile (String filename, String separator) { + csvFileDataSource = new CsvFileDataSource(filename, separator); + customerData = csvFileDataSource.loadData(); + } + + public String showAll () { + return customerData.toString(); + } +} diff --git a/src/test/java/es/anaya/spring/badcode/s00/badcoupledsample/AppTest.java b/src/test/java/es/anaya/spring/badcode/s00/badcoupledsample/AppTest.java new file mode 100644 index 0000000..e6b96a2 --- /dev/null +++ b/src/test/java/es/anaya/spring/badcode/s00/badcoupledsample/AppTest.java @@ -0,0 +1,38 @@ +package es.anaya.spring.badcode.s00.badcoupledsample; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +}