Fixed NullPointerException (problems == null) may occur
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.sql / src / net / sourceforge / phpdt / sql / PHPEclipseSQLPlugin.java
index 8449c6f..5926e37 100644 (file)
@@ -1,9 +1,17 @@
 package net.sourceforge.phpdt.sql;
 
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.net.URL;
-import java.util.ResourceBundle;
 
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.crimson.tree.XmlDocument;
 import org.eclipse.core.resources.ISaveContext;
 import org.eclipse.core.resources.ISaveParticipant;
 import org.eclipse.core.resources.ISavedState;
@@ -18,20 +26,22 @@ import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.swt.graphics.FontData;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.RGB;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
 
-import net.sourceforge.phpdt.sql.sql.MultiSQLServer;
 import net.sourceforge.phpdt.sql.view.bookmark.BookmarkContentProvider;
+import net.sourceforge.phpdt.sql.view.bookmark.SubsetContentProvider;
 
 /**
  * @author 
  */
 public class PHPEclipseSQLPlugin extends AbstractUIPlugin implements IConstants {
-  
-  private static final String BUNDLE_NAME =
-    "net.sourceforge.phpdt.sql.PHPEclipseSQLResources";
-  private static final ResourceBundle RESOURCE_BUNDLE =
-    ResourceBundle.getBundle(BUNDLE_NAME);
 
   private static PHPEclipseSQLPlugin plugin;
   public final static String PLUGIN_ID = "net.sourceforge.phpeclipse.sql";
@@ -44,15 +54,50 @@ public class PHPEclipseSQLPlugin extends AbstractUIPlugin implements IConstants
   public static PHPEclipseSQLPlugin getDefault() {
     return plugin;
   }
+  /**
+   * Reads the PHPEclipseSQL Plugin state from a file. The file has been created with writeImportantState
+   * @param target
+   */
   protected void readStateFrom(File target) {
-    BookmarkContentProvider.getInstance().load(target);
+    String fileName = target.getName();
+    //         if (!fileName.endsWith("ext")) { //$NON-NLS-1$
+    //                 // It's the 2.0 format for preferences
+    //                 BookmarkContentProvider.getInstance().load(target);
+    //         } else {
+    //It's the 2.1 format for preferences and subsets
+    XmlDocument doc = new XmlDocument();
+    FileInputStream source = null;
+    try {
+      source = new FileInputStream(target);
+    } catch (FileNotFoundException e1) {
+      e1.printStackTrace();
+      return;
+    }
+    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+    DocumentBuilder parser;
+    try {
+      parser = factory.newDocumentBuilder();
+      doc = (XmlDocument) parser.parse(source);
+    } catch (ParserConfigurationException e) {
+      e.printStackTrace();
+      return;
+    } catch (SAXException e) {
+      e.printStackTrace();
+      return;
+    } catch (IOException e) {
+      e.printStackTrace();
+      return;
+    }
+    Element root = doc.getDocumentElement();
+    BookmarkContentProvider.getInstance().importXML(root);
+    SubsetContentProvider.getInstance().importXML(root);
+    //         }
   }
 
   public void startup() throws CoreException {
     super.startup();
     ISaveParticipant saveParticipant = new PHPSQLSaveParticipant();
-    ISavedState lastState =
-      ResourcesPlugin.getWorkspace().addSaveParticipant(this, saveParticipant);
+    ISavedState lastState = ResourcesPlugin.getWorkspace().addSaveParticipant(this, saveParticipant);
     if (lastState == null)
       return;
     IPath location = lastState.lookup(new Path("save"));
@@ -62,14 +107,39 @@ public class PHPEclipseSQLPlugin extends AbstractUIPlugin implements IConstants
     File f = getStateLocation().append(location).toFile();
     readStateFrom(f);
   }
+
   protected void writeImportantState(File target) {
-    BookmarkContentProvider.getInstance().save(target);
+    XmlDocument doc = new XmlDocument();
+    FileOutputStream out = null;
+    try {
+      out = new FileOutputStream(target);
+    } catch (FileNotFoundException e1) {
+      e1.printStackTrace();
+      return;
+    }
+    Element root = (Element) doc.appendChild(doc.createElement(Messages.getString("ExportXMLAction.SavedData"))); //$NON-NLS-1$
+
+    BookmarkContentProvider.getInstance().exportXML(root);
+    SubsetContentProvider.getInstance().exportXML(root);
+
+    try {
+      doc.write(out);
+      out.close();
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+
   }
+
+  /**
+   *  Gets an image descriptof from a file in the icons directory 
+   * @param name of the file to get
+   * @return ImageDescriptor or null if not found
+   */
   public static ImageDescriptor getImageDescriptor(String name) {
     ImageDescriptor descriptor = null;
     try {
-      URL installURL =
-        PHPEclipseSQLPlugin.getDefault().getDescriptor().getInstallURL();
+      URL installURL = PHPEclipseSQLPlugin.getDefault().getDescriptor().getInstallURL();
       URL url = new URL(installURL, "icons/" + name);
       descriptor = ImageDescriptor.createFromURL(url);
     } catch (Exception e) {
@@ -82,22 +152,17 @@ public class PHPEclipseSQLPlugin extends AbstractUIPlugin implements IConstants
   }
 
   public void dispose() throws CoreException {
-    MultiSQLServer.getInstance().shutdown();
   }
 
   protected void initializeDefaultPluginPreferences() {
     RGB BACKGROUND = new RGB(255, 255, 255);
     RGB COMMENT = new RGB(88, 148, 64);
-    RGB IDENTIFIER = new RGB(0, 0, 0);
     RGB KEYWORD = new RGB(126, 0, 75);
     RGB STRING = new RGB(0, 0, 255);
     RGB NUMERIC = new RGB(255, 0, 0);
     RGB DEFAULT = new RGB(0, 0, 0);
     IPreferenceStore store = getPreferenceStore();
-    PreferenceConverter.setDefault(
-      store,
-      "phpeclipse.sql.background.color",
-      BACKGROUND);
+    PreferenceConverter.setDefault(store, "phpeclipse.sql.background.color", BACKGROUND);
     PreferenceConverter.setDefault(store, "phpeclipse.sql.text.color", DEFAULT);
     PreferenceConverter.setDefault(store, "phpeclipse.sql.keyword.color", KEYWORD);
     PreferenceConverter.setDefault(store, "phpeclipse.sql.comment.color", COMMENT);
@@ -108,10 +173,46 @@ public class PHPEclipseSQLPlugin extends AbstractUIPlugin implements IConstants
     getPreferenceStore().setDefault("phpeclipse.sql.string.bold", false);
     getPreferenceStore().setDefault("phpeclipse.sql.comment.bold", false);
     getPreferenceStore().setDefault("phpeclipse.sql.numeric.bold", false);
-    PreferenceConverter.setDefault(
-      getPreferenceStore(),
-      "phpeclipse.sql.font",
-      (FontData) null);
+    PreferenceConverter.setDefault(getPreferenceStore(), "phpeclipsesql.font", (FontData) null); //$NON-NLS-1$
+    getPreferenceStore().setDefault(
+      "phpeclipse.sql.select.template",
+      "$results = mysql_query(\"SELECT {0} FROM {1} WHERE {2} \");");
+
+    getPreferenceStore().setDefault(
+      "phpeclipse.sql.insert.template",
+      "$results = mysql_query(\"INSERT INTO {0} ({1}) VALUES {2} \");");
+
+    getPreferenceStore().setDefault("phpeclipse.sql.update.template", "$results = mysql_query(\"UPDATE {0} SET {1} WHERE {2} \");");
+
+    getPreferenceStore().setDefault("phpeclipse.sql.delete.template", "$results = mysql_query(\"DELETE FROM {0} WHERE {1} \");");
+
+    getPreferenceStore().setDefault("phpeclipse.sql.username.connect", "root");
+
+    getPreferenceStore().setDefault("phpeclipse.sql.connect.connect", "jdbc:mysql://localhost/mysql");
+
+    getPreferenceStore().setDefault("phpeclipse.sql.driver.connect", "com.mysql.jdbc.Driver");
+
+    getPreferenceStore().setDefault("phpeclipse.sql.type.connect", "MySQL");
+
+    getPreferenceStore().setDefault(
+      "phpeclipse.sql.filename.connect",
+      "C:\\wampp2\\mysql\\lib\\mysql-connector.jar");
+  }
+
+  public boolean showView(String view) {
+    IWorkbench workbench = getWorkbench();
+    IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
+    IWorkbenchPage page = window.getActivePage();
+    IViewPart viewPart = null;
+    try {
+      viewPart = page.showView(view);
+    } catch (PartInitException e) {
+      e.printStackTrace();
+      return false;
+    }
+
+    PreferenceConverter.setDefault(getPreferenceStore(), "phpeclipse.sql.font", (FontData) null);
+    return (viewPart != null);
   }
 
 }
@@ -140,23 +241,19 @@ class PHPSQLSaveParticipant implements ISaveParticipant, IConstants {
   public void saving(ISaveContext context) throws CoreException {
     switch (context.getKind()) {
       case ISaveContext.FULL_SAVE :
-        PHPEclipseSQLPlugin quantumPluginInstance = PHPEclipseSQLPlugin.getDefault();
+        PHPEclipseSQLPlugin sqlPluginInstance = PHPEclipseSQLPlugin.getDefault();
         // save the plug in state 
         if (BookmarkContentProvider.getInstance().hasChanged()) {
           int saveNumber = context.getSaveNumber();
           String saveFileName = "save " + Integer.toString(saveNumber);
-          File f =
-            quantumPluginInstance
-              .getStateLocation()
-              .append(saveFileName)
-              .toFile();
+          File f = sqlPluginInstance.getStateLocation().append(saveFileName).toFile();
           // if we fail to write, an exception is thrown and we do not update the path 
-          quantumPluginInstance.writeImportantState(f);
+          sqlPluginInstance.writeImportantState(f);
           context.map(new Path("save"), new Path(saveFileName));
           context.needSaveNumber();
         } else {
           if (DEBUG) {
-          System.out.println("Not saving unchanged bookmarks");
+            System.out.println("Not saving unchanged bookmarks");
           }
         }
         break;