This commit is contained in:
2021-11-18 13:59:46 +01:00
parent aaf2ee023a
commit 3b04bbbae6
30 changed files with 102 additions and 268 deletions

14
pom.xml
View File

@@ -9,7 +9,7 @@
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.release>17</maven.compiler.release>
<maven.compiler.release>17</maven.compiler.release>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
@@ -86,9 +86,6 @@
</dependencies>
<build>
<plugins>
<plugin>
@@ -108,14 +105,7 @@
<source>${basedir}/src/main/resources/material.xsd</source>
</sources>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<release>7</release>
</configuration>
</plugin>
</plugin>
</plugins>
</build>

27
rozne.txt Normal file
View File

@@ -0,0 +1,27 @@
from("direct:pretty")
.setBody(constant("<?xml version='1.0'?>" +
"<material>\n" +
" <material_number>7</material_number>\n" +
" <material_type>A1</material_type>\n" +
" <material_name>LEGO 17272</material_name>\n" +
" <description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</description>\n" +
" <is_deleted>false</is_deleted>\n" +
" <packages>\n" +
" <package_number>11988</package_number>\n" +
" <ean>80975098498590834</ean>\n" +
" <unit_of_measure>pcs</unit_of_measure>\n" +
" <dimension>17x17x17</dimension>\n" +
" <description>Lorem ipsum dolor sit amet, consectetur adipiscing elit</description>\n" +
" </packages>\n" +
" <packages>\n" +
" <package_number>118</package_number>\n" +
" <ean>877854875843774</ean>\n" +
" <unit_of_measure>pcs</unit_of_measure>\n" +
" <dimension>20x20x20</dimension>\n" +
" </packages>\n" +
"</material>\n"))
.unmarshal()
.jaxb("generated")
.bean(new DAO(), "getId")
.to("activemq:queue:test")
.to("log:?level=INFO&showBody=true");

View File

