[242160] Need support for new filter types and fix predicate storage
diff --git a/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/filter/ConnectionFilterPropertyPage.java b/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/filter/ConnectionFilterPropertyPage.java
index 947bec2..6981424 100644
--- a/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/filter/ConnectionFilterPropertyPage.java
+++ b/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/filter/ConnectionFilterPropertyPage.java
@@ -14,7 +14,6 @@
import org.eclipse.datatools.connectivity.IConnectionProfile;
import org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.helpers.FilterHelper;
import org.eclipse.datatools.connectivity.sqm.core.internal.ui.util.resources.ResourceLoader;
-import org.eclipse.datatools.connectivity.sqm.core.ui.explorer.virtual.IVirtualNode;
import org.eclipse.datatools.connectivity.sqm.internal.core.connection.ConnectionFilter;
import org.eclipse.datatools.connectivity.sqm.internal.core.connection.ConnectionFilterImpl;
import org.eclipse.jface.viewers.ISelection;
@@ -58,6 +57,8 @@
private boolean isMultiplePredicatesMode = false;
+ private ConnectionFilter connFilter;
+
public ConnectionFilterPropertyPage() {
super();
setTitle(getDefaultPageTitle());
@@ -101,7 +102,7 @@
filterComposite.initializeValues();
}
else {
- ConnectionFilter connFilter = getConnectionFilter();
+ connFilter = getConnectionFilter();
if(connFilter == null)
connFilter = new ConnectionFilterImpl();
@@ -182,6 +183,7 @@
protected abstract String getConnectionFilterType();
public boolean performOk() {
+
String filterType = getConnectionFilterType();
if (filterType != null) {
@@ -197,7 +199,7 @@
}
setConnectionFilter(predicate);
}
-
+
return true;
}
@@ -240,6 +242,24 @@
setValid(true);
}
+ protected void performApply(){
+ String filterType = getConnectionFilterType();
+ if (filterType != null) {
+
+ String predicate = null;
+
+ if(!isMultiplePredicatesMode)
+ {
+ predicate = getPredicate();
+ }
+ else
+ {
+ predicate = getPredicates();
+ }
+ connFilter.setPredicate(predicate);
+ }
+ }
+
public void setDefaultPageTitle ( String title ) {
defaultTitleText = title;
}
diff --git a/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/helpers/FilterHelper.java b/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/helpers/FilterHelper.java
index e018f4b..d66d9c1 100644
--- a/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/helpers/FilterHelper.java
+++ b/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/helpers/FilterHelper.java
@@ -20,8 +20,10 @@
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
import org.eclipse.datatools.connectivity.sqm.core.connection.ConnectionInfo;
import org.eclipse.datatools.connectivity.sqm.core.ui.explorer.virtual.IVirtualNode;
+import org.eclipse.ui.internal.dialogs.AdaptableForwarder;
public class FilterHelper
{
@@ -52,16 +54,33 @@
Boolean temp = new Boolean(configElements[j].getAttribute("supportsMultiplePredicates")); //$NON-NLS-1$
boolean supportsMultiplePredicates = temp.booleanValue();
- if(supportsMultiplePredicates)
- dbCollection.put(vendor + " " + version, objectType);
+ if(supportsMultiplePredicates){
+
+ if(dbCollection.containsKey(vendor + " " + version)){
+ Object obj = dbCollection.get(vendor + " " + version);
+ Vector type = (Vector)obj;
+
+ for(int m = 0; m < objectType.size(); m++)
+ type.add(objectType.get(m));
+
+ dbCollection.put(vendor + " " + version, type);
+ }
+ else
+ dbCollection.put(vendor + " " + version, objectType);
+ }
}
}
}
}
public boolean supportsMultiplePredicatesMode(IAdaptable element){
- if (element instanceof IVirtualNode) {
- IVirtualNode virtualNode = (IVirtualNode) element;
+
+ IVirtualNode virtualNodeAdapter = (IVirtualNode) element
+ .getAdapter(IVirtualNode.class);
+
+ if (virtualNodeAdapter != null) {
+
+ IVirtualNode virtualNode = (IVirtualNode) virtualNodeAdapter;
ConnectionInfo connectionInfo = virtualNode.getParentConnection();
String vendor = connectionInfo.getDatabaseDefinition().getProduct();
String version = connectionInfo.getDatabaseDefinition()
@@ -77,6 +96,7 @@
return true;
}
}
+
}
return false;
}
diff --git a/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/providers/content/virtual/StoredProcedureNode.java b/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/providers/content/virtual/StoredProcedureNode.java
index 19f1cac..00d403c 100644
--- a/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/providers/content/virtual/StoredProcedureNode.java
+++ b/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/providers/content/virtual/StoredProcedureNode.java
@@ -37,6 +37,6 @@
}
public String getFilterName() {
- return getFilterName(ConnectionFilter.STORED_PROCEDURE_FILTER);
+ return ((Schema)getParent()).getName() + IFilterNode.SEPARATOR + ConnectionFilter.STORED_PROCEDURE_FILTER;
}
}
diff --git a/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/providers/content/virtual/UDFNode.java b/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/providers/content/virtual/UDFNode.java
index 4505e81..993b8a8 100644
--- a/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/providers/content/virtual/UDFNode.java
+++ b/plugins/org.eclipse.datatools.connectivity.sqm.core.ui/src/org/eclipse/datatools/connectivity/sqm/core/internal/ui/explorer/providers/content/virtual/UDFNode.java
@@ -15,6 +15,7 @@
import org.eclipse.datatools.connectivity.sqm.core.ui.explorer.providers.content.virtual.VirtualNode;
import org.eclipse.datatools.connectivity.sqm.internal.core.connection.ConnectionFilter;
import org.eclipse.datatools.connectivity.sqm.internal.core.containment.GroupID;
+import org.eclipse.datatools.modelbase.sql.schema.Schema;
/**
* @author ljulien
@@ -37,6 +38,6 @@
}
public String getFilterName() {
- return getFilterName(ConnectionFilter.STORED_PROCEDURE_FILTER);
+ return ((Schema)getParent()).getName() + IFilterNode.SEPARATOR + ConnectionFilter.USER_DEFINED_FUNCTION_FILTER;
}
}
diff --git a/plugins/org.eclipse.datatools.connectivity.sqm.core/src/org/eclipse/datatools/connectivity/sqm/core/connection/ConnectionFilter.java b/plugins/org.eclipse.datatools.connectivity.sqm.core/src/org/eclipse/datatools/connectivity/sqm/core/connection/ConnectionFilter.java
index f40a1bc..c22153f 100644
--- a/plugins/org.eclipse.datatools.connectivity.sqm.core/src/org/eclipse/datatools/connectivity/sqm/core/connection/ConnectionFilter.java
+++ b/plugins/org.eclipse.datatools.connectivity.sqm.core/src/org/eclipse/datatools/connectivity/sqm/core/connection/ConnectionFilter.java
@@ -103,5 +103,7 @@
public static final String DISCOVERED_SERVER_FILTER = "DatatoolsDiscoveredServerFilterPredicate"; //$NON-NLS-1$
public static final String XSR_OBJECTS_FILTER = "DatatoolsXMLSchemasFilterPredicate"; //$NON-NLS-1$
public static final String XML_SCHEMA_DOC_FILTER = "DatatoolsXMLSchemaDocsFilterPredicate"; //$NON-NLS-1$
-
+ public static final String REMOTE_STORED_PROCEDURE_FILTER = "DatatoolsRemoteStoredProcedureFilterPredicate"; //$NON-NLS-1$
+ public static final String TABLESPACE_FILTER = "DatatoolsTablespaceFilterPredicate"; //$NON-NLS-1$
+ public static final String DATABASE_FILTER = "DatatoolsDatabaseFilterPredicate"; //$NON-NLS-1$
}