newest quantum CVS sources
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / model / BookmarkCollection.java
index 184f790..882f111 100644 (file)
@@ -75,29 +75,18 @@ public class BookmarkCollection {
             bookmark.setUsername(props.getProperty(i + ".username")); //$NON-NLS-1$
             bookmark.setPassword(props.getProperty(i + ".password")); //$NON-NLS-1$
             bookmark.setConnect(props.getProperty(i + ".connect")); //$NON-NLS-1$
-            bookmark.setDriver(props.getProperty(i + ".driver")); //$NON-NLS-1$
             String schema = props.getProperty(i + ".schema"); //$NON-NLS-1$
             if (schema != null) {
                 bookmark.addSchema(schema);
             }
-            String type = props.getProperty(i + ".type"); //$NON-NLS-1$
-            if (type != null) {
-                bookmark.setType(type);
-            } else {
-                bookmark.setType(""); //$NON-NLS-1$
-            }
-            String driverFile = props.getProperty(i + ".driverLocation"); //$NON-NLS-1$
-            if (driverFile != null) {
-                bookmark.setDriverFile(driverFile);
-            } else {
-                bookmark.setDriverFile(""); //$NON-NLS-1$
-            }
-            System.out.println(bookmark.toString());
             if (!bookmark.isEmpty()) {
                 newBookmarks.add(bookmark);
             }
             i++;
-            this.drivers.add(new JDBCDriver(bookmark.getDriver(), driverFile));
+            String driver = props.getProperty(i + ".driver"); //$NON-NLS-1$
+            String driverFile = props.getProperty(i + ".driverLocation"); //$NON-NLS-1$
+            String type = props.getProperty(i + ".type"); //$NON-NLS-1$
+            this.drivers.add(new JDBCDriver(driver, driverFile, type));
         }
         if (overwrite) {
             this.bookmarks = newBookmarks;
@@ -164,11 +153,16 @@ public class BookmarkCollection {
         NodeList nodes = root.getElementsByTagName("jdbcDriver"); //$NON-NLS-1$
         for (int i = 0; i < nodes.getLength(); i++) {
                Element driver = (Element) nodes.item(i);
-               addDriver(new JDBCDriver(
-                       driver.getAttribute("className"),
-                       driver.getAttribute("jarFileName"),
-                       driver.getAttribute("name"),
-                       driver.getAttribute("version")));
+
+               if (!"".equals(driver.getAttribute("type"))) {
+                       addDriver(new JDBCDriver(
+                               driver.getAttribute("className"),
+                               driver.getAttribute("jarFileName"),
+                               driver.getAttribute("type"),
+                               driver.getAttribute("name"),
+                               driver.getAttribute("version")));
+               }
+               
         }
        }
 
@@ -206,18 +200,21 @@ public class BookmarkCollection {
                        bookmark.setAutoCommit(Boolean.TRUE.toString().equalsIgnoreCase(
                                MetaDataXMLInterface.getElementText(column,"autoCommit", "True"))); //$NON-NLS-1$
                        bookmark.setAutoCommitPreference(MetaDataXMLInterface.getElementText(column,"autoCommitPreference", IQuantumConstants.autoCommitTrue)); //$NON-NLS-1$
-            bookmark.addSchema(MetaDataXMLInterface.getElementText(column,"schema")); //$NON-NLS-1$
-            bookmark.setType(MetaDataXMLInterface.getElementText(column,"type")); //$NON-NLS-1$
-            NodeList children = column.getElementsByTagName(Messages.getString("ExportXMLAction.OtherSchemas"));
+                       
+                       backwardCompatibility(bookmark, column);
 
             String driverClassName = MetaDataXMLInterface.getElementText(column,"driver"); //$NON-NLS-1$
             String driverFile = MetaDataXMLInterface.getElementText(column,"driverLocation"); //$NON-NLS-1$
+            String type = MetaDataXMLInterface.getElementText(column,"type"); //$NON-NLS-1$
             
-            bookmark.setJDBCDriver(new JDBCDriver(driverClassName, driverFile));
+            bookmark.setJDBCDriver(new JDBCDriver(driverClassName, driverFile, type));
             
+            NodeList children = column.getElementsByTagName("Other_Schemas");
             if (children.getLength() > 0) {
                 importSchemas((Element) children.item(0), bookmark);
             }
+            
+            
             System.out.println(bookmark.toString());
             if (!bookmark.isEmpty()) {
                 newBookmarks.addElement(bookmark);
@@ -228,17 +225,51 @@ public class BookmarkCollection {
                return newBookmarks;
        }
 
+       /**
+        * Earlier versions of the xml file expected one schema element under the 
+        * bookmark element.  This method sees if it exists.
+        * 
+        * @param bookmark
+        * @param element
+        */
+       private void backwardCompatibility(Bookmark bookmark, Element element) {
+               NodeList children = element.getChildNodes();
+               for (int i = 0, length = children.getLength(); i < length; i++) {
+                       Node node = children.item(i);
+                       if (node.getNodeType() == Node.ELEMENT_NODE && 
+                                       "schema".equals(((Element) node).getTagName())) {
+                               String schema = MetaDataXMLInterface.extractText(element,"");
+                               if (schema != null && schema.trim().length() > 0) {
+                                       bookmark.addSchema(schema);
+                               }
+                       }
+               }
+       }
+
        private void importSchemas(Element otherSchemas, Bookmark bookmark) {
-        Vector vector = MetaDataXMLInterface.getVectorText(otherSchemas, Messages.getString("ExportXMLAction.SchemaName"));
         List list = new ArrayList();
-        for (Iterator i = vector.iterator(); i.hasNext();) {
-            String schemaName = (String) i.next();
-            list.add(new Schema(schemaName));
+        NodeList children = otherSchemas.getChildNodes();
+        for (int i = 0, length = children.getLength(); i < length; i++) {
+               Node node = children.item(i);
+               if (node.getNodeType() == Node.ELEMENT_NODE
+                               && "schema".equalsIgnoreCase(((Element) node).getTagName())) {
+                   list.add(new Schema(
+                               MetaDataXMLInterface.extractText((Element) node, "")));
+               }
+        }
+        
+        String schemaRule = otherSchemas.getAttribute("schemaRule");
+        if ("useAll".equals(schemaRule)) {
+               bookmark.setSchemaRule(Bookmark.SCHEMA_RULE_USE_ALL);
+        } else if ("useDefault".equals(schemaRule)) {
+               bookmark.setSchemaRule(Bookmark.SCHEMA_RULE_USE_DEFAULT);
+        } else {
+               bookmark.setSchemaRule(Bookmark.SCHEMA_RULE_USE_SELECTED);
         }
-        bookmark.setSchemas((Schema[]) list.toArray(new Schema[list.size()]));
+        bookmark.setSchemaSelections((Schema[]) list.toArray(new Schema[list.size()]));
     }
 
-    private void importQuickList(Bookmark bookmark, Element bookmarkElement) {
+       private void importQuickList(Bookmark bookmark, Element bookmarkElement) {
         NodeList quickList = bookmarkElement.getElementsByTagName("quickList");
         for (int j = 0,
             length = (quickList == null) ? 0 : quickList.getLength();
@@ -365,8 +396,8 @@ public class BookmarkCollection {
         * @param driver
         * @param driverFile
         */
-       public JDBCDriver findDriver(String driverClassName, String driverFile) {
-               JDBCDriver temp = new JDBCDriver(driverClassName, driverFile);
+       public JDBCDriver findDriver(String driverClassName, String driverFile, String type) {
+               JDBCDriver temp = new JDBCDriver(driverClassName, driverFile, type);
                return findDriver(temp);
        }