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;
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";
-
- public PHPEclipseSQLPlugin(IPluginDescriptor descriptor) {
- super(descriptor);
- plugin = this;
- }
-
- public static PHPEclipseSQLPlugin getDefault() {
- return plugin;
- }
- protected void readStateFrom(File target) {
- BookmarkContentProvider.getInstance().load(target);
- }
-
- public void startup() throws CoreException {
- super.startup();
- ISaveParticipant saveParticipant = new QuantumSaveParticipant();
- ISavedState lastState =
- ResourcesPlugin.getWorkspace().addSaveParticipant(this, saveParticipant);
- if (lastState == null)
- return;
- IPath location = lastState.lookup(new Path("save"));
- if (location == null)
- return;
- // the plugin instance should read any important state from the file.
- File f = getStateLocation().append(location).toFile();
- readStateFrom(f);
- }
- protected void writeImportantState(File target) {
- BookmarkContentProvider.getInstance().save(target);
- }
- public static ImageDescriptor getImageDescriptor(String name) {
- ImageDescriptor descriptor = null;
- try {
- URL installURL =
- PHPEclipseSQLPlugin.getDefault().getDescriptor().getInstallURL();
- URL url = new URL(installURL, "icons/" + name);
- descriptor = ImageDescriptor.createFromURL(url);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return descriptor;
- }
- public static Image getImage(String name) {
- return getImageDescriptor(name).createImage();
- }
-
- 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,
- "quantum.background.color",
- BACKGROUND);
- PreferenceConverter.setDefault(store, "quantum.text.color", DEFAULT);
- PreferenceConverter.setDefault(store, "quantum.keyword.color", KEYWORD);
- PreferenceConverter.setDefault(store, "quantum.comment.color", COMMENT);
- PreferenceConverter.setDefault(store, "quantum.string.color", STRING);
- PreferenceConverter.setDefault(store, "quantum.numeric.color", NUMERIC);
- getPreferenceStore().setDefault("quantum.text.bold", false);
- getPreferenceStore().setDefault("quantum.keyword.bold", true);
- getPreferenceStore().setDefault("quantum.string.bold", false);
- getPreferenceStore().setDefault("quantum.comment.bold", false);
- getPreferenceStore().setDefault("quantum.numeric.bold", false);
- PreferenceConverter.setDefault(
- getPreferenceStore(),
- "quantum.font",
- (FontData) null);
- }
+public class PHPEclipseSQLPlugin
+extends AbstractUIPlugin
+implements IConstants {
+
+ private static PHPEclipseSQLPlugin plugin;
+ public final static String PLUGIN_ID = "net.sourceforge.phpeclipse.sql";
+
+ public PHPEclipseSQLPlugin(IPluginDescriptor descriptor) {
+ super(descriptor);
+ plugin = this;
+ }
+
+ 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) {
+ 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);
+ if (lastState == null)
+ return;
+ IPath location = lastState.lookup(new Path("save"));
+ if (location == null)
+ return;
+ // the plugin instance should read any important state from the file.
+ File f = getStateLocation().append(location).toFile();
+ readStateFrom(f);
+ }
+
+ protected void writeImportantState(File 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 url = new URL(installURL, "icons/" + name);
+ descriptor = ImageDescriptor.createFromURL(url);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return descriptor;
+ }
+ public static Image getImage(String name) {
+ return getImageDescriptor(name).createImage();
+ }
+
+ public void dispose() throws CoreException {
+ }
+
+ protected void initializeDefaultPluginPreferences() {
+ RGB BACKGROUND = new RGB(255, 255, 255);
+ RGB COMMENT = new RGB(88, 148, 64);
+ 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.text.color",
+ DEFAULT);
+ PreferenceConverter.setDefault(
+ store,
+ "phpeclipse.sql.keyword.color",
+ KEYWORD);
+ PreferenceConverter.setDefault(
+ store,
+ "phpeclipse.sql.comment.color",
+ COMMENT);
+ PreferenceConverter.setDefault(
+ store,
+ "phpeclipse.sql.string.color",
+ STRING);
+ PreferenceConverter.setDefault(
+ store,
+ "phpeclipse.sql.numeric.color",
+ NUMERIC);
+ getPreferenceStore().setDefault("phpeclipse.sql.text.bold", false);
+ getPreferenceStore().setDefault("phpeclipse.sql.keyword.bold", true);
+ getPreferenceStore().setDefault("phpeclipse.sql.string.bold", false);
+ getPreferenceStore().setDefault("phpeclipse.sql.comment.bold", false);
+ getPreferenceStore().setDefault("phpeclipse.sql.numeric.bold", false);
+ PreferenceConverter.setDefault(getPreferenceStore(), "phpeclipsesql.font", (FontData) null); //$NON-NLS-1$
+ }
+
+ 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;
+ }
+
+ 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/test");
+
+ getPreferenceStore().setDefault(
+ "phpeclipse.sql.driver.connect",
+ "com.mysql.jdbc.Driver");
+
+ getPreferenceStore().setDefault("phpeclipse.sql.type.connect", "MySQL");
+
+ getPreferenceStore().setDefault(
+ "phpeclipse.sql.filename.connect",
+ "C:\\apache\\mysql\\lib\\mysql-connector-java-2.0.14-bin.jar");
+
+ PreferenceConverter.setDefault(
+ getPreferenceStore(),
+ "phpeclipse.sql.font",
+ (FontData) null);
+ return(viewPart != null);
+ }
}
-class QuantumSaveParticipant implements ISaveParticipant, IConstants {
- /**
- * @see org.eclipse.core.resources.ISaveParticipant#doneSaving(ISaveContext)
- */
- public void doneSaving(ISaveContext context) {
- }
-
- /**
- * @see org.eclipse.core.resources.ISaveParticipant#prepareToSave(ISaveContext)
- */
- public void prepareToSave(ISaveContext context) throws CoreException {
- }
-
- /**
- * @see org.eclipse.core.resources.ISaveParticipant#rollback(ISaveContext)
- */
- public void rollback(ISaveContext context) {
- }
-
- /**
- * @see org.eclipse.core.resources.ISaveParticipant#saving(ISaveContext)
- */
- public void saving(ISaveContext context) throws CoreException {
- switch (context.getKind()) {
- case ISaveContext.FULL_SAVE :
- PHPEclipseSQLPlugin quantumPluginInstance = 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();
- // if we fail to write, an exception is thrown and we do not update the path
- quantumPluginInstance.writeImportantState(f);
- context.map(new Path("save"), new Path(saveFileName));
- context.needSaveNumber();
- } else {
- if (DEBUG) {
- System.out.println("Not saving unchanged bookmarks");
- }
- }
- break;
- case ISaveContext.PROJECT_SAVE :
- // get the project related to this save operation
- //IProject project = context.getProject();
- // save its information, if necessary
- break;
- case ISaveContext.SNAPSHOT :
- // This operation needs to be really fast because
- // snapshots can be requested frequently by the
- // workspace.
- break;
- }
- }
+class PHPSQLSaveParticipant implements ISaveParticipant, IConstants {
+ /**
+ * @see org.eclipse.core.resources.ISaveParticipant#doneSaving(ISaveContext)
+ */
+ public void doneSaving(ISaveContext context) {
+ }
+
+ /**
+ * @see org.eclipse.core.resources.ISaveParticipant#prepareToSave(ISaveContext)
+ */
+ public void prepareToSave(ISaveContext context) throws CoreException {
+ }
+
+ /**
+ * @see org.eclipse.core.resources.ISaveParticipant#rollback(ISaveContext)
+ */
+ public void rollback(ISaveContext context) {
+ }
+
+ /**
+ * @see org.eclipse.core.resources.ISaveParticipant#saving(ISaveContext)
+ */
+ public void saving(ISaveContext context) throws CoreException {
+ switch (context.getKind()) {
+ case ISaveContext.FULL_SAVE :
+ 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 =
+ sqlPluginInstance
+ .getStateLocation()
+ .append(saveFileName)
+ .toFile();
+ // if we fail to write, an exception is thrown and we do not update the path
+ sqlPluginInstance.writeImportantState(f);
+ context.map(new Path("save"), new Path(saveFileName));
+ context.needSaveNumber();
+ } else {
+ if (DEBUG) {
+ System.out.println("Not saving unchanged bookmarks");
+ }
+ }
+ break;
+ case ISaveContext.PROJECT_SAVE :
+ // get the project related to this save operation
+ //IProject project = context.getProject();
+ // save its information, if necessary
+ break;
+ case ISaveContext.SNAPSHOT :
+ // This operation needs to be really fast because
+ // snapshots can be requested frequently by the
+ // workspace.
+ break;
+ }
+ }
}