Files
jacek-and-igor/src/main/java/com/release11/DAO.java
2021-11-18 12:42:06 +01:00

162 lines
6.1 KiB
Java

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<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();
System.out.println(tmp.getDescription() + tmp.getMaterialName());
Thread.sleep(10000);
exchange.getIn().setBody("SELECT * FROM package WHERE material_id = 1");
}
public void test2(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();
materialType.setMaterialName();
materialType.setDescription();
materialType.setIsDeleted();
// System.out.println(tmp.getDescription()+tmp.getMaterialName());
Thread.sleep(10000);
exchange.getIn().setBody("SELECT * FROM package WHERE material_id = 1");
}
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;
}
}