diff options
Diffstat (limited to 'Dozentenmodulserver/src/util/XMLCreator.java')
-rw-r--r-- | Dozentenmodulserver/src/util/XMLCreator.java | 213 |
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; + } +} |