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