diff --git a/Hurtlocker.iml b/Hurtlocker.iml
deleted file mode 100644
index 22967e8..0000000
--- a/Hurtlocker.iml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/groceryList.txt b/groceryList.txt
new file mode 100644
index 0000000..93ba446
--- /dev/null
+++ b/groceryList.txt
@@ -0,0 +1,23 @@
+name: Milk seen: 8 times
+============= =============
+Price: 3.23 seen: 5 times
+------------- -------------
+Price: 1.23 seen: 1 times
+
+name: Bread seen: 6 times
+============= =============
+Price: 1.23 seen: 6 times
+------------- -------------
+
+name: Cookies seen: 8 times
+============= =============
+Price: 2.25 seen: 8 times
+------------- -------------
+
+name: Apples seen: 4 times
+============= =============
+Price: 0.25 seen: 2 times
+------------- -------------
+Price: 0.23 seen: 2 times
+
+Errors seen: 4 times
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 39639cd..3c31de2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,6 +7,18 @@
io.zipcoder
HurtLocker
1.0-SNAPSHOT
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ 8
+
+
+
+
diff --git a/src/main/java/Main.java b/src/main/java/Main.java
index 632942a..500a51e 100644
--- a/src/main/java/Main.java
+++ b/src/main/java/Main.java
@@ -1,17 +1,201 @@
import org.apache.commons.io.IOUtils;
+
+import java.io.File;
+import java.io.FileWriter;
import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
public class Main {
- public String readRawDataToString() throws Exception{
- ClassLoader classLoader = getClass().getClassLoader();
+
+ Integer counter = 0;
+
+ public static String readRawDataToString() throws Exception{
+ ClassLoader classLoader = Main.class.getClassLoader();
String result = IOUtils.toString(classLoader.getResourceAsStream("RawData.txt"));
return result;
}
public static void main(String[] args) throws Exception{
String output = (new Main()).readRawDataToString();
- System.out.println(output);
+ try {
+ File outputFile = new File("groceryList.txt");
+ if(outputFile.createNewFile()) {
+ System.out.println("File created: " + outputFile.getName());
+ } else {
+ System.out.println("File already exists");
+ }
+ } catch (IOException e) {
+ System.out.println("An error occurred");
+ e.printStackTrace();
+ }
+ try {
+ FileWriter outputText = new FileWriter("groceryList.txt");
+ outputText.write(doingTheFormatting());
+ outputText.close();
+ } catch (IOException e) {
+ System.out.println("An error occurred.");
+ e.printStackTrace();
+ }
+ }
+
+ public static String changeMilk(String input) {
+ try {
+ Pattern pattern = Pattern.compile("milk", Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(input);
+ String milk = matcher.replaceAll("Milk");
+
+ return milk;
+ } catch (Exception e) {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ public static String changeBread(String input) {
+ try {
+ Pattern pattern = Pattern.compile("bread", Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(input);
+ String bread = matcher.replaceAll("Bread");
+
+ return bread;
+ } catch (Exception e) {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ public static String changeCookies(String input) {
+ try {
+ Pattern pattern = Pattern.compile("c[o0][o0]kies", Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(input);
+ String cookies = matcher.replaceAll("Cookies");
+
+ return cookies;
+ } catch (Exception e) {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ public static String changeApples(String input) {
+ try {
+ Pattern pattern = Pattern.compile("apples", Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(input);
+ String apples = matcher.replaceAll("Apples");
+
+ return apples;
+ } catch (Exception e) {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ public static String poundToNewLine(String input) {
+ try {
+ Pattern pattern = Pattern.compile("##");
+ Matcher matcher = pattern.matcher(input);
+ String result = matcher.replaceAll("\n");
+ return result;
+ } catch (Exception e) {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ public static String correctSeparator() {
+ try {
+ String s = readRawDataToString();
+ Pattern patter = Pattern.compile("[!@^%*]");
+ Matcher matcher = patter.matcher(s);
+ String result = matcher.replaceAll(";");
+ return result;
+ } catch (Exception e) {
+ throw new UnsupportedOperationException();
+ }
+ }
+ public static String nameChange(String input) {
+ try {
+ Pattern pattern = Pattern.compile("name", Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(input);
+ String name = matcher.replaceAll("Name");
+
+ return name;
+ } catch (Exception e) {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ public static String priceChange(String input) {
+ try {
+ Pattern pattern = Pattern.compile("price", Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(input);
+ String price = matcher.replaceAll("Price");
+
+ return price;
+ } catch (Exception e) {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+
+ public static int findGroceries(String input) {
+ Integer holdingValue = 0;
+ Boolean checkVal = false;
+ Pattern pattern = Pattern.compile(input, Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(readyForFormatting());
+ while(!checkVal) {
+ if (!matcher.find()) {
+ checkVal = true;
+ continue;
+ }
+ holdingValue++;
+ }
+ return holdingValue;
+ }
+
+ public static int countingErrors() {
+ int counter = 0;
+
+ counter += findGroceries("Name:;");
+ counter += findGroceries("milk") - (findGroceries("milk;price:3.23") + findGroceries("milk;price:1.23"));
+ return counter;
+ }
+
+ public static String readyForFormatting() {
+ String result = poundToNewLine(correctSeparator());
+ String result1 = changeApples(result);
+ String result2 = changeBread(result1);
+ String result3 = changeCookies(result2);
+ String result4 = changeMilk(result3);
+ String result5 = nameChange(result4);
+ String result6 = priceChange(result5);
+ return result6;
+ }
+
+ public static String doingTheFormatting() {
+ String result =
+ "name: Milk seen: " + findGroceries("milk") + " times\n" +
+ "============= =============\n" +
+ "Price: 3.23 seen: " + findGroceries("milk;price:3.23") + " times\n" +
+ "------------- -------------\n" +
+ "Price: 1.23 seen: " + findGroceries("milk;price:1.23") + " times\n\n" +
+
+ "name: Bread seen: " + findGroceries("bread") + " times\n" +
+ "============= =============\n" +
+ "Price: 1.23 seen: " + findGroceries("bread") + " times\n" +
+ "------------- -------------\n\n" +
+
+ "name: Cookies seen: " + findGroceries("cookies") + " times\n" +
+ "============= =============\n" +
+ "Price: 2.25 seen: " + findGroceries("cookies") + " times\n" +
+ "------------- -------------\n\n" +
+
+ "name: Apples seen: " + (findGroceries("apples;price:0.25") + findGroceries("apples;price:0.23")) + " times\n" +
+ "============= =============\n" +
+ "Price: 0.25 seen: " + findGroceries("price:0.25") + " times\n" +
+ "------------- -------------\n" +
+ "Price: 0.23 seen: " + findGroceries("price:0.23") + " times\n\n" +
+
+ "Errors seen: " + countingErrors() + " times";
+
+ return result;
}
}
diff --git a/src/test/java/MainTest.java b/src/test/java/MainTest.java
new file mode 100644
index 0000000..b34e9bd
--- /dev/null
+++ b/src/test/java/MainTest.java
@@ -0,0 +1,101 @@
+import org.junit.Assert;
+import org.junit.Test;
+
+public class MainTest {
+
+ Main main = new Main();
+
+ @Test
+ public void testReadRawDataToString() throws Exception {
+ String data = main.readRawDataToString();
+ System.out.println(data);
+ }
+
+ @Test
+ public void testChangeMilk() throws Exception {
+ String data = main.changeMilk(main.readRawDataToString());
+ System.out.println(data);
+ }
+
+ @Test
+ public void testChangeBread() throws Exception {
+ String data = main.changeBread(main.readRawDataToString());
+ System.out.println(data);
+ }
+
+ @Test
+ public void testChangeCookies() throws Exception {
+ String data = main.changeCookies(main.readRawDataToString());
+ System.out.println(data);
+ }
+
+ @Test
+ public void testChangeApples() throws Exception {
+ String data = main.changeApples(main.readRawDataToString());
+ System.out.println(data);
+ }
+
+ @Test
+ public void testPoundToNewLine() throws Exception {
+ String data = main.poundToNewLine(main.readRawDataToString());
+ System.out.println(data);
+ }
+
+ @Test
+ public void testCorrectSeparator() throws Exception {
+ String data = main.correctSeparator();
+ System.out.println(data);
+ }
+
+ @Test
+ public void testNameChange() throws Exception {
+ String data = main.nameChange(main.readRawDataToString());
+ System.out.println(data);
+ }
+
+ @Test
+ public void testPriceChange() throws Exception {
+ String data = main.priceChange(main.readRawDataToString());
+ System.out.println(data);
+ }
+
+ @Test
+ public void testFindGroceries() {
+ //given
+ int breadExpected = 6;
+ int appleExpected = 4;
+ int cookieExpected = 8;
+ int milkExpected = 8;
+ //when
+ int breadCount = main.findGroceries("bread");
+ int appleCount = main.findGroceries("apple");
+ int cookieCount = main.findGroceries("cookie");
+ int milkCount = main.findGroceries("milk");
+ //then
+ Assert.assertEquals(breadExpected, breadCount);
+ Assert.assertEquals(appleExpected, appleCount);
+ Assert.assertEquals(cookieExpected, cookieCount);
+ Assert.assertEquals(milkExpected, milkCount);
+ System.out.printf("Bread: %s, Apple: %s, Cookie: %s, Milk: %s", breadCount, appleCount, cookieCount, milkCount);
+ }
+
+ @Test
+ public void testCountingErrors() {
+ //given
+ int expected = 4;
+ //when
+ int actual = main.countingErrors();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testReadyForFormatting() {
+ System.out.println(main.readyForFormatting());
+ }
+
+ @Test
+ public void testDoingTheFormatting() {
+ System.out.println(main.doingTheFormatting());
+ }
+}
diff --git a/target/classes/Main.class b/target/classes/Main.class
index c9d3858..e68bcf6 100644
Binary files a/target/classes/Main.class and b/target/classes/Main.class differ