X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/model/xml/ModelToXMLConverter.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/model/xml/ModelToXMLConverter.java new file mode 100644 index 0000000..908b239 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/model/xml/ModelToXMLConverter.java @@ -0,0 +1,150 @@ +package com.quantum.model.xml; + +import com.quantum.Messages; +import com.quantum.model.Bookmark; +import com.quantum.model.Column; +import com.quantum.model.Entity; +import com.quantum.model.Schema; +import com.quantum.sql.metadata.MetaDataXMLInterface; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Text; + +/** + * @author BC + */ +public class ModelToXMLConverter { + + private static final ModelToXMLConverter instance = new ModelToXMLConverter(); + + private ModelToXMLConverter() { + } + + public static ModelToXMLConverter getInstance() { + return ModelToXMLConverter.instance; + } + + public void createRoot(Document document) { + document.appendChild(document.createElement("SAVED_DATA")); + } + + public void convert(Element bookmarkRoot, Bookmark b) { + Document document = bookmarkRoot.getOwnerDocument(); + Element bookmark = MetaDataXMLInterface.createElementText(bookmarkRoot,"bookmark", ""); //$NON-NLS-1$ //$NON-NLS-2$ + MetaDataXMLInterface.createElementText(bookmark,"name", b.getName()); //$NON-NLS-1$ + MetaDataXMLInterface.createElementText(bookmark,"username", b.getUsername()); //$NON-NLS-1$ + MetaDataXMLInterface.createElementText(bookmark,"password", b.getPassword()); //$NON-NLS-1$ + MetaDataXMLInterface.createElementText(bookmark,"prompt", b.getPromptForPassword() ? "true" : "false"); //$NON-NLS-1$ + MetaDataXMLInterface.createElementText(bookmark,"connect", b.getConnect()); //$NON-NLS-1$ + MetaDataXMLInterface.createElementText(bookmark,"autoCommit", b.isAutoCommit() ? "true" : "false"); //$NON-NLS-1$ + MetaDataXMLInterface.createElementText(bookmark,"autoCommitPreference", b.getAutoCommitPreference()); //$NON-NLS-1$ + MetaDataXMLInterface.createElementText(bookmark,"driver", b.getDriver()); //$NON-NLS-1$ + MetaDataXMLInterface.createElementText(bookmark,"type", b.getType()); //$NON-NLS-1$ + MetaDataXMLInterface.createElementText(bookmark,"driverLocation", b.getDriverFile()); //$NON-NLS-1$ + Element otherSchemas = (Element) bookmark.appendChild(document.createElement(Messages.getString("ExportXMLAction.OtherSchemas"))); //$NON-NLS-1$ + Schema[] schemas = b.getSchemas(); + for (int i = 0, length = (schemas == null) ? 0 : schemas.length; + i < length; + i++) { + if (!schemas[i].isDefault()) { + MetaDataXMLInterface.createElementText( + otherSchemas,Messages.getString("ExportXMLAction.SchemaName"), schemas[i].getName()); //$NON-NLS-1$ + } + } + Entity[] quickList = b.getQuickListEntries(); + Element quickListEntity = document.createElement("quickList"); + for (int j = 0, length = (quickList == null) ? 0 : quickList.length; + j < length; + j++) { + ModelToXMLConverter.getInstance().convert(quickListEntity, quickList[j]); + } + bookmark.appendChild(quickListEntity); + convertQueryList(b, bookmark); + } + + + public void convert(Element parent, Entity entity) { + convert(parent, entity, true); + } + public void convert(Element parent, Entity entity, boolean recurse) { + Document document = parent.getOwnerDocument(); + Element element = document.createElement(getEntityDOMNodeName(entity)); + element.setAttribute("name", entity.getName()); + if (entity.getSchema() != null) { + element.setAttribute("schema", entity.getSchema()); + } + if (recurse) { + convert(element, entity.getColumns()); + } + parent.appendChild(element); + } + + public void convert(Element element, Column[] columns) { + for (int i = 0, length = (columns == null) ? 0 : columns.length; + i < length; + i++) { + convert(element, columns[i]); + } + } + + public void convert(Element parent, Column column) { + Document document = parent.getOwnerDocument(); + Element element = document.createElement("column"); + element.setAttribute("name", column.getName()); + element.setAttribute("type", column.getTypeName()); + element.setAttribute("primaryKey", column.isPrimaryKey() ? "true" : "false"); + element.setAttribute("nullable", column.isNullable() ? "true" : "false"); + if (column.isNumeric()) { + if (column.getSize() > 0) { + element.setAttribute("size", String.valueOf(column.getSize())); + } + if (column.getNumberOfFractionalDigits() > 0) { + element.setAttribute("numberOfFractionalDigits", String.valueOf(column.getNumberOfFractionalDigits())); + } + } else { + if (column.getSize() > 0) { + element.setAttribute("size", String.valueOf(column.getSize())); + } + } + if (column.getRemarks().length() > 0) + MetaDataXMLInterface.createElementText(element, "remarks", column.getRemarks()); + parent.appendChild(element); + } + + + public String getEntityDOMNodeName(Entity entity) { + if (Entity.TABLE_TYPE.equals(entity.getType())) { + return "table"; + } else if (Entity.VIEW_TYPE.equals(entity.getType())) { + return "view"; + } else if (Entity.SEQUENCE_TYPE.equals(entity.getType())) { + return "sequence"; + } else { + return "unknown"; + } + } + + public void convertQueryList( + Bookmark bookmark, + Element parent) { + + Document document = parent.getOwnerDocument(); + String[] queryList = bookmark.getQueries(); + Element queryListEntity = document.createElement("queryList"); + for (int j = 0, length = (queryList == null) ? 0 : queryList.length; + j < length; + j++) { + Element query = document.createElement("query"); + + // will have more possibilities later + Element queryString = document.createElement("queryString"); + Text queryText = document.createTextNode(queryList[j]); + queryString.appendChild(queryText); + query.appendChild(queryString); + queryListEntity.appendChild(query); + } + parent.appendChild(queryListEntity); + } + +}