From: khartlage Date: Fri, 28 Feb 2003 20:43:41 +0000 (+0000) Subject: SQL Plugin copied from Quantum plugin and refactored for PHPEclipse X-Git-Url: http://git.phpeclipse.com?hp=f4bba67da5a77c25289f56268af097d37a9534dd SQL Plugin copied from Quantum plugin and refactored for PHPEclipse --- diff --git a/archive/net.sourceforge.phpeclipse.sql/.classpath b/archive/net.sourceforge.phpeclipse.sql/.classpath new file mode 100644 index 0000000..ee42d2f --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/.classpath @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + diff --git a/archive/net.sourceforge.phpeclipse.sql/.project b/archive/net.sourceforge.phpeclipse.sql/.project new file mode 100644 index 0000000..e4db8ba --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/.project @@ -0,0 +1,28 @@ + + + net.sourceforge.phpeclipse.sql + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/archive/net.sourceforge.phpeclipse.sql/build.properties b/archive/net.sourceforge.phpeclipse.sql/build.properties new file mode 100644 index 0000000..e69de29 diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/.xvpics/fulldata-disabled.gif b/archive/net.sourceforge.phpeclipse.sql/icons/.xvpics/fulldata-disabled.gif new file mode 100644 index 0000000..ac825ff --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/icons/.xvpics/fulldata-disabled.gif @@ -0,0 +1,5 @@ +P7 332 +#IMGINFO:16x16 Greyscale (883 bytes) +#END_OF_COMMENTS +16 16 255 +I$IIÛ¶¶¶IH%IÛ¶¶ÚI$IIÛ¶¶¶IH%IÛ¶¶ÚI$IImIIIIHJl%Û¶¶I$II¶’’¶‘’¶’$Û¶ÛÛ¶¶H“H%H%IH“HI$IÛ¶¶H“µ’’¶’’‘II$IÛ¶¶H“H%H%IH“HI$IÛ¶¶H“µ’’¶’’‘II$II$II¶%H%H%I¶$Û¶ÛI$II¶’’¶‘’¶’$Û¶ÛI$II¶%H%H%I¶$Û¶ÛI$II¶’’¶‘’¶’$Û¶ÛÛ¶¶H“H%H%IH“HI$IÛ¶¶H“µ’’¶’’‘II$IÛ¶¶HI%IHÛ¶·¶H%IHÛ¶¶¶I$IIÛ¶¶Ú%H%I \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/add.gif b/archive/net.sourceforge.phpeclipse.sql/icons/add.gif new file mode 100644 index 0000000..0fc47e1 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/add.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/autocommit.gif b/archive/net.sourceforge.phpeclipse.sql/icons/autocommit.gif new file mode 100644 index 0000000..32b77ee Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/autocommit.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/bookmarks.gif b/archive/net.sourceforge.phpeclipse.sql/icons/bookmarks.gif new file mode 100644 index 0000000..137b3ca Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/bookmarks.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/clear.gif b/archive/net.sourceforge.phpeclipse.sql/icons/clear.gif new file mode 100644 index 0000000..5cdb88f Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/clear.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/close.gif b/archive/net.sourceforge.phpeclipse.sql/icons/close.gif new file mode 100644 index 0000000..fed9c3b Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/close.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/commit.gif b/archive/net.sourceforge.phpeclipse.sql/icons/commit.gif new file mode 100644 index 0000000..2d31c8b Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/commit.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/connected.gif b/archive/net.sourceforge.phpeclipse.sql/icons/connected.gif new file mode 100644 index 0000000..544ac78 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/connected.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/copy.gif b/archive/net.sourceforge.phpeclipse.sql/icons/copy.gif new file mode 100644 index 0000000..fa98681 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/copy.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/cut.gif b/archive/net.sourceforge.phpeclipse.sql/icons/cut.gif new file mode 100644 index 0000000..14b73a8 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/cut.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/delete.gif b/archive/net.sourceforge.phpeclipse.sql/icons/delete.gif new file mode 100644 index 0000000..d9d1a33 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/delete.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/edit.gif b/archive/net.sourceforge.phpeclipse.sql/icons/edit.gif new file mode 100644 index 0000000..f56a27e Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/edit.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/export.gif b/archive/net.sourceforge.phpeclipse.sql/icons/export.gif new file mode 100644 index 0000000..a0124b0 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/export.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/filter.gif b/archive/net.sourceforge.phpeclipse.sql/icons/filter.gif new file mode 100644 index 0000000..1492b4e Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/filter.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/fulldata.gif b/archive/net.sourceforge.phpeclipse.sql/icons/fulldata.gif new file mode 100644 index 0000000..3d1c062 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/fulldata.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/import.gif b/archive/net.sourceforge.phpeclipse.sql/icons/import.gif new file mode 100644 index 0000000..b160563 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/import.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/log.gif b/archive/net.sourceforge.phpeclipse.sql/icons/log.gif new file mode 100644 index 0000000..07fdb5a Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/log.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/next.gif b/archive/net.sourceforge.phpeclipse.sql/icons/next.gif new file mode 100644 index 0000000..d25a3f9 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/next.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/paste.gif b/archive/net.sourceforge.phpeclipse.sql/icons/paste.gif new file mode 100644 index 0000000..f118c7e Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/paste.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/play.gif b/archive/net.sourceforge.phpeclipse.sql/icons/play.gif new file mode 100644 index 0000000..a8bfcf5 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/play.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/previous.gif b/archive/net.sourceforge.phpeclipse.sql/icons/previous.gif new file mode 100644 index 0000000..f48362d Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/previous.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/quantum-ng.gif b/archive/net.sourceforge.phpeclipse.sql/icons/quantum-ng.gif new file mode 100644 index 0000000..31e5082 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/quantum-ng.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/quantum.gif b/archive/net.sourceforge.phpeclipse.sql/icons/quantum.gif new file mode 100644 index 0000000..e964a2f Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/quantum.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/refresh.gif b/archive/net.sourceforge.phpeclipse.sql/icons/refresh.gif new file mode 100644 index 0000000..cf7cea3 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/refresh.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/rollback.gif b/archive/net.sourceforge.phpeclipse.sql/icons/rollback.gif new file mode 100644 index 0000000..8fdd814 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/rollback.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/sample.gif b/archive/net.sourceforge.phpeclipse.sql/icons/sample.gif new file mode 100644 index 0000000..34fb3c9 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/sample.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/script.gif b/archive/net.sourceforge.phpeclipse.sql/icons/script.gif new file mode 100644 index 0000000..bc278f9 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/script.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/stop.gif b/archive/net.sourceforge.phpeclipse.sql/icons/stop.gif new file mode 100644 index 0000000..064202b Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/stop.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/success.gif b/archive/net.sourceforge.phpeclipse.sql/icons/success.gif new file mode 100644 index 0000000..5748e32 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/success.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/icons/table.gif b/archive/net.sourceforge.phpeclipse.sql/icons/table.gif new file mode 100644 index 0000000..f4056f6 Binary files /dev/null and b/archive/net.sourceforge.phpeclipse.sql/icons/table.gif differ diff --git a/archive/net.sourceforge.phpeclipse.sql/install.txt b/archive/net.sourceforge.phpeclipse.sql/install.txt new file mode 100644 index 0000000..3fb65d0 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/install.txt @@ -0,0 +1,7 @@ +Quick and Dirty Install Instructions: +1. Download and unpack eclipse 2.0 into a directory [e.g. C:\eclipse] +2. Download Quantum +3. Unzip quantum into the plugins directory of eclipse [e.g. C:\eclipse\plugins] +4. Launch eclipse +5. Open the Quantum DB Perspective [Go to Windows -> Open Perspective -> Other and select Quantum DB Perspective] +6. Right click any where on the Bookmark view and select "New Bookmark..." \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/plugin.properties b/archive/net.sourceforge.phpeclipse.sql/plugin.properties new file mode 100644 index 0000000..db877f1 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/plugin.properties @@ -0,0 +1,11 @@ +phpsql.name = PHPEclipse SQL Utility +perspective.name = PHPEclipse SQL Perspective +sqllogview.name = PHPEclipse SQL Log +queryhistoryview.name = Query History +tableview.name = PHPEclipse Table View +sqlqueryview.name PHPEclipse SQL Query Editor +bookmarkview.name = Database Bookmarks +bookmarkview.importboomarks = Import Bookmarks +bookmarkview.exportbookmarks = Export Bookmarks +phpsourceconsoleview.name = PHP Source Generator Console +category.name = PHPEclipseSQL \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/plugin.xml b/archive/net.sourceforge.phpeclipse.sql/plugin.xml new file mode 100644 index 0000000..1970cc5 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/plugin.xml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 new file mode 100644 index 0000000..5b66482 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/PHPEclipseSQLPlugin.java @@ -0,0 +1,172 @@ +package net.sourceforge.phpdt.sql; + +import java.io.File; +import java.net.URL; +import java.util.ResourceBundle; + +import org.eclipse.core.resources.ISaveContext; +import org.eclipse.core.resources.ISaveParticipant; +import org.eclipse.core.resources.ISavedState; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IPluginDescriptor; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.preference.PreferenceConverter; +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.plugin.AbstractUIPlugin; + +import net.sourceforge.phpdt.sql.sql.MultiSQLServer; +import net.sourceforge.phpdt.sql.view.bookmark.BookmarkContentProvider; + +/** + * @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); + } + +} +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; + } + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/PHPEclipseSQLResources.properties b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/PHPEclipseSQLResources.properties new file mode 100644 index 0000000..5953147 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/PHPEclipseSQLResources.properties @@ -0,0 +1,54 @@ +bookmarkview.done = Done +bookmarkview.connect = Connect +bookmarkview.disconnect = Disconnect +bookmarkview.newBookmark = New Bookmark... +bookmarkview.editBookmark = Edit Bookmark... +bookmarkview.deleteBookmark = Delete Bookmark... +bookmarkview.refresh = Refresh +bookmarkview.viewTable = View Table +bookmarkview.viewTableDetails = View Table Details +bookmarkview.nextSequence = Next Sequence Value +bookmarkview.noSequence = Database type does not support sequences +bookmarkview.noViews = Database type does not support views +bookmarkview.noTables = Database type does not support tables +sqlqueryview.executeQuery = Execute Query +sqlqueryview.importQuery = Import Query +sqlqueryview.exportQuery = Export Query +sqlqueryview.clear = Clear +sqlqueryview.copy = Copy +sqlqueryview.paste = Paste +sqlqueryview.done = Done +tableview.refresh = Refresh Table +tableview.copy = Copy Table Selection To Clipboard +tableview.selectAll = Select All Table Rows +tableview.close = Close Table +tableview.update = Update... +tableview.insert = Insert... +tableview.delete = Delete... +tableview.phpselect = PHP Select... +tableview.filterSort = Sort or Filter Table... +tableview.showAll = Toggle Show All Table Rows +tableview.defaultEncoding = Set Default Encoding +tableview.UTF8Encoding = Set UTF-8 +tableview.UTF16Encoding = Set UTF-16 +bookmarkview.retrieveTableData = Retrieving table data... +bookmarkview.retrieveViewData = Retrieving view data... +bookmarkview.retrieveSeqData = Retrieving sequence data... +bookmarkview.done = Done +bookmarkview.metaDataError = Error while retrieving metadata +bookmarkview.deleteBookmark = Delete Bookmark +bookmarkview.confirm = Are you sure you want to delete bookmark +bookmarkview.disconnect = Disconnecting from +filedialog.preferences = Preferences (*.ini) +filedialog.allfiles = All Files (*.*) +filedialog.sqlFiles = SQL query (*.sql) +filedialog.ddlFiles = SQL query (*.ddl) +adapters.generic = Generic JDBC +adapters.oracle = Oracle +adapters.postgres = Postgres +adapters.mysql = MySQL +adapters.db2 = DB2 +adapters.db2as400 = DB2 for AS400 +adapters.adabasd = Adabas-D + +sqlconsole.viewopeningproblem = Problems while opening the PHP source console \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/CloseTableAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/CloseTableAction.java new file mode 100644 index 0000000..6296a13 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/CloseTableAction.java @@ -0,0 +1,44 @@ +package net.sourceforge.phpdt.sql.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.view.TableView; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class CloseTableAction extends Action implements IViewActionDelegate { + TableView view; + /** + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init(IViewPart view) { + this.view = (TableView) view; + } + + /** + * @see org.eclipse.ui.IActionDelegate#run(IAction) + */ + public void run(IAction action) { + run(); + } + public void run() { + view.closeCurrent(); + } + + /** + * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ConnectAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ConnectAction.java new file mode 100644 index 0000000..e58acec --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ConnectAction.java @@ -0,0 +1,66 @@ +package net.sourceforge.phpdt.sql.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchPart; + +import net.sourceforge.phpdt.sql.sql.MultiSQLServer; +import net.sourceforge.phpdt.sql.sql.SQLHelper; +import net.sourceforge.phpdt.sql.view.BookmarkView; +import net.sourceforge.phpdt.sql.view.bookmark.BookmarkNode; + +public class ConnectAction extends Action implements IViewActionDelegate { + private SQLHelper helper = new SQLHelper(); + private BookmarkView view; + /** + * Constructor for Action1. + */ + public ConnectAction() { + super(); + } + + /** + * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart) + */ + public void setActivePart(IAction action, IWorkbenchPart targetPart) { + } + + /** + * @see IActionDelegate#run(IAction) + */ + public void run(IAction action) { + run(); + } + + /** + * @see IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + + /** + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init(IViewPart view) { + this.view = (BookmarkView) view; + } + + /** + * @see org.eclipse.jface.action.IAction#run() + */ + public void run() { + view.disconnect(); + BookmarkNode current = view.getCurrentBookmark(); + view.setStatus("Connecting to " + current.getName() + "..."); //$NON-NLS-1$ //$NON-NLS-2$ + boolean status = MultiSQLServer.getInstance().connect(current); + if (status) { + view.refreshBookmarkData(); + view.expandCurrent(current); + } else { + view.setStatus("Error while connecting to " + current.getName()); //$NON-NLS-1$ + } + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/DeleteBookmarkAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/DeleteBookmarkAction.java new file mode 100644 index 0000000..26bc204 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/DeleteBookmarkAction.java @@ -0,0 +1,57 @@ +package net.sourceforge.phpdt.sql.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.view.BookmarkView; +import net.sourceforge.phpdt.sql.view.bookmark.BookmarkNode; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class DeleteBookmarkAction extends Action implements IViewActionDelegate { + BookmarkView view; + /** + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init(IViewPart view) { + this.view = (BookmarkView) view; + } + + /** + * @see org.eclipse.ui.IActionDelegate#run(IAction) + */ + public void run(IAction action) { + run(); + } + + public void run() { + Object selection = view.getCurrent(); + if (selection instanceof BookmarkNode) { + BookmarkNode node = (BookmarkNode) selection; + if (node != null) { + String name = node.getName(); + boolean flag = MessageDialog.openConfirm(view.getSite().getShell(), Messages.getString("bookmarkview.deleteBookmark"), Messages.getString("bookmarkview.confirm") + name); //$NON-NLS-1$ //$NON-NLS-2$ + if (flag) { + view.deleteCurrent(); + } + } + } + } + + /** + * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/DisconnectAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/DisconnectAction.java new file mode 100644 index 0000000..b806dc2 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/DisconnectAction.java @@ -0,0 +1,45 @@ +package net.sourceforge.phpdt.sql.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.view.BookmarkView; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class DisconnectAction extends Action implements IViewActionDelegate { + BookmarkView view; + /** + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init(IViewPart view) { + this.view = (BookmarkView) view; + } + + /** + * @see org.eclipse.ui.IActionDelegate#run(IAction) + */ + public void run(IAction action) { + run(); + } + + public void run() { + view.disconnect(); + } + + /** + * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/EditBookmarkAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/EditBookmarkAction.java new file mode 100644 index 0000000..daab5b6 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/EditBookmarkAction.java @@ -0,0 +1,55 @@ +package net.sourceforge.phpdt.sql.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.view.BookmarkView; +import net.sourceforge.phpdt.sql.view.bookmark.BookmarkNode; +import net.sourceforge.phpdt.sql.wizards.BookmarkWizard; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class EditBookmarkAction extends Action implements IViewActionDelegate { + IViewPart view; + /** + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init(IViewPart view) { + this.view = view; + + } + + /** + * @see org.eclipse.ui.IActionDelegate#run(IAction) + */ + public void run(IAction action) { + run(); + } + public void run() { + System.out.println("Wizard.."); + BookmarkWizard wizard = new BookmarkWizard(); + + BookmarkNode b = BookmarkView.getInstance().getCurrentBookmark(); + wizard.init(b); + WizardDialog dialog = new WizardDialog (view.getSite().getShell(),wizard); + dialog.open(); + + } + + /** + * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ExecuteAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ExecuteAction.java new file mode 100644 index 0000000..9b1b0e2 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ExecuteAction.java @@ -0,0 +1,91 @@ +package net.sourceforge.phpdt.sql.actions; + +import java.util.Vector; + +import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.swt.graphics.Image; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.sql.MultiSQLServer; +import net.sourceforge.phpdt.sql.sql.SQLParser; +import net.sourceforge.phpdt.sql.sql.SQLResults; +import net.sourceforge.phpdt.sql.view.QueryHistoryView; +import net.sourceforge.phpdt.sql.view.SQLQueryView; +import net.sourceforge.phpdt.sql.view.TableView; +import net.sourceforge.phpdt.sql.view.tableview.DefaultSizes; + +public class ExecuteAction extends Action implements IViewActionDelegate { + SQLQueryView view; + boolean flag = false; + String execute1 = "Executing Query..."; + String execute2 = "Executing Query.."; + public void init(IViewPart view) { + this.view = (SQLQueryView) view; + } + + public void run(IAction action) { + run(); + } + + public void run() { + view.setStatus(execute1); + MultiSQLServer server = MultiSQLServer.getInstance(); + view.setStatus("Parsing sql script..."); + Vector queries = new Vector(); + String viewQuery = view.getQuery(); + queries = SQLParser.parse(viewQuery); + for (int i = 0; i < queries.size(); i++) { + String query = (String) queries.elementAt(i); + System.out.println(query); + } + int resultCount = 0; + int resultUpdateCount = 0; + int errorCount = 0; + int resultsDisplayed = 0; + for (int i = 0; i < queries.size(); i++) { + if (flag) { + view.setStatus(execute1); + } else { + view.setStatus(execute2); + } + String query = (String) queries.elementAt(i); + System.out.println(">" + query + "<"); + if (!query.equals("")) { + SQLResults results = server.execute(query, 1, DefaultSizes.PAGE_SIZE, DefaultSizes.MAX_COLUMN_SIZE); + resultCount++; + if (results.isResultSet()) { + TableView.getInstance().loadQuery(results); + resultsDisplayed++; + } else { + int count = results.getUpdateCount(); + if (count > 0) { + resultUpdateCount += results.getUpdateCount(); + } + } + if (results.isError()) { + errorCount++; + } + } + flag = !flag; + view.setProgress(i + 1, queries.size()); + } + if (errorCount > 0) { + Image error = PHPEclipseSQLPlugin.getImage("stop.gif"); + view.setStatus(error, "Done (" + resultCount + " queries executed, " + resultUpdateCount + " rows updated, " + resultsDisplayed + " results displayed, " + errorCount + " errors)"); + } else { + Image success = PHPEclipseSQLPlugin.getImage("success.gif"); + view.setStatus(success, "Done (" + resultCount + " queries executed, " + resultUpdateCount + " rows updated, " + resultsDisplayed + " results displayed, " + errorCount + " errors)"); + } + view.setProgress(0, 1); + QueryHistoryView history = QueryHistoryView.getInstance(); + history.addQuery(viewQuery); + } + + public void selectionChanged(IAction action, ISelection selection) { + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ExportBookmarksAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ExportBookmarksAction.java new file mode 100644 index 0000000..dfaf550 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ExportBookmarksAction.java @@ -0,0 +1,56 @@ +package net.sourceforge.phpdt.sql.actions; + +import java.io.File; + +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.FileDialog; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.view.BookmarkView; +import net.sourceforge.phpdt.sql.view.bookmark.BookmarkContentProvider; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class ExportBookmarksAction + implements IViewActionDelegate { + + BookmarkView view; + FileDialog dialog; + + /** + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init(IViewPart view) { + this.view = (BookmarkView) view; + dialog = new FileDialog(view.getSite().getShell(), SWT.SAVE); + dialog.setFilterExtensions(new String[]{"*.ini","*.*"}); //$NON-NLS-1$ //$NON-NLS-2$ + dialog.setFilterNames(new String[]{Messages.getString("filedialog.preferences"),Messages.getString("filedialog.allfiles")}); //$NON-NLS-1$ //$NON-NLS-2$ + } + + /** + * @see org.eclipse.ui.IActionDelegate#run(IAction) + */ + public void run(IAction action) { + String filename = dialog.open(); + if (filename != null) { + File exportFile = new File(filename); + BookmarkContentProvider.getInstance().save(exportFile); + } + } + + /** + * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ExportQueryAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ExportQueryAction.java new file mode 100644 index 0000000..c374b27 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ExportQueryAction.java @@ -0,0 +1,68 @@ +package net.sourceforge.phpdt.sql.actions; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.StringTokenizer; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.FileDialog; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.view.LogProxy; +import net.sourceforge.phpdt.sql.view.SQLLogView; +import net.sourceforge.phpdt.sql.view.SQLQueryView; + +public class ExportQueryAction extends Action implements IViewActionDelegate { + SQLQueryView view; + FileDialog dialog; + /** + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init(IViewPart view) { + this.view = (SQLQueryView) view; + dialog = new FileDialog(view.getSite().getShell(), SWT.SAVE); + dialog.setFilterExtensions(new String[]{"*.sql", "*.ddl", "*.*"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + dialog.setFilterNames(new String[]{Messages.getString("filedialog.sqlFiles"), //$NON-NLS-1$ + Messages.getString("filedialog.ddlFiles"), Messages.getString("filedialog.allfiles")}); //$NON-NLS-1$ //$NON-NLS-2$ + } + + /** + * @see org.eclipse.ui.IActionDelegate#run(IAction) + */ + public void run(IAction action) { + run(); + } + + public void run() { + String filename = dialog.open(); + if (filename != null) { + try { + File exportFile = new File(filename); + FileWriter fileWriter = new FileWriter(exportFile); + PrintWriter writer = new PrintWriter(fileWriter); + String output = view.getQuery(); + StringTokenizer tokenizer = new StringTokenizer(output, "\n"); + while (tokenizer.hasMoreElements()) { + String line = (String) tokenizer.nextElement(); + writer.println(line); + } + writer.close(); + } catch (IOException e) { + LogProxy.getInstance().addText(SQLLogView.ERROR, e.toString()); + e.printStackTrace(); + } + } + } + + /** + * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ImportBookmarksAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ImportBookmarksAction.java new file mode 100644 index 0000000..cafeece --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ImportBookmarksAction.java @@ -0,0 +1,54 @@ +package net.sourceforge.phpdt.sql.actions; + +import java.io.File; + +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.FileDialog; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.view.BookmarkView; +import net.sourceforge.phpdt.sql.view.bookmark.BookmarkContentProvider; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class ImportBookmarksAction implements IViewActionDelegate { + BookmarkView view; + FileDialog dialog; + /** + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init(IViewPart view) { + this.view = (BookmarkView) view; + dialog = new FileDialog(view.getSite().getShell(), SWT.OPEN); + dialog.setFilterExtensions(new String[]{"*.ini","*.*"}); //$NON-NLS-1$ //$NON-NLS-2$ + dialog.setFilterNames(new String[]{Messages.getString("filedialog.preferences"),Messages.getString("filedialog.allfiles")}); //$NON-NLS-1$ //$NON-NLS-2$ + } + + /** + * @see org.eclipse.ui.IActionDelegate#run(IAction) + */ + public void run(IAction action) { + String filename = dialog.open(); + if (filename != null) { + File importFile = new File(filename); + BookmarkContentProvider.getInstance().importBookmarks(importFile); + view.refresh(); + } + } + + /** + * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ImportQueryAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ImportQueryAction.java new file mode 100644 index 0000000..e17dc98 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ImportQueryAction.java @@ -0,0 +1,77 @@ +package net.sourceforge.phpdt.sql.actions; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.FileDialog; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.view.LogProxy; +import net.sourceforge.phpdt.sql.view.SQLLogView; +import net.sourceforge.phpdt.sql.view.SQLQueryView; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class ImportQueryAction extends Action implements IViewActionDelegate { + SQLQueryView view; + FileDialog dialog; + /** + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init(IViewPart view) { + this.view = (SQLQueryView) view; + dialog = new FileDialog(view.getSite().getShell(), SWT.OPEN); + dialog.setFilterExtensions(new String[]{"*.sql", "*.ddl", "*.*"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + dialog.setFilterNames(new String[]{Messages.getString("filedialog.sqlFiles"), //$NON-NLS-1$ + Messages.getString("filedialog.ddlFiles"), Messages.getString("filedialog.allfiles")}); //$NON-NLS-1$ //$NON-NLS-2$ + } + + /** + * @see org.eclipse.ui.IActionDelegate#run(IAction) + */ + public void run(IAction action) { + run(); + } + + public void run() { + String filename = dialog.open(); + if (filename != null) { + try { + File importFile = new File(filename); + FileReader fileReader = new FileReader(importFile); + BufferedReader reader = new BufferedReader(fileReader); + String line; + StringBuffer buffer = new StringBuffer(); + while ((line = reader.readLine()) != null) { + buffer.append(line); + buffer.append('\n'); + } + view.setQuery(buffer.toString()); + reader.close(); + } catch (IOException e) { + LogProxy.getInstance().addText(SQLLogView.ERROR, e.toString()); + e.printStackTrace(); + } + } + } + + /** + * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/Messages.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/Messages.java new file mode 100644 index 0000000..32024db --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/Messages.java @@ -0,0 +1,22 @@ +package net.sourceforge.phpdt.sql.actions; + +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +public class Messages { + + private static final String BUNDLE_NAME = "net.sourceforge.phpdt.sql.PHPEclipseSQLResources"; //$NON-NLS-1$ + + private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); + + private Messages() { + } + + public static String getString(String key) { + try { + return RESOURCE_BUNDLE.getString(key); + } catch (MissingResourceException e) { + return '!' + key + '!'; + } + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/NewBookmarkAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/NewBookmarkAction.java new file mode 100644 index 0000000..3f4d936 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/NewBookmarkAction.java @@ -0,0 +1,53 @@ +package net.sourceforge.phpdt.sql.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.wizards.BookmarkWizard; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class NewBookmarkAction extends Action implements IViewActionDelegate { + IViewPart view; + /** + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init(IViewPart view) { + this.view = view; + + } + + /** + * @see org.eclipse.ui.IActionDelegate#run(IAction) + */ + public void run(IAction action) { + run(); + } + public void run() { + System.out.println("Wizard.."); + BookmarkWizard wizard = new BookmarkWizard(); + + wizard.init(); + + WizardDialog dialog = new WizardDialog (view.getSite().getShell(),wizard); + dialog.open(); + + } + + /** + * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/NextSequenceAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/NextSequenceAction.java new file mode 100644 index 0000000..0b6cddd --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/NextSequenceAction.java @@ -0,0 +1,52 @@ +package net.sourceforge.phpdt.sql.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.adapters.AdapterFactory; +import net.sourceforge.phpdt.sql.adapters.DatabaseAdapter; +import net.sourceforge.phpdt.sql.adapters.NoSuchAdapterException; +import net.sourceforge.phpdt.sql.sql.MultiSQLServer; +import net.sourceforge.phpdt.sql.sql.SQLResults; +import net.sourceforge.phpdt.sql.view.BookmarkView; +import net.sourceforge.phpdt.sql.view.TableView; +import net.sourceforge.phpdt.sql.view.bookmark.BookmarkNode; +import net.sourceforge.phpdt.sql.view.bookmark.SequenceNode; +import net.sourceforge.phpdt.sql.view.bookmark.TreeNode; + +public class NextSequenceAction extends Action implements IViewActionDelegate { + BookmarkView view; + + public void init(IViewPart view) { + this.view = (BookmarkView) view; + } + + public void run(IAction action) { + run(); + } + + public void run() { + TreeNode node = (TreeNode) view.getCurrent(); + String name = null; + try { + if (node instanceof SequenceNode) { + SequenceNode sequence = (SequenceNode) node; + BookmarkNode parent = (BookmarkNode) sequence.getParent(); + DatabaseAdapter adapter = AdapterFactory.getInstance().getAdapter(parent.getType()); + name = sequence.getName(); + String query = adapter.getNextValue(name); + MultiSQLServer server = MultiSQLServer.getInstance(); + SQLResults results = server.execute(query); + TableView.getInstance().loadQuery(results); + } + } catch (NoSuchAdapterException e) { + } + } + + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/RefreshBookmarkAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/RefreshBookmarkAction.java new file mode 100644 index 0000000..a42606e --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/RefreshBookmarkAction.java @@ -0,0 +1,47 @@ +package net.sourceforge.phpdt.sql.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.sql.SQLHelper; +import net.sourceforge.phpdt.sql.view.BookmarkView; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class RefreshBookmarkAction extends Action implements IViewActionDelegate { + SQLHelper helper = new SQLHelper(); + + BookmarkView view; + /** + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init(IViewPart view) { + this.view = (BookmarkView) view; + } + + /** + * @see org.eclipse.ui.IActionDelegate#run(IAction) + */ + public void run(IAction action) { + run(); + } + public void run() { + view.refreshBookmarkData(); + } + + /** + * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/RefreshTableAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/RefreshTableAction.java new file mode 100644 index 0000000..7ea112d --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/RefreshTableAction.java @@ -0,0 +1,44 @@ +package net.sourceforge.phpdt.sql.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.view.TableView; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class RefreshTableAction extends Action implements IViewActionDelegate { + TableView view; + /** + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init(IViewPart view) { + this.view = (TableView) view; + } + + /** + * @see org.eclipse.ui.IActionDelegate#run(IAction) + */ + public void run(IAction action) { + run(); + } + public void run() { + view.refreshCurrent(); + } + + /** + * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/SetSchemaAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/SetSchemaAction.java new file mode 100644 index 0000000..0b6b425 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/SetSchemaAction.java @@ -0,0 +1,38 @@ +package net.sourceforge.phpdt.sql.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.dialogs.InputDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.bookmarks.Bookmark; +import net.sourceforge.phpdt.sql.view.BookmarkView; + +public class SetSchemaAction extends Action implements IViewActionDelegate { + BookmarkView view; + public void init(IViewPart view) { + this.view = (BookmarkView) view; + } + + public void run(IAction action) { + run(); + } + + public void run() { + Bookmark bookmark = view.getCurrentBookmark(); + InputDialog dialog = new InputDialog(view.getSite().getShell(), + "Set Schema", "Please enter the name of new schema:", + bookmark.getSchema(), null); + dialog.open(); + String value = dialog.getValue(); + if (value != null) { + bookmark.setSchema(value); + } + } + + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ViewTableAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ViewTableAction.java new file mode 100644 index 0000000..f61a384 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ViewTableAction.java @@ -0,0 +1,66 @@ +package net.sourceforge.phpdt.sql.actions; + +import net.sourceforge.phpdt.sql.view.BookmarkView; +import net.sourceforge.phpdt.sql.view.TableView; +import net.sourceforge.phpdt.sql.view.bookmark.TableNode; +import net.sourceforge.phpdt.sql.view.bookmark.TreeNode; +import net.sourceforge.phpdt.sql.view.bookmark.ViewNode; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class ViewTableAction extends Action implements IViewActionDelegate { + BookmarkView view; + /** + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init(IViewPart view) { + this.view = (BookmarkView) view; + } + + /** + * @see org.eclipse.ui.IActionDelegate#run(IAction) + */ + public void run(IAction action) { + run(); + } + + public void run() { + TreeNode node = (TreeNode) view.getCurrent(); + String name = null; + if (node instanceof TableNode) { + name = ((TableNode) node).getName(); + } else if (node instanceof ViewNode) { + name = ((ViewNode) node).getName(); + } + + try { + IWorkbenchPage page = + PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + page.showView(TableView.TABLEVIEW_ID); + } catch (PartInitException e) { + } + TableView.getInstance().loadTable(name); + } + + /** + * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ViewTableDetailsAction.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ViewTableDetailsAction.java new file mode 100644 index 0000000..2c8d5b5 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/actions/ViewTableDetailsAction.java @@ -0,0 +1,41 @@ +package net.sourceforge.phpdt.sql.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +import net.sourceforge.phpdt.sql.sql.MultiSQLServer; +import net.sourceforge.phpdt.sql.view.BookmarkView; +import net.sourceforge.phpdt.sql.view.TableView; +import net.sourceforge.phpdt.sql.view.bookmark.TableNode; +import net.sourceforge.phpdt.sql.view.bookmark.TreeNode; +import net.sourceforge.phpdt.sql.view.bookmark.ViewNode; + +public class ViewTableDetailsAction extends Action implements IViewActionDelegate { + BookmarkView view; + + public void init(IViewPart view) { + this.view = (BookmarkView) view; + } + + public void run(IAction action) { + run(); + } + public void run() { + TreeNode node = (TreeNode) view.getCurrent(); + StringBuffer query = new StringBuffer(); + query.append("METADATA:"); + if (node instanceof TableNode) { + query.append(((TableNode) node).getName()); + } else if (node instanceof ViewNode) { + query.append(((ViewNode) node).getName()); + } + MultiSQLServer server = MultiSQLServer.getInstance(); + TableView.getInstance().loadQuery(server.execute(query.toString())); + } + public void selectionChanged(IAction action, ISelection selection) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/AdabasDAdapter.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/AdabasDAdapter.java new file mode 100644 index 0000000..07d4781 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/AdabasDAdapter.java @@ -0,0 +1,13 @@ +package net.sourceforge.phpdt.sql.adapters; + +public class AdabasDAdapter extends DatabaseAdapter { + public String getShowTableQuery(DatabaseInfo info) { + return "SELECT TABLENAME FROM TABLES"; + } + public String getShowViewQuery(DatabaseInfo info) { + return "SELECT VIEWNAME FROM VIEWS"; + } + public DatabaseAdapter getInstance() { + return new AdabasDAdapter(); + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/AdapterFactory.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/AdapterFactory.java new file mode 100644 index 0000000..909198c --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/AdapterFactory.java @@ -0,0 +1,72 @@ +package net.sourceforge.phpdt.sql.adapters; + +import java.util.ArrayList; + +public class AdapterFactory { + public static final String GENERIC = "GENERIC"; + public static final String ORACLE = "ORACLE"; + public static final String POSTGRES = "POSTGRES"; + public static final String MYSQL = "MYSQL"; + public static final String DB2 = "DB2"; + public static final String DB2AS400 = "DB2AS400"; + public static final String ADABASD = "ADABASD"; + + private static AdapterFactory instance; + + private ArrayList drivers; + + private AdapterFactory() { + loadDrivers(); + } + public static synchronized AdapterFactory getInstance() { + if (instance == null) { + instance = new AdapterFactory(); + } + return instance; + } + + /** + * Master list of supported drivers + */ + private void loadDrivers() { + drivers = new ArrayList(); + + DriverInfo generic = new DriverInfo(GENERIC, Messages.getString("adapters.generic"), new GenericAdapter()); + DriverInfo oracle = new DriverInfo(ORACLE, Messages.getString("adapters.oracle"), new OracleAdapter()); + DriverInfo db2 = new DriverInfo(DB2, Messages.getString("adapters.db2"), new DB2Adapter()); + DriverInfo db2as400 = new DriverInfo(DB2AS400, Messages.getString("adapters.db2as400"), new DB2AS400Adapter()); + DriverInfo postgres = new DriverInfo(POSTGRES, Messages.getString("adapters.postgres"), new PostgresAdapter()); + DriverInfo mysql = new DriverInfo(MYSQL, Messages.getString("adapters.mysql"), new MySQLAdapter()); + DriverInfo adabasd = new DriverInfo(ADABASD, Messages.getString("adapters.adabasd"), new AdabasDAdapter()); + + drivers.add(generic); + drivers.add(oracle); + drivers.add(db2); + drivers.add(db2as400); + drivers.add(postgres); + drivers.add(mysql); + drivers.add(adabasd); + } + + public synchronized DatabaseAdapter getAdapter(String type) throws NoSuchAdapterException { + if (drivers == null) { + loadDrivers(); + } + for (int i = 0; i < drivers.size(); i++) { + DriverInfo info = (DriverInfo) drivers.get(i); + if (type.equals(info.getDriverType())) { + return info.getAdapter().getInstance(); + } + } + throw new NoSuchAdapterException(type); + } + + public synchronized DriverInfo[] getDriverList() { + DriverInfo[] driverList = new DriverInfo[drivers.size()]; + for (int i = 0; i < drivers.size(); i++) { + DriverInfo info = (DriverInfo) drivers.get(i); + driverList[i] = info; + } + return driverList; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DB2AS400Adapter.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DB2AS400Adapter.java new file mode 100644 index 0000000..1e9db37 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DB2AS400Adapter.java @@ -0,0 +1,13 @@ +package net.sourceforge.phpdt.sql.adapters; + +public class DB2AS400Adapter extends DatabaseAdapter { + public String getShowTableQuery(DatabaseInfo info) { + return "SELECT TABLE_NAME FROM QSYS2.SYSTABLES WHERE table_schema = '" + info.getSchema().toUpperCase() + "' AND TABLE_TYPE = 'P'"; + } + public String getShowViewQuery(DatabaseInfo info) { + return "SELECT TABLE_NAME FROM QSYS2.SYSTABLES WHERE table_schema = '" + info.getSchema().toUpperCase() + "' AND TABLE_TYPE = 'L'"; + } + public DatabaseAdapter getInstance() { + return new DB2AS400Adapter(); + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DB2Adapter.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DB2Adapter.java new file mode 100644 index 0000000..b92fbac --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DB2Adapter.java @@ -0,0 +1,19 @@ +package net.sourceforge.phpdt.sql.adapters; + +public class DB2Adapter extends DatabaseAdapter { + public String getShowTableQuery(DatabaseInfo info) { + return "SELECT TABNAME FROM syscat.tables WHERE tabschema = '" + info.getSchema().toUpperCase() + "' AND TYPE='T'"; + } + public String getShowViewQuery(DatabaseInfo info) { + return "SELECT TABNAME FROM syscat.tables WHERE tabschema = '" + info.getSchema().toUpperCase() + "' AND TYPE='V'"; + } + public String getShowSequenceQuery(DatabaseInfo info) { + return "SELECT SEQNAME FROM sysibm.syssequences WHERE seqschema = '" + info.getSchema().toUpperCase() + "'"; + } + public String getNextValue(String sequence) { + return "VALUES NEXTVAL FOR " + sequence; + } + public DatabaseAdapter getInstance() { + return new DB2Adapter(); + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DatabaseAdapter.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DatabaseAdapter.java new file mode 100644 index 0000000..0dd42e6 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DatabaseAdapter.java @@ -0,0 +1,34 @@ +package net.sourceforge.phpdt.sql.adapters; + +public abstract class DatabaseAdapter { + public abstract DatabaseAdapter getInstance(); + public abstract String getShowTableQuery(DatabaseInfo info); + public String getShowViewQuery(DatabaseInfo info) { + throw new FeatureNotSupported("Views"); + } + public String getShowSequenceQuery(DatabaseInfo info) { + throw new FeatureNotSupported("Sequences"); + } + public final String getShowTableQuery(DatabaseInfo info, String table) { + String schema = info.getSchema(); + if (schema.equals("")) { + return "SELECT * FROM " + table; + } else { + return "SELECT * FROM " + info.getSchema() + "." + table; + } + } + public final String getTableCountQuery(DatabaseInfo info, String table) { + String schema = info.getSchema(); + if (schema.equals("")) { + return "SELECT COUNT(*) FROM " + table; + } else { + return "SELECT COUNT(*) FROM " + info.getSchema() + "." + table; + } + } + public String getNextValue(String sequence) { + throw new FeatureNotSupported("Sequences"); + } + public String getTableListFilter() { + return null; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DatabaseInfo.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DatabaseInfo.java new file mode 100644 index 0000000..d6b2f6b --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DatabaseInfo.java @@ -0,0 +1,24 @@ +package net.sourceforge.phpdt.sql.adapters; + +import net.sourceforge.phpdt.sql.bookmarks.Bookmark; + +public class DatabaseInfo { + private String schema; + + private DatabaseInfo(String schema) { + this.schema = schema; + } + + public static DatabaseInfo create(Bookmark bookmark) { + return new DatabaseInfo(bookmark.getSchema()); + } + + public String getSchema() { + return schema; + } + + public void setSchema(String schema) { + this.schema = schema; + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DriverInfo.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DriverInfo.java new file mode 100644 index 0000000..de20315 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/DriverInfo.java @@ -0,0 +1,52 @@ +package net.sourceforge.phpdt.sql.adapters; + +import java.util.Vector; + +public class DriverInfo { + private String driverType; + private String displayName; + private Vector driverNames = new Vector(); + private DatabaseAdapter adapter; + public DriverInfo(String driverType, String displayName, DatabaseAdapter adapter) { + this.driverType = driverType; + this.displayName = displayName; + this.adapter = adapter; + } + + public String getDriverType() { + return driverType; + } + + public void setDriverType(String driverType) { + this.driverType = driverType; + } + + public void addDriverName(String driverName) { + driverNames.addElement(driverName); + } + + public String[] getDriverNames() { + String retVal[] = new String[driverNames.size()]; + for (int i = 0; i < driverNames.size(); i++) { + retVal[i] = (String) driverNames.elementAt(i); + } + return retVal; + } + + public DatabaseAdapter getAdapter() { + return adapter; + } + + public void setAdapter(DatabaseAdapter adapter) { + this.adapter = adapter; + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/FeatureNotSupported.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/FeatureNotSupported.java new file mode 100644 index 0000000..a6581d6 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/FeatureNotSupported.java @@ -0,0 +1,7 @@ +package net.sourceforge.phpdt.sql.adapters; + +public class FeatureNotSupported extends Error { + public FeatureNotSupported(String error) { + super(error); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/GenericAdapter.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/GenericAdapter.java new file mode 100644 index 0000000..9791480 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/GenericAdapter.java @@ -0,0 +1,15 @@ +package net.sourceforge.phpdt.sql.adapters; + +public class GenericAdapter extends DatabaseAdapter { + + public DatabaseAdapter getInstance() { + return new GenericAdapter(); + } + + public String getShowTableQuery(DatabaseInfo info) { + return null; + } + public String getShowViewQuery(DatabaseInfo info) { + return null; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/Messages.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/Messages.java new file mode 100644 index 0000000..82b4298 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/Messages.java @@ -0,0 +1,22 @@ +package net.sourceforge.phpdt.sql.adapters; + +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +public class Messages { + + private static final String BUNDLE_NAME = "net.sourceforge.phpdt.sql.PHPEclipseSQLResources"; //$NON-NLS-1$ + + private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); + + private Messages() { + } + + public static String getString(String key) { + try { + return RESOURCE_BUNDLE.getString(key); + } catch (MissingResourceException e) { + return '!' + key + '!'; + } + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/MySQLAdapter.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/MySQLAdapter.java new file mode 100644 index 0000000..ed9167f --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/MySQLAdapter.java @@ -0,0 +1,11 @@ +package net.sourceforge.phpdt.sql.adapters; + + +public class MySQLAdapter extends DatabaseAdapter { + public String getShowTableQuery(DatabaseInfo info) { + return "SHOW TABLES"; + } + public DatabaseAdapter getInstance() { + return new MySQLAdapter(); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/NoSuchAdapterException.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/NoSuchAdapterException.java new file mode 100644 index 0000000..5345b06 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/NoSuchAdapterException.java @@ -0,0 +1,7 @@ +package net.sourceforge.phpdt.sql.adapters; + +public class NoSuchAdapterException extends Exception { + public NoSuchAdapterException(String driverName) { + super("Database not supported: ->" + driverName + "<-"); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/OracleAdapter.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/OracleAdapter.java new file mode 100644 index 0000000..493b820 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/OracleAdapter.java @@ -0,0 +1,20 @@ +package net.sourceforge.phpdt.sql.adapters; + + +public class OracleAdapter extends DatabaseAdapter { + public String getShowTableQuery(DatabaseInfo info) { + return "SELECT TABLE_NAME FROM USER_TABLES"; + } + public String getShowViewQuery(DatabaseInfo info) { + return "SELECT VIEW_NAME FROM USER_VIEWS"; + } + public String getShowSequenceQuery(DatabaseInfo info) { + return "SELECT SEQUENCE_NAME FROM USER_SEQUENCES"; + } + public String getNextValue(String sequence) { + return "SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME = '" + sequence + "'"; + } + public DatabaseAdapter getInstance() { + return new OracleAdapter(); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/PostgresAdapter.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/PostgresAdapter.java new file mode 100644 index 0000000..3f07015 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/adapters/PostgresAdapter.java @@ -0,0 +1,23 @@ +package net.sourceforge.phpdt.sql.adapters; + + +public class PostgresAdapter extends DatabaseAdapter { + public String getShowTableQuery(DatabaseInfo info) { + return "SELECT TABLENAME FROM PG_TABLES"; + } + public String getShowViewQuery(DatabaseInfo info) { + return "SELECT VIEWNAME FROM PG_VIEWS"; + } + public String getShowSequenceQuery(DatabaseInfo info) { + return "SELECT relname FROM pg_class WHERE relkind = 'S'"; + } + public String getNextValue(String sequence) { + return "select nextval('" + sequence + "')"; + } + public String getTableListFilter() { + return "pg_"; + } + public DatabaseAdapter getInstance() { + return new PostgresAdapter(); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/bookmarks/Bookmark.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/bookmarks/Bookmark.java new file mode 100644 index 0000000..e746898 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/bookmarks/Bookmark.java @@ -0,0 +1,219 @@ +package net.sourceforge.phpdt.sql.bookmarks; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class Bookmark { + String name = ""; + String username = ""; + String password = ""; + String connect = ""; + String driver = ""; + String type = ""; + String driverFile = ""; + String schema = ""; + + public Bookmark() { + } + + public Bookmark(Bookmark data) { + setName(data.getName()); + setUsername(data.getUsername()); + setPassword(data.getPassword()); + setConnect(data.getConnect()); + setDriver(data.getDriver()); + setType(data.getType()); + setDriverFile(data.getDriverFile()); + } + + public Bookmark( + String name, + String username, + String password, + String connect, + String driver, + String type, + String driverFile) { + this.name = username; + this.username = username; + this.password = password; + this.connect = connect; + this.driver = driver; + this.type = type; + this.driverFile = driverFile; + } + + /** + * Returns the connect. + * @return String + */ + public String getConnect() { + return connect; + } + + /** + * Returns the driver. + * @return String + */ + public String getDriver() { + return driver; + } + + /** + * Returns the driverFile. + * @return String + */ + public String getDriverFile() { + return driverFile; + } + + /** + * Returns the password. + * @return String + */ + public String getPassword() { + return password; + } + + /** + * Returns the username. + * @return String + */ + public String getUsername() { + return username; + } + + /** + * Sets the connect. + * @param connect The connect to set + */ + public void setConnect(String connect) { + if (connect == null) { + connect = ""; + } + this.connect = connect; + } + + /** + * Sets the driver. + * @param driver The driver to set + */ + public void setDriver(String driver) { + if (driver == null) { + driver = ""; + } + this.driver = driver; + } + + /** + * Sets the driverFile. + * @param driverFile The driverFile to set + */ + public void setDriverFile(String driverFile) { + if (driverFile == null) { + driverFile = ""; + } + this.driverFile = driverFile; + } + + /** + * Sets the password. + * @param password The password to set + */ + public void setPassword(String password) { + if (password == null) { + password = ""; + } + this.password = password; + } + + /** + * Sets the username. + * @param username The username to set + */ + public void setUsername(String username) { + if (username == null) { + username = ""; + } + this.username = username; + } + + /** + * Returns the name. + * @return String + */ + public String getName() { + return name; + } + + /** + * Sets the name. + * @param name The name to set + */ + public void setName(String name) { + if (name == null) { + name = ""; + } + this.name = name; + } + + public boolean isEmpty() { + if (name.equals("") && + username.equals("") && + password.equals("") && + connect.equals("") && + driver.equals("") && + type.equals("") && + driverFile.equals("")) { + return true; + } + return false; + } + public String toString() { + StringBuffer buffer = new StringBuffer(); + buffer.append("["); + buffer.append("name="); + buffer.append(name); + buffer.append(", "); + buffer.append("username="); + buffer.append(username); + buffer.append(", "); + buffer.append("password=****"); + buffer.append(", "); + buffer.append("connect="); + buffer.append(connect); + buffer.append(", "); + buffer.append("driver="); + buffer.append(driver); + buffer.append(", "); + buffer.append("type="); + buffer.append(type); + buffer.append(", "); + buffer.append("driverFile="); + buffer.append(driverFile); + buffer.append("]"); + return buffer.toString(); + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getSchema() { + return schema; + } + + public void setSchema(String schema) { + this.schema = schema; + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/ColorManager.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/ColorManager.java new file mode 100644 index 0000000..1299bb0 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/ColorManager.java @@ -0,0 +1,28 @@ +package net.sourceforge.phpdt.sql.editors; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Display; + +public class ColorManager { + + protected Map fColorTable = new HashMap(10); + + public void dispose() { + Iterator e= fColorTable.values().iterator(); + while (e.hasNext()) + ((Color) e.next()).dispose(); + } + public Color getColor(RGB rgb) { + Color color= (Color) fColorTable.get(rgb); + if (color == null) { + color= new Color(Display.getCurrent(), rgb); + fColorTable.put(rgb, color); + } + return color; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/NonRuleBasedDamagerRepairer.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/NonRuleBasedDamagerRepairer.java new file mode 100644 index 0000000..bd2d2a1 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/NonRuleBasedDamagerRepairer.java @@ -0,0 +1,135 @@ +package net.sourceforge.phpdt.sql.editors; + +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.DocumentEvent; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.ITypedRegion; +import org.eclipse.jface.text.Region; +import org.eclipse.jface.text.TextAttribute; +import org.eclipse.jface.text.TextPresentation; +import org.eclipse.jface.text.presentation.IPresentationDamager; +import org.eclipse.jface.text.presentation.IPresentationRepairer; +import org.eclipse.jface.util.Assert; +import org.eclipse.swt.custom.StyleRange; + +public class NonRuleBasedDamagerRepairer + implements IPresentationDamager, IPresentationRepairer { + + /** The document this object works on */ + protected IDocument fDocument; + /** The default text attribute if non is returned as data by the current token */ + protected TextAttribute fDefaultTextAttribute; + + /** + * Constructor for NonRuleBasedDamagerRepairer. + */ + public NonRuleBasedDamagerRepairer(TextAttribute defaultTextAttribute) { + Assert.isNotNull(defaultTextAttribute); + + fDefaultTextAttribute = defaultTextAttribute; + } + + /** + * @see IPresentationRepairer#setDocument(IDocument) + */ + public void setDocument(IDocument document) { + fDocument = document; + } + + public void setTextAttribute(TextAttribute attr) { + fDefaultTextAttribute = attr; + } + + /** + * Returns the end offset of the line that contains the specified offset or + * if the offset is inside a line delimiter, the end offset of the next line. + * + * @param offset the offset whose line end offset must be computed + * @return the line end offset for the given offset + * @exception BadLocationException if offset is invalid in the current document + */ + protected int endOfLineOf(int offset) throws BadLocationException { + + IRegion info = fDocument.getLineInformationOfOffset(offset); + if (offset <= info.getOffset() + info.getLength()) + return info.getOffset() + info.getLength(); + + int line = fDocument.getLineOfOffset(offset); + try { + info = fDocument.getLineInformation(line + 1); + return info.getOffset() + info.getLength(); + } catch (BadLocationException x) { + return fDocument.getLength(); + } + } + + /** + * @see IPresentationDamager#getDamageRegion(ITypedRegion, DocumentEvent, boolean) + */ + public IRegion getDamageRegion( + ITypedRegion partition, + DocumentEvent event, + boolean documentPartitioningChanged) { + if (!documentPartitioningChanged) { + try { + + IRegion info = fDocument.getLineInformationOfOffset(event.getOffset()); + int start = Math.max(partition.getOffset(), info.getOffset()); + + int end = + event.getOffset() + + (event.getText() == null ? event.getLength() : event.getText().length()); + + if (info.getOffset() <= end && end <= info.getOffset() + info.getLength()) { + // optimize the case of the same line + end = info.getOffset() + info.getLength(); + } else + end = endOfLineOf(end); + + end = Math.min(partition.getOffset() + partition.getLength(), end); + return new Region(start, end - start); + + } catch (BadLocationException x) { + } + } + + return partition; + } + + /** + * @see IPresentationRepairer#createPresentation(TextPresentation, ITypedRegion) + */ + public void createPresentation( + TextPresentation presentation, + ITypedRegion region) { + addRange( + presentation, + region.getOffset(), + region.getLength(), + fDefaultTextAttribute); + } + + /** + * Adds style information to the given text presentation. + * + * @param presentation the text presentation to be extended + * @param offset the offset of the range to be styled + * @param length the length of the range to be styled + * @param attr the attribute describing the style of the range to be styled + */ + protected void addRange( + TextPresentation presentation, + int offset, + int length, + TextAttribute attr) { + if (attr != null) + presentation.addStyleRange( + new StyleRange( + offset, + length, + attr.getForeground(), + attr.getBackground(), + attr.getStyle())); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLColorConstants.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLColorConstants.java new file mode 100644 index 0000000..7ce9746 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLColorConstants.java @@ -0,0 +1,13 @@ +package net.sourceforge.phpdt.sql.editors; + +import org.eclipse.swt.graphics.RGB; + +public class SQLColorConstants { + public static RGB BACKGROUND = new RGB(255, 0, 255); + public static RGB COMMENT = new RGB(88, 148, 64); + public static RGB IDENTIFIER = new RGB(0, 0, 0); + public static RGB KEYWORD = new RGB(126, 0, 75); + public static RGB STRING = new RGB(0, 0, 255); + public static RGB NUMERIC = new RGB(255, 0, 0); + public static RGB DEFAULT = new RGB(0, 0, 0); +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLConfiguration.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLConfiguration.java new file mode 100644 index 0000000..10a5a3c --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLConfiguration.java @@ -0,0 +1,89 @@ +package net.sourceforge.phpdt.sql.editors; + +import java.util.HashMap; + +import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin; + +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.preference.PreferenceConverter; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.TextAttribute; +import org.eclipse.jface.text.presentation.IPresentationReconciler; +import org.eclipse.jface.text.presentation.PresentationReconciler; +import org.eclipse.jface.text.source.ISourceViewer; +import org.eclipse.jface.text.source.SourceViewerConfiguration; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.RGB; + +public class SQLConfiguration extends SourceViewerConfiguration { + private PresentationReconciler reconciler = new PresentationReconciler(); + private ColorManager colorManager; + private HashMap cache = new HashMap(); + private boolean textBold = false; + private boolean keywordBold = true; + private boolean stringBold = false; + private boolean commentBold = false; + private boolean numericBold = false; + public SQLConfiguration(ColorManager colorManager) { + this.colorManager = colorManager; + } + public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) { + return new String[] { + IDocument.DEFAULT_CONTENT_TYPE, + SQLPartitionScanner.SQL_COMMENT, + SQLPartitionScanner.SQL_KEYWORD, + SQLPartitionScanner.SQL_IDENTIFIER}; + } + + public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) { + initializeColors(); + return reconciler; + } + public void loadPrefs() { + IPreferenceStore store = PHPEclipseSQLPlugin.getDefault().getPreferenceStore(); + textBold = store.getBoolean("quantum.text.bold"); + keywordBold = store.getBoolean("quantum.keyword.bold"); + stringBold = store.getBoolean("quantum.string.bold"); + commentBold = store.getBoolean("quantum.comment.bold"); + numericBold = store.getBoolean("quantum.numeric.bold"); + SQLColorConstants.BACKGROUND = PreferenceConverter.getColor(store, "quantum.background.color"); + SQLColorConstants.DEFAULT = PreferenceConverter.getColor(store, "quantum.text.color"); + SQLColorConstants.IDENTIFIER = PreferenceConverter.getColor(store, "quantum.text.color"); + SQLColorConstants.KEYWORD = PreferenceConverter.getColor(store, "quantum.keyword.color"); + SQLColorConstants.STRING = PreferenceConverter.getColor(store, "quantum.string.color"); + SQLColorConstants.COMMENT = PreferenceConverter.getColor(store, "quantum.comment.color"); + SQLColorConstants.NUMERIC = PreferenceConverter.getColor(store, "quantum.numeric.color"); + } + public void initializeColors() { + setDamageRepairer(getAttr(SQLColorConstants.KEYWORD, keywordBold), SQLPartitionScanner.SQL_KEYWORD); + setDamageRepairer(getAttr(SQLColorConstants.COMMENT, commentBold), SQLPartitionScanner.SQL_COMMENT); + setDamageRepairer(getAttr(SQLColorConstants.STRING, stringBold), SQLPartitionScanner.SQL_STRING); + setDamageRepairer(getAttr(SQLColorConstants.DEFAULT, textBold), IDocument.DEFAULT_CONTENT_TYPE); + setDamageRepairer(getAttr(SQLColorConstants.DEFAULT, textBold), SQLPartitionScanner.SQL_SYMBOL); + setDamageRepairer(getAttr(SQLColorConstants.DEFAULT, textBold), SQLPartitionScanner.SQL_IDENTIFIER); + setDamageRepairer(getAttr(SQLColorConstants.DEFAULT, textBold), SQLPartitionScanner.SQL_SEPARATOR); + setDamageRepairer(getAttr(SQLColorConstants.NUMERIC, numericBold), SQLPartitionScanner.SQL_NUMERIC); + } + public TextAttribute getAttr(RGB color, boolean bold) { + Color background = colorManager.getColor(SQLColorConstants.BACKGROUND); + Color foreground = colorManager.getColor(color); + TextAttribute attr = new TextAttribute(foreground); + if (bold) { + return new TextAttribute(foreground, attr.getBackground(), SWT.BOLD); + } + return attr; + } + public void setDamageRepairer(TextAttribute attr, String token) { + NonRuleBasedDamagerRepairer ndr = (NonRuleBasedDamagerRepairer) cache.get(token); + if (ndr == null) { + ndr = + new NonRuleBasedDamagerRepairer(attr); + reconciler.setDamager(ndr, token); + reconciler.setRepairer(ndr, token); + cache.put(token, ndr); + } else { + ndr.setTextAttribute(attr); + } + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLDocumentProvider.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLDocumentProvider.java new file mode 100644 index 0000000..b18af02 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLDocumentProvider.java @@ -0,0 +1,35 @@ +package net.sourceforge.phpdt.sql.editors; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IDocumentPartitioner; +import org.eclipse.jface.text.rules.DefaultPartitioner; +import org.eclipse.ui.editors.text.FileDocumentProvider; + +public class SQLDocumentProvider extends FileDocumentProvider { + + public SQLDocumentProvider() { + super(); + } + + protected IDocument createDocument(Object element) throws CoreException { + IDocument document = super.createDocument(element); + if (document != null) { + IDocumentPartitioner partitioner = + new DefaultPartitioner( + new SQLPartitionScanner(), + new String[] { + IDocument.DEFAULT_CONTENT_TYPE, + SQLPartitionScanner.SQL_KEYWORD, + SQLPartitionScanner.SQL_COMMENT, + SQLPartitionScanner.SQL_IDENTIFIER, + SQLPartitionScanner.SQL_STRING, + SQLPartitionScanner.SQL_SEPARATOR, + SQLPartitionScanner.SQL_SYMBOL, + SQLPartitionScanner.SQL_NUMERIC }); + partitioner.connect(document); + document.setDocumentPartitioner(partitioner); + } + return document; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLEditor.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLEditor.java new file mode 100644 index 0000000..a7bb715 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLEditor.java @@ -0,0 +1,59 @@ +package net.sourceforge.phpdt.sql.editors; + +import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin; + +import org.eclipse.jface.preference.PreferenceConverter; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.swt.custom.StyledText; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.editors.text.TextEditor; + +public class SQLEditor extends TextEditor { + SQLConfiguration config; + private ColorManager colorManager; + /** + * An editor capable of editing SQL scripts + */ + public SQLEditor() { + super(); + colorManager = new ColorManager(); + config = new SQLConfiguration(colorManager); + config.loadPrefs(); + + setPreferenceStore(PHPEclipseSQLPlugin.getDefault().getPreferenceStore()); + IPropertyChangeListener preferenceListener = new IPropertyChangeListener() { + public void propertyChange(PropertyChangeEvent event) { + config.loadPrefs(); + config.initializeColors(); + getSourceViewer().invalidateTextPresentation(); + StyledText widget = getSourceViewer().getTextWidget(); + FontData font = PreferenceConverter.getFontData(getPreferenceStore(), "quantum.font"); + widget.setFont(new Font(Display.getCurrent(), font)); + Color background = colorManager.getColor(SQLColorConstants.BACKGROUND); + widget.setBackground(background); + } + }; + getPreferenceStore(). + addPropertyChangeListener(preferenceListener); + + setSourceViewerConfiguration(config); + setDocumentProvider(new SQLDocumentProvider()); + } + public void dispose() { + colorManager.dispose(); + super.dispose(); + } + public void createPartControl(Composite arg0) { + super.createPartControl(arg0); + StyledText widget = getSourceViewer().getTextWidget(); + FontData font = PreferenceConverter.getFontData(getPreferenceStore(), "quantum.font"); + widget.setFont(new Font(Display.getCurrent(), font)); + Color background = colorManager.getColor(SQLColorConstants.BACKGROUND); + widget.setBackground(background); + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLPartitionScanner.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLPartitionScanner.java new file mode 100644 index 0000000..fa43a75 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/editors/SQLPartitionScanner.java @@ -0,0 +1,225 @@ +package net.sourceforge.phpdt.sql.editors; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.rules.EndOfLineRule; +import org.eclipse.jface.text.rules.ICharacterScanner; +import org.eclipse.jface.text.rules.IPredicateRule; +import org.eclipse.jface.text.rules.IRule; +import org.eclipse.jface.text.rules.IToken; +import org.eclipse.jface.text.rules.IWhitespaceDetector; +import org.eclipse.jface.text.rules.MultiLineRule; +import org.eclipse.jface.text.rules.RuleBasedPartitionScanner; +import org.eclipse.jface.text.rules.SingleLineRule; +import org.eclipse.jface.text.rules.Token; +import org.eclipse.jface.text.rules.WhitespaceRule; + +public class SQLPartitionScanner extends RuleBasedPartitionScanner { + public final static String SQL_COMMENT = "__sql_comment"; + public final static String SQL_IDENTIFIER = "__sql_word"; + public final static String SQL_STRING = "__sql_string"; + public final static String SQL_KEYWORD = "__sql_keyword"; + public final static String SQL_SYMBOL = "__sql_symbol"; + public final static String SQL_SEPARATOR = "__sql_separator"; + public final static String SQL_NUMERIC = "__sql_numeric"; + + private final static String[] KEYWORDS = { + "ALTER", + "AND", + "BY", + "COLUMN", + "CREATE", + "DELETE", + "DROP", + "FROM", + "GROUP", + "INSERT", + "INTO", + "NOT", + "NULL", + "OR", + "ORDER", + "SELECT", + "SEQUENCE", + "SET", + "TABLE", + "UNION", + "UNIQUE", + "UPDATE", + "USING", + "VALUES", + "VIEW", + "WHEN", + "WHERE" + }; + + public SQLPartitionScanner() { + + List rules = new ArrayList(); + + IToken comment = new Token(SQL_COMMENT); + IToken string = new Token(SQL_STRING); + IToken identifier = new Token(SQL_IDENTIFIER); + IToken keyword = new Token(SQL_KEYWORD); + IToken separator = new Token(SQL_SEPARATOR); + IToken symbol = new Token(SQL_SYMBOL); + IToken whitespace = new Token(IDocument.DEFAULT_CONTENT_TYPE); + IToken numeric = new Token(SQL_NUMERIC); + + rules.add(new PredicateRuleAdapter(new WhitespaceRule(new WhitespaceDetector()), whitespace)); + rules.add(new MultiLineRule("/*", "*/", comment)); + rules.add(new EndOfLineRule("--", comment)); + rules.add(new SingleLineRule("'", "'", string)); + rules.add(new PredicateRuleAdapter(new SQLNumberRule(numeric), numeric)); + SQLWordRule wordRule = new SQLWordRule(identifier); + for (int i = 0; i < KEYWORDS.length; i++) { + wordRule.addKeyword(KEYWORDS[i], keyword); + } + rules.add(new PredicateRuleAdapter(wordRule, keyword)); + rules.add(new PredicateRuleAdapter(wordRule, identifier)); + rules.add(new PredicateRuleAdapter(new SQLSeparatorRule(separator), separator)); + rules.add(new PredicateRuleAdapter(new SymbolRule(symbol), symbol)); + + IPredicateRule[] result= new IPredicateRule[rules.size()]; + rules.toArray(result); + setPredicateRules(result); + } +} + +class PredicateRuleAdapter implements IPredicateRule { + IRule rule; + IToken token; + public PredicateRuleAdapter(IRule rule, IToken token) { + this.rule = rule; + this.token = token; + } + + public IToken evaluate(ICharacterScanner scanner, boolean resume) { + return rule.evaluate(scanner); + } + + public IToken getSuccessToken() { + return token; + } + + public IToken evaluate(ICharacterScanner scanner) { + return rule.evaluate(scanner); + } + +} + +class SQLSeparatorRule implements IRule { + IToken token; + public SQLSeparatorRule(IToken token) { + this.token = token; + } + public IToken evaluate(ICharacterScanner scanner) { + char c = (char) scanner.read(); + if (c == ';') { + return token; + } + scanner.unread(); + return Token.UNDEFINED; + } + +} + +class SymbolRule implements IRule { + IToken token; + public SymbolRule(IToken token) { + this.token = token; + } + public IToken evaluate(ICharacterScanner scanner) { + int val = scanner.read(); + if (val != scanner.EOF) { + char c = (char) val; + if (!Character.isWhitespace(c) && !Character.isLetterOrDigit(c) && c != '_') { + return token; + } + } + scanner.unread(); + return Token.UNDEFINED; + } + +} + +class WhitespaceDetector implements IWhitespaceDetector { + + public boolean isWhitespace(char c) { + return Character.isWhitespace(c); + } +} + +class SQLNumberRule implements IRule { + private IToken token; + + public SQLNumberRule(IToken token) { + this.token = token; + } + + public IToken evaluate(ICharacterScanner scanner) { + char c = (char) scanner.read(); + if (Character.isDigit(c)) { + // postive numbers and zero + do { + c= (char) scanner.read(); + } while (Character.isDigit(c) || c == '.'); + scanner.unread(); + return token; + } else if (c == '-') { + // negative numbers + c = (char) scanner.read(); + if (Character.isDigit(c)) { + do { + c= (char) scanner.read(); + } while (Character.isDigit(c) || c == '.'); + scanner.unread(); + return token; + } else { + scanner.unread(); + scanner.unread(); + return Token.UNDEFINED; + } + } else { + scanner.unread(); + return Token.UNDEFINED; + } + } +} + +class SQLWordRule implements IRule { + private IToken token; + private HashMap keywords = new HashMap(); + + public SQLWordRule(IToken token) { + this.token = token; + } + + public void addKeyword(String word, IToken token) { + keywords.put(word.toUpperCase(), token); + } + + public IToken evaluate(ICharacterScanner scanner) { + char c = (char) scanner.read(); + if (Character.isLetter(c) || c == '_') { + StringBuffer value = new StringBuffer(); + do { + value.append(c); + c= (char) scanner.read(); + } while (Character.isLetterOrDigit(c) || c == '_'); + scanner.unread(); + IToken retVal = (IToken) keywords.get(value.toString().toUpperCase()); + if (retVal != null) { + return retVal; + } else { + return token; + } + } else { + scanner.unread(); + return Token.UNDEFINED; + } + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/parser/SQLLexx.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/parser/SQLLexx.java new file mode 100644 index 0000000..5f1f060 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/parser/SQLLexx.java @@ -0,0 +1,123 @@ +package net.sourceforge.phpdt.sql.parser; + +import java.util.Vector; + +public class SQLLexx { + private static String endline = ";"; + private static String dash = "-"; + public static Vector parse(String text) { + Vector tokens = new Vector(); + StringPointer p = new StringPointer(text); + try { + while (!p.isDone()) { + int offset = p.getOffset(); + char c = p.getNext(); + //System.out.print(c); + if (Character.isWhitespace(c)) { + StringBuffer value = new StringBuffer(); + while (Character.isWhitespace(c) && !p.isDone()) { + value.append(c); + p.mark(); + c = p.getNext(); + } + // done because of is done + if (Character.isWhitespace(c)) { + value.append(c); + } else { + p.reset(); + } + tokens.addElement(new Token(Token.WHITESPACE, value.toString(), offset, offset + value.length())); + } else if (Character.isLetter(c) || c == '_') { + StringBuffer value = new StringBuffer(); + while ((Character.isLetterOrDigit(c) || c == '_') && !p.isDone()) { + value.append(c); + p.mark(); + c = p.getNext(); + } + if ((Character.isLetterOrDigit(c) || c == '_')) { + value.append(c); + } else { + p.reset(); + } + tokens.addElement(new Token(Token.IDENTIFIER, value.toString(), offset, offset + value.length())); + } else if (c == '\'') { + StringBuffer value = new StringBuffer(); + value.append(c); + if (!p.isDone()) { + c = p.getNext(); + while (c != '\'' && c != '\n' && !p.isDone()) { + value.append(c); + c = p.getNext(); + } + if (c == '\'' || p.isDone()) { + value.append(c); + } + } + tokens.addElement(new Token(Token.LITERAL, value.toString(), offset, offset + value.length())); + } else if (c == '-') { + p.mark(); + if (p.isDone()) { + tokens.addElement(new Token(Token.SYMBOL, dash, offset, offset + 1)); + } else { + char next = p.getNext(); + if (next == '-') { + StringBuffer value = new StringBuffer("--"); + if (!p.isDone()) { + c = p.getNext(); + while (c != '\n' && !p.isDone()) { + value.append(c); + c = p.getNext(); + } + if (p.isDone()) { + value.append(c); + } + } + tokens.addElement(new Token(Token.COMMENT, value.toString(), offset, offset + value.length())); + } else { + tokens.addElement(new Token(Token.SYMBOL, dash, offset, offset + 1)); + p.reset(); + } + } + } else if (c == ';') { + tokens.addElement(new Token(Token.SEPARATOR, endline, offset, offset + 1)); + StringBuffer value = new StringBuffer(); + if (!p.isDone()) { + c = p.getNext(); + while (c != '\n' && !p.isDone()) { + value.append(c); + c = p.getNext(); + } + if (p.isDone()) { + value.append(c); + } + offset++; + tokens.addElement(new Token(Token.COMMENT, value.toString(), offset, offset + value.length())); + } + } else if (Character.isDigit(c)) { + StringBuffer value = new StringBuffer(); + while ((Character.isDigit(c) || c == '.') && !p.isDone()) { + value.append(c); + p.mark(); + c = p.getNext(); + } + if ((Character.isDigit(c) || c == '.')) { + value.append(c); + } else { + p.reset(); + } + tokens.addElement(new Token(Token.NUMERIC, value.toString(), offset, offset + value.length())); + } else { + tokens.addElement(new Token(Token.SYMBOL, new String(new char[] {c}), offset, offset + 1)); + } + } + } catch (RuntimeException e) { + e.printStackTrace(); + } + + //System.out.println("-------------------"); + //for (int i = 0; i < tokens.size(); i++) { + // System.out.println((Token) tokens.elementAt(i)); + //} + return tokens; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/parser/StringPointer.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/parser/StringPointer.java new file mode 100644 index 0000000..6e3b4fb --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/parser/StringPointer.java @@ -0,0 +1,30 @@ +package net.sourceforge.phpdt.sql.parser; + +public class StringPointer { + char[] value; + int offset = 0; + int mark = 0; + public StringPointer(String s) { + value = s.toCharArray(); + } + public char getNext() { + char retVal = value[offset]; + offset++; + return retVal; + } + public void mark() { + mark = offset; + } + public void reset() { + offset = mark; + } + public int getOffset() { + return offset; + } + public boolean isDone() { + return offset == value.length; + } + public int getLength() { + return value.length; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/parser/Token.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/parser/Token.java new file mode 100644 index 0000000..a9a2fa9 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/parser/Token.java @@ -0,0 +1,55 @@ +package net.sourceforge.phpdt.sql.parser; + +public class Token { + public static final char SEPARATOR = 'S'; + public static final char SYMBOL = 'Y'; + public static final char LITERAL = 'L'; + public static final char IDENTIFIER = 'I'; + public static final char COMMENT = 'C'; + public static final char WHITESPACE = 'W'; + public static final char NUMERIC = 'N'; + private char type; + private int start; + private int end; + private String value; + public Token(char type, String value, int start, int end) { + this.type = type; + this.value = value; + this.start = start; + this.end = end; + } + public int getEnd() { + return end; + } + + public int getStart() { + return start; + } + + public int getType() { + return type; + } + + public String getValue() { + return value; + } + + public void setEnd(int end) { + this.end = end; + } + + public void setStart(int start) { + this.start = start; + } + + public void setType(char type) { + this.type = type; + } + + public void setValue(String value) { + this.value = value; + } + public String toString() { + return type + " ->" + value + "<- [" + start + ", " + end + "]"; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/perspective/DBPerspective.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/perspective/DBPerspective.java new file mode 100644 index 0000000..d6de785 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/perspective/DBPerspective.java @@ -0,0 +1,40 @@ +package net.sourceforge.phpdt.sql.perspective; + +import net.sourceforge.phpdt.sql.view.PHPSourceConsole; + +import org.eclipse.ui.IFolderLayout; +import org.eclipse.ui.IPageLayout; +import org.eclipse.ui.IPerspectiveFactory; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class DBPerspective implements IPerspectiveFactory { + public void createInitialLayout(IPageLayout layout) { + layout.setEditorAreaVisible(false); + IFolderLayout side = + layout.createFolder( + "side", + IPageLayout.LEFT, + 0.33F, + layout.getEditorArea()); + side.addView("net.sourceforge.phpdt.sql.view.bookmarkview"); + side.addView("net.sourceforge.phpdt.sql.view.queryhistoryview"); + layout.addView("net.sourceforge.phpdt.sql.view.sqlqueryview", IPageLayout.TOP, 0.33F, layout.getEditorArea()); + IFolderLayout bottomRight = + layout.createFolder( + "bottomRight", + IPageLayout.LEFT, + 0.33F, + layout.getEditorArea()); + bottomRight.addView("net.sourceforge.phpdt.sql.view.tableview"); + bottomRight.addView("net.sourceforge.phpdt.sql.view.logview"); + // bottomRight.addView(PHPSourceConsole.CONSOLE_ID); + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/preferences/PreferencesPage.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/preferences/PreferencesPage.java new file mode 100644 index 0000000..55129f0 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/preferences/PreferencesPage.java @@ -0,0 +1,340 @@ +package net.sourceforge.phpdt.sql.preferences; + + +import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin; + +import org.eclipse.jface.preference.ColorFieldEditor; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.preference.PreferenceConverter; +import org.eclipse.jface.preference.PreferencePage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.FontDialog; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; + +import net.sourceforge.phpdt.sql.editors.ColorManager; +import net.sourceforge.phpdt.sql.editors.SQLColorConstants; + +public class PreferencesPage extends PreferencePage + implements IWorkbenchPreferencePage { + FontDialog fontDialog; + ColorFieldEditor backgroundColorEditor; + + ColorFieldEditor textColorEditor; + boolean textFlag; + ColorFieldEditor keywordColorEditor; + boolean keywordFlag; + ColorFieldEditor stringColorEditor; + boolean stringFlag; + ColorFieldEditor numericColorEditor; + boolean numericFlag; + ColorFieldEditor commentColorEditor; + boolean commentFlag; + + Button boldText; + Button boldKeyword; + Button boldString; + Button boldNumeric; + Button boldComment; + + IWorkbench workbench; + FontData fontData; + Label fontDisplay; + public void init(IWorkbench workbench) { + //Initialize the preference store + this.workbench = workbench; + setPreferenceStore(PHPEclipseSQLPlugin.getDefault().getPreferenceStore()); + initializeColorDefaults(getPreferenceStore()); + } + + private void initializeColorDefaults(IPreferenceStore store) { + 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); + 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); + } + + protected void performDefaults() { + fontData = null; + updateFontDisplay(); + textFlag = false; + keywordFlag = true; + stringFlag = false; + numericFlag = false; + commentFlag = false; + updateFlags(); + backgroundColorEditor.loadDefault(); + textColorEditor.loadDefault(); + keywordColorEditor.loadDefault(); + stringColorEditor.loadDefault(); + commentColorEditor.loadDefault(); + numericColorEditor.loadDefault(); + } + /** + * Save the preferences to the preference store. + */ + public boolean performOk() { + PreferenceConverter.setValue(getPreferenceStore(), "quantum.font", fontData); + getPreferenceStore().setValue("quantum.text.bold", textFlag); + getPreferenceStore().setValue("quantum.keyword.bold", keywordFlag); + getPreferenceStore().setValue("quantum.string.bold", stringFlag); + getPreferenceStore().setValue("quantum.comment.bold", commentFlag); + getPreferenceStore().setValue("quantum.numeric.bold", numericFlag); + backgroundColorEditor.store(); + textColorEditor.store(); + keywordColorEditor.store(); + stringColorEditor.store(); + commentColorEditor.store(); + numericColorEditor.store(); + return super.performOk(); + } + protected Control createContents(Composite parent) { + Composite main = new Composite(parent, SWT.NULL); + + GridLayout innerLayout = new GridLayout(); + innerLayout.numColumns = 4; + main.setLayout(innerLayout); + + fontData = PreferenceConverter.getFontData(getPreferenceStore(), "quantum.font"); + textFlag = getPreferenceStore().getBoolean("quantum.text.bold"); + keywordFlag = getPreferenceStore().getBoolean("quantum.keyword.bold"); + stringFlag = getPreferenceStore().getBoolean("quantum.string.bold"); + commentFlag = getPreferenceStore().getBoolean("quantum.comment.bold"); + numericFlag = getPreferenceStore().getBoolean("quantum.numeric.bold"); + + fontDialog = new FontDialog(workbench.getActiveWorkbenchWindow().getShell()); + Button fontButton = new Button(main, SWT.PUSH); + fontButton.setText("Pick Font"); + fontButton.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + if (fontData != null) { + fontDialog.setFontData(fontData); + } + FontData data = fontDialog.open(); + if (data != null) { + fontData = data; + updateFontDisplay(); + } + } + }); + Button defaultButton = new Button(main, SWT.PUSH); + defaultButton.setText("Default Font"); + defaultButton.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + fontData = null; + updateFontDisplay(); + } + }); + + fontDisplay = new Label(main, SWT.NULL); + GridData data = new GridData(GridData.FILL_HORIZONTAL); + data.grabExcessHorizontalSpace = true; + fontDisplay.setLayoutData(data); + updateFontDisplay(); + + ColorManager manager = new ColorManager(); + + Composite comp = new Composite(main, SWT.NULL); + GridData layoutData = new GridData(); + layoutData.horizontalSpan = 2; + comp.setLayoutData(layoutData); + + Color defaultColor = manager.getColor(SQLColorConstants.DEFAULT); + backgroundColorEditor = + new ColorFieldEditor( + "quantum.background.color", + "Background Color", + comp); + + Composite temp = new Composite(main, SWT.NULL); + temp.setSize(0, 0); + + comp = new Composite(main, SWT.NULL); + layoutData = new GridData(); + layoutData.horizontalSpan = 2; + comp.setLayoutData(layoutData); + + textColorEditor = + new ColorFieldEditor( + "quantum.text.color", + "Default Text Color", + comp); + + boldText = new Button(main, SWT.CHECK); + boldText.setSelection(textFlag); + boldText.setText("Bold"); + boldText.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + textFlag = boldText.getSelection(); + } + }); + + comp = new Composite(main, SWT.NULL); + layoutData = new GridData(); + layoutData.horizontalSpan = 2; + comp.setLayoutData(layoutData); + + keywordColorEditor = + new ColorFieldEditor( + "quantum.keyword.color", + "Keyword Text Color", + comp); + + boldKeyword = new Button(main, SWT.CHECK); + boldKeyword.setSelection(keywordFlag); + boldKeyword.setText("Bold"); + boldKeyword.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + keywordFlag = boldKeyword.getSelection(); + } + }); + + comp = new Composite(main, SWT.NULL); + layoutData = new GridData(); + layoutData.horizontalSpan = 2; + comp.setLayoutData(layoutData); + + commentColorEditor = + new ColorFieldEditor( + "quantum.comment.color", + "Comment Text Color", + comp); + + boldComment = new Button(main, SWT.CHECK); + boldComment.setSelection(commentFlag); + boldComment.setText("Bold"); + boldComment.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + commentFlag = boldComment.getSelection(); + } + }); + + comp = new Composite(main, SWT.NULL); + layoutData = new GridData(); + layoutData.horizontalSpan = 2; + comp.setLayoutData(layoutData); + + stringColorEditor = + new ColorFieldEditor( + "quantum.string.color", + "String Text Color", + comp); + + boldString = new Button(main, SWT.CHECK); + boldString.setSelection(stringFlag); + boldString.setText("Bold"); + boldString.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + stringFlag = boldString.getSelection(); + } + }); + + comp = new Composite(main, SWT.NULL); + layoutData = new GridData(); + layoutData.horizontalSpan = 2; + comp.setLayoutData(layoutData); + + numericColorEditor = + new ColorFieldEditor( + "quantum.numeric.color", + "Numeric Text Color", + comp); + + boldNumeric = new Button(main, SWT.CHECK); + boldNumeric.setSelection(numericFlag); + boldNumeric.setText("Bold"); + boldNumeric.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + numericFlag = boldNumeric.getSelection(); + } + }); + + backgroundColorEditor.setPreferencePage(this); + backgroundColorEditor.setPreferenceStore(getPreferenceStore()); + backgroundColorEditor.load(); + + textColorEditor.setPreferencePage(this); + textColorEditor.setPreferenceStore(getPreferenceStore()); + textColorEditor.load(); + + keywordColorEditor.setPreferencePage(this); + keywordColorEditor.setPreferenceStore(getPreferenceStore()); + keywordColorEditor.load(); + + commentColorEditor.setPreferencePage(this); + commentColorEditor.setPreferenceStore(getPreferenceStore()); + commentColorEditor.load(); + + stringColorEditor.setPreferencePage(this); + stringColorEditor.setPreferenceStore(getPreferenceStore()); + stringColorEditor.load(); + + numericColorEditor.setPreferencePage(this); + numericColorEditor.setPreferenceStore(getPreferenceStore()); + numericColorEditor.load(); + + return main; + } + public void updateFontDisplay() { + if (fontData == null) { + fontDisplay.setText("Font: default"); + } else { + String style = "regular"; + if (fontData.getStyle() == SWT.BOLD) { + style = "bold"; + } else if (fontData.getStyle() == SWT.ITALIC) { + style = "italic"; + } else if (fontData.getStyle() == (SWT.BOLD | SWT.ITALIC)) { + style = "bold italic"; + } + fontDisplay.setText("Font: " + fontData.getName() + '-' + style + '-' + fontData.getHeight()); + } + } + public void updateFlags() { + boldText.setSelection(textFlag); + boldKeyword.setSelection(keywordFlag); + boldString.setSelection(stringFlag); + boldNumeric.setSelection(numericFlag); + boldComment.setSelection(commentFlag); + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/FilterSort.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/FilterSort.java new file mode 100644 index 0000000..68a7e68 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/FilterSort.java @@ -0,0 +1,68 @@ +package net.sourceforge.phpdt.sql.sql; + +import java.util.ArrayList; + +public class FilterSort { + private ArrayList filterList = new ArrayList(); + private ArrayList sortList = new ArrayList(); + public void addFilter(String column, String operator, String value, boolean isString) { + FilterRow row = new FilterRow(); + row.column = column; + row.operator = operator; + row.value = value; + row.isString = isString; + filterList.add(row); + } + public void clearFilters() { + filterList.clear(); + } + public void addSort(String column) { + sortList.add(column); + } + public void removeSort(String column) { + sortList.remove(column); + } + public String toString() { + StringBuffer text = new StringBuffer(); + if (filterList.size() > 0) { + text.append(" WHERE "); + for (int i = 0; i < filterList.size(); i++) { + FilterRow row = (FilterRow) filterList.get(i); + text.append(row.column); + text.append(" "); + text.append(row.operator); + text.append(" "); + if (row.isString) { + text.append(escape(row.value)); + } else { + text.append(row.value); + } + text.append(" "); + if (i < filterList.size() - 1) { + text.append("AND "); + } + } + } + if (sortList.size() > 0) { + text.append(" ORDER BY "); + for (int i = 0; i < sortList.size(); i++) { + String value = (String) sortList.get(i); + text.append(value); + if (i < sortList.size() - 1) { + text.append(","); + } + } + } + return text.toString(); + } + public static String escape(String original) { + return '\'' + original + '\''; + } +} + +class FilterRow { + public String column; + public String operator; + public String value; + public boolean isString; +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/MultiSQLServer.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/MultiSQLServer.java new file mode 100644 index 0000000..f67f0f9 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/MultiSQLServer.java @@ -0,0 +1,507 @@ +package net.sourceforge.phpdt.sql.sql; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.InputStream; +import java.io.PrintWriter; +import java.io.Reader; +import java.io.StringWriter; +import java.net.URL; +import java.net.URLClassLoader; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.Driver; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.Properties; +import java.util.Vector; + +import net.sourceforge.phpdt.sql.adapters.AdapterFactory; +import net.sourceforge.phpdt.sql.adapters.DatabaseAdapter; +import net.sourceforge.phpdt.sql.adapters.NoSuchAdapterException; +import net.sourceforge.phpdt.sql.bookmarks.Bookmark; +import net.sourceforge.phpdt.sql.view.LogProxy; + +public class MultiSQLServer extends Thread { + private static final int STREAM = 1024 * 2; + public static final String USERNAME = "user"; + public static final String PASSWORD = "password"; + private static MultiSQLServer instance = null; + private Hashtable classLoaderCache = new Hashtable(); + private Connection con = null; + boolean running = true; + private Bookmark current = null; + private MultiSQLServer() { + //start(); + } + public synchronized static MultiSQLServer getInstance() { + if (instance == null) { + instance = new MultiSQLServer(); + } + return instance; + } + public Bookmark getConnected() { + return current; + } + + public void commit() { + LogProxy log = LogProxy.getInstance(); + try { + con.commit(); + } catch (SQLException e) { + log.addText(log.ERROR, "Error commiting: " + e); + StringWriter writer = new StringWriter(); + e.printStackTrace(new PrintWriter(writer)); + log.addText( + log.ERROR, + writer.toString()); + } + } + + public void rollback() { + LogProxy log = LogProxy.getInstance(); + try { + con.rollback(); + } catch (SQLException e) { + log.addText(log.ERROR, "Error rolling back: " + e); + StringWriter writer = new StringWriter(); + e.printStackTrace(new PrintWriter(writer)); + log.addText( + log.ERROR, + writer.toString()); + } + } + + public void setAutoCommit(boolean enabled) { + LogProxy log = LogProxy.getInstance(); + try { + if (con != null) { + con.setAutoCommit(enabled); + } else { + log.addText(log.ERROR, "Please connect before setting autocommit"); + } + } catch (SQLException e) { + log.addText(log.ERROR, "Error setting autocommit: " + e); + StringWriter writer = new StringWriter(); + e.printStackTrace(new PrintWriter(writer)); + log.addText( + log.ERROR, + writer.toString()); + } + } + + public DatabaseAdapter getCurrentAdapter() { + LogProxy log = LogProxy.getInstance(); + try { + AdapterFactory factory = AdapterFactory.getInstance(); + return factory.getAdapter(current.getType()); + } catch (NoSuchAdapterException e) { + log.addText(log.ERROR, "Invalid database type: ->" + current.getType() + "<-"); + } + return null; + } + public void disconnect(Bookmark b) { + current = null; + LogProxy log = LogProxy.getInstance(); + + try { + con.close(); + con = null; + log.addText(log.RESULTS, "Disconnected from: " + b.getName()); + } catch (Exception e) { + log.addText( + log.ERROR, + "Error Disonnecting to: " + b.getName() + ":" + e.toString()); + StringWriter writer = new StringWriter(); + e.printStackTrace(new PrintWriter(writer)); + log.addText( + log.ERROR, + writer.toString()); + + } + } + public void shutdown() { + LogProxy log = LogProxy.getInstance(); + try { + if (con != null) { + con.close(); + } + con = null; + } catch (SQLException e) { + StringWriter writer = new StringWriter(); + e.printStackTrace(new PrintWriter(writer)); + log.addText( + log.ERROR, + writer.toString()); + } + } + + public void dumpDatabaseData() { + LogProxy log = LogProxy.getInstance(); + try { + DatabaseMetaData metadata = con.getMetaData(); + log.addText(log.WARNING, "[METADATA] Database type: " + metadata.getDatabaseProductName()); + if (metadata.supportsCatalogsInDataManipulation()) { + log.addText(log.WARNING, "[METADATA] Database does support catalog in data manipulation"); + } else { + log.addText(log.WARNING, "[METADATA] Database does not support catalog in data manipulation"); + } + if (metadata.supportsSchemasInDataManipulation()) { + log.addText(log.WARNING, "[METADATA] Database does support schema in data manipulation"); + } else { + log.addText(log.WARNING, "[METADATA] Database does not support schema in data manipulation"); + } + if (metadata.supportsCatalogsInTableDefinitions()) { + log.addText(log.WARNING, "[METADATA] Database does support catalogs in table definitions"); + } else { + log.addText(log.WARNING, "[METADATA] Database does not support catalogs in table definitions"); + } + log.addText(log.WARNING, "[METADATA] Catalog Separator: " + metadata.getCatalogSeparator()); + log.addText(log.WARNING, "[METADATA] Catalog Term: " + metadata.getCatalogTerm()); + ResultSet set = metadata.getCatalogs(); + ArrayList catalogList = new ArrayList(); + catalogList.add(null); + while (set.next()) { + catalogList.add(set.getString(1)); + } + set.close(); + StringBuffer catalogOutput = new StringBuffer(); + catalogOutput.append("[CATALOG LIST] ["); + for (int i = 0; i < catalogList.size(); i++) { + String name = (String) catalogList.get(i); + catalogOutput.append(name + ", "); + } + catalogOutput.append("]"); + log.addText(log.WARNING, catalogOutput.toString()); + + set = metadata.getSchemas(); + ArrayList schemaList = new ArrayList(); + schemaList.add(""); + while (set.next()) { + schemaList.add(set.getString(1)); + } + set.close(); + StringBuffer schemaOutput = new StringBuffer(); + schemaOutput.append("[SCHEMA LIST] ["); + for (int i = 0; i < schemaList.size(); i++) { + String name = (String) schemaList.get(i); + schemaOutput.append(name + ", "); + } + schemaOutput.append("]"); + log.addText(log.WARNING, schemaOutput.toString()); + + ArrayList tableTypes = new ArrayList(); + set = metadata.getTableTypes(); + while (set.next()) { + tableTypes.add(set.getString(1)); + } + set.close(); + + StringBuffer tableListOutput = new StringBuffer(); + tableListOutput.append("[TABLE LIST] ["); + for (int i = 0; i < tableTypes.size(); i++) { + String name = (String) tableTypes.get(i); + tableListOutput.append(name + ", "); + } + tableListOutput.append("]"); + log.addText(log.WARNING, tableListOutput.toString()); + + + } catch (Exception e) { + log.addText(log.ERROR, "Error occured: " + e); + StringWriter writer = new StringWriter(); + e.printStackTrace(new PrintWriter(writer)); + log.addText( + log.ERROR, + writer.toString()); + } + } + /** + * type = "TABLE" "VIEW" "SEQUENCE" + */ + public Vector listTables(String schema, String type) { + LogProxy log = LogProxy.getInstance(); + Vector retVal = new Vector(); + log.addText(log.QUERY, "Retrieving list [" + type + "]"); + try { + DatabaseMetaData meta = con.getMetaData(); + ResultSet set = meta.getTableTypes(); + int columnCount = set.getMetaData().getColumnCount(); + for (int i = 1; i <= columnCount; i++) { + System.out.print(set.getMetaData().getColumnName(i) + "\t"); + } + System.out.println(); + while (set.next()) { + for (int i = 1; i <= columnCount; i++) { + System.out.print(set.getString(i) + "\t"); + } + System.out.println(); + } + Vector types = new Vector(); + set = meta.getTableTypes(); + while (set.next()) { + types.add(set.getString(1)); + } + set.close(); + if (types.contains(type)) { + set = meta.getTables(null, schema, "%", new String[] {type}); + while (set.next()) { + String name = set.getString("TABLE_NAME"); + String tableType = set.getString("TABLE_TYPE"); + //System.out.println(name + ":" + tableType); + retVal.addElement(name); + } + set.close(); + } + log.addText(log.RESULTS, "Success"); + } catch (SQLException e) { + log.addText(log.ERROR, "Error occured: " + e); + StringWriter writer = new StringWriter(); + e.printStackTrace(new PrintWriter(writer)); + log.addText( + log.ERROR, + writer.toString()); + } + return retVal; + } + public boolean connect(Bookmark b) { + LogProxy log = LogProxy.getInstance(); + log.addText(log.QUERY, "Connecting to: " + b.getName()); + URL urls[] = new URL[1]; + try { + String driverFile = b.getDriverFile(); + URLClassLoader loader = (URLClassLoader) classLoaderCache.get(driverFile); + if (loader == null) { + urls[0] = new File(driverFile).toURL(); + loader = new URLClassLoader(urls); + classLoaderCache.put(driverFile, loader); + System.out.println("Creating new classloader"); + } else { + System.out.println("Using classloader in cache"); + } + Class driverClass = loader.loadClass(b.getDriver()); + Driver driver = (Driver) driverClass.newInstance(); + Properties props = new Properties(); + props.put(USERNAME, b.getUsername()); + props.put(PASSWORD, b.getPassword()); + con = driver.connect(b.getConnect(), props); + if (con == null) { + throw new Exception("Error: Driver returned a null connection: " + b.toString()); + } + current = b; + log.addText(log.RESULTS, "Connected to: " + b.getName()); + System.out.println("Connected"); + return true; + } catch (Exception e) { + log.addText( + log.ERROR, + "Error Connecting to: " + b.getName() + ":" + e.toString()); + StringWriter writer = new StringWriter(); + e.printStackTrace(new PrintWriter(writer)); + log.addText( + log.ERROR, + writer.toString()); + } + return false; + } + public SQLResults execute(String s) { + return execute(s, -1, -1); + } + public SQLResults execute(String s, int startRow, int endRow) { + return execute(s, -1, -1, Integer.MAX_VALUE); + } + public SQLResults execute(String s, int startRow, int endRow, int maxLength) { + return execute(s, startRow, endRow, maxLength, ""); + } + public SQLResults execute(String s, int startRow, int endRow, int maxLength, String encoding) { + SQLResults results = new SQLResults(); + + System.out.println("Executing"); + LogProxy log = LogProxy.getInstance(); + log.addText(log.QUERY, "Executing Request [" + s + "]"); + boolean metadata = false; + if (s.startsWith("METADATA")) { + metadata = true; + } + if (metadata) { + results.setQuery(s); + String table = s.substring(s.indexOf(':') + 1); + String schema = current.getSchema(); + String query = "SELECT * FROM " + schema + "." + table; + if (schema.equals("")) { + query = "SELECT * FROM " + table; + } + s = query; + log.addText(log.QUERY, "Metadata Request [" + s + "]"); + } else { + results.setQuery(s); + } + try { + Statement stmt = con.createStatement(); + boolean flag = stmt.execute(s); + results.setResultSet(flag); + if (!flag) { + int updates = stmt.getUpdateCount(); + results.setUpdateCount(updates); + log.addText( + log.RESULTS, + "Success: " + updates + " records updated"); + + } else { + if (metadata) { + ResultSet set = stmt.getResultSet(); + ResultSetMetaData metaData = set.getMetaData(); + int columnCount = metaData.getColumnCount(); + Vector columnNames = new Vector(); + columnNames.addElement("ColumnName"); + columnNames.addElement("Type"); + columnNames.addElement("Size"); + columnNames.addElement("Nullable"); + columnNames.addElement("AutoIncrement"); + results.setColumnNames(columnNames); + for (int i = 1; i <= columnCount; i++) { + Vector row = new Vector(); + row.addElement(metaData.getColumnName(i)); + row.addElement(metaData.getColumnTypeName(i)); + int textSize = metaData.getColumnDisplaySize(i); + int precision = metaData.getPrecision(i); + int scale = metaData.getScale(i); + if (scale == 0 && precision == 0) { + row.addElement(Integer.toString(precision)); + } else { + row.addElement(textSize + ", " + precision + ", " + scale); + } + int nullable = metaData.isNullable(i); + if (nullable == metaData.columnNoNulls) { + row.addElement("Not Null"); + } else if (nullable == metaData.columnNullable) { + row.addElement("Nullable"); + } else if (nullable == metaData.columnNullableUnknown) { + row.addElement("Nullable"); + } else { + row.addElement(""); + } + row.addElement(new Boolean(metaData.isAutoIncrement(i)).toString()); + results.addRow(row); + } + results.setHasMore(false); + } else { + ResultSet set = stmt.getResultSet(); + ResultSetMetaData metaData = set.getMetaData(); + int columnCount = metaData.getColumnCount(); + Vector columnNames = new Vector(); + for (int i = 1; i <= columnCount; i++) { + columnNames.addElement(metaData.getColumnName(i)); + } + results.setColumnNames(columnNames); + Vector columnTypes = new Vector(); + for (int i = 1; i <= columnCount; i++) { + columnTypes.addElement(metaData.getColumnTypeName(i)); + } + results.setColumnsTypes(columnTypes); + int columnSizes[] = new int[columnCount]; + for (int i = 1; i <= columnCount; i++) { + columnSizes[i - 1] = metaData.getColumnDisplaySize(i); + } + int rowCount = 1; + boolean exitEarly = false; + while (set.next()) { + boolean disable = startRow < 1 || endRow < 1; + boolean start = rowCount >= startRow; + boolean end = rowCount <= endRow; + if (disable || (start && end)) { + Vector row = new Vector(); + for (int i = 1; i <= columnCount; i++) { + String value; + if (columnSizes[i - 1] < STREAM && columnSizes[i - 1] < maxLength) { + if (encoding.equals("")) { + value = set.getString(i); + } else { + value = new String(set.getBytes(i), encoding); + } + } else { + try { + if (encoding.equals("")) { + Reader reader = set.getCharacterStream(i); + StringBuffer buffer = new StringBuffer(); + if (reader != null) { + int retVal = reader.read(); + int count = 0; + while (retVal >= 0) { + buffer.append((char) retVal); + retVal = reader.read(); + count++; + if (count > maxLength) { + buffer.append("...>>>"); + break; + } + } + reader.close(); + } + value = buffer.toString(); + } else { + InputStream binaryStream = set.getBinaryStream(i); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + if (binaryStream != null) { + int retVal = binaryStream.read(); + int count = 0; + while (retVal >= 0) { + baos.write(retVal); + retVal = binaryStream.read(); + count++; + if (count > maxLength) { + break; + } + } + binaryStream.close(); + } + value = new String(baos.toByteArray(), encoding); + } + } catch (Throwable e) { + // hack for mysql which doesn't implement + // character streams + value = set.getString(i); + } + } + if (set.wasNull()) { + row.addElement(""); + } else { + row.addElement(value); + } + } + results.addRow(row); + } + rowCount++; + if (!disable && (rowCount > endRow)) { + exitEarly = true; + break; + } + } + if (exitEarly) { + results.setHasMore(set.next()); + } else { + results.setMaxSize(rowCount); + results.setHasMore(false); + } + } + log.addText(log.RESULTS, "Success: result set displayed"); + } + stmt.close(); + System.out.println("Executed"); + System.out.println(); + } catch (Exception e) { + results.setIsError(true); + log.addText(log.ERROR, "Error occured: " + e); + StringWriter writer = new StringWriter(); + e.printStackTrace(new PrintWriter(writer)); + log.addText( + log.ERROR, + writer.toString()); + } + return results; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/SQLHelper.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/SQLHelper.java new file mode 100644 index 0000000..1239620 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/SQLHelper.java @@ -0,0 +1,136 @@ +package net.sourceforge.phpdt.sql.sql; + +import java.util.Vector; + +import net.sourceforge.phpdt.sql.adapters.AdapterFactory; +import net.sourceforge.phpdt.sql.adapters.DatabaseAdapter; +import net.sourceforge.phpdt.sql.adapters.DatabaseInfo; +import net.sourceforge.phpdt.sql.adapters.FeatureNotSupported; +import net.sourceforge.phpdt.sql.adapters.GenericAdapter; +import net.sourceforge.phpdt.sql.adapters.NoSuchAdapterException; +import net.sourceforge.phpdt.sql.bookmarks.Bookmark; +import net.sourceforge.phpdt.sql.view.bookmark.BookmarkNode; +import net.sourceforge.phpdt.sql.view.bookmark.MetaDataNode; +import net.sourceforge.phpdt.sql.view.bookmark.SequenceNode; +import net.sourceforge.phpdt.sql.view.bookmark.TableNode; +import net.sourceforge.phpdt.sql.view.bookmark.ViewNode; + +public class SQLHelper { + MultiSQLServer server = MultiSQLServer.getInstance(); + public Vector getTableList(BookmarkNode current) throws NoSuchAdapterException, FeatureNotSupported { + DatabaseAdapter adapter = AdapterFactory.getInstance().getAdapter(current.getType()); + Vector children = new Vector(); + DatabaseInfo info = DatabaseInfo.create(current); + if (adapter instanceof GenericAdapter) { + Vector tables = server.listTables(info.getSchema(), "TABLE"); + for (int i = 0; i < tables.size(); i++) { + String tableName = (String) tables.elementAt(i); + TableNode node = new TableNode(current, tableName); + children.addElement(node); + } + } else { + SQLResults results = server.execute(adapter.getShowTableQuery(info)); + String filter = adapter.getTableListFilter(); + int size = results.getRowCount(); + System.out.println("Found " + size + " tables"); + for (int i = 1; i <= size; i++) { + String tableName = results.getElement(1, i).toString(); + if (filter == null || filter.equals("") || tableName.indexOf(filter) < 0) { + TableNode node = new TableNode(current, tableName); + children.addElement(node); + } + } + } + return children; + } + public int getSize(String query) { + SQLResults results = server.execute("SELECT COUNT(*) FROM " + query); + return Integer.parseInt(results.getElement(1, 1).toString()); + } + public Vector getViewList(BookmarkNode current) + throws NoSuchAdapterException, FeatureNotSupported { + DatabaseAdapter adapter = + AdapterFactory.getInstance().getAdapter(current.getType()); + Vector children = new Vector(); + DatabaseInfo info = DatabaseInfo.create(current); + if (adapter instanceof GenericAdapter) { + Vector views = server.listTables(info.getSchema(), "VIEW"); + for (int i = 0; i < views.size(); i++) { + String viewName = (String) views.elementAt(i); + ViewNode node = new ViewNode(current, viewName); + children.addElement(node); + } + } else { + SQLResults results = + server.execute( + adapter.getShowViewQuery(info)); + String filter = adapter.getTableListFilter(); + int size = results.getRowCount(); + for (int i = 1; i <= size; i++) { + String viewName = results.getElement(1, i).toString(); + if (filter == null + || filter.equals("") + || viewName.indexOf(filter) < 0) { + ViewNode node = new ViewNode(current, viewName); + children.addElement(node); + } + } + } + return children; + } + public Vector getSequenceList(BookmarkNode current) throws NoSuchAdapterException, FeatureNotSupported { + DatabaseAdapter adapter = AdapterFactory.getInstance().getAdapter(current.getType()); + MultiSQLServer server = MultiSQLServer.getInstance(); + Vector children = new Vector(); + if (!(adapter instanceof GenericAdapter)) { + SQLResults results = server.execute(adapter.getShowSequenceQuery(DatabaseInfo.create(current))); + String filter = adapter.getTableListFilter(); + int size = results.getRowCount(); + for (int i = 1; i <= size; i++) { + String seqName = results.getElement(1, i).toString(); + if (filter == null || filter.equals("") || seqName.indexOf(filter) < 0) { + SequenceNode node = new SequenceNode(current, seqName); + children.addElement(node); + } + } + } + return children; + } + public Vector getMetaData(TableNode parent, String entity) { + Vector columns = new Vector(); + String query = "SELECT * FROM " + entity; + SQLResults results = server.execute(query); + for (int i = 1; i <= results.getColumnCount(); i++) { + String name = results.getColumnName(i); + String type = results.getColumnType(i); + MetaDataNode node = new MetaDataNode(parent, name, type); + columns.addElement(node); + } + return columns; + } + public Vector getMetaData(ViewNode parent, String entity) { + Vector columns = new Vector(); + String query = "SELECT * FROM " + entity; + SQLResults results = server.execute(query); + for (int i = 1; i <= results.getColumnCount(); i++) { + String name = results.getColumnName(i); + String type = results.getColumnType(i); + MetaDataNode node = new MetaDataNode(parent, name, type); + columns.addElement(node); + } + return columns; + } + public SQLResults getResults(String query, int start, int end) { + return server.execute(query, start, end); + } + public SQLResults getResults(String query, int start, int end, int maxLength, String encoding) { + return server.execute(query, start, end, maxLength, encoding); + } + public static String getFullTableName(Bookmark current, String table) { + String schema = current.getSchema(); + if (schema == null || schema.equals("")) { + return table; + } + return schema + "." + table; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/SQLMetaData.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/SQLMetaData.java new file mode 100644 index 0000000..44988a8 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/SQLMetaData.java @@ -0,0 +1,51 @@ +package net.sourceforge.phpdt.sql.sql; + +import java.util.Vector; + +public class SQLMetaData { + private String tableName; + private Vector columnNames; + private Vector columTypes; + private Vector columnClassnames; + private Vector columnSizes; + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + public Vector getColumnClassnames() { + return columnClassnames; + } + + public Vector getColumnNames() { + return columnNames; + } + + public Vector getColumnSizes() { + return columnSizes; + } + + public Vector getColumTypes() { + return columTypes; + } + + public void setColumnClassnames(Vector columnClassnames) { + this.columnClassnames = columnClassnames; + } + + public void setColumnNames(Vector columnNames) { + this.columnNames = columnNames; + } + + public void setColumnSizes(Vector columnSizes) { + this.columnSizes = columnSizes; + } + + public void setColumTypes(Vector columTypes) { + this.columTypes = columTypes; + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/SQLParser.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/SQLParser.java new file mode 100644 index 0000000..1f9a19b --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/SQLParser.java @@ -0,0 +1,43 @@ +package net.sourceforge.phpdt.sql.sql; + +import java.util.Vector; + +import net.sourceforge.phpdt.sql.parser.SQLLexx; +import net.sourceforge.phpdt.sql.parser.Token; + +public class SQLParser { + public static final String COMMENT = "--"; + public static final String ENDLINE = ";"; + public static Vector parse(String query) { + Vector commands = new Vector(); + try { + //System.out.println("-------------------1"); + Vector tokens = SQLLexx.parse(query); + //System.out.println("-------------------2"); + StringBuffer buffer = new StringBuffer(); + for (int i = 0; i < tokens.size(); i++) { + //System.out.println("-------------------3"); + Token t = (Token) tokens.elementAt(i); + if (t.getType() == t.COMMENT) { + // ignore comments + } else if (t.getType() == t.SEPARATOR) { + String newCommand = buffer.toString().trim(); + if (!newCommand.equals("")) { + commands.addElement(newCommand); + } + buffer = new StringBuffer(); + } else { + buffer.append(t.getValue()); + } + } + String newCommand = buffer.toString().trim(); + if (!newCommand.equals("")) { + commands.addElement(newCommand); + } + } catch (Throwable e) { + e.printStackTrace(); + } + System.out.println("Returning"); + return commands; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/SQLResults.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/SQLResults.java new file mode 100644 index 0000000..7563bb1 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/SQLResults.java @@ -0,0 +1,125 @@ +package net.sourceforge.phpdt.sql.sql; + +import java.util.ArrayList; +import java.util.Vector; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class SQLResults { + private String query; + private String table; + private ArrayList rows = new ArrayList(); + private Vector columns; + private Vector columnTypes; + private int updateCount = 0; + private boolean resultSet = false; + private boolean hasMore = false; + private boolean isError = false; + private int maxSize = -1; + public void setColumnNames(Vector columns) { + this.columns = columns; + } + public String getColumnName(int column) { + return columns.elementAt(column - 1).toString(); + } + public String getColumnType(int column) { + return columnTypes.elementAt(column - 1).toString(); + } + public void addRow(Vector row) { + rows.add(row); + } + public Object getElement(int column, int row) { + return ((Vector) rows.get(row - 1)).elementAt(column - 1); + } + public int getColumnCount() { + if (columns.size() > 0) { + return columns.size(); + } + return 0; + } + public int getRowCount() { + return rows.size(); + } + /** + * Returns the query. + * @return String + */ + public String getQuery() { + return query; + } + + /** + * Sets the query. + * @param query The query to set + */ + public void setQuery(String query) { + this.query = query; + } + + /** + * Returns the resultSet. + * @return boolean + */ + public boolean isResultSet() { + return resultSet; + } + + /** + * Sets the resultSet. + * @param resultSet The resultSet to set + */ + public void setResultSet(boolean resultSet) { + this.resultSet = resultSet; + } + + public int getUpdateCount() { + return updateCount; + } + + public void setUpdateCount(int updateCount) { + this.updateCount = updateCount; + } + + public String getTable() { + return table; + } + + public void setTable(String table) { + this.table = table; + } + + public void setColumnsTypes(Vector columnsTypes) { + this.columnTypes = columnsTypes; + } + + public boolean hasMore() { + return hasMore; + } + + public void setHasMore(boolean hasMore) { + this.hasMore = hasMore; + } + + public int getMaxSize() { + return maxSize; + } + + public void setMaxSize(int maxSize) { + this.maxSize = maxSize; + } + + public boolean isError() { + return isError; + } + + public void setIsError(boolean isError) { + this.isError = isError; + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/TableRow.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/TableRow.java new file mode 100644 index 0000000..0f64c6a --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/sql/TableRow.java @@ -0,0 +1,42 @@ +package net.sourceforge.phpdt.sql.sql; + +public class TableRow { + private String[] columnNames; + private String[] tableData; + private String table; + + public TableRow(String tableName, String[] columnNames, String[] tableData) { + this.table = tableName; + this.tableData = tableData; + this.columnNames = columnNames; + } + + public int getColumnCount() { + return columnNames.length; + } + + public String[] getColumnNames() { + return columnNames; + } + + public String getTable() { + return table; + } + + public void setColumnNames(String[] columnNames) { + this.columnNames = columnNames; + } + + public void setTable(String table) { + this.table = table; + } + + public String[] getTableData() { + return tableData; + } + + public void setTableData(String[] tableData) { + this.tableData = tableData; + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/BookmarkLabelProvider.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/BookmarkLabelProvider.java new file mode 100644 index 0000000..c3437b8 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/BookmarkLabelProvider.java @@ -0,0 +1,105 @@ +package net.sourceforge.phpdt.sql.view; + +import java.net.URL; + +import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.ILabelProviderListener; +import org.eclipse.swt.graphics.Image; + +import net.sourceforge.phpdt.sql.bookmarks.Bookmark; +import net.sourceforge.phpdt.sql.sql.MultiSQLServer; +import net.sourceforge.phpdt.sql.view.bookmark.BookmarkNode; +import net.sourceforge.phpdt.sql.view.bookmark.Root; +import net.sourceforge.phpdt.sql.view.bookmark.SequenceNode; +import net.sourceforge.phpdt.sql.view.bookmark.TableNode; +import net.sourceforge.phpdt.sql.view.bookmark.ViewNode; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public class BookmarkLabelProvider implements ILabelProvider { + /** + * @see org.eclipse.jface.viewers.ILabelProvider#getImage(Object) + */ + public Image getImage(Object element) { + ImageDescriptor descriptor = null; + if (element instanceof BookmarkNode) { + try { + URL installURL = PHPEclipseSQLPlugin.getDefault().getDescriptor().getInstallURL(); + MultiSQLServer server = MultiSQLServer.getInstance(); + URL url = new URL(installURL, "icons/bookmarks.gif"); + if (server.getConnected() != null && element.equals(server.getConnected())){ + url = new URL(installURL, "icons/connected.gif"); + } + descriptor = ImageDescriptor.createFromURL(url); + } catch (Exception e) { + e.printStackTrace(); + } + } else { + return null; + } + return descriptor.createImage(); + } + + /** + * @see org.eclipse.jface.viewers.ILabelProvider#getText(Object) + */ + public String getText(Object element) { + if (element instanceof BookmarkNode) { + Bookmark bookmark = (Bookmark) element; + return bookmark.getName(); + } else if (element.equals(Root.ROOT)) { + return "ROOT"; + } else if (element instanceof TableNode) { + TableNode node = (TableNode) element; + if (node.getSize() > -1) { + return "T " + element.toString() + " (" + node.getSize() + ")"; + } else { + return "T " + element.toString(); + } + } else if (element instanceof ViewNode) { + ViewNode node = (ViewNode) element; + if (node.getSize() > -1) { + return "V " + element.toString() + " (" + node.getSize() + ")"; + } else { + return "V " + element.toString(); + } + } else if (element instanceof SequenceNode) { + return "S " + element.toString(); + } + return element.toString(); + } + + /** + * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(ILabelProviderListener) + */ + public void addListener(ILabelProviderListener listener) { + } + + /** + * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose() + */ + public void dispose() { + } + + /** + * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(Object, String) + */ + public boolean isLabelProperty(Object element, String property) { + return false; + } + + /** + * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(ILabelProviderListener) + */ + public void removeListener(ILabelProviderListener listener) { + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/BookmarkView.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/BookmarkView.java new file mode 100644 index 0000000..15a2d03 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/BookmarkView.java @@ -0,0 +1,367 @@ +package net.sourceforge.phpdt.sql.view; + +import java.util.Vector; + +import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.part.ViewPart; + +import net.sourceforge.phpdt.sql.actions.ConnectAction; +import net.sourceforge.phpdt.sql.actions.DeleteBookmarkAction; +import net.sourceforge.phpdt.sql.actions.DisconnectAction; +import net.sourceforge.phpdt.sql.actions.EditBookmarkAction; +import net.sourceforge.phpdt.sql.actions.NewBookmarkAction; +import net.sourceforge.phpdt.sql.actions.NextSequenceAction; +import net.sourceforge.phpdt.sql.actions.RefreshBookmarkAction; +import net.sourceforge.phpdt.sql.actions.ViewTableAction; +import net.sourceforge.phpdt.sql.actions.ViewTableDetailsAction; +import net.sourceforge.phpdt.sql.adapters.FeatureNotSupported; +import net.sourceforge.phpdt.sql.adapters.NoSuchAdapterException; +import net.sourceforge.phpdt.sql.sql.MultiSQLServer; +import net.sourceforge.phpdt.sql.sql.SQLHelper; +import net.sourceforge.phpdt.sql.view.bookmark.BookmarkContentProvider; +import net.sourceforge.phpdt.sql.view.bookmark.BookmarkNode; +import net.sourceforge.phpdt.sql.view.bookmark.Root; +import net.sourceforge.phpdt.sql.view.bookmark.SequenceNode; +import net.sourceforge.phpdt.sql.view.bookmark.TableNode; +import net.sourceforge.phpdt.sql.view.bookmark.ViewNode; + +public class BookmarkView extends ViewPart { + private ConnectAction connectAction; + private DisconnectAction disconnectAction; + private NewBookmarkAction newBookmarkAction; + private EditBookmarkAction editBookmarkAction; + private DeleteBookmarkAction deleteBookmarkAction; + private ViewTableAction viewTableAction; + private RefreshBookmarkAction refreshBookmarkAction; + private ViewTableDetailsAction viewTableDetailsAction; + private NextSequenceAction nextSequenceAction; + private Action enableTableSizes; + private Action enableTableColumns; + private static BookmarkView instance = null; + private TreeViewer treeViewer; + private BookmarkContentProvider provider = + BookmarkContentProvider.getInstance(); + private Label status; + private SQLHelper helper = new SQLHelper(); + private boolean showTableSizes = false; + private boolean showTableColumns = false; + private BookmarkNode clipboard; + public synchronized static BookmarkView getInstance() { + return instance; + } + public Object getCurrent() { + return ((StructuredSelection) treeViewer.getSelection()).getFirstElement(); + } + public BookmarkNode getCurrentBookmark() { + return (BookmarkNode) getCurrent(); + } + public TableNode getCurrentTable() { + return (TableNode) getCurrent(); + } + public void deleteCurrent() { + provider.removeBookmark(getCurrentBookmark()); + treeViewer.refresh(); + } + public void refreshBookmarkData() { + BookmarkNode current = + (BookmarkNode) MultiSQLServer.getInstance().getConnected(); + BookmarkContentProvider provider = BookmarkContentProvider.getInstance(); + LogProxy log = LogProxy.getInstance(); + if (current != null) { + try { + Vector children = new Vector(); + setStatus(Messages.getString("bookmarkview.retrieveTableData")); //$NON-NLS-1$ + Vector tables = new Vector(); + try { + tables = helper.getTableList(current); + if (showTableSizes || showTableColumns) { + for (int i = 0; i < tables.size(); i++) { + TableNode table = (TableNode) tables.elementAt(i); + String name = + SQLHelper.getFullTableName(current, table.getName()); + if (showTableSizes) { + int size = helper.getSize(name); + table.setSize(size); + } + if (showTableColumns) { + Vector metaData = helper.getMetaData(table, name); + table.setMetadata(metaData); + } + } + } + } catch (FeatureNotSupported e) { + setStatus(Messages.getString("bookmarkview.noTables")); //$NON-NLS-1$ + } + setStatus(Messages.getString("bookmarkview.retrieveViewData")); //$NON-NLS-1$ + Vector views = new Vector(); + try { + views = helper.getViewList(current); + if (showTableSizes || showTableColumns) { + for (int i = 0; i < views.size(); i++) { + ViewNode view = (ViewNode) views.elementAt(i); + String name = SQLHelper.getFullTableName(current, view.getName()); + if (showTableSizes) { + int size = helper.getSize(name); + view.setSize(size); + } + if (showTableColumns) { + Vector metaData = helper.getMetaData(view, name); + view.setMetadata(metaData); + } + } + } + } catch (FeatureNotSupported e) { + setStatus(Messages.getString("bookmarkview.noViews")); //$NON-NLS-1$ + } + children.addAll(tables); + children.addAll(views); + setStatus(Messages.getString("bookmarkview.retrieveSeqData")); //$NON-NLS-1$ + try { + children.addAll(helper.getSequenceList(current)); + } catch (FeatureNotSupported e) { + setStatus(Messages.getString("bookmarkview.noSequences")); //$NON-NLS-1$ + } + provider.setChildren(current, children); + BookmarkView.getInstance().refresh(); + setStatus(Messages.getString("bookmarkview.done")); //$NON-NLS-1$ + } catch (NoSuchAdapterException e) { + setStatus(Messages.getString("bookmarkview.metaDataError")); //$NON-NLS-1$ + log.addText(SQLLogView.ERROR, "Error occurred: " + e.toString()); //$NON-NLS-1$ + e.printStackTrace(); + } + } + } + public void expandCurrent(BookmarkNode node) { + treeViewer.setExpandedState(node, true); + treeViewer.refresh(node, false); + } + public void refresh() { + treeViewer.refresh(); + } + public void disconnect() { + MultiSQLServer server = MultiSQLServer.getInstance(); + BookmarkNode current = (BookmarkNode) server.getConnected(); + if (current != null) { + setStatus(Messages.getString("bookmarkview.disconnect") + current.getName()); //$NON-NLS-1$ + MultiSQLServer.getInstance().disconnect(current); + BookmarkContentProvider provider = BookmarkContentProvider.getInstance(); + provider.setChildren(current, new Vector()); + BookmarkView.getInstance().refresh(); + setStatus(Messages.getString("bookmarkview.done")); //$NON-NLS-1$ + } + } + public void createPartControl(org.eclipse.swt.widgets.Composite parent) { + instance = this; + initActions(); + Composite main = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(1, false); + layout.horizontalSpacing = 0; + layout.verticalSpacing = 0; + main.setLayout(layout); + + enableTableSizes = new Action() { + public void run() { + showTableSizes = enableTableSizes.isChecked(); + refreshBookmarkData(); + } + }; + enableTableSizes.setText("Show Table Sizes"); + enableTableSizes.setChecked(false); + + enableTableColumns = new Action() { + public void run() { + showTableColumns = enableTableColumns.isChecked(); + refreshBookmarkData(); + } + }; + enableTableColumns.setText("Show Table Column Data"); + enableTableColumns.setChecked(false); + + IActionBars actionBars = getViewSite().getActionBars(); + actionBars.getMenuManager().add(enableTableSizes); + actionBars.getMenuManager().add(enableTableColumns); + + treeViewer = new TreeViewer(main); + treeViewer.setContentProvider(provider); + treeViewer.setLabelProvider(new BookmarkLabelProvider()); + treeViewer.setInput(Root.ROOT); + MenuManager manager = new MenuManager(); + manager.setRemoveAllWhenShown(true); + Menu fTextContextMenu = manager.createContextMenu(treeViewer.getControl()); + treeViewer.getControl().setMenu(fTextContextMenu); + treeViewer.addDoubleClickListener(new IDoubleClickListener() { + public void doubleClick(DoubleClickEvent event) { + Object sel = getCurrent(); + if (sel instanceof BookmarkNode) { + BookmarkNode node = (BookmarkNode) sel; + MultiSQLServer server = MultiSQLServer.getInstance(); + if (server.getConnected() == null + || !node.equals(server.getConnected())) { + connectAction.run(); + } + } else if (sel instanceof TableNode) { + viewTableAction.run(); + } else if (sel instanceof ViewNode) { + viewTableAction.run(); + } + } + }); + manager.addMenuListener(new IMenuListener() { + public void menuAboutToShow(IMenuManager mgr) { + Object sel = getCurrent(); + if (sel instanceof BookmarkNode) { + BookmarkNode node = (BookmarkNode) sel; + MultiSQLServer server = MultiSQLServer.getInstance(); + boolean connected = false; + if (server.getConnected() != null + && node.equals(server.getConnected())) { + connected = true; + } else { + connected = false; + } + if (connected) { + mgr.add(disconnectAction); + } else { + mgr.add(connectAction); + } + mgr.add(new Separator()); + mgr.add(newBookmarkAction); + mgr.add(editBookmarkAction); + mgr.add(deleteBookmarkAction); + mgr.add(new Separator()); + mgr.add(copyAction); + copyAction.setText("Copy"); + copyAction.setImageDescriptor(PHPEclipseSQLPlugin.getImageDescriptor("copy.gif")); //$NON-NLS-1$ + mgr.add(pasteAction); + pasteAction.setText("Paste"); + pasteAction.setImageDescriptor(PHPEclipseSQLPlugin.getImageDescriptor("paste.gif")); //$NON-NLS-1$ + if (connected) { + mgr.add(new Separator()); + mgr.add(refreshBookmarkAction); + } + } else if (sel instanceof TableNode || sel instanceof ViewNode) { + mgr.add(viewTableAction); + mgr.add(viewTableDetailsAction); + mgr.add(new Separator()); + mgr.add(newBookmarkAction); + } else if (sel instanceof SequenceNode) { + mgr.add(nextSequenceAction); + mgr.add(new Separator()); + mgr.add(newBookmarkAction); + } else { + mgr.add(newBookmarkAction); + } + } + }); + GridData gridData = new GridData(); + gridData.horizontalAlignment = GridData.FILL; + gridData.verticalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + gridData.grabExcessVerticalSpace = true; + treeViewer.getControl().setLayoutData(gridData); + status = new Label(main, SWT.NONE); + gridData = new GridData(); + gridData.horizontalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + status.setLayoutData(gridData); + + IActionBars bars = getViewSite().getActionBars(); + bars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copyAction); + bars.setGlobalActionHandler(IWorkbenchActionConstants.PASTE, pasteAction); + bars.setGlobalActionHandler( + IWorkbenchActionConstants.DELETE, + deleteBookmarkAction); + + IToolBarManager toolBar = getViewSite().getActionBars().getToolBarManager(); + toolBar.add(newBookmarkAction); + + status.setText(Messages.getString("bookmarkview.done")); //$NON-NLS-1$ + } + public void initActions() { + connectAction = new ConnectAction(); + connectAction.setText(Messages.getString("bookmarkview.connect")); //$NON-NLS-1$ + connectAction.setImageDescriptor(PHPEclipseSQLPlugin.getImageDescriptor("refresh.gif")); //$NON-NLS-1$ + connectAction.init(this); + disconnectAction = new DisconnectAction(); + disconnectAction.setText(Messages.getString("bookmarkview.disconnect")); //$NON-NLS-1$ + disconnectAction.setImageDescriptor(PHPEclipseSQLPlugin.getImageDescriptor("stop.gif")); //$NON-NLS-1$ + disconnectAction.init(this); + newBookmarkAction = new NewBookmarkAction(); + newBookmarkAction.setText(Messages.getString("bookmarkview.newBookmark")); //$NON-NLS-1$ + newBookmarkAction.setToolTipText( + Messages.getString("bookmarkview.newBookmark")); + newBookmarkAction.setImageDescriptor(PHPEclipseSQLPlugin.getImageDescriptor("bookmarks.gif")); //$NON-NLS-1$ + newBookmarkAction.init(this); + editBookmarkAction = new EditBookmarkAction(); + editBookmarkAction.setText(Messages.getString("bookmarkview.editBookmark")); //$NON-NLS-1$ + editBookmarkAction.setImageDescriptor(PHPEclipseSQLPlugin.getImageDescriptor("edit.gif")); //$NON-NLS-1$ + editBookmarkAction.init(this); + deleteBookmarkAction = new DeleteBookmarkAction(); + deleteBookmarkAction.setText(Messages.getString("bookmarkview.deleteBookmark")); //$NON-NLS-1$ + deleteBookmarkAction.setImageDescriptor(PHPEclipseSQLPlugin.getImageDescriptor("delete.gif")); //$NON-NLS-1$ + deleteBookmarkAction.init(this); + refreshBookmarkAction = new RefreshBookmarkAction(); + refreshBookmarkAction.setText(Messages.getString("bookmarkview.refresh")); //$NON-NLS-1$ + refreshBookmarkAction.setImageDescriptor(PHPEclipseSQLPlugin.getImageDescriptor("refresh.gif")); //$NON-NLS-1$ + refreshBookmarkAction.init(this); + viewTableAction = new ViewTableAction(); + viewTableAction.setText(Messages.getString("bookmarkview.viewTable")); //$NON-NLS-1$ + viewTableAction.setImageDescriptor(PHPEclipseSQLPlugin.getImageDescriptor("table.gif")); //$NON-NLS-1$ + viewTableAction.init(this); + viewTableDetailsAction = new ViewTableDetailsAction(); + viewTableDetailsAction.setText(Messages.getString("bookmarkview.viewTableDetails")); //$NON-NLS-1$ + viewTableDetailsAction.setImageDescriptor(PHPEclipseSQLPlugin.getImageDescriptor("table.gif")); //$NON-NLS-1$ + viewTableDetailsAction.init(this); + nextSequenceAction = new NextSequenceAction(); + nextSequenceAction.setText(Messages.getString("bookmarkview.nextSequence")); + nextSequenceAction.setImageDescriptor( + PHPEclipseSQLPlugin.getImageDescriptor("table.gif")); + nextSequenceAction.init(this); + } + public void setFocus() { + } + private Action copyAction = new Action() { + public void run() { + Object sel = getCurrent(); + if (sel instanceof BookmarkNode) { + clipboard = (BookmarkNode) sel; + } + } + }; + private Action pasteAction = new Action() { + public void run() { + if (clipboard != null) { + BookmarkNode node = new BookmarkNode(clipboard); + node.setName("Copy of " + node.getName()); + provider.addBookmark(node); + refresh(); + } + } + }; + public void addNewBookmark(BookmarkNode bookmark) { + provider.addBookmark(bookmark); + treeViewer.refresh(); + } + public void setStatus(String text) { + status.setText(text); + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/LogConstants.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/LogConstants.java new file mode 100644 index 0000000..344f04e --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/LogConstants.java @@ -0,0 +1,9 @@ +package net.sourceforge.phpdt.sql.view; + +public interface LogConstants { + public int QUERY = 1; + public int ERROR = 2; + public int RESULTS = 3; + public int WARNING = 4; + public int DEFAULT = 5; +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/LogProxy.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/LogProxy.java new file mode 100644 index 0000000..a97de7f --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/LogProxy.java @@ -0,0 +1,20 @@ +package net.sourceforge.phpdt.sql.view; + +public class LogProxy implements LogConstants { + private static LogProxy instance = null; + private SQLLogView log = null; + private LogProxy() { + } + public synchronized static LogProxy getInstance() { + if (instance == null) { + instance = new LogProxy(); + } + return instance; + } + public void addText(int type, String text) { + log = SQLLogView.getInstance(); + if (log != null) { + log.addText(type, text); + } + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/Messages.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/Messages.java new file mode 100644 index 0000000..601d48d --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/Messages.java @@ -0,0 +1,22 @@ +package net.sourceforge.phpdt.sql.view; + +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +public class Messages { + + private static final String BUNDLE_NAME = "net.sourceforge.phpdt.sql.PHPEclipseSQLResources"; //$NON-NLS-1$ + + private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); + + private Messages() { + } + + public static String getString(String key) { + try { + return RESOURCE_BUNDLE.getString(key); + } catch (MissingResourceException e) { + return '!' + key + '!'; + } + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/PHPSourceConsole.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/PHPSourceConsole.java new file mode 100644 index 0000000..0578019 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/PHPSourceConsole.java @@ -0,0 +1,156 @@ +package net.sourceforge.phpdt.sql.view; + +/********************************************************************** +Copyright (c) 2000, 2002 IBM Corp. and others. +All rights reserved. This program and the accompanying materials +are made available under the terms of the Common Public License v1.0 +which accompanies this distribution, and is available at +http://www.eclipse.org/legal/cpl-v10.html + +Contributors: + IBM Corporation - Initial implementation + Klaus Hartlage - www.eclipseproject.de +**********************************************************************/ +import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin; + +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.Document; +import org.eclipse.jface.text.TextViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.StyledText; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.part.ViewPart; + +/** + * The PHPSourceConsole is used to display the output from the PHP SQL wizards + * @see ViewPart + */ +public class PHPSourceConsole extends ViewPart { + + public static final String CONSOLE_ID = + "net.sourceforge.phpdt.sql.view.phpsourceconsoleview"; + + private TextViewer viewer = null; + private Document document = null; + + /** + * The constructor. + */ + public PHPSourceConsole() { + } + + /** + * Insert the method's description here. + * @see ViewPart#createPartControl + */ + public void createPartControl(Composite parent) { + viewer = new TextViewer(parent, SWT.WRAP | SWT.V_SCROLL | SWT.H_SCROLL); + GridData viewerData = new GridData(GridData.FILL_BOTH); + viewer.getControl().setLayoutData(viewerData); + viewer.setEditable(false); + + StyledText widget = viewer.getTextWidget(); + widget.setFont( + JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT)); + Action cutAction = new Action() { + public void run() { + viewer.getTextWidget().cut(); + } + }; + Action copyAction = new Action() { + public void run() { + viewer.getTextWidget().copy(); + } + }; + Action pasteAction = new Action() { + public void run() { + viewer.getTextWidget().paste(); + } + }; + + IActionBars bars = this.getViewSite().getActionBars(); + bars.setGlobalActionHandler(IWorkbenchActionConstants.CUT, cutAction); + bars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copyAction); + bars.setGlobalActionHandler(IWorkbenchActionConstants.PASTE, pasteAction); + } + + /** + * Insert the method's description here. + * @see ViewPart#setFocus + */ + public void setFocus() { + } + + /** + * Set the text for the viewer + */ + private void setOutputText(String text) { + document = new Document(text); + viewer.setDocument(document); + } + + private void appendOutputText(String text) { + try { + if (document == null) { + document = new Document(text); + viewer.setDocument(document); + } + document.replace(document.getLength(), 0, text); + } catch (BadLocationException e) { + } + // viewer.setDocument(document); + } + + public static PHPSourceConsole getInstance() { + IWorkbenchPage page = + PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + PHPSourceConsole console = (PHPSourceConsole) page.findView(PHPSourceConsole.CONSOLE_ID); + // if (PHPeclipsePlugin.SHOW_OUTPUT_IN_CONSOLE.getDefault().getPreferenceStore().getBoolean(PHPeclipsePlugin.SHOW_OUTPUT_IN_CONSOLE) == true) { + + try { + page.showView(PHPSourceConsole.CONSOLE_ID); + if (console == null) { + console = (PHPSourceConsole) page.findView(PHPSourceConsole.CONSOLE_ID); + } + } catch (PartInitException e) { + PHPEclipseSQLPlugin.getDefault().getLog().log( + new Status( + IStatus.ERROR, + PHPEclipseSQLPlugin.PLUGIN_ID, + 0, + Messages.getString("sqlconsole.viewopeningproblem"), + e)); + } + + // } + return console; + } + + /** + * Prints out the string represented by the string buffer + */ + public synchronized void print(String output) { + appendOutputText(output); + } + + /** + * Prints out the string represented by the string buffer + */ + public synchronized void println(String output) { + appendOutputText(output+'\n'); + } + + public synchronized void clear() { + setOutputText(""); + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/QueryHistoryView.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/QueryHistoryView.java new file mode 100644 index 0000000..4b250fd --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/QueryHistoryView.java @@ -0,0 +1,65 @@ +package net.sourceforge.phpdt.sql.view; + +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.part.ViewPart; + +import net.sourceforge.phpdt.sql.view.bookmark.Root; +import net.sourceforge.phpdt.sql.view.query.QueryContentProvider; +import net.sourceforge.phpdt.sql.view.query.QueryNode; + +public class QueryHistoryView extends ViewPart { + private static QueryHistoryView instance; + private QueryContentProvider provider = new QueryContentProvider(); + private TreeViewer treeViewer; + + public static QueryHistoryView getInstance() { + return instance; + } + public Object getCurrent() { + StructuredSelection selection = (StructuredSelection) treeViewer.getSelection(); + if (selection != null) { + return selection.getFirstElement(); + } + return null; + } + public void createPartControl(Composite parent) { + instance = this; + treeViewer = new TreeViewer(parent); + treeViewer.setContentProvider(provider); + treeViewer.setLabelProvider(new BookmarkLabelProvider()); + treeViewer.setInput(Root.ROOT); + treeViewer.addDoubleClickListener(new IDoubleClickListener() { + public void doubleClick(DoubleClickEvent event) { + Object sel = getCurrent(); + if (sel instanceof QueryNode) { + QueryNode node = (QueryNode) sel; + SQLQueryView.getInstance().setQuery(node.getQuery()); + } + } + }); + treeViewer.addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + Object sel = getCurrent(); + if (sel != null) { + // preview goes here + } + } + } + ); + } + + public void addQuery(String query) { + provider.addQuery(query); + treeViewer.refresh(); + } + + public void setFocus() { + } +} + diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/SQLLogView.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/SQLLogView.java new file mode 100644 index 0000000..66552d9 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/SQLLogView.java @@ -0,0 +1,108 @@ +package net.sourceforge.phpdt.sql.view; + +import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.StyleRange; +import org.eclipse.swt.custom.StyledText; +import org.eclipse.swt.custom.StyledTextContent; +import org.eclipse.swt.events.DisposeEvent; +import org.eclipse.swt.events.DisposeListener; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.part.ViewPart; + +public class SQLLogView extends ViewPart implements LogConstants { + private Color QUERY_COLOR; + private Color WARNING_COLOR; + private Color DEFAULT_COLOR; + private Color ERROR_COLOR; + private Color RESULTS_COLOR; + private StyledText widget; + private static SQLLogView instance = null; + private static final String newLine = "\n"; + public static SQLLogView getInstance() { + return instance; + } + + public void createPartControl(Composite parent) { + instance = this; + QUERY_COLOR = new Color(parent.getShell().getDisplay(), 0, 255, 0); + ERROR_COLOR = new Color(parent.getShell().getDisplay(), 255, 0, 0); + RESULTS_COLOR = new Color(parent.getShell().getDisplay(), 0, 0, 255); + DEFAULT_COLOR = new Color(parent.getShell().getDisplay(), 0, 0, 0); + WARNING_COLOR = new Color(parent.getShell().getDisplay(), 255, 127, 0); + widget = new StyledText(parent, SWT.H_SCROLL | SWT.V_SCROLL); + IActionBars bars = this.getViewSite().getActionBars(); + bars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copyAction); + bars.setGlobalActionHandler(IWorkbenchActionConstants.SELECT_ALL, selectAllAction); + + IToolBarManager toolBar = getViewSite().getActionBars().getToolBarManager(); + clearAction.setImageDescriptor(PHPEclipseSQLPlugin.getImageDescriptor("clear.gif")); + clearAction.setToolTipText("Clear Log"); + toolBar.add(clearAction); + + widget.setEditable(false); + + widget.addDisposeListener(new DisposeListener() { + public void widgetDisposed(DisposeEvent e) { + instance = null; + } + }); + } + + public void addText(int style, String text) { + text = text + newLine; + int start = widget.getText().length(); + StyleRange styleRange = new StyleRange(); + styleRange.start = start; + styleRange.length = text.length(); + if (style == QUERY) { + styleRange.foreground = QUERY_COLOR; + } else if (style == ERROR) { + styleRange.foreground = ERROR_COLOR; + } else if (style == RESULTS) { + styleRange.foreground = RESULTS_COLOR; + } else if (style == WARNING) { + styleRange.foreground = WARNING_COLOR; + } else { + styleRange.foreground = DEFAULT_COLOR; + } + widget.append(text); + widget.setStyleRange(styleRange); + revealEndOfDocument(); + } + + protected void revealEndOfDocument() { + StyledTextContent doc= widget.getContent(); + int docLength= doc.getCharCount(); + if (docLength > 0) { + widget.setCaretOffset(docLength); + widget.showSelection(); + } + } + + public void setFocus() { + widget.setFocus(); + } + + private Action copyAction = new Action() { + public void run() { + widget.copy(); + } + }; + private Action selectAllAction = new Action() { + public void run() { + widget.selectAll(); + } + }; + private Action clearAction = new Action() { + public void run() { + widget.setText(""); + } + }; +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/SQLQueryView.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/SQLQueryView.java new file mode 100644 index 0000000..4756d02 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/SQLQueryView.java @@ -0,0 +1,405 @@ +package net.sourceforge.phpdt.sql.view; + +import java.util.LinkedList; +import java.util.NoSuchElementException; +import java.util.Vector; + +import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin; + +import org.eclipse.jface.action.Action; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.ExtendedModifyEvent; +import org.eclipse.swt.custom.ExtendedModifyListener; +import org.eclipse.swt.custom.StyleRange; +import org.eclipse.swt.custom.StyledText; +import org.eclipse.swt.dnd.Clipboard; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.ProgressBar; +import org.eclipse.swt.widgets.ToolBar; +import org.eclipse.swt.widgets.ToolItem; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.part.ViewPart; + +import net.sourceforge.phpdt.sql.actions.ExecuteAction; +import net.sourceforge.phpdt.sql.actions.ExportQueryAction; +import net.sourceforge.phpdt.sql.actions.ImportQueryAction; +import net.sourceforge.phpdt.sql.sql.MultiSQLServer; +import net.sourceforge.phpdt.sql.parser.SQLLexx; +import net.sourceforge.phpdt.sql.parser.Token; + +public class SQLQueryView extends ViewPart { + private ExecuteAction executeAction; + private ImportQueryAction importQueryAction; + private ExportQueryAction exportQueryAction; + private Clipboard clip; + private Label statusImage; + private Label status; + private ProgressBar progress; + private static SQLQueryView instance = null; + private StyledText widget; + private Color STRING_LITERAL; + private Color KEYWORD; + private Color COMMENT; + private Color NUMERIC; + private Color DEFAULT; + private long parseTime = 0; + private long fullTime = 0; + public SQLQueryView() { + super(); + } + public void setFocus() { + widget.setFocus(); + } + public static SQLQueryView getInstance() { + return instance; + } + + public void createPartControl(org.eclipse.swt.widgets.Composite parent) { + instance = this; + initActions(); + KEYWORD = new Color(parent.getShell().getDisplay(), 126, 0, 75); + STRING_LITERAL = new Color(parent.getShell().getDisplay(), 0, 0, 255); + COMMENT = new Color(parent.getShell().getDisplay(), 88, 148, 64); + NUMERIC = new Color(parent.getShell().getDisplay(), 255, 0, 0); + DEFAULT = new Color(parent.getShell().getDisplay(), 0, 0, 0); + clip = new Clipboard(getSite().getShell().getDisplay()); + Composite main = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(1, false); + layout.horizontalSpacing = 0; + layout.verticalSpacing = 0; + main.setLayout(layout); + ToolBar toolbar = new ToolBar(main, SWT.HORIZONTAL); + ToolItem item = new ToolItem(toolbar, SWT.PUSH); + item.setImage(PHPEclipseSQLPlugin.getImage("play.gif")); //$NON-NLS-1$ + item.setToolTipText(Messages.getString("sqlqueryview.executeQuery")); //$NON-NLS-1$ + item.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + executeAction.run(); + } + }); + item = new ToolItem(toolbar, SWT.SEPARATOR); + item = new ToolItem(toolbar, SWT.PUSH); + item.setImage(PHPEclipseSQLPlugin.getImage("import.gif")); //$NON-NLS-1$ + item.setToolTipText(Messages.getString("sqlqueryview.importQuery")); //$NON-NLS-1$ + item.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + importQueryAction.run(); + } + }); + item = new ToolItem(toolbar, SWT.PUSH); + item.setImage(PHPEclipseSQLPlugin.getImage("export.gif")); //$NON-NLS-1$ + item.setToolTipText(Messages.getString("sqlqueryview.exportQuery")); //$NON-NLS-1$ + item.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + exportQueryAction.run(); + } + }); + item = new ToolItem(toolbar, SWT.PUSH); + item.setImage(PHPEclipseSQLPlugin.getImage("clear.gif")); //$NON-NLS-1$ + item.setToolTipText(Messages.getString("sqlqueryview.clear")); //$NON-NLS-1$ + item.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + setQuery(""); + } + }); + + item = new ToolItem(toolbar, SWT.SEPARATOR); + + item = new ToolItem(toolbar, SWT.PUSH); + final ToolItem commit = item; + item.setImage(PHPEclipseSQLPlugin.getImage("commit.gif")); //$NON-NLS-1$ + item.setToolTipText("Commit"); + item.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + MultiSQLServer.getInstance().commit(); + } + }); + item.setEnabled(false); + + item = new ToolItem(toolbar, SWT.PUSH); + final ToolItem rollback = item; + item.setImage(PHPEclipseSQLPlugin.getImage("rollback.gif")); //$NON-NLS-1$ + item.setToolTipText("RollBack"); + item.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + MultiSQLServer.getInstance().rollback(); + } + }); + item.setEnabled(false); + + item = new ToolItem(toolbar, SWT.CHECK); + final ToolItem autocommit = item; + item.setImage(PHPEclipseSQLPlugin.getImage("autocommit.gif")); //$NON-NLS-1$ + item.setToolTipText("AutoCommit"); + item.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + MultiSQLServer.getInstance().setAutoCommit(autocommit.getSelection()); + if (autocommit.getSelection()) { + commit.setEnabled(false); + rollback.setEnabled(false); + } else { + commit.setEnabled(true); + rollback.setEnabled(true); + } + } + }); + item.setSelection(true); + + widget = new StyledText(main, SWT.H_SCROLL | SWT.V_SCROLL); + + IActionBars bars = this.getViewSite().getActionBars(); + bars.setGlobalActionHandler(IWorkbenchActionConstants.CUT, cutAction); + bars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copyAction); + bars.setGlobalActionHandler(IWorkbenchActionConstants.PASTE, pasteAction); + bars.setGlobalActionHandler(IWorkbenchActionConstants.SELECT_ALL, selectAllAction); + + widget.setEditable(true); + widget.addExtendedModifyListener(modifyListener); + + GridData gridData = new GridData(); + gridData.horizontalAlignment = GridData.FILL; + gridData.verticalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + gridData.grabExcessVerticalSpace = true; + widget.setLayoutData(gridData); + + Composite bottomStatus = new Composite(main, SWT.NONE); + gridData = new GridData(); + gridData.horizontalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + bottomStatus.setLayoutData(gridData); + + GridLayout horizontal = new GridLayout(3, false); + layout.horizontalSpacing = 0; + layout.verticalSpacing = 0; + layout.marginHeight = 0; + layout.marginWidth = 0; + bottomStatus.setLayout(horizontal); + + statusImage = new Label(bottomStatus, SWT.NONE); + status = new Label(bottomStatus, SWT.NONE); + gridData = new GridData(); + gridData.horizontalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + status.setLayoutData(gridData); + + progress = new ProgressBar(bottomStatus, SWT.HORIZONTAL); + + status.setText(Messages.getString("sqlqueryview.done")); + statusImage.setImage(PHPEclipseSQLPlugin.getImage("success.gif")); + progress.setMinimum(0); + } + + public void setProgress(int increment, int max) { + progress.setMaximum(max); + progress.setSelection(increment); + } + + private void initActions() { + executeAction = new ExecuteAction(); + executeAction.init(this); + importQueryAction = new ImportQueryAction(); + importQueryAction.init(this); + exportQueryAction = new ExportQueryAction(); + exportQueryAction.init(this); + } + + public void setStatus(String text) { + statusImage.setImage(null); + status.setText(text); + } + + public void setStatus(Image img, String text) { + statusImage.setImage(img); + status.setText(text); + } + + public String getQuery() { + return widget.getText(); + } + + public void setQuery(String text) { + widget.setText(text); + } + + private String[] keywords = {"SELECT", "DROP", "FROM", + "INSERT", "INTO", "VALUES", + "CREATE", "TABLE", "VIEW", "SEQUENCE", + "UPDATE", "SET", "WHERE"}; + + SyntaxHighlighter textUpdater = new SyntaxHighlighter(); + + private class UpdateRequest { + public UpdateRequest(String text, int start, int length) { + this.text = text; + this.start = start; + this.length = length; + } + public String text; + public int start; + public int length; + } + + private class SyntaxHighlighter extends Thread { + private boolean running = true; + private LinkedList requests = new LinkedList(); + public SyntaxHighlighter() { + super(); + setPriority(Thread.MIN_PRIORITY); + start(); + } + public synchronized void updateText(String text, int start, int length) { + requests.add(new UpdateRequest(text, start, length)); + notify(); + } + public synchronized void shutdown() { + running = false; + interrupt(); + } + public void run() { + while (running) { + try { + synchronized (this) { + if (requests.size() <= 0) { + wait(); + } else { + Thread.sleep(10); + } + } + UpdateRequest request = (UpdateRequest) requests.removeFirst(); + String text = request.text.toUpperCase(); + int dirtyStart = request.start; + int dirtyEnd = request.start + request.length; + StyleRange styleRange; + long startTime = System.currentTimeMillis(); + Vector tokens = SQLLexx.parse(text); + long subTime = System.currentTimeMillis(); + Vector styles = new Vector(); + int min = Integer.MAX_VALUE; + int max = 0; + for (int i = 0; i < tokens.size(); i++) { + Token t = (Token) tokens.elementAt(i); + String value = t.getValue(); + int start = t.getStart(); + int length = t.getEnd() - t.getStart(); + styleRange = new StyleRange(); + styleRange.start = start; + styleRange.length = value.length(); + styleRange.fontStyle = SWT.NULL; + styleRange.foreground = DEFAULT; + boolean upper = start <= dirtyEnd && start >= dirtyStart; + boolean lower = ((start + length) >= dirtyStart && (start + length) <= dirtyEnd); + boolean both = (start <= dirtyStart && (start + length) >= dirtyEnd); + if (upper || lower || both) { + min = Math.min(start, min); + max = Math.max(max, start + length); + if (t.getType() == t.IDENTIFIER) { + boolean keyword = false; + for (int index = 0; index < keywords.length; index++) { + if (value.equals(keywords[index])) { + keyword = true; + } + } + if (keyword) { + styleRange.fontStyle = SWT.BOLD; + styleRange.foreground = KEYWORD; + } else { + styleRange.foreground = DEFAULT; + } + styles.addElement(styleRange); + } else if (t.getType() == t.COMMENT) { + styleRange.foreground = COMMENT; + styles.addElement(styleRange); + } else if (t.getType() == t.LITERAL) { + styleRange.foreground = STRING_LITERAL; + styles.addElement(styleRange); + } else if (t.getType() == t.NUMERIC) { + styleRange.foreground = NUMERIC; + styles.addElement(styleRange); + } else { + styles.addElement(styleRange); + } + } + } + StyleRange[] ranges = new StyleRange[styles.size()]; + for (int k = 0; k < ranges.length; k++) { + ranges[k] = (StyleRange) styles.elementAt(k); + } + if (max >= 0 && ranges.length > 0) { + setStyles(ranges, min, max - min); + } + long endTime = System.currentTimeMillis(); + parseTime = subTime - startTime; + fullTime = endTime - startTime; + } catch (NoSuchElementException e) { + // ignore a missing request + } catch (InterruptedException e) { + // ignore any interruptions + } + } + } + } + public void setStyles(final StyleRange[] styles, final int start, final int length) { + getViewSite().getShell().getDisplay().asyncExec(new Runnable() { + public void run() { + try { + for (int i = 0; i < styles.length; i++) { + widget.setStyleRange(styles[i]); + } + } catch (Throwable t) { + System.out.println("Error with styles: " + t.getClass().toString()); + // ignore any errors + } + } + }); + } + + ExtendedModifyListener modifyListener = new ExtendedModifyListener() { + public void modifyText(ExtendedModifyEvent event) { + textUpdater.updateText(getQuery(), event.start, event.length); + } + }; + + private Action cutAction = new Action() { + public void run() { + widget.cut(); + } + }; + private Action copyAction = new Action() { + public void run() { + widget.copy(); + } + }; + private Action pasteAction = new Action() { + public void run() { + widget.paste(); + } + }; + private Action selectAllAction = new Action() { + public void run() { + widget.selectAll(); + } + }; +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/TableView.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/TableView.java new file mode 100644 index 0000000..97c351f --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/TableView.java @@ -0,0 +1,439 @@ +package net.sourceforge.phpdt.sql.view; + +import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.swt.SWT; +import org.eclipse.swt.dnd.Clipboard; +import org.eclipse.swt.dnd.TextTransfer; +import org.eclipse.swt.dnd.Transfer; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.TabFolder; +import org.eclipse.swt.widgets.TabItem; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.TableItem; +import org.eclipse.swt.widgets.ToolBar; +import org.eclipse.swt.widgets.ToolItem; +import org.eclipse.ui.ISelectionListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.part.ViewPart; + +import net.sourceforge.phpdt.sql.actions.CloseTableAction; +import net.sourceforge.phpdt.sql.actions.RefreshTableAction; +import net.sourceforge.phpdt.sql.sql.SQLResults; +import net.sourceforge.phpdt.sql.sql.TableRow; +import net.sourceforge.phpdt.sql.view.tableview.TableAdapter; +import net.sourceforge.phpdt.sql.wizards.DeleteRowPage; +import net.sourceforge.phpdt.sql.wizards.InsertRowPage; +import net.sourceforge.phpdt.sql.wizards.PHPSelectRowPage; +import net.sourceforge.phpdt.sql.wizards.SQLRowWizard; +import net.sourceforge.phpdt.sql.wizards.SortFilterPage; +import net.sourceforge.phpdt.sql.wizards.UpdateRowPage; +import net.sourceforge.phpdt.sql.wizards.PHPSelectRowPage; + +public class TableView extends ViewPart implements ISelectionListener { + public static String TABLEVIEW_ID = "net.sourceforge.phpdt.sql.view.tableview"; + private Clipboard clip; + private RefreshTableAction refreshTableAction; + private CloseTableAction closeTableAction; + private static TableView instance = null; + private TabFolder tabs; + private Composite parent; + public TableView() { + super(); + } + public void setFocus() { + } + public static TableView getInstance() { + return instance; + } + public void closeCurrent() { + TabItem item = tabs.getItem(tabs.getSelectionIndex()); + item.dispose(); + } + public void refreshCurrent() { + TabItem item = tabs.getItem(tabs.getSelectionIndex()); + TableAdapter adapter = (TableAdapter) item.getData(); + String table = adapter.getTable(); + if (table == null) { + loadTable(item, null, null, true, true); + } else { + loadTable(item, null, null, true, true); + } + } + public void loadQuery(SQLResults results) { + loadTable(null, null, results, true, false); + } + public void loadTable(String table) { + loadTable(null, table, null, false, true); + } + public void loadTable( + TabItem tabItem, + String entity, + SQLResults results, + boolean query, + boolean reload) { + TableAdapter adapter; + if (tabItem == null) { + tabItem = new TabItem(tabs, SWT.NONE); + if (query) { + adapter = TableAdapter.createFromQuery(results); + } else { + adapter = TableAdapter.createFromTable(entity); + } + tabItem.setData(adapter); + } else { + adapter = (TableAdapter) tabItem.getData(); + } + + final TableAdapter ta = adapter; + + Composite main = new Composite(tabs, SWT.NONE); + GridLayout layout = new GridLayout(1, false); + layout.horizontalSpacing = 0; + layout.verticalSpacing = 0; + main.setLayout(layout); + + // load up main + ToolBar toolbar = new ToolBar(main, SWT.HORIZONTAL); + final Table table = new Table(main, SWT.FULL_SELECTION | SWT.MULTI); + final Label label = new Label(main, SWT.NULL); + + final Action copyAction = new Action() { + public void run() { + TableItem items[] = table.getSelection(); + StringBuffer text = new StringBuffer(); + for (int i = 0; i < items.length; i++) { + int columns = table.getColumnCount(); + for (int col = 0; col < columns; col++) { + text.append(items[i].getText(col)); + text.append('\t'); + } + text.append('\n'); + } + clip.setContents( + new Object[] { text.toString()}, + new Transfer[] { TextTransfer.getInstance()}); + } + }; + final Action selectAllAction = new Action() { + public void run() { + table.selectAll(); + } + }; + + // load toobar + ToolItem toolItem = new ToolItem(toolbar, SWT.PUSH); + toolItem.setImage(PHPEclipseSQLPlugin.getImage("refresh.gif")); //$NON-NLS-1$ + toolItem.setToolTipText(Messages.getString("tableview.refresh")); //$NON-NLS-1$ + toolItem.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + refreshTableAction.run(); + } + }); + toolItem = new ToolItem(toolbar, SWT.PUSH); + toolItem.setImage(PHPEclipseSQLPlugin.getImage("copy.gif")); //$NON-NLS-1$ + toolItem.setToolTipText(Messages.getString("tableview.copy")); //$NON-NLS-1$ + toolItem.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + copyAction.run(); + } + }); + toolItem = new ToolItem(toolbar, SWT.PUSH); + toolItem.setImage(PHPEclipseSQLPlugin.getImage("table.gif")); //$NON-NLS-1$ + toolItem.setToolTipText(Messages.getString("tableview.selectAll")); //$NON-NLS-1$ + toolItem.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + selectAllAction.run(); + } + }); + + ToolItem filter = new ToolItem(toolbar, SWT.PUSH); + filter.setImage(PHPEclipseSQLPlugin.getImage("filter.gif")); //$NON-NLS-1$ + filter.setToolTipText(Messages.getString("tableview.filterSort")); //$NON-NLS-1$ + + toolItem = new ToolItem(toolbar, SWT.SEPARATOR); + + final ToolItem fullMode = new ToolItem(toolbar, SWT.PUSH | SWT.CHECK); + + final ToolItem previous = new ToolItem(toolbar, SWT.PUSH); + final ToolItem next = new ToolItem(toolbar, SWT.PUSH); + + fullMode.setImage(PHPEclipseSQLPlugin.getImage("fulldata.gif")); + fullMode.setToolTipText(Messages.getString("tableview.showAll")); //$NON-NLS-1$ + fullMode.setSelection(false); + fullMode.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + if (ta.getPageSize() == Integer.MAX_VALUE) { + ta.resetMode(); + } else { + ta.fullMode(); + } + ta.loadData(); + table.removeAll(); + for (int i = table.getColumnCount() - 1; i >= 0; i--) { + table.getColumn(i).dispose(); + } + ta.loadTable(table); + label.setText(ta.getStatusString()); + previous.setEnabled(ta.hasPreviousPage()); + next.setEnabled(ta.hasNextPage()); + } + }); + previous.setImage(PHPEclipseSQLPlugin.getImage("previous.gif")); + previous.setToolTipText("Previous"); + previous.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + ta.previousPage(); + ta.loadData(); + table.removeAll(); + for (int i = table.getColumnCount() - 1; i >= 0; i--) { + table.getColumn(i).dispose(); + } + ta.loadTable(table); + label.setText(ta.getStatusString()); + previous.setEnabled(ta.hasPreviousPage()); + next.setEnabled(ta.hasNextPage()); + } + }); + next.setImage(PHPEclipseSQLPlugin.getImage("next.gif")); + next.setToolTipText("Next"); + next.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + ta.nextPage(); + ta.loadData(); + table.removeAll(); + for (int i = table.getColumnCount() - 1; i >= 0; i--) { + table.getColumn(i).dispose(); + } + ta.loadTable(table); + label.setText(ta.getStatusString()); + previous.setEnabled(ta.hasPreviousPage()); + next.setEnabled(ta.hasNextPage()); + } + }); + + toolItem = new ToolItem(toolbar, SWT.SEPARATOR); + + toolItem = new ToolItem(toolbar, SWT.PUSH); + toolItem.setImage(PHPEclipseSQLPlugin.getImage("close.gif")); //$NON-NLS-1$ + toolItem.setToolTipText(Messages.getString("tableview.close")); //$NON-NLS-1$ + toolItem.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + closeTableAction.run(); + } + }); + + // load table + if (reload) { + adapter.resetOffset(); + adapter.loadData(); + } + adapter.loadTable(table); + String tableName = adapter.getTable(); + if (tableName != null) { + tabItem.setText(tableName); + } else { + tabItem.setText(adapter.getQuery()); + } + + previous.setEnabled(adapter.hasPreviousPage()); + next.setEnabled(adapter.hasNextPage()); + label.setText(ta.getStatusString()); + + GridData gridData = new GridData(); + gridData.horizontalAlignment = GridData.FILL; + gridData.verticalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + gridData.grabExcessVerticalSpace = true; + table.setLayoutData(gridData); + + gridData = new GridData(); + gridData.horizontalAlignment = GridData.FILL; + label.setLayoutData(gridData); + + // create empty table row + TableColumn[] columns = table.getColumns(); + String columnNames[] = new String[columns.length]; + for (int i = 0; i < columns.length; i++) { + columnNames[i] = columns[i].getText(); + } + String data[] = new String[columnNames.length]; + for (int i = 0; i < columns.length; i++) { + data[i] = ""; + } + final TableRow emptyRow = new TableRow(ta.getTable(), columnNames, data); + + filter.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + SortFilterPage page = new SortFilterPage(""); + SQLRowWizard wizard = new SQLRowWizard(); + wizard.init("Filter and Sort", page, emptyRow, ta); + WizardDialog dialog = new WizardDialog(getSite().getShell(), wizard); + dialog.open(); + } + }); + + final Action defaultEncodingAction = new Action() { + public void run() { + ta.setEncoding(TableAdapter.DEFAULT); + } + }; + defaultEncodingAction.setText(Messages.getString("tableview.defaultEncoding")); //$NON-NLS-1$ + final Action UTF8EncodingAction = new Action() { + public void run() { + ta.setEncoding(TableAdapter.UTF_8); + } + }; + UTF8EncodingAction.setText(Messages.getString("tableview.UTF8Encoding")); //$NON-NLS-1$ + final Action UTF16EncodingAction = new Action() { + public void run() { + ta.setEncoding(TableAdapter.UTF_16); + } + }; + UTF16EncodingAction.setText(Messages.getString("tableview.UTF16Encoding")); //$NON-NLS-1$ + + IMenuListener menuListener = new IMenuListener() { + public void menuAboutToShow(IMenuManager mgr) { + if (ta.getTable() != null) { + TableItem[] selection = table.getSelection(); + TableColumn[] columns = table.getColumns(); + String columnNames[] = new String[columns.length]; + for (int i = 0; i < columns.length; i++) { + columnNames[i] = columns[i].getText(); + } + String data[] = new String[columnNames.length]; + if (selection != null && selection.length > 0) { + TableItem sel = selection[0]; + for (int i = 0; i < columns.length; i++) { + data[i] = sel.getText(i); + } + } else { + for (int i = 0; i < columns.length; i++) { + data[i] = ""; + } + } + final TableRow row = new TableRow(ta.getTable(), columnNames, data); + Action updateAction = new Action() { + public void run() { + UpdateRowPage page = new UpdateRowPage(""); + SQLRowWizard wizard = new SQLRowWizard(); + wizard.init("Update Row", page, row, ta); + WizardDialog dialog = + new WizardDialog(getSite().getShell(), wizard); + dialog.open(); + } + }; + updateAction.setText(Messages.getString("tableview.update")); //$NON-NLS-1$ + Action insertAction = new Action() { + public void run() { + InsertRowPage page = new InsertRowPage(""); + SQLRowWizard wizard = new SQLRowWizard(); + wizard.init("Insert Row", page, row, ta); + WizardDialog dialog = + new WizardDialog(getSite().getShell(), wizard); + dialog.open(); + } + }; + insertAction.setText(Messages.getString("tableview.insert")); //$NON-NLS-1$ + Action deleteAction = new Action() { + public void run() { + DeleteRowPage page = new DeleteRowPage(""); + SQLRowWizard wizard = new SQLRowWizard(); + wizard.init("Delete Row", page, row, ta); + WizardDialog dialog = + new WizardDialog(getSite().getShell(), wizard); + dialog.open(); + } + }; + deleteAction.setText(Messages.getString("tableview.delete")); //$NON-NLS-1$ + + Action phpSelectAction = new Action() { + public void run() { + PHPSelectRowPage page = new PHPSelectRowPage(""); + SQLRowWizard wizard = new SQLRowWizard(); + wizard.init("PHP Select Generation", page, row, ta); + WizardDialog dialog = + new WizardDialog(getSite().getShell(), wizard); + dialog.open(); + } + }; + phpSelectAction.setText(Messages.getString("tableview.phpselect")); //$NON-NLS-1$ + + mgr.add(phpSelectAction); + + mgr.add(insertAction); + mgr.add(updateAction); + mgr.add(deleteAction); + + + } + mgr.add(defaultEncodingAction); + mgr.add(UTF8EncodingAction); + mgr.add(UTF16EncodingAction); + } + }; + + // final setup + MenuManager manager = new MenuManager(); + manager.setRemoveAllWhenShown(true); + Menu fTextContextMenu = manager.createContextMenu(table); + table.setMenu(fTextContextMenu); + table.setLinesVisible(true); + manager.addMenuListener(menuListener); + + tabItem.setControl(main); + tabs.setSelection(tabs.indexOf(tabItem)); + } + + public void createPartControl(Composite parent) { + instance = this; + this.parent = parent; + initActions(); + clip = new Clipboard(getSite().getShell().getDisplay()); + tabs = new TabFolder(parent, SWT.NONE); + } + public void initActions() { + refreshTableAction = new RefreshTableAction(); + refreshTableAction.setText(Messages.getString("tableview.refresh")); + refreshTableAction.setImageDescriptor( + PHPEclipseSQLPlugin.getImageDescriptor("refresh.gif")); + refreshTableAction.init(this); + closeTableAction = new CloseTableAction(); + closeTableAction.setText(Messages.getString("tableview.close")); + closeTableAction.setImageDescriptor( + PHPEclipseSQLPlugin.getImageDescriptor("close.gif")); + closeTableAction.init(this); + } + + public void selectionChanged(IWorkbenchPart part, ISelection selection) { + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/BookmarkContentProvider.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/BookmarkContentProvider.java new file mode 100644 index 0000000..ec997fa --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/BookmarkContentProvider.java @@ -0,0 +1,193 @@ +package net.sourceforge.phpdt.sql.view.bookmark; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.util.Properties; +import java.util.Vector; + +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.jface.viewers.Viewer; + +import net.sourceforge.phpdt.sql.bookmarks.Bookmark; + +public class BookmarkContentProvider implements ITreeContentProvider { + private Vector bookmarks = new Vector(); + private static BookmarkContentProvider instance = null; + private boolean hasChanged = false; + + /** + * Singleton accessor + */ + public static synchronized BookmarkContentProvider getInstance() { + if (instance == null) { + instance = new BookmarkContentProvider(); + } + return instance; + } + + private BookmarkContentProvider() { + } + + public void importBookmarks(File file) { + hasChanged = true; + System.out.println("Importing Bookmarks: Loading from file: " + file); + try { + Properties props = new Properties(); + FileInputStream in = new FileInputStream(file); + props.load(in); + in.close(); + fromProperties(false, props); + } catch (Throwable e) { + e.printStackTrace(); + } + } + public void load(File file) { + System.out.println("Bookmarks: Loading from file: " + file); + try { + Properties props = new Properties(); + FileInputStream in = new FileInputStream(file); + props.load(in); + in.close(); + fromProperties(true, props); + } catch (Throwable e) { + e.printStackTrace(); + } + } + public void save(File file) { + System.out.println("Bookmarks: Saving to file: " + file); + try { + Properties props = getProperties(); + FileOutputStream out = new FileOutputStream(file); + props.store(out, ""); + out.close(); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + public Object[] getChildren(Object parentElement) { + if (parentElement.equals(Root.ROOT)) { + return bookmarks.toArray(); + } else if (parentElement instanceof TreeNode) { + TreeNode node = (TreeNode) parentElement; + return node.getChildren(); + } + return Root.EMPTY_ARRAY; + } + + public Object[] getElements(Object inputElement) { + return getChildren(inputElement); + } + + public Object getParent(Object element) { + if (element.equals(Root.ROOT)) { + return null; + } else if (element instanceof TreeNode) { + TreeNode node = (TreeNode) element; + return node.getParent(); + } + return null; + } + + public boolean hasChildren(Object element) { + if (element.equals(Root.ROOT)) { + return true; + } else if (element instanceof TreeNode) { + TreeNode node = (TreeNode) element; + return node.hasChildren(); + } + return false; + } + + public void setChildren(BookmarkNode b, Vector tables) { + b.setChildren(tables); + } + + public void addBookmark(BookmarkNode b) { + hasChanged = true; + if (!bookmarks.contains(b)) { + bookmarks.addElement(b); + } + } + public void removeBookmark(BookmarkNode b) { + hasChanged = true; + if (bookmarks.contains(b)) { + bookmarks.removeElement(b); + } + } + + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + } + + public void dispose() { + } + + public boolean hasChanged() { + return hasChanged; + } + + public int getSize() { + return bookmarks.size(); + } + + public void fromProperties(boolean overwrite, Properties props) { + Vector newBookmarks = new Vector(); + int i = 0; + while (true) { + Bookmark bookmark = new BookmarkNode(); + String name = props.getProperty(i + ".name"); + if (name == null) { + break; + } + bookmark.setName(name); + bookmark.setUsername(props.getProperty(i + ".username")); + bookmark.setPassword(props.getProperty(i + ".password")); + bookmark.setConnect(props.getProperty(i + ".connect")); + bookmark.setDriver(props.getProperty(i + ".driver")); + String schema = props.getProperty(i + ".schema"); + if (schema != null) { + bookmark.setSchema(schema); + } else { + bookmark.setSchema(""); + } + String type = props.getProperty(i + ".type"); + if (type != null) { + bookmark.setType(type); + } else { + bookmark.setType(""); + } + String driverFile = props.getProperty(i + ".driverLocation"); + if (driverFile != null) { + bookmark.setDriverFile(driverFile); + } else { + bookmark.setDriverFile(""); + } + System.out.println(bookmark.toString()); + if (!bookmark.isEmpty()) { + newBookmarks.addElement(bookmark); + } + i++; + } + if (overwrite) { + bookmarks = newBookmarks; + } else { + bookmarks.addAll(newBookmarks); + } + } + public Properties getProperties() { + Properties props = new Properties(); + for (int i = 0; i < bookmarks.size(); i++) { + Bookmark b = (Bookmark) bookmarks.elementAt(i); + props.put(i + ".name", b.getName()); + props.put(i + ".username", b.getUsername()); + props.put(i + ".password", b.getPassword()); + props.put(i + ".schema", b.getSchema()); + props.put(i + ".connect", b.getConnect()); + props.put(i + ".driver", b.getDriver()); + props.put(i + ".type", b.getType()); + props.put(i + ".driverLocation", b.getDriverFile()); + } + return props; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/BookmarkNode.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/BookmarkNode.java new file mode 100644 index 0000000..53b1fe8 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/BookmarkNode.java @@ -0,0 +1,53 @@ +package net.sourceforge.phpdt.sql.view.bookmark; + +import java.util.Collections; +import java.util.Vector; + +import net.sourceforge.phpdt.sql.bookmarks.Bookmark; + +public class BookmarkNode extends Bookmark implements TreeNode { + private Vector children = new Vector(); + + public BookmarkNode() { + } + + public BookmarkNode(Bookmark bookmark) { + super(bookmark); + } + + public Object[] getChildren() { + return children.toArray(); + } + + public Object getParent() { + return Root.ROOT; + } + + public boolean hasChildren() { + if (children != null && children.size() > 0) { + return true; + } + return false; + } + + public void setChildren(Vector children) { + for (int i = 0; i < children.size(); i++) { + Object obj = children.elementAt(i); + isValid(obj); + } + Collections.sort(children); + this.children = children; + } + + public void isValid(Object child) { + boolean valid = false; + if (child instanceof TableNode || + child instanceof ViewNode || + child instanceof SequenceNode) { + valid = true; + } + if (!valid) { + throw new RuntimeException("Invalid BookmarkNode child: " + child.getClass().getName()); + } + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/MetaDataNode.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/MetaDataNode.java new file mode 100644 index 0000000..26b71e0 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/MetaDataNode.java @@ -0,0 +1,49 @@ +package net.sourceforge.phpdt.sql.view.bookmark; + +public class MetaDataNode implements TreeNode { + TreeNode parent; + String name; + String type; + + public MetaDataNode(TableNode node, String name, String type) { + this.parent = node; + this.name = name; + this.type = type; + } + public MetaDataNode(ViewNode node, String name, String type) { + this.parent = node; + this.name = name; + this.type = type; + } + public String getName() { + return name; + } + + public String getType() { + return type; + } + + public void setName(String name) { + this.name = name; + } + + public void setType(String type) { + this.type = type; + } + + public Object[] getChildren() { + return Root.EMPTY_ARRAY; + } + + public Object getParent() { + return parent; + } + + public boolean hasChildren() { + return false; + } + + public String toString() { + return name + " " + type; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/Root.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/Root.java new file mode 100644 index 0000000..4db7441 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/Root.java @@ -0,0 +1,38 @@ +package net.sourceforge.phpdt.sql.view.bookmark; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public final class Root implements TreeNode { + public final static Root ROOT = new Root(); + public final static Object[] EMPTY_ARRAY = new Object[0]; + + private Root() { + } + /** + * @see net.sourceforge.phpdt.sql.view.bookmark.TreeNode#getChildren() + */ + public Object[] getChildren() { + return EMPTY_ARRAY; + } + + /** + * @see net.sourceforge.phpdt.sql.view.bookmark.TreeNode#getParent() + */ + public Object getParent() { + return null; + } + + /** + * @see net.sourceforge.phpdt.sql.view.bookmark.TreeNode#hasChildren() + */ + public boolean hasChildren() { + return false; + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/SequenceNode.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/SequenceNode.java new file mode 100644 index 0000000..cf12bac --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/SequenceNode.java @@ -0,0 +1,41 @@ +package net.sourceforge.phpdt.sql.view.bookmark; + +public class SequenceNode implements TreeNode, Comparable { + private BookmarkNode parent; + private String name; + + public SequenceNode(BookmarkNode parent, String seqName) { + this.parent = parent; + this.name = seqName; + } + + public Object[] getChildren() { + return Root.EMPTY_ARRAY; + } + + public Object getParent() { + return parent; + } + + public boolean hasChildren() { + return false; + } + + public String getName() { + return name; + } + + public String toString() { + return name; + } + + public int compareTo(Object o) { + if (o instanceof SequenceNode) { + SequenceNode node = (SequenceNode) o; + return name.compareTo(node.getName()); + } else if (o instanceof TreeNode || o instanceof ViewNode) { + return 1; + } + return 0; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/TableNode.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/TableNode.java new file mode 100644 index 0000000..1d22537 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/TableNode.java @@ -0,0 +1,62 @@ +package net.sourceforge.phpdt.sql.view.bookmark; + +import java.util.Vector; + +public class TableNode implements TreeNode, Comparable { + private Vector metadata; + private BookmarkNode parent; + private String name; + private int size = -1; + + public TableNode(BookmarkNode parent, String tableName) { + this.parent = parent; + this.name = tableName; + } + + public Object[] getChildren() { + if (metadata != null) { + return metadata.toArray(); + } else { + return Root.EMPTY_ARRAY; + } + } + + public Object getParent() { + return parent; + } + + public boolean hasChildren() { + return (metadata != null) && (metadata.size() > 0); + } + + public String getName() { + return name; + } + + public String toString() { + return name; + } + + public int compareTo(Object o) { + if (o instanceof TableNode) { + TableNode node = (TableNode) o; + return name.compareTo(node.getName()); + } else if (o instanceof ViewNode || + o instanceof SequenceNode) { + return -1; + } + return 0; + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public void setMetadata(Vector metadata) { + this.metadata = metadata; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/TreeNode.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/TreeNode.java new file mode 100644 index 0000000..f9d6a00 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/TreeNode.java @@ -0,0 +1,15 @@ +package net.sourceforge.phpdt.sql.view.bookmark; + +/** + * @author root + * + * To change this generated comment edit the template variable "typecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of type comments go to + * Window>Preferences>Java>Code Generation. + */ +public interface TreeNode { + public Object[] getChildren(); + public Object getParent(); + public boolean hasChildren(); +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/ViewNode.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/ViewNode.java new file mode 100644 index 0000000..2398e1d --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/bookmark/ViewNode.java @@ -0,0 +1,62 @@ +package net.sourceforge.phpdt.sql.view.bookmark; + +import java.util.Vector; + +public class ViewNode implements TreeNode, Comparable { + private BookmarkNode parent; + private Vector metadata; + private String name; + private int size = -1; + public ViewNode(BookmarkNode parent, String tableName) { + this.parent = parent; + this.name = tableName; + } + + public Object getParent() { + return parent; + } + + public String getName() { + return name; + } + + public String toString() { + return name; + } + + public int compareTo(Object o) { + if (o instanceof ViewNode) { + ViewNode node = (ViewNode) o; + return name.compareTo(node.getName()); + } else if (o instanceof SequenceNode) { + return -1; + } else if (o instanceof TreeNode) { + return 1; + } + return 0; + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public boolean hasChildren() { + return (metadata != null) && (metadata.size() > 0); + } + + public Object[] getChildren() { + if (metadata != null) { + return metadata.toArray(); + } else { + return Root.EMPTY_ARRAY; + } + } + + public void setMetadata(Vector metadata) { + this.metadata = metadata; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/query/QueryContentProvider.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/query/QueryContentProvider.java new file mode 100644 index 0000000..a43a221 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/query/QueryContentProvider.java @@ -0,0 +1,45 @@ +package net.sourceforge.phpdt.sql.view.query; + +import java.util.LinkedList; + +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.jface.viewers.Viewer; + +import net.sourceforge.phpdt.sql.view.bookmark.Root; + +public class QueryContentProvider implements ITreeContentProvider { + private LinkedList queryList = new LinkedList(); + public Object[] getChildren(Object parentElement) { + if (parentElement.equals(Root.ROOT)) { + return queryList.toArray(); + } + return Root.EMPTY_ARRAY; + } + + public void addQuery(String query) { + queryList.add(new QueryNode(query)); + } + public Object getParent(Object element) { + return Root.ROOT; + } + + public boolean hasChildren(Object element) { + if (element.equals(Root.ROOT)) { + if (queryList.size() > 0) { + return true; + } + } + return false; + } + + public Object[] getElements(Object inputElement) { + return getChildren(inputElement); + } + + public void dispose() { + } + + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + } + +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/query/QueryNode.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/query/QueryNode.java new file mode 100644 index 0000000..2069a9b --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/query/QueryNode.java @@ -0,0 +1,49 @@ +package net.sourceforge.phpdt.sql.view.query; + +import net.sourceforge.phpdt.sql.view.bookmark.Root; +import net.sourceforge.phpdt.sql.view.bookmark.TreeNode; + +public class QueryNode implements TreeNode { + TreeNode parent = Root.ROOT; + String name; + String query; + + public QueryNode(String query) { + this.query = query; + query = query.trim(); + boolean trimmed = false; + query = query.replace('\n', ' '); + int maxSize = 30; + if (query.length() > maxSize) { + query = query.substring(0, maxSize); + trimmed = true; + } + if (trimmed) { + query += "...->"; + } + name = query; + } + public String getName() { + return name; + } + + public String getQuery() { + return query; + } + + public Object[] getChildren() { + return Root.EMPTY_ARRAY; + } + + public Object getParent() { + return parent; + } + + public boolean hasChildren() { + return false; + } + + public String toString() { + return name; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/tableview/DefaultSizes.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/tableview/DefaultSizes.java new file mode 100644 index 0000000..97cb78f --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/tableview/DefaultSizes.java @@ -0,0 +1,6 @@ +package net.sourceforge.phpdt.sql.view.tableview; + +public class DefaultSizes { + public static int PAGE_SIZE = 200; + public static int MAX_COLUMN_SIZE = 1024 * 2; +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/tableview/TableAdapter.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/tableview/TableAdapter.java new file mode 100644 index 0000000..2bf17cc --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/view/tableview/TableAdapter.java @@ -0,0 +1,222 @@ +package net.sourceforge.phpdt.sql.view.tableview; + +import java.util.Vector; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.TableItem; + +import net.sourceforge.phpdt.sql.adapters.AdapterFactory; +import net.sourceforge.phpdt.sql.adapters.DatabaseAdapter; +import net.sourceforge.phpdt.sql.adapters.DatabaseInfo; +import net.sourceforge.phpdt.sql.adapters.NoSuchAdapterException; +import net.sourceforge.phpdt.sql.bookmarks.Bookmark; +import net.sourceforge.phpdt.sql.sql.FilterSort; +import net.sourceforge.phpdt.sql.sql.MultiSQLServer; +import net.sourceforge.phpdt.sql.sql.SQLHelper; +import net.sourceforge.phpdt.sql.sql.SQLResults; + +public class TableAdapter { + public static final String DEFAULT = ""; + public static final String UTF_8 = "UTF-8"; + public static final String UTF_16 = "UTF-16"; + + private int pageSize = DefaultSizes.PAGE_SIZE; + private int maxColumnSize = DefaultSizes.MAX_COLUMN_SIZE; + private SQLHelper helper = new SQLHelper(); + private FilterSort extra = new FilterSort(); + private int offset = 1; + private int totalSize = -1; + private Vector rows = new Vector(); + private Vector columnNames = new Vector(); + private boolean hasMore = false; + + private String table; + private String query; + + private String encoding = ""; + + private TableAdapter() { + } + public void fullMode() { + offset = 1; + pageSize = Integer.MAX_VALUE; + } + public void resetMode() { + offset = 1; + pageSize = DefaultSizes.PAGE_SIZE; + } + public static TableAdapter createFromQuery(SQLResults results) { + TableAdapter retVal = new TableAdapter(); + retVal.setQuery(results.getQuery()); + retVal.setData(results); + return retVal; + } + public static TableAdapter createFromTable(String table) { + TableAdapter retVal = new TableAdapter(); + retVal.setTable(table); + return retVal; + } + private void loadSize() { + if (table != null) { + totalSize = helper.getSize(getTableCountQuery()); + } + } + public int getStartIndex() { + if (totalSize == 0) { + return 0; + } + return offset; + } + public int getEndIndex() { + return offset + rows.size() - 1; + } + public int getTotalSize() { + return totalSize; + } + public void nextPage() { + loadSize(); + offset = offset + pageSize; + if (totalSize >= 0 && offset > totalSize) { + offset = offset - pageSize; + } + } + public void previousPage() { + offset = offset - pageSize; + if (offset < 1) { + offset = 1; + } + } + public boolean hasNextPage() { + if (table != null) { + if (offset + pageSize <= totalSize) { + return true; + } + return false; + } + return hasMore; + } + public boolean hasPreviousPage() { + if (offset > 1) { + return true; + } + return false; + } + public String getTableCountQuery() { + if (table != null) { + Bookmark current = MultiSQLServer.getInstance().getConnected(); + return SQLHelper.getFullTableName(current, table); + } + return query; + } + public String getQuery() { + if (table != null) { + MultiSQLServer server = MultiSQLServer.getInstance(); + Bookmark current = server.getConnected(); + try { + DatabaseAdapter adapter = AdapterFactory.getInstance().getAdapter(current.getType()); + return adapter.getShowTableQuery(DatabaseInfo.create(current), table) + extra.toString(); + } catch (NoSuchAdapterException e) { + throw new RuntimeException(e.toString()); + } + } + return query; + } + public void loadData() { + loadSize(); + if (table != null) { + if (offset > totalSize) { + offset = 1; + } + } + String query = getQuery(); + System.out.println(offset + " to " + (offset + pageSize - 1)); + SQLResults results = helper.getResults(query, offset, offset + pageSize - 1, maxColumnSize, encoding); + setData(results); + } + public void resetOffset() { + offset = 1; + } + public void setData(SQLResults results) { + int rowCount = results.getRowCount(); + int columnCount = results.getColumnCount(); + rows = new Vector(); + columnNames = new Vector(); + for (int col = 1; col <= columnCount; col++) { + columnNames.addElement(results.getColumnName(col)); + } + for (int row = 1; row <= rowCount; row++) { + String rowData[] = new String[columnCount]; + for (int col = 1; col <= columnCount; col++) { + rowData[col - 1] = results.getElement(col, row).toString(); + } + rows.addElement(rowData); + } + hasMore = results.hasMore(); + if (table == null && results.getMaxSize() >= 0) { + if (offset > results.getMaxSize()) { + offset = 1; + loadData(); + } + } + } + public void loadTable(Table table) { + table.setHeaderVisible(true); + for (int i = 0; i < columnNames.size(); i++) { + TableColumn column = new TableColumn(table, SWT.NONE); + column.setText(columnNames.elementAt(i).toString()); + } + for (int i = 0; i < columnNames.size(); i++) { + table.getColumn(i).pack(); + } + for (int row = 0; row < rows.size(); row++) { + TableItem item = new TableItem(table, SWT.NONE); + String itemData[] = (String[]) rows.elementAt(row); + item.setText(itemData); + } + for (int i = 0; i < columnNames.size(); i++) { + table.getColumn(i).pack(); + } + } + + public int getPageSize() { + return pageSize; + } + + public void setFilterSort(FilterSort extra) { + this.extra = extra; + } + public String getTable() { + return table; + } + + public void setTable(String table) { + this.table = table; + } + public void setQuery(String query) { + this.query = query; + } + public String getEncoding() { + return encoding; + } + + public void setEncoding(String encoding) { + this.encoding = encoding; + } + public String getStatusString() { + String status = getStartIndex() + " to " + getEndIndex() + " of " + + getTotalSize(); + if (!encoding.equals(DEFAULT)) { + status += " (" + encoding + ")"; + } + String filterText = extra.toString(); + if (!filterText.equals("")) { + status += " (" + filterText + ")"; + } + if (pageSize == Integer.MAX_VALUE) { + status += " (FULL)"; + } + return status; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/BookmarkWizard.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/BookmarkWizard.java new file mode 100644 index 0000000..2b4a902 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/BookmarkWizard.java @@ -0,0 +1,255 @@ +package net.sourceforge.phpdt.sql.wizards; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.FileDialog; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +import net.sourceforge.phpdt.sql.adapters.AdapterFactory; +import net.sourceforge.phpdt.sql.adapters.DriverInfo; +import net.sourceforge.phpdt.sql.view.BookmarkView; +import net.sourceforge.phpdt.sql.view.bookmark.BookmarkNode; + +public class BookmarkWizard extends Wizard { + BookmarkPage mainPage; + + private BookmarkNode current; + + public void init(BookmarkNode selection) { + System.out.println("Initing workbench"); + this.current = selection; + setWindowTitle("New Bookmark"); + } + public void init() { + System.out.println("Initing workbench"); + current = null; + setWindowTitle("New Bookmark"); + } + public boolean performFinish() { + System.out.println("perform finish workbench"); + mainPage.performFinish(); + return true; + } + public void addPages() { + System.out.println("adding pages"); + if (current != null) { + mainPage = new BookmarkPage("Testing...", current); + } else { + mainPage = new BookmarkPage("Testing..."); + } + addPage(mainPage); + System.out.println("adding pages"); + } +} + +class BookmarkPage extends WizardPage { + public static final String ADD = "ADD"; + String action = ADD; + Text name; + Text username; + Text password; + Text schema; + Text connect; + Text driver; + //List driverList; + Combo type; + Text driverFile; + + BookmarkNode initialData = null; + + FileDialog dialog; + + DriverInfo[] drivers = AdapterFactory.getInstance().getDriverList(); + /** + * Constructor for BookmarkPage. + * @param pageName + */ + public BookmarkPage(String pageName) { + super(pageName); + initialData = null; + } + /** + * Constructor for BookmarkPage. + * @param pageName + */ + public BookmarkPage(String pageName, BookmarkNode bookmark) { + super(pageName); + this.initialData = bookmark; + } + + public void createControl(Composite parent) { + System.out.println("page create control"); + dialog = new FileDialog(getContainer().getShell(), SWT.OPEN); + dialog.setFilterExtensions(new String[]{"*.jar", "*.zip","*.*"}); + dialog.setFilterNames(new String[]{"Jar Files (*.jar)","Zip Files (*.zip)", "All Files (*.*)"}); + Composite container = new Composite(parent, SWT.NULL); + GridLayout layout = new GridLayout(); + container.setLayout(layout); + layout.numColumns = 2; + layout.verticalSpacing = 9; + + + Label label = new Label(container, SWT.NULL); + label.setText("*Bookmark Name"); + name = new Text(container, SWT.BORDER | SWT.SINGLE); + GridData fullHorizontal = new GridData(); + fullHorizontal.horizontalAlignment = GridData.FILL; + name.setLayoutData(fullHorizontal); + + label = new Label(container, SWT.NULL); + label.setText("*Username"); + username = new Text(container, SWT.BORDER | SWT.SINGLE); + fullHorizontal = new GridData(); + fullHorizontal.horizontalAlignment = GridData.FILL; + username.setLayoutData(fullHorizontal); + + label = new Label(container, SWT.NULL); + label.setText("*Password"); + password = new Text(container, SWT.BORDER | SWT.SINGLE); + password.setEchoChar('*'); + fullHorizontal = new GridData(); + fullHorizontal.horizontalAlignment = GridData.FILL; + password.setLayoutData(fullHorizontal); + + label = new Label(container, SWT.NULL); + label.setText("Schema (optional)"); + schema = new Text(container, SWT.BORDER | SWT.SINGLE); + fullHorizontal = new GridData(); + fullHorizontal.horizontalAlignment = GridData.FILL; + schema.setLayoutData(fullHorizontal); + + label = new Label(container, SWT.NULL); + label.setText("*Connect"); + connect = new Text(container, SWT.BORDER | SWT.SINGLE); + fullHorizontal = new GridData(); + fullHorizontal.horizontalAlignment = GridData.FILL; + connect.setLayoutData(fullHorizontal); + + label = new Label(container, SWT.NULL); + label.setText("*Driver"); + driver = new Text(container, SWT.BORDER | SWT.SINGLE); + fullHorizontal = new GridData(); + fullHorizontal.horizontalAlignment = GridData.FILL; + driver.setLayoutData(fullHorizontal); + + //label = new Label(container, SWT.NULL); + //fullHorizontal = new GridData(); + //fullHorizontal.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING; + //fullHorizontal.verticalSpan = 3; + //label.setLayoutData(fullHorizontal); + //label.setText("(Drivers Found in File)"); + /*driverList = new List(container, SWT.SINGLE); + fullHorizontal = new GridData(); + fullHorizontal.horizontalAlignment = GridData.FILL; + fullHorizontal.verticalAlignment = GridData.FILL; + fullHorizontal.verticalSpan = 3; + driverList.setLayoutData(fullHorizontal); + driverList.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + String[] selection = driverList.getSelection(); + if (selection != null && selection.length > 0) { + driver.setText(selection[0]); + } + } + });*/ + + label = new Label(container, SWT.NULL); + label.setText("*Type"); + type = new Combo(container, SWT.SIMPLE | SWT.DROP_DOWN | SWT.READ_ONLY); + String driverNames[] = new String[drivers.length]; + for (int i = 0; i < drivers.length; i++) { + driverNames[i] = drivers[i].getDisplayName(); + } + type.setItems(driverNames); + type.select(0); + fullHorizontal = new GridData(); + fullHorizontal.horizontalAlignment = GridData.FILL; + type.setLayoutData(fullHorizontal); + + label = new Label(container, SWT.NULL); + label.setText("*Driver Filename"); + driverFile = new Text(container, SWT.BORDER | SWT.SINGLE); + fullHorizontal = new GridData(); + fullHorizontal.horizontalAlignment = GridData.FILL; + driverFile.setLayoutData(fullHorizontal); + + Button button = new Button(container, SWT.PUSH); + button.setText("Browse..."); + + button.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + String filename = dialog.open(); + if (filename != null) { + driverFile.setText(filename); + } + } + }); + if (initialData != null) { + name.setText(initialData.getName()); + username.setText(initialData.getUsername()); + password.setText(initialData.getPassword()); + schema.setText(initialData.getSchema()); + connect.setText(initialData.getConnect()); + driver.setText(initialData.getDriver()); + String typeData = initialData.getType(); + int selectedIndex = 0; + for (int i = 0; i < drivers.length; i++) { + if (typeData.equals(drivers[i].getDriverType())) { + selectedIndex = i; + } + } + type.select(selectedIndex); + driverFile.setText(initialData.getDriverFile()); + updateDriverList(); + } + setControl(container); + + setPageComplete(true); + } + public void updateDriverList() { + /*try { + JarFile file = new JarFile(driverFile.getText()); + Enumeration enum = file.entries(); + while (enum.hasMoreElements()) { + JarEntry entry = (JarEntry) enum.nextElement(); + String className = entry.getName().replace('/', '.'); + if (className.endsWith("Driver.class")) { + className = className.substring(0, className.lastIndexOf('.')); + //driverList.add(className); + } + } + } catch (IOException ex) { + //driverList.removeAll(); + }*/ + } + public void performFinish() { + if (initialData == null) { + initialData = new BookmarkNode(); + } + initialData.setName(name.getText()); + initialData.setUsername(username.getText()); + initialData.setPassword(password.getText()); + initialData.setSchema(schema.getText()); + initialData.setConnect(connect.getText()); + initialData.setDriver(driver.getText()); + int selection = type.getSelectionIndex(); + if (selection >= 0) { + initialData.setType(drivers[selection].getDriverType()); + } + initialData.setDriverFile(driverFile.getText()); + BookmarkView.getInstance().addNewBookmark(initialData); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/DeleteRowPage.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/DeleteRowPage.java new file mode 100644 index 0000000..2f8e6e6 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/DeleteRowPage.java @@ -0,0 +1,139 @@ +package net.sourceforge.phpdt.sql.wizards; + +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +import net.sourceforge.phpdt.sql.sql.MultiSQLServer; +import net.sourceforge.phpdt.sql.sql.TableRow; +import net.sourceforge.phpdt.sql.view.tableview.TableAdapter; + +public class DeleteRowPage extends WizardPage implements SQLPage { + TableRow row; + String[] columnNames; + Text[] values; + Button[] whereValues; + Label query; + + public DeleteRowPage(String pageName) { + super(pageName); + } + + public void init(TableRow row, TableAdapter adapter) { + this.row = row; + } + + public void createControl(Composite parent) { + System.out.println("page create control"); + Composite container = new Composite(parent, SWT.NULL); + GridLayout layout = new GridLayout(); + container.setLayout(layout); + int layoutColumns = 3; + layout.numColumns = layoutColumns; + + if (row == null) { + System.out.println("Row is null"); + } + if (row.getColumnNames() == null) { + System.out.println("Columns are null"); + } + if (row.getTableData() == null) { + System.out.println("Data is null"); + } + columnNames = row.getColumnNames(); + String[] data = row.getTableData(); + for (int i = 0; i < row.getColumnCount(); i++) { + System.out.println("data = " + i + "=" + data[i]); + System.out.println("column = " + i + "=" + columnNames[i]); + } + values = new Text[row.getColumnCount()]; + whereValues = new Button[row.getColumnCount()]; + Label temp = new Label(container, SWT.NULL); + temp.setText("Column Name"); + temp = new Label(container, SWT.NULL); + temp.setText("Value"); + temp = new Label(container, SWT.NULL); + temp.setText("Include in?"); + for (int i = 0; i < row.getColumnCount(); i++) { + Label label = new Label(container, SWT.NULL); + label.setText(columnNames[i]); + values[i] = new Text(container, SWT.BORDER | SWT.SINGLE); + GridData fullHorizontal = new GridData(); + fullHorizontal.horizontalAlignment = GridData.FILL; + values[i].setLayoutData(fullHorizontal); + values[i].setText(data[i]); + + values[i].addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + updateQuery(); + } + }); + + whereValues[i] = new Button(container, SWT.CHECK); + whereValues[i].setText("Where clause"); + whereValues[i].addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + updateQuery(); + } + }); + } + query = new Label(container, SWT.WRAP); + GridData gridData = new GridData(); + gridData.horizontalSpan = layoutColumns; + gridData.horizontalAlignment = GridData.FILL; + gridData.verticalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + gridData.grabExcessVerticalSpace = true; + query.setLayoutData(gridData); + + setControl(container); + updateQuery(); + + setPageComplete(true); + } + public void updateQuery() { + System.out.println("Updating query"); + StringBuffer whereClause = new StringBuffer(); + int numSelected = 0; + for (int i = 0; i < columnNames.length; i++) { + if (whereValues[i].getSelection()) { + numSelected++; + whereClause.append(columnNames[i]); + whereClause.append(" = "); + whereClause.append(values[i].getText()); + whereClause.append(", "); + } + } + if (whereClause.length() > 1) { + whereClause.deleteCharAt(whereClause.length() - 1); + whereClause.deleteCharAt(whereClause.length() - 1); + } + String query = "DELETE FROM " + row.getTable(); + if (numSelected > 0) { + query += " WHERE " + whereClause.toString(); + } + if (numSelected > 0) { + setMessage(""); + } else { + setMessage("Warning: no \"where clause\" columns selected, all rows will be deleted"); + } + this.getControl().pack(); + this.query.setText(query); + } + public boolean performFinish() { + MultiSQLServer server = MultiSQLServer.getInstance(); + server.execute(query.getText()); + return true; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/InsertRowPage.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/InsertRowPage.java new file mode 100644 index 0000000..3aa57e5 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/InsertRowPage.java @@ -0,0 +1,108 @@ +package net.sourceforge.phpdt.sql.wizards; + +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +import net.sourceforge.phpdt.sql.sql.MultiSQLServer; +import net.sourceforge.phpdt.sql.sql.TableRow; +import net.sourceforge.phpdt.sql.view.tableview.TableAdapter; + +public class InsertRowPage extends WizardPage implements SQLPage { + TableRow row; + String[] columnNames; + Text[] values; + Label query; + public InsertRowPage(String pageName) { + super(pageName); + } + + public void init(TableRow row, TableAdapter adapter) { + this.row = row; + } + + public void createControl(Composite parent) { + System.out.println("page create control"); + Composite container = new Composite(parent, SWT.NULL); + GridLayout layout = new GridLayout(); + container.setLayout(layout); + int layoutColumns = 2; + layout.numColumns = layoutColumns; + + if (row == null) { + System.out.println("Row is null"); + } + if (row.getColumnNames() == null) { + System.out.println("Columns are null"); + } + if (row.getTableData() == null) { + System.out.println("Data is null"); + } + columnNames = row.getColumnNames(); + String[] data = row.getTableData(); + for (int i = 0; i < row.getColumnCount(); i++) { + System.out.println("data = " + i + "=" + data[i]); + System.out.println("column = " + i + "=" + columnNames[i]); + } + values = new Text[row.getColumnCount()]; + Label temp = new Label(container, SWT.NULL); + temp.setText("Column Name"); + temp = new Label(container, SWT.NULL); + temp.setText("Value"); + for (int i = 0; i < row.getColumnCount(); i++) { + Label label = new Label(container, SWT.NULL); + label.setText(columnNames[i]); + values[i] = new Text(container, SWT.BORDER | SWT.SINGLE); + GridData fullHorizontal = new GridData(); + fullHorizontal.horizontalAlignment = GridData.FILL; + values[i].setLayoutData(fullHorizontal); + + //values[i].setText(data[i]); + values[i].addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + updateQuery(); + } + }); + } + query = new Label(container, SWT.WRAP); + GridData gridData = new GridData(); + gridData.horizontalSpan = layoutColumns; + gridData.horizontalAlignment = GridData.FILL; + gridData.verticalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + gridData.grabExcessVerticalSpace = true; + query.setLayoutData(gridData); + + setControl(container); + updateQuery(); + + setPageComplete(true); + } + public void updateQuery() { + System.out.println("Updating query"); + StringBuffer valuesClause = new StringBuffer(); + for (int i = 0; i < columnNames.length; i++) { + valuesClause.append(values[i].getText()); + valuesClause.append(", "); + } + if (valuesClause.length() > 1) { + valuesClause.deleteCharAt(valuesClause.length() - 1); + valuesClause.deleteCharAt(valuesClause.length() - 1); + } + String query = "INSERT INTO " + row.getTable(); + query += " VALUES (" + valuesClause.toString(); + query += " )"; + this.query.setText(query); + } + public boolean performFinish() { + MultiSQLServer server = MultiSQLServer.getInstance(); + server.execute(query.getText()); + return true; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/PHPSelectRowPage.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/PHPSelectRowPage.java new file mode 100644 index 0000000..c15581a --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/PHPSelectRowPage.java @@ -0,0 +1,180 @@ +package net.sourceforge.phpdt.sql.wizards; + +import net.sourceforge.phpdt.sql.sql.TableRow; +import net.sourceforge.phpdt.sql.view.PHPSourceConsole; +import net.sourceforge.phpdt.sql.view.tableview.TableAdapter; + +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +public class PHPSelectRowPage extends WizardPage implements SQLPage { + TableRow row; + String[] columnNames; + Text[] oldValues; + // Text[] newValues; + Button[] primaryKeys; + Button[] setValues; + Label query; + + public PHPSelectRowPage(String pageName) { + super(pageName); + } + + public void init(TableRow row, TableAdapter adapter) { + this.row = row; + } + + public void createControl(Composite parent) { + System.out.println("page create control"); + Composite container = new Composite(parent, SWT.NULL); + GridLayout layout = new GridLayout(); + container.setLayout(layout); + int layoutColumns = 4; + layout.numColumns = layoutColumns; + + if (row == null) { + System.out.println("Row is null"); + } + if (row.getColumnNames() == null) { + System.out.println("Columns are null"); + } + if (row.getTableData() == null) { + System.out.println("Data is null"); + } + columnNames = row.getColumnNames(); + String[] data = row.getTableData(); + for (int i = 0; i < row.getColumnCount(); i++) { + System.out.println("data = " + i + "=" + data[i]); + System.out.println("column = " + i + "=" + columnNames[i]); + } + oldValues = new Text[row.getColumnCount()]; + // newValues = new Text[row.getColumnCount()]; + primaryKeys = new Button[row.getColumnCount()]; + setValues = new Button[row.getColumnCount()]; + Label temp = new Label(container, SWT.NULL); + temp.setText("Column Name"); + temp = new Label(container, SWT.NULL); + temp.setText("Old Value"); + temp = new Label(container, SWT.NULL); + temp.setText(""); + // temp = new Label(container, SWT.NULL); + // temp.setText("New Value"); + temp = new Label(container, SWT.NULL); + temp.setText(""); + for (int i = 0; i < row.getColumnCount(); i++) { + Label label = new Label(container, SWT.NULL); + label.setText(columnNames[i]); + oldValues[i] = new Text(container, SWT.BORDER | SWT.SINGLE); + if (data[i] == null || data[i].equals("")) { + oldValues[i].setText('$' + columnNames[i]); + } else { + oldValues[i].setText(data[i]); + } + oldValues[i].addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + updateQuery(); + } + }); + + primaryKeys[i] = new Button(container, SWT.CHECK); + primaryKeys[i].setText("Where Clause"); + primaryKeys[i].addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + updateQuery(); + } + }); + // newValues[i] = new Text(container, SWT.BORDER | SWT.SINGLE); + // newValues[i].setText(data[i]); + // newValues[i].addModifyListener(new ModifyListener() { + // public void modifyText(ModifyEvent e) { + // updateQuery(); + // } + // }); + setValues[i] = new Button(container, SWT.CHECK); + setValues[i].setText("Select Value"); + setValues[i].addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + updateQuery(); + } + }); + } + query = new Label(container, SWT.WRAP); + GridData gridData = new GridData(); + gridData.horizontalSpan = layoutColumns; + gridData.horizontalAlignment = GridData.FILL; + gridData.verticalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + gridData.grabExcessVerticalSpace = true; + query.setLayoutData(gridData); + + setControl(container); + updateQuery(); + + setPageComplete(true); + } + + public void updateQuery() { + System.out.println("PHP SELECT"); + StringBuffer setClause = new StringBuffer(); + StringBuffer whereClause = new StringBuffer(); + String temp; + boolean firstClause = false; + for (int i = 0; i < columnNames.length; i++) { + if (primaryKeys[i].getSelection()) { + if (firstClause) { + whereClause.append(" AND "); + } + firstClause = true; + whereClause.append(columnNames[i]); + whereClause.append(" = "); + temp = oldValues[i].getText(); +// if (temp.charAt(0) == '$') { +// whereClause.append(temp); +// } else { + whereClause.append("'"+temp+"'"); +// } + + + } + if (setValues[i].getSelection()) { + setClause.append(columnNames[i]); + // setClause.append(" = "); + // setClause.append(newValues[i].getText()); + setClause.append(", "); + } + } + // if (whereClause.length() > 1) { + // whereClause.deleteCharAt(whereClause.length() - 1); + // whereClause.deleteCharAt(whereClause.length() - 1); + // } + if (setClause.length() > 1) { + setClause.deleteCharAt(setClause.length() - 1); + setClause.deleteCharAt(setClause.length() - 1); + } + String query = "$results = mysql_query(\"SELECT " + setClause.toString(); + query += " FROM " + row.getTable(); + query += " WHERE " + whereClause.toString() + "\");"; + this.query.setText(query); + } + + public boolean performFinish() { + PHPSourceConsole console = PHPSourceConsole.getInstance(); + console.clear(); + console.print(query.getText()); + return true; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/SQLPage.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/SQLPage.java new file mode 100644 index 0000000..bf53558 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/SQLPage.java @@ -0,0 +1,11 @@ +package net.sourceforge.phpdt.sql.wizards; + +import org.eclipse.jface.wizard.IWizardPage; + +import net.sourceforge.phpdt.sql.sql.TableRow; +import net.sourceforge.phpdt.sql.view.tableview.TableAdapter; + +public interface SQLPage extends IWizardPage { + public void init(TableRow row, TableAdapter adapter); + public boolean performFinish(); +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/SQLRowWizard.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/SQLRowWizard.java new file mode 100644 index 0000000..0ab65b4 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/SQLRowWizard.java @@ -0,0 +1,28 @@ +package net.sourceforge.phpdt.sql.wizards; + +import org.eclipse.jface.wizard.Wizard; + +import net.sourceforge.phpdt.sql.sql.TableRow; +import net.sourceforge.phpdt.sql.view.tableview.TableAdapter; + +public class SQLRowWizard extends Wizard { + SQLPage page; + TableRow row; + TableAdapter adapter; + public void init(String title, SQLPage page, TableRow row, TableAdapter adapter) { + System.out.println("Init SQL row wizard"); + this.row = row; + this.adapter = adapter; + this.page = page; + setWindowTitle(title); + } + public boolean performFinish() { + System.out.println("Perform SQL row wizard finish"); + return page.performFinish(); + } + public void addPages() { + System.out.println("QL row wizard adding pages"); + page.init(row, adapter); + addPage(page); + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/SortFilterPage.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/SortFilterPage.java new file mode 100644 index 0000000..ff9d447 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/SortFilterPage.java @@ -0,0 +1,161 @@ +package net.sourceforge.phpdt.sql.wizards; + +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +import net.sourceforge.phpdt.sql.sql.FilterSort; +import net.sourceforge.phpdt.sql.sql.TableRow; +import net.sourceforge.phpdt.sql.view.TableView; +import net.sourceforge.phpdt.sql.view.tableview.TableAdapter; + +public class SortFilterPage extends WizardPage implements SQLPage { + TableRow row; + TableAdapter adapter; + Button[] filter; + Combo[] operator; + Text[] filterValues; + Button[] stringFlags; + Button[] sort; + + String columnNames[]; + Label query; + FilterSort filterSort = new FilterSort(); + public SortFilterPage(String pageName) { + super(pageName); + } + + public void init(TableRow row, TableAdapter adapter) { + this.row = row; + this.adapter = adapter; + } + + public void createControl(Composite parent) { + System.out.println("page create control"); + + Composite container = new Composite(parent, SWT.NULL); + GridLayout layout = new GridLayout(); + container.setLayout(layout); + int layoutColumns = 5; + layout.numColumns = layoutColumns; + + if (row == null) { + System.out.println("Row is null"); + } + if (row.getColumnNames() == null) { + System.out.println("Columns are null"); + } + if (row.getTableData() == null) { + System.out.println("Data is null"); + } + + columnNames = row.getColumnNames(); + String[] data = row.getTableData(); + for (int i = 0; i < row.getColumnCount(); i++) { + System.out.println("data = " + i + "=" + data[i]); + System.out.println("column = " + i + "=" + columnNames[i]); + } + int size = row.getColumnCount(); + filter = new Button[size]; + operator = new Combo[size]; + filterValues = new Text[size]; + stringFlags = new Button[size]; + sort = new Button[size]; + for (int i = 0; i < row.getColumnCount(); i++) { + filter[i] = new Button(container, SWT.CHECK); + filter[i].setText(columnNames[i]); + filter[i].addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + updateQuery(); + } + }); + + operator[i] = new Combo(container, SWT.SINGLE | SWT.READ_ONLY); + operator[i].add("="); + operator[i].add("<>"); + operator[i].add("<"); + operator[i].add(">"); + operator[i].addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + updateQuery(); + } + }); + + filterValues[i] = new Text(container, SWT.BORDER); + filterValues[i].setText(data[i]); + filterValues[i].addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + updateQuery(); + } + }); + + stringFlags[i] = new Button(container, SWT.CHECK); + stringFlags[i].setText("String"); + stringFlags[i].addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + updateQuery(); + } + }); + + final int index = i; + sort[i] = new Button(container, SWT.CHECK); + sort[i].setText(columnNames[i]); + sort[i].addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + if (sort[index].getSelection()) { + filterSort.addSort(columnNames[index]); + } else { + filterSort.removeSort(columnNames[index]); + } + updateQuery(); + } + }); + } + query = new Label(container, SWT.WRAP); + GridData gridData = new GridData(); + gridData.horizontalSpan = layoutColumns; + gridData.horizontalAlignment = GridData.FILL; + gridData.verticalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + gridData.grabExcessVerticalSpace = true; + query.setLayoutData(gridData); + + setControl(container); + + setPageComplete(true); + } + + public void updateQuery() { + filterSort.clearFilters(); + for (int i = 0; i < filter.length; i++) { + if (filter[i].getSelection()) { + filterSort.addFilter(filter[i].getText(), operator[i].getText(), filterValues[i].getText(), stringFlags[i].getSelection()); + } + } + query.setText(filterSort.toString()); + } + + public boolean performFinish() { + adapter.setFilterSort(filterSort); + TableView.getInstance().refreshCurrent(); + return true; + } +} diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/UpdateRowPage.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/UpdateRowPage.java new file mode 100644 index 0000000..d049615 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/wizards/UpdateRowPage.java @@ -0,0 +1,159 @@ +package net.sourceforge.phpdt.sql.wizards; + +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +import net.sourceforge.phpdt.sql.sql.MultiSQLServer; +import net.sourceforge.phpdt.sql.sql.TableRow; +import net.sourceforge.phpdt.sql.view.tableview.TableAdapter; + +public class UpdateRowPage extends WizardPage implements SQLPage { + TableRow row; + String[] columnNames; + Text[] oldValues; + Text[] newValues; + Button[] primaryKeys; + Button[] setValues; + Label query; + public UpdateRowPage(String pageName) { + super(pageName); + } + + public void init(TableRow row, TableAdapter adapter) { + this.row = row; + } + + public void createControl(Composite parent) { + System.out.println("page create control"); + Composite container = new Composite(parent, SWT.NULL); + GridLayout layout = new GridLayout(); + container.setLayout(layout); + int layoutColumns = 5; + layout.numColumns = layoutColumns; + + if (row == null) { + System.out.println("Row is null"); + } + if (row.getColumnNames() == null) { + System.out.println("Columns are null"); + } + if (row.getTableData() == null) { + System.out.println("Data is null"); + } + columnNames = row.getColumnNames(); + String[] data = row.getTableData(); + for (int i = 0; i < row.getColumnCount(); i++) { + System.out.println("data = " + i + "=" + data[i]); + System.out.println("column = " + i + "=" + columnNames[i]); + } + oldValues = new Text[row.getColumnCount()]; + newValues = new Text[row.getColumnCount()]; + primaryKeys = new Button[row.getColumnCount()]; + setValues = new Button[row.getColumnCount()]; + Label temp = new Label(container, SWT.NULL); + temp.setText("Column Name"); + temp = new Label(container, SWT.NULL); + temp.setText("Old Value"); + temp = new Label(container, SWT.NULL); + temp.setText(""); + temp = new Label(container, SWT.NULL); + temp.setText("New Value"); + temp = new Label(container, SWT.NULL); + temp.setText(""); + for (int i = 0; i < row.getColumnCount(); i++) { + Label label = new Label(container, SWT.NULL); + label.setText(columnNames[i]); + oldValues[i] = new Text(container, SWT.BORDER | SWT.SINGLE); + oldValues[i].setText(data[i]); + oldValues[i].addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + updateQuery(); + } + }); + primaryKeys[i] = new Button(container, SWT.CHECK); + primaryKeys[i].setText("Primary Key"); + primaryKeys[i].addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + updateQuery(); + } + }); + newValues[i] = new Text(container, SWT.BORDER | SWT.SINGLE); + newValues[i].setText(data[i]); + newValues[i].addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + updateQuery(); + } + }); + setValues[i] = new Button(container, SWT.CHECK); + setValues[i].setText("Set Value"); + setValues[i].addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + } + public void widgetSelected(SelectionEvent e) { + updateQuery(); + } + }); + } + query = new Label(container, SWT.WRAP); + GridData gridData = new GridData(); + gridData.horizontalSpan = layoutColumns; + gridData.horizontalAlignment = GridData.FILL; + gridData.verticalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + gridData.grabExcessVerticalSpace = true; + query.setLayoutData(gridData); + + setControl(container); + updateQuery(); + + setPageComplete(true); + } + public void updateQuery() { + System.out.println("Updating query"); + StringBuffer setClause = new StringBuffer(); + StringBuffer whereClause = new StringBuffer(); + for (int i = 0; i < columnNames.length; i++) { + if (primaryKeys[i].getSelection()) { + whereClause.append(columnNames[i]); + whereClause.append(" = "); + whereClause.append(oldValues[i].getText()); + whereClause.append(", "); + } + if (setValues[i].getSelection()) { + setClause.append(columnNames[i]); + setClause.append(" = "); + setClause.append(newValues[i].getText()); + setClause.append(", "); + } + } + if (whereClause.length() > 1) { + whereClause.deleteCharAt(whereClause.length() - 1); + whereClause.deleteCharAt(whereClause.length() - 1); + } + if (setClause.length() > 1) { + setClause.deleteCharAt(setClause.length() - 1); + setClause.deleteCharAt(setClause.length() - 1); + } + String query = "UPDATE " + row.getTable(); + query += " SET " + setClause.toString(); + query += " WHERE " + whereClause.toString(); + this.query.setText(query); + } + public boolean performFinish() { + MultiSQLServer server = MultiSQLServer.getInstance(); + server.execute(query.getText()); + return true; + } +} \ No newline at end of file