@@ -18,16 +18,8 @@ import java.util.*;
public class DAO {
static List<Material> materials = new ArrayList<>();
static List<Package> packages = new ArrayList<>();
public String test(LinkedHashMap materialMap) throws Exception {
Material material = mapToMaterial(materialMap);
String xml = singleXML(material);
return xml;
}
public void getId(Exchange exchange) throws InterruptedException {
MaterialType tmp = (MaterialType) exchange.getIn().getBody();
@@ -42,7 +34,7 @@ public class DAO {
MaterialType materialType = new MaterialType();
materialType.setId((Integer) map.get("id"));
materialType.setMaterialNumber((String) map.get("number"));
materialType.getMaterialType(map.get("type"));
// materialType.getMaterialType(map.get("type"));
materialType.setMaterialName((String) map.get("name"));
materialType.setDescription((String) map.get("description"));
materialType.setIsDeleted((Boolean) map.get("is_deleted"));
@@ -53,7 +45,7 @@ public class DAO {
exchange.getIn().setBody(materialType);
}
/*
public void splitPackage(LinkedHashMap packageMap) {
Package pack = new Package();
pack.setId((Integer) packageMap.get("id"));
@@ -158,4 +150,6 @@ public class DAO {
}
return material;
}
*/
}

View File

@@ -1,6 +1,8 @@
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,16 +13,13 @@ import org.apache.log4j.BasicConfigurator;
import org.apache.camel.converter.jaxb.JaxbDataFormat;
import javax.xml.bind.*;
import java.util.HashMap;
public class Main {
public static void main(String[] args) throws Exception {
//MyBuilder myBuilder = new MyBuilder();
//myBuilder.doRandomMaterials();
//myBuilder.doRandomPackage();
//to("log:?level=INFO&showHeaders=true&showBody=true")
MysqlDataSource source = new MysqlDataSource();
@@ -31,23 +30,6 @@ public class Main {
SimpleRegistry registry = new SimpleRegistry();
registry.bind("source", MysqlDataSource.class, source);
//jax.marshal(Exchange ,jax,);
//registry.bind("jax", JaxbDataFormat.class, XMLDataFormat);
CamelContext context = new DefaultCamelContext(registry);
BasicConfigurator.configure();
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://10.101.111.19:8088");
@@ -59,11 +41,10 @@ public class Main {
@Override
public void configure() throws Exception {
JaxbDataFormat XMLDataFormat = new JaxbDataFormat();
//XMLDataFormat.setSchemaLocation("/home/igor/Documents/Jacek/jacek-and-igor/src/main/resources/material.xsd");
XMLDataFormat.setContextPath("generated");
JaxbDataFormat xmlDataFormat = new JaxbDataFormat();
xmlDataFormat.setContextPath("generated");
JAXBContext jaxbContext = JAXBContext.newInstance(generated.MaterialType.class);
XMLDataFormat.setContext(jaxbContext);
xmlDataFormat.setContext(jaxbContext);
from("direct:start")
.setBody(constant("SELECT * FROM material"))
@@ -78,69 +59,17 @@ public class Main {
from("activemq:queue:material")
.enrich("direct:getPackages", new MyAggregator())
.marshal(xmlDataFormat)
.to("activemq:queue:materialPackage")
.to("log:?level=INFO&showBody=true");
from("direct:test")
.setBody(constant("SELECT * FROM material LIMIT 1"))
.to("jdbc:source")
.split(body())
.to("activemq:queue:materialTest");
from("activemq:queue:materialTest")
.bean(new DAO(), "test")
.marshal(XMLDataFormat)
.to("activemq:queue:test");
from("direct:pretty")
.setBody(constant("<?xml version='1.0'?>" +
"<material>\n" +
" <material_number>7</material_number>\n" +
" <material_type>A1</material_type>\n" +
" <material_name>LEGO 17272</material_name>\n" +
" <description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</description>\n" +
" <is_deleted>false</is_deleted>\n" +
" <packages>\n" +
" <package_number>11988</package_number>\n" +
" <ean>80975098498590834</ean>\n" +
" <unit_of_measure>pcs</unit_of_measure>\n" +
" <dimension>17x17x17</dimension>\n" +
" <description>Lorem ipsum dolor sit amet, consectetur adipiscing elit</description>\n" +
" </packages>\n" +
" <packages>\n" +
" <package_number>118</package_number>\n" +
" <ean>877854875843774</ean>\n" +
" <unit_of_measure>pcs</unit_of_measure>\n" +
" <dimension>20x20x20</dimension>\n" +
" </packages>\n" +
"</material>\n"))
.unmarshal()
.jaxb("generated")
.bean(new DAO(), "getId")
.to("activemq:queue:test")
.to("log:?level=INFO&showBody=true");
}
});
context.start();
ProducerTemplate template = context.createProducerTemplate();
template.sendBody("direct:test", null);
template.sendBody("direct:start", null);
Thread.sleep(1000);
//template.setDefaultEndpointUri("activemq:queue:material");
context.stop();
}

View File

@@ -1,77 +0,0 @@
package com.release11;
import java.util.ArrayList;
import java.util.List;
public class Material {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Boolean getIs_deleted() {
return is_deleted;
}
public void setIs_deleted(Boolean is_deleted) {
this.is_deleted = is_deleted;
}
public enumType getType() {
return type;
}
public void setType(enumType type) {
this.type = type;
}
public List<Package> getPackageList() {
return packageList;
}
public void setPackageList(List<Package> packageList) {
this.packageList = packageList;
}
public enum enumType {
A1, A2, A3, B1, B2, B3, Z1, Z2, Z3;
}
private int id;
private String number;
private enumType type;
private String name;
private String description;
private Boolean is_deleted;
private List<Package> packageList = new ArrayList<>();
}

View File

@@ -1,11 +1,13 @@
package com.release11;
import generated.MaterialType;
import generated.MaterialTypeType;
import generated.Package;
import org.apache.camel.AggregationStrategy;
import org.apache.camel.Exchange;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class MyAggregator implements AggregationStrategy {
@Override
@@ -15,12 +17,30 @@ public class MyAggregator implements AggregationStrategy {
System.out.println(oldEx);
ArrayList<HashMap> newEx = (ArrayList) newExchange.getIn().getBody();
System.out.println(newEx);
oldEx.put("packages", newEx);
MaterialType material = new MaterialType();
material.setId((Integer) oldEx.get("id"));
material.setMaterialNumber((String) oldEx.get("number"));
material.setMaterialType(MaterialTypeType.fromValue((String) oldEx.get("type")));
material.setMaterialName((String) oldEx.get("name"));
material.setDescription((String) oldEx.get("description"));
material.setIsDeleted((Boolean) oldEx.get("is_deleted"));
for (int i = 0; i < newEx.size(); i++) {
Package p = new Package();
p.setId((Integer) newEx.get(i).get("id"));
p.setPackageNumber((String) newEx.get(i).get("number"));
p.setMaterialId((Integer) newEx.get(i).get("material_id"));
p.setEan((String.valueOf(newEx.get(i).get("ean"))));
p.setUnitOfMeasure((String) newEx.get(i).get("unit_of_measure"));
p.setDimension((String) newEx.get(i).get("dimension"));
p.setDescription((String) newEx.get(i).get("description"));
material.getPackages().add(p);
}
Exchange result = oldExchange;
result.getIn().setBody(oldEx);
//result.getIn().setBody(body);
result.getIn().setBody(material);
System.out.println(result.getIn().getBody());
return result;

View File

@@ -1,69 +0,0 @@
package com.release11;
public class Package {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public int getMaterial_id() {
return material_id;
}
public void setMaterial_id(int material_id) {
this.material_id = material_id;
}
public String getEan() {
return ean;
}
public void setEan(String ean) {
this.ean = ean;
}
public String getUnit_of_measure() {
return unit_of_measure;
}
public void setUnit_of_measure(String unit_of_measure) {
this.unit_of_measure = unit_of_measure;
}
public String getDimension() {
return dimension;
}
public void setDimension(String dimension) {
this.dimension = dimension;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
int id;
String number;
int material_id;
String ean;
String unit_of_measure;
String dimension;
String description;
}

View File

@@ -5,7 +5,7 @@
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element name="material_id" type="xs:int"/>
<xs:element name="package_number" type="xs:int"/>
<xs:element name="package_number" type="xs:string"/>
<xs:element name="ean" type="xs:string"/>
<xs:element name="unit_of_measure" type="xs:string"/>
<xs:element name="dimension" type="xs:string"/>

Binary file not shown.

View File

@@ -5,7 +5,7 @@
This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.2
See <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
Any modifications to this file will be lost upon recompilation of the source schema.
Generated on: 2021.11.18 at 12:37:46 PM CET
Generated on: 2021.11.18 at 01:43:47 PM CET
-->
<jaxb:bindings scd="x-schema::">

View File

@@ -5,7 +5,7 @@
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element name="material_id" type="xs:int"/>
<xs:element name="package_number" type="xs:int"/>
<xs:element name="package_number" type="xs:string"/>
<xs:element name="ean" type="xs:string"/>
<xs:element name="unit_of_measure" type="xs:string"/>
<xs:element name="dimension" type="xs:string"/>

View File

@@ -5,7 +5,7 @@
This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.2
See <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
Any modifications to this file will be lost upon recompilation of the source schema.
Generated on: 2021.11.18 at 12:37:46 PM CET
Generated on: 2021.11.18 at 01:43:47 PM CET
-->
<jaxb:bindings scd="x-schema::">

View File

@@ -2,7 +2,7 @@
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.2
// See <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2021.11.18 at 12:37:46 PM CET
// Generated on: 2021.11.18 at 01:43:47 PM CET
//
@@ -115,10 +115,9 @@ public class MaterialType {
* @return
* possible object is
* {@link MaterialTypeType }
*
* @param type
*
*/
public MaterialTypeType getMaterialType(Object type) {
public MaterialTypeType getMaterialType() {
return materialType;
}

View File

@@ -2,7 +2,7 @@
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.2
// See <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2021.11.18 at 12:37:46 PM CET
// Generated on: 2021.11.18 at 01:43:47 PM CET
//

View File

@@ -2,7 +2,7 @@
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.2
// See <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2021.11.18 at 12:37:46 PM CET
// Generated on: 2021.11.18 at 01:43:47 PM CET
//

View File

@@ -2,7 +2,7 @@
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.2
// See <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2021.11.18 at 12:37:46 PM CET
// Generated on: 2021.11.18 at 01:43:47 PM CET
//
@@ -26,7 +26,7 @@ import javax.xml.bind.annotation.XmlType;
* &lt;sequence&gt;
* &lt;element name="id" type="{http://www.w3.org/2001/XMLSchema}int"/&gt;
* &lt;element name="material_id" type="{http://www.w3.org/2001/XMLSchema}int"/&gt;
* &lt;element name="package_number" type="{http://www.w3.org/2001/XMLSchema}int"/&gt;
* &lt;element name="package_number" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
* &lt;element name="ean" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
* &lt;element name="unit_of_measure" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
* &lt;element name="dimension" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
@@ -54,8 +54,8 @@ public class Package {
protected int id;
@XmlElement(name = "material_id")
protected int materialId;
@XmlElement(name = "package_number")
protected int packageNumber;
@XmlElement(name = "package_number", required = true)
protected String packageNumber;
@XmlElement(required = true)
protected String ean;
@XmlElement(name = "unit_of_measure", required = true)
@@ -99,16 +99,24 @@ public class Package {
/**
* Gets the value of the packageNumber property.
*
* @return
* possible object is
* {@link String }
*
*/
public int getPackageNumber() {
public String getPackageNumber() {
return packageNumber;
}
/**
* Sets the value of the packageNumber property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setPackageNumber(int value) {
public void setPackageNumber(String value) {
this.packageNumber = value;
}

View File

View File

@@ -0,0 +1,5 @@
#Generated by Maven
#Thu Nov 18 13:46:31 CET 2021
groupId=org.example
artifactId=Camel
version=1.0-SNAPSHOT

View File

@@ -0,0 +1,8 @@
/home/igor/Documents/Jacek/jacek-and-igor/src/main/java/com/release11/DAO.java
/home/igor/Documents/Jacek/jacek-and-igor/target/generated-sources/jaxb/generated/MaterialType.java
/home/igor/Documents/Jacek/jacek-and-igor/target/generated-sources/jaxb/generated/Package.java
/home/igor/Documents/Jacek/jacek-and-igor/src/main/java/com/release11/MyBuilder.java
/home/igor/Documents/Jacek/jacek-and-igor/target/generated-sources/jaxb/generated/ObjectFactory.java
/home/igor/Documents/Jacek/jacek-and-igor/target/generated-sources/jaxb/generated/MaterialTypeType.java
/home/igor/Documents/Jacek/jacek-and-igor/src/main/java/com/release11/MyAggregator.java
/home/igor/Documents/Jacek/jacek-and-igor/src/main/java/com/release11/Main.java