summaryrefslogtreecommitdiffstats
path: root/Dozentenmodulserver/src/util/XMLCreator.java
diff options
context:
space:
mode:
Diffstat (limited to 'Dozentenmodulserver/src/util/XMLCreator.java')
-rw-r--r--Dozentenmodulserver/src/util/XMLCreator.java213
1 files changed, 213 insertions, 0 deletions
diff --git a/Dozentenmodulserver/src/util/XMLCreator.java b/Dozentenmodulserver/src/util/XMLCreator.java
new file mode 100644
index 00000000..0efb2465
--- /dev/null
+++ b/Dozentenmodulserver/src/util/XMLCreator.java
@@ -0,0 +1,213 @@
+package util;
+import java.io.File;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+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.Comment;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+public class XMLCreator {
+
+
+ /* This class offers methods to create XML files for the (old) version of managing VMware *.vmdks */
+
+
+
+ private Connection con = null;
+ private Statement st = null;
+ private ResultSet rs = null;
+ private String vmName;
+ private String filePath = "/srv/openslx/nfs/temp/";
+
+
+ //phone param not existing
+ private String query = "SELECT m_VLData_imageInfo.image_path ,vorname, nachname, mail, shortdescription, description, m_operatingSystem.name as os, m_VLData_lecture.admin_changeTime as time "
+ + "FROM bwLehrpool.m_VLData_lecture, bwLehrpool.m_VLData_imageInfo, bwLehrpool.m_user, bwLehrpool.m_operatingSystem "
+ + "WHERE m_user.userID = m_VLData_lecture.admin_owner "
+ + "AND m_VLData_imageInfo.GUID_imageID = m_VLData_lecture.imageID "
+ + "AND m_VLData_imageInfo.content_operatingSystem = m_operatingSystem.operatingSystemID "
+ + "AND m_VLData_lecture.name = ";
+
+
+
+ public XMLCreator(Connection con)
+ {
+ this.con = con;
+ }
+
+ public XMLCreator(Connection con, String vmName)
+ {
+ this.con = con;
+ this.vmName = vmName;
+ }
+
+
+ public boolean create() throws SQLException, ParserConfigurationException, TransformerException
+ {
+
+ //System.out.println(query);
+
+ if(con == null || vmName == null)
+ {
+ return false;
+ }
+ query += "'" + this.vmName + "';";
+
+ boolean success = startCreation();
+
+ if(success)
+ {
+ return true;
+ }
+
+ return false;
+
+ }
+
+ //overload method for dynamic setting of param vmName instead of static context above
+ public boolean create(String vmName) throws SQLException, ParserConfigurationException, TransformerException
+ {
+ //System.out.println(query);
+
+ if(con == null || vmName == null)
+ {
+ return false;
+ }
+ query += "'" + vmName + "';";
+
+ boolean success = startCreation();
+
+ if(success)
+ {
+ return true;
+ }
+ return false;
+ }
+
+
+ private boolean startCreation() throws SQLException, ParserConfigurationException, TransformerException
+ {
+ //get needed data from database
+ st = con.createStatement();
+ rs = st.executeQuery(query);
+ rs.next();
+
+ //factory
+ DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
+
+ // root elements - dynamic content
+ Document doc = docBuilder.newDocument();
+ Element rootElement = doc.createElement("settings");
+ doc.appendChild(rootElement);
+
+ Element entry = doc.createElement("eintrag");
+ rootElement.appendChild(entry);
+
+ Element prio = doc.createElement("priority");
+ entry.appendChild(prio);
+ prio.setAttribute("param", "0");
+
+ Comment fComment = doc.createComment("Diesen Abschnitt ergänzen");
+ entry.appendChild(fComment);
+
+ Element imgName = doc.createElement("image_name");
+ entry.appendChild(imgName);
+ String imagePath=rs.getString("image_path").substring(rs.getString("image_path").lastIndexOf("/"));
+
+ imgName.setAttribute("param", imagePath);
+
+ Element creator = doc.createElement("creator");
+ entry.appendChild(creator);
+ creator.setAttribute("param", (rs.getString("vorname") + " " + rs.getString("nachname")));
+
+ Element email = doc.createElement("email");
+ entry.appendChild(email);
+ email.setAttribute("param", rs.getString("mail"));
+
+ //TODO check whether necessary
+ Element phone = doc.createElement("phone");
+ entry.appendChild(phone);
+ phone.setAttribute("param", "");
+
+ Element shortDesc = doc.createElement("short_description");
+ entry.appendChild(shortDesc);
+ shortDesc.setAttribute("param", rs.getString("shortdescription"));
+
+ //TODO append latest change date and time
+ Element longDesc = doc.createElement("long_description");
+ entry.appendChild(longDesc);
+ longDesc.setAttribute("param", rs.getString("description") + " last update: " + rs.getString("time"));
+
+ Element os = doc.createElement("os");
+ entry.appendChild(os);
+ os.setAttribute("param", rs.getString("os"));
+
+ Comment sComment = doc.createComment("Diesen Abschnitt ergänzen");
+ entry.appendChild(sComment);
+
+
+ //static content following - second part of xml descriptor
+
+
+ Element netwParam = doc.createElement("network");
+ entry.appendChild(netwParam);
+ netwParam.setAttribute("param", "nat");
+
+ Element netcParam = doc.createElement("netcard");
+ entry.appendChild(netcParam);
+ netcParam.setAttribute("param", "e1000");
+
+
+ Element vm = doc.createElement("virtualmachine");
+ entry.appendChild(vm);
+ vm.setAttribute("param", "vmware");
+
+ //TODO Fallunterscheidung
+ Element icon = doc.createElement("icon");
+ entry.appendChild(icon);
+ icon.setAttribute("param", "windows");
+
+ Element active = doc.createElement("active");
+ entry.appendChild(active);
+ active.setAttribute("param", "true");
+
+ Element pools = doc.createElement("pools");
+ entry.appendChild(pools);
+ pools.setAttribute("param", "default");
+
+ Element enable3d = doc.createElement("enable3d");
+ entry.appendChild(enable3d);
+ enable3d.setAttribute("param", "true");
+
+
+
+ //write virtual document to file
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+ DOMSource source = new DOMSource(doc);
+
+ StreamResult result = new StreamResult(new File(filePath+imagePath.replace("vmdk", "xml"))); //see filepath at top of class
+ transformer.transform(source, result);
+
+ //cleanup
+ rs.close();
+ st.close();
+
+ //return
+ return true;
+ }
+}