X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/PHPEclipseSQLPlugin.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/PHPEclipseSQLPlugin.java index 5b66482..9fbd506 100644 --- a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/PHPEclipseSQLPlugin.java +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/PHPEclipseSQLPlugin.java @@ -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,155 +26,295 @@ 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 { - 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 { - /** - * @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 { - 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; + } + } }