summaryrefslogtreecommitdiffstats
path: root/Dozentenmodulserver/src/main/java/util/XMLCreator.java
diff options
context:
space:
mode:
Diffstat (limited to 'Dozentenmodulserver/src/main/java/util/XMLCreator.java')
-rw-r--r--Dozentenmodulserver/src/main/java/util/XMLCreator.java225
1 files changed, 225 insertions, 0 deletions
diff --git a/Dozentenmodulserver/src/main/java/util/XMLCreator.java b/Dozentenmodulserver/src/main/java/util/XMLCreator.java
new file mode 100644
index 00000000..564543fa
--- /dev/null
+++ b/Dozentenmodulserver/src/main/java/util/XMLCreator.java
@@ -0,0 +1,225 @@
+package util;
+
+import java.io.File;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+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 models.Configuration;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Comment;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import server.BinaryListener;
+import sql.SQL;
+
+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 = Configuration.config.getAbsolute_path()+"prod/";
+ private String imageName;
+ private String xmlName;
+ private static Logger log = Logger.getLogger( BinaryListener.class );
+
+
+ // 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, m_VLData_lecture.name as lectureName, m_user.institution as userInstitution, m_user.loginName as loginName, m_institution.name as institutionName "
+ + "FROM bwLehrpool.m_VLData_lecture, bwLehrpool.m_VLData_imageInfo, bwLehrpool.m_user, bwLehrpool.m_operatingSystem, bwLehrpool.m_institution "
+ + "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_user.institution = m_institution.institutionID "
+ + "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;
+ }
+ log.info(new Date() + " - Could not create XML-File '"+vmName+"'. Error in create(String vmName).");
+ 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;
+ }
+ log.info(new Date() + " - Could not create XML-File '"+vmName+"'. Error in create(String vmName).");
+ 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);
+ imageName = rs.getString("image_path").substring(
+ rs.getString("image_path").lastIndexOf("/")+1); //+1 um das führende "/" los zu werden
+
+ imgName.setAttribute("param", imageName);
+
+ 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("lectureName"));
+
+ // 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);
+
+ //Set XML-filename
+ DateFormat formatter = new SimpleDateFormat("yyyMMddhhmmss");
+ xmlName=formatter.format(new Date()) + "_" + rs.getString("institutionName") + "_" + rs.getString("loginName") + "_" + rs.getString("lectureName") + ".xml";
+
+ //Write file
+ StreamResult result = new StreamResult(new File(filePath+ xmlName)); // see filepath at top of class
+
+ transformer.transform(source, result);
+
+ // cleanup
+ rs.close();
+ st.close();
+
+ // return
+ log.info(new Date() + " - XML-File '"+xmlName+"' successfully created.");
+ return true;
+ }
+}