diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..e96534f
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/release11/DAO.java b/src/main/java/com/release11/DAO.java
deleted file mode 100644
index 6ac110d..0000000
--- a/src/main/java/com/release11/DAO.java
+++ /dev/null
@@ -1,155 +0,0 @@
-package com.release11;
-
-import generated.MaterialType;
-import org.apache.camel.Exchange;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Result;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import java.io.File;
-import java.util.*;
-
-public class DAO {
-
- static List packages = new ArrayList<>();
-
- public void getId(Exchange exchange) throws InterruptedException {
-
- MaterialType tmp = (MaterialType) exchange.getIn().getBody();
- System.out.println(tmp.getDescription() + tmp.getMaterialName());
- Thread.sleep(10000);
- exchange.getIn().setBody("SELECT * FROM package WHERE material_id = 1");
- }
-
- public void test(Exchange exchange) throws InterruptedException {
-
- HashMap map = (HashMap) exchange.getIn().getBody();
- MaterialType materialType = new MaterialType();
- materialType.setId((Integer) map.get("id"));
- materialType.setMaterialNumber((String) map.get("number"));
- // materialType.getMaterialType(map.get("type"));
- materialType.setMaterialName((String) map.get("name"));
- materialType.setDescription((String) map.get("description"));
- materialType.setIsDeleted((Boolean) map.get("is_deleted"));
-
-
- // System.out.println(tmp.getDescription()+tmp.getMaterialName());
- Thread.sleep(3000);
- exchange.getIn().setBody(materialType);
- }
-
-/*
- public void splitPackage(LinkedHashMap packageMap) {
- Package pack = new Package();
- pack.setId((Integer) packageMap.get("id"));
- pack.setNumber((String) packageMap.get("number"));
- pack.setMaterial_id((Integer) packageMap.get("material_id"));
- pack.setEan((String.valueOf(packageMap.get("ean"))));
- pack.setUnit_of_measure((String) packageMap.get("unit_of_measure"));
- pack.setDimension((String) packageMap.get("dimension"));
- pack.setDescription((String) packageMap.get("description"));
- packages.add(pack);
- }
-
- public void splitMaterial(LinkedHashMap materialMap) {
- Material material = mapToMaterial(materialMap);
- materials.add(material);
- }
-
- public String singleXML(Material material) throws Exception {
-
- File file = new File("src/main/resources/test.xml");
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = dbf.newDocumentBuilder();
- Document doc = builder.newDocument();
- Element root = doc.createElement("material");
-
- Element materialNumber = doc.createElement("material_number");
- materialNumber.setTextContent(String.valueOf(material.getNumber()));
- root.appendChild(materialNumber);
-
- Element materialType = doc.createElement("material_type");
- materialType.setTextContent(String.valueOf(material.getType()));
- root.appendChild(materialType);
-
- Element materialName = doc.createElement("material_name");
- materialName.setTextContent(String.valueOf(material.getName()));
- root.appendChild(materialName);
-
- Element description = doc.createElement("description");
- description.setTextContent(material.getDescription());
- root.appendChild(description);
-
- Element is_deleted = doc.createElement("is_deleted");
- is_deleted.setTextContent(String.valueOf(material.getIs_deleted()));
- root.appendChild(is_deleted);
-
- for (Package p : material.getPackageList()) {
-
- Element packageElement = doc.createElement("packages");
-
- Element packageNumber = doc.createElement("package_number");
- packageNumber.setTextContent(String.valueOf(p.getNumber()));
- packageElement.appendChild(packageNumber);
-
- Element ean = doc.createElement("ean");
- ean.setTextContent(String.valueOf(p.getEan()));
- packageElement.appendChild(ean);
-
- Element unit = doc.createElement("unit_of_measure");
- unit.setTextContent(String.valueOf(p.getUnit_of_measure()));
- packageElement.appendChild(unit);
-
- Element dimension = doc.createElement("dimension");
- dimension.setTextContent(String.valueOf(p.getDimension()));
- packageElement.appendChild(dimension);
-
- Element descriptionPackage = doc.createElement("description");
- descriptionPackage.setTextContent(String.valueOf(p.getDescription()));
- packageElement.appendChild(descriptionPackage);
-
- root.appendChild(packageElement);
- }
-
- doc.appendChild(root);
- DOMSource src = new DOMSource(doc);
- Result result = new StreamResult(file);
- TransformerFactory tf = TransformerFactory.newInstance();
- Transformer transformer = tf.newTransformer();
- transformer.setOutputProperty(OutputKeys.INDENT, "yes");
- transformer.transform(src, result);
-
- String xml = "";
- Scanner myReader = new Scanner(file);
- while (myReader.hasNextLine()) {
- xml += myReader.nextLine() + "\n";
- }
-
- return xml;
-
- }
-
- public Material mapToMaterial(LinkedHashMap list) {
- Material material = new Material();
- material.setId((Integer) list.get("id"));
- material.setNumber((String) list.get("number"));
- material.setType(Material.enumType.valueOf((String) list.get("type")));
- material.setName((String) list.get("name"));
- material.setDescription((String) list.get("description"));
- material.setIs_deleted((Boolean) list.get("is_deleted"));
- for (int j = 0; j < packages.size(); j++) {
- if (packages.get(j).getMaterial_id() == material.getId())
- material.getPackageList().add(packages.get(j));
- }
- return material;
- }
-
- */
-}
diff --git a/src/main/java/com/release11/Main.java b/src/main/java/com/release11/Main.java
index 2ae2a6e..253a7cc 100644
--- a/src/main/java/com/release11/Main.java
+++ b/src/main/java/com/release11/Main.java
@@ -2,7 +2,6 @@ package com.release11;
import com.mysql.cj.jdbc.MysqlDataSource;
import generated.MaterialType;
-import generated.MaterialTypeType;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.*;
import org.apache.camel.builder.RouteBuilder;
@@ -11,9 +10,7 @@ import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.support.SimpleRegistry;
import org.apache.log4j.BasicConfigurator;
import org.apache.camel.converter.jaxb.JaxbDataFormat;
-
import javax.xml.bind.*;
-import java.util.HashMap;
public class Main {
@@ -58,27 +55,13 @@ public class Main {
.to("jdbc:source?useHeadersAsParameters=true");
from("activemq:queue:RawMaterial")
- .enrich("direct:getPackages", new MyAggregator())
- .process(new Processor(){
-
- @Override
- public void process(Exchange exchange) throws Exception {
- MaterialType material = (MaterialType) exchange.getIn().getBody();
-
-
-
-
-
-
- }
- })
-
-
+ .enrich("direct:getPackages", new MergeAggregator())
+ .process(new ValidatorProcess())
.choice()
- .when(simple("${header.ean} == false"))
+ .when(simple("${exchangeProperty[dimension]}"+" == false"))
.marshal(xmlDataFormat)
.to("activemq:queue:BadEan")
- .when(simple("${header.dimension} == false"))
+ .when(simple("${exchangeProperty[ean]}"+" == false"))
.marshal(xmlDataFormat)
.to("activemq:queue:BadDimension")
.otherwise()
diff --git a/src/main/java/com/release11/MyAggregator.java b/src/main/java/com/release11/MergeAggregator.java
similarity index 79%
rename from src/main/java/com/release11/MyAggregator.java
rename to src/main/java/com/release11/MergeAggregator.java
index b920cae..7c7ef9a 100644
--- a/src/main/java/com/release11/MyAggregator.java
+++ b/src/main/java/com/release11/MergeAggregator.java
@@ -12,12 +12,12 @@ import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-public class MyAggregator implements AggregationStrategy {
+public class MergeAggregator implements AggregationStrategy {
@Override
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
- HashMap oldEx = (HashMap) oldExchange.getIn().getBody();
- ArrayList newEx = (ArrayList) newExchange.getIn().getBody();
+ HashMap oldEx = oldExchange.getIn().getBody(HashMap.class);
+ ArrayList newEx = newExchange.getIn().getBody(ArrayList.class);
oldEx.put("packages", newEx);
MaterialType material = new MaterialType();
@@ -42,17 +42,8 @@ public class MyAggregator implements AggregationStrategy {
p.setDimension((String) newEx.get(i).get("dimension"));
p.setDescription((String) newEx.get(i).get("description"));
material.getPackages().add(p);
-
- //validation
- Pattern pattern = Pattern.compile("\\d\\dx\\d\\dx\\d\\d");
- Matcher matcher = pattern.matcher(p.getDimension());
- if (!matcher.matches())
- oldExchange.getIn().setHeader("dimension", false);
- if(!isEanGood(p.getEan()))
- oldExchange.getIn().setHeader("ean", false);
}
-
oldExchange.getIn().setBody(material);
return oldExchange;
}
diff --git a/src/main/java/com/release11/MyProcess.java b/src/main/java/com/release11/MyProcess.java
deleted file mode 100644
index a30104e..0000000
--- a/src/main/java/com/release11/MyProcess.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.release11;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-
-public class MyProcess implements Processor {
- @Override
- public void process(Exchange exchange) throws Exception {
- System.out.println("SIEMAAAAAAAAAAA");
- String tmp = (String) exchange.getIn().getBody();
- System.out.println(tmp);
- System.out.println("SIEMAAAAAAAAAAA");
- Thread.sleep(100000);
-
- }
-}
diff --git a/src/main/java/com/release11/ValidatorProcess.java b/src/main/java/com/release11/ValidatorProcess.java
new file mode 100644
index 0000000..7ea6c25
--- /dev/null
+++ b/src/main/java/com/release11/ValidatorProcess.java
@@ -0,0 +1,47 @@
+package com.release11;
+
+import generated.MaterialType;
+import generated.Package;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class ValidatorProcess implements Processor {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ MaterialType material = exchange.getIn().getBody(MaterialType.class);
+ Pattern pattern = Pattern.compile("\\d\\dx\\d\\dx\\d\\d");
+ for (Package p: material.getPackages()) {
+ Matcher matcher = pattern.matcher(p.getDimension());
+ if (!matcher.matches())
+ exchange.setProperty("dimension", false);
+ if(!isEanGood(p.getEan()))
+ exchange.setProperty("ean", false);
+ }
+ }
+
+ boolean isEanGood(String ean) {
+
+ int sum = 0;
+ for (int i = 0; i < ean.length() - 1; i++) {
+ if (i % 2 == 1)
+ sum += (ean.charAt(i) - '0') * 3;
+ else
+ sum += (int) ean.charAt(i) - '0';
+ }
+
+ sum = sum - (sum / 10) * (10);
+ if (sum != 0)
+ sum = 10 - sum;
+
+ int tmp1 = Integer.valueOf(sum);
+ int tmp2 = Integer.valueOf(ean.charAt(ean.length()-1)-'0');
+
+ if(tmp1 == tmp2)
+ return true;
+
+ return false;
+ }
+}
diff --git a/target/classes/com/release11/DAO.class b/target/classes/com/release11/DAO.class
deleted file mode 100644
index 677603c..0000000
Binary files a/target/classes/com/release11/DAO.class and /dev/null differ
diff --git a/target/classes/com/release11/Main$1$1.class b/target/classes/com/release11/Main$1$1.class
deleted file mode 100644
index 800bf5a..0000000
Binary files a/target/classes/com/release11/Main$1$1.class and /dev/null differ
diff --git a/target/classes/com/release11/Main$1.class b/target/classes/com/release11/Main$1.class
index 5512a51..56e9947 100644
Binary files a/target/classes/com/release11/Main$1.class and b/target/classes/com/release11/Main$1.class differ
diff --git a/target/classes/com/release11/Main.class b/target/classes/com/release11/Main.class
index e93c1a7..f62d36b 100644
Binary files a/target/classes/com/release11/Main.class and b/target/classes/com/release11/Main.class differ
diff --git a/target/classes/com/release11/MergeAggregator.class b/target/classes/com/release11/MergeAggregator.class
new file mode 100644
index 0000000..7773b22
Binary files /dev/null and b/target/classes/com/release11/MergeAggregator.class differ
diff --git a/target/classes/com/release11/MyAggregator.class b/target/classes/com/release11/MyAggregator.class
deleted file mode 100644
index 07be920..0000000
Binary files a/target/classes/com/release11/MyAggregator.class and /dev/null differ
diff --git a/target/classes/com/release11/MyProcess.class b/target/classes/com/release11/MyProcess.class
deleted file mode 100644
index e72bcec..0000000
Binary files a/target/classes/com/release11/MyProcess.class and /dev/null differ
diff --git a/target/classes/com/release11/ValidatorProcess.class b/target/classes/com/release11/ValidatorProcess.class
new file mode 100644
index 0000000..f472d61
Binary files /dev/null and b/target/classes/com/release11/ValidatorProcess.class differ
diff --git a/target/classes/generated/MaterialType.class b/target/classes/generated/MaterialType.class
index d1a3289..ad21196 100644
Binary files a/target/classes/generated/MaterialType.class and b/target/classes/generated/MaterialType.class differ
diff --git a/target/classes/generated/MaterialTypeType.class b/target/classes/generated/MaterialTypeType.class
index 37556ba..31495ce 100644
Binary files a/target/classes/generated/MaterialTypeType.class and b/target/classes/generated/MaterialTypeType.class differ
diff --git a/target/classes/generated/ObjectFactory.class b/target/classes/generated/ObjectFactory.class
index 31f828c..fa00d5d 100644
Binary files a/target/classes/generated/ObjectFactory.class and b/target/classes/generated/ObjectFactory.class differ
diff --git a/target/classes/generated/Package.class b/target/classes/generated/Package.class
index 656d9ed..2556224 100644
Binary files a/target/classes/generated/Package.class and b/target/classes/generated/Package.class differ