set properties
This commit is contained in:
		@@ -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<Package> 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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 */
 | 
			
		||||
}
 | 
			
		||||
@@ -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()
 | 
			
		||||
 
 | 
			
		||||
@@ -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<HashMap> newEx = (ArrayList) newExchange.getIn().getBody();
 | 
			
		||||
        HashMap oldEx = oldExchange.getIn().getBody(HashMap.class);
 | 
			
		||||
        ArrayList<HashMap> 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;
 | 
			
		||||
    }
 | 
			
		||||
@@ -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);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										47
									
								
								src/main/java/com/release11/ValidatorProcess.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/main/java/com/release11/ValidatorProcess.java
									
									
									
									
									
										Normal file
									
								
							@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user