diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..51a8bba --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/.gitignore b/.gitignore index 9154f4c..17278eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,11 @@ -# ---> Java -# Compiled class file +# Java +target/ +bin/ *.class # Log file *.log -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - # Package Files # *.jar *.war @@ -20,7 +15,5 @@ *.tar.gz *.rar -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* -replay_pid* - +# do NOT ignores +!lib/* diff --git a/.project b/.project new file mode 100644 index 0000000..facdc01 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + exampleXml + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..af07d5f --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/src/mmk/xml/ReadXmlFile.java b/src/mmk/xml/ReadXmlFile.java new file mode 100644 index 0000000..12bd9f4 --- /dev/null +++ b/src/mmk/xml/ReadXmlFile.java @@ -0,0 +1,61 @@ +package mmk.xml; + +import java.io.IOException; +import java.util.Locale; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +public class ReadXmlFile { + + public static void main(String[] args) { + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder; + Document doc; + try { + dBuilder = dbFactory.newDocumentBuilder(); + doc = dBuilder.parse("txt//asd.xml"); + doc.getDocumentElement().normalize(); + NodeList nList = doc.getElementsByTagName("Parameter"); + + for (int temp = 0; temp < nList.getLength(); temp++) { + Node node = nList.item(temp); + Element param = (Element) node; + System.out.println(setParameters(param)); + } + } + catch (ParserConfigurationException | SAXException | IOException e) { + System.out.println(e.getMessage()); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + + private static String setParameters(Element element) throws Exception{ + String result = ""; + String typeOfParameter = element.getAttribute("type").trim().toLowerCase(Locale.ENGLISH); + + if (typeOfParameter.equals("real_number")) + result = element.getAttribute("name") + " - " + element.getAttribute("type") + + " - " + Double.valueOf(element.getAttribute("value")); + else if (typeOfParameter.equals("string")) + result = element.getAttribute("name") + " - " + element.getAttribute("type") + + " - " + element.getAttribute("value"); + else if (typeOfParameter.equals("integer")) + result = element.getAttribute("name") + " - " + element.getAttribute("type") + + " - " + Integer.valueOf(element.getAttribute("value")); + else if (typeOfParameter.equals("yes_no")) + result = element.getAttribute("name") + " - " + element.getAttribute("type") + + " - " + Boolean.valueOf(element.getAttribute("value")); + + return result; + } + +} diff --git a/src/mmk/xml/WriteXmlFile.java b/src/mmk/xml/WriteXmlFile.java new file mode 100644 index 0000000..2a04cd3 --- /dev/null +++ b/src/mmk/xml/WriteXmlFile.java @@ -0,0 +1,65 @@ +package mmk.xml; + +import java.io.File; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.w3c.dom.Attr; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class WriteXmlFile { + + public static void main(String[] args) { + + File xmlFile = new File("txt\\" + "asd.xml"); + + try { + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + Document doc = dBuilder.newDocument(); + Element rootElement = doc.createElement("Parameters"); + doc.appendChild(rootElement); + + TransformerFactory tFactory = TransformerFactory.newInstance(); + Transformer transformer = tFactory.newTransformer(); + transformer.setOutputProperty(OutputKeys.METHOD, "xml"); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + + StreamResult sResult = new StreamResult(xmlFile); + + Element childElement = doc.createElement("Parameter"); + rootElement.appendChild(childElement); + + Attr attrName = doc.createAttribute("name"); + attrName.setValue("id"); + childElement.setAttributeNode(attrName); + + Attr attrType = doc.createAttribute("type"); + attrType.setValue("string"); + childElement.setAttributeNode(attrType); + + Attr attrValue = doc.createAttribute("value"); + attrValue.setValue("00001"); + childElement.setAttributeNode(attrValue); + + DOMSource source = new DOMSource(doc); + transformer.transform(source, sResult); + } + catch (ParserConfigurationException | TransformerException pce) { + System.out.println("error: " + pce.getMessage()); + } + + System.out.println("Completed."); + + } + +} diff --git a/src/mmk/xml/repo/XmlApp.java b/src/mmk/xml/repo/XmlApp.java new file mode 100644 index 0000000..a3cb9b6 --- /dev/null +++ b/src/mmk/xml/repo/XmlApp.java @@ -0,0 +1,38 @@ + package mmk.xml.repo; + +import java.io.IOException; + +public class XmlApp { + + public static void main(String[] args) throws IOException { + + saveXml("txt\\asd2.xml"); + readXml("txt\\asd2.xml"); + + } + + private static void saveXml(String file) { + XmlParameter xp1 = new XmlParameter<>("name", "STRING", "M.KILIC"); + XmlParameter xp2 = new XmlParameter<>("machineType", "STRING", "workstation"); + XmlParameter xp3 = new XmlParameter<>("length", "REAL_NUMBER", 200.5); + XmlParameter xp4 = new XmlParameter<>("qty", "INTEGER", 5); + XmlParameter xp5 = new XmlParameter<>("completed", "YES_NO", true); + + XmlRepo xmlr = new XmlRepo(file); + + xmlr.addParam(xp1); + xmlr.addParam(xp2); + xmlr.addParam(xp3); + xmlr.addParam(xp4); + xmlr.addParam(xp5); + + System.out.println("done"); + } + + private static void readXml(String file) { + XmlRepo xmlr = new XmlRepo(file); + + xmlr.readParam().stream().forEach(p -> System.out.println(p.toString())); + } + +} diff --git a/src/mmk/xml/repo/XmlParameter.java b/src/mmk/xml/repo/XmlParameter.java new file mode 100644 index 0000000..aaf16aa --- /dev/null +++ b/src/mmk/xml/repo/XmlParameter.java @@ -0,0 +1,44 @@ +package mmk.xml.repo; + +public class XmlParameter { + private String name; + private String type; + private T value; + + public XmlParameter() { } + + public XmlParameter(String name, String type, T value) { + this.name = name; + this.type = type; + this.value = value; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public T getValeu() { + return value; + } + + public void setValeu(T valeu) { + this.value = valeu; + } + + @Override + public String toString() { + return name +" - "+ type +" - "+ value; + } +} diff --git a/src/mmk/xml/repo/XmlRepo.java b/src/mmk/xml/repo/XmlRepo.java new file mode 100644 index 0000000..8b9e968 --- /dev/null +++ b/src/mmk/xml/repo/XmlRepo.java @@ -0,0 +1,178 @@ +package mmk.xml.repo; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.w3c.dom.Attr; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +public class XmlRepo { + private File xmlFile; + private Document doc; + private Element rootElement; + private Transformer transformer; + private StreamResult sResult; + + public XmlRepo(String urlFileName) { + xmlFile = new File(urlFileName); + + if (xmlFile.exists()) { + try { + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + doc = dBuilder.parse(xmlFile); + rootElement = doc.getDocumentElement(); + + TransformerFactory tFactory = TransformerFactory.newInstance(); + transformer = tFactory.newTransformer(); + transformer.setOutputProperty(OutputKeys.METHOD, "xml"); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + + sResult = new StreamResult(xmlFile); + } + catch (ParserConfigurationException pce) { + System.out.println(pce.getMessage()); + } + catch (TransformerConfigurationException tce) { + System.out.println(tce.getMessage()); + } + catch (Exception e) { + System.out.println(e.getMessage()); + } + } + else { + try { + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + doc = dBuilder.newDocument(); + rootElement = doc.createElement("Parameters"); + doc.appendChild(rootElement); + + TransformerFactory tFactory = TransformerFactory.newInstance(); + transformer = tFactory.newTransformer(); + transformer.setOutputProperty(OutputKeys.METHOD, "xml"); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + //transformer.setOutputProperty(OutputKeys.STANDALONE, "yes"); + //transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "3"); + + sResult = new StreamResult(xmlFile); + DOMSource source = new DOMSource(doc); + + transformer.transform(source, sResult); + } + catch (ParserConfigurationException pce) { + //... + } + catch (TransformerConfigurationException tce) { + //... + } + catch (Exception e) { + //... + } + } + } + + public boolean addParam(XmlParameter parameter) { + try { + + Element childElement = doc.createElement("Parameter"); + rootElement.appendChild(childElement); + + Attr attrName = doc.createAttribute("name"); + attrName.setValue(parameter.getName()); + childElement.setAttributeNode(attrName); + + Attr attrType = doc.createAttribute("type"); + attrType.setValue(parameter.getType()); + childElement.setAttributeNode(attrType); + + Attr attrValue = doc.createAttribute("value"); + attrValue.setValue(parameter.getValeu().toString()); + childElement.setAttributeNode(attrValue); + + DOMSource source = new DOMSource(doc); + transformer.transform(source, sResult); + + return true; + } + catch (Exception ex) { + return false; + } + } + + public boolean changeParam(XmlParameter parameter) { + try { + NodeList nList = doc.getElementsByTagName("Parameter"); + + for (int i = 0; i > readParam(){ + List> parameters = new ArrayList<>(); + doc.getDocumentElement().normalize(); + NodeList nList = doc.getElementsByTagName("Parameter"); + + for (int temp = 0; temp < nList.getLength(); temp++) { + Node node = nList.item(temp); + Element param = (Element) node; + + try { + parameters.add(getParameter(param)); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + return parameters; + } + + private XmlParameter getParameter(Element element) throws Exception{ + XmlParameter parameter = null; + String typeOfParameter = element.getAttribute("type").trim().toLowerCase(Locale.ENGLISH); + + if (typeOfParameter.equals("real_number")) + parameter = new XmlParameter(element.getAttribute("name"), + element.getAttribute("type"), Double.valueOf(element.getAttribute("value"))); + else if (typeOfParameter.equals("string")) + parameter = new XmlParameter(element.getAttribute("name"), + element.getAttribute("type"), (element.getAttribute("value"))); + else if (typeOfParameter.equals("integer")) + parameter = new XmlParameter(element.getAttribute("name"), + element.getAttribute("type"), Integer.valueOf(element.getAttribute("value"))); + else if (typeOfParameter.equals("yes_no")) + parameter = new XmlParameter(element.getAttribute("name"), + element.getAttribute("type"), Boolean.valueOf(element.getAttribute("value"))); + + return parameter; + } + +} diff --git a/txt/asd.xml b/txt/asd.xml new file mode 100644 index 0000000..349fad8 --- /dev/null +++ b/txt/asd.xml @@ -0,0 +1,4 @@ + + + + diff --git a/txt/asd2.xml b/txt/asd2.xml new file mode 100644 index 0000000..d7c0a49 --- /dev/null +++ b/txt/asd2.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/xmlFiles/CityTemplate.xml b/xmlFiles/CityTemplate.xml new file mode 100644 index 0000000..2a4ce4e --- /dev/null +++ b/xmlFiles/CityTemplate.xml @@ -0,0 +1,10 @@ + +Bratislava432000 +Budapest1759000 +Prague1280000 +Warsaw1748000 +Los Angeles3971000 +New York8550000 +Edinburgh464000 +Berlin3671000 + \ No newline at end of file diff --git a/xmlFiles/XmlUpdaterTemplate.xml b/xmlFiles/XmlUpdaterTemplate.xml new file mode 100644 index 0000000..76d3d9c --- /dev/null +++ b/xmlFiles/XmlUpdaterTemplate.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file