|
From: <bh...@us...> - 2006-10-24 14:05:56
|
Revision: 311
http://svn.sourceforge.net/cishell/?rev=311&view=rev
Author: bh2
Date: 2006-10-24 07:05:50 -0700 (Tue, 24 Oct 2006)
Log Message:
-----------
* makes sure parents are from original input data and not the converted data
* added support for "parentage=default"
Modified Paths:
--------------
trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmAction.java
trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java
Modified: trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmAction.java
===================================================================
--- trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmAction.java 2006-10-24 05:17:17 UTC (rev 310)
+++ trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmAction.java 2006-10-24 14:05:50 UTC (rev 311)
@@ -42,6 +42,7 @@
protected BundleContext bContext;
protected ServiceReference ref;
protected Data[] data;
+ protected Data[] originalData;
protected Converter[][] converters;
public AlgorithmAction(ServiceReference ref, BundleContext bContext, CIShellContext ciContext) {
@@ -90,7 +91,7 @@
}
if (params != null) {
- scheduler.schedule(new AlgorithmWrapper(ref, bContext, ciContext, data, converters, params), ref);
+ scheduler.schedule(new AlgorithmWrapper(ref, bContext, ciContext, originalData, data, converters, params), ref);
}
} catch (Throwable e) {
e.printStackTrace();
@@ -142,6 +143,13 @@
}
}
}
+
+ if (data != null) {
+ originalData = (Data[]) data.clone();
+ } else {
+ originalData = null;
+ }
+
setEnabled(data != null && isValid());
}
@@ -157,6 +165,7 @@
//FIXME: Could cause concurrency problems...
for (int j=0; j < data.length; j++) {
if (converters[j] != null && converters[j].length > 0) {
+ //does not work for large inputs...
data[j] = converters[j][0].convert(data[j]);
converters[j] = null;
}
Modified: trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java
===================================================================
--- trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java 2006-10-24 05:17:17 UTC (rev 310)
+++ trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java 2006-10-24 14:05:50 UTC (rev 311)
@@ -13,7 +13,9 @@
* ***************************************************************************/
package org.cishell.reference.gui.menumanager.menu;
+import java.util.ArrayList;
import java.util.Dictionary;
+import java.util.List;
import org.cishell.app.service.datamanager.DataManagerService;
import org.cishell.framework.CIShellContext;
@@ -21,6 +23,7 @@
import org.cishell.framework.algorithm.AlgorithmFactory;
import org.cishell.framework.algorithm.AlgorithmProperty;
import org.cishell.framework.data.Data;
+import org.cishell.framework.data.DataProperty;
import org.cishell.service.conversion.Converter;
import org.cishell.service.guibuilder.GUIBuilderService;
import org.osgi.framework.BundleContext;
@@ -31,16 +34,18 @@
protected ServiceReference ref;
protected BundleContext bContext;
protected CIShellContext ciContext;
+ protected Data[] originalData;
protected Data[] data;
protected Converter[][] converters;
protected Dictionary parameters;
- public AlgorithmWrapper(ServiceReference ref, BundleContext bContext,
- CIShellContext ciContext, Data[] data, Converter[][] converters,
- Dictionary parameters) {
+ public AlgorithmWrapper(ServiceReference ref, BundleContext bContext,
+ CIShellContext ciContext, Data[] originalData, Data[] data,
+ Converter[][] converters, Dictionary parameters) {
this.ref = ref;
this.bContext = bContext;
this.ciContext = ciContext;
+ this.originalData = originalData;
this.data = data;
this.converters = converters;
this.parameters = parameters;
@@ -70,7 +75,18 @@
bContext.getService(bContext.getServiceReference(
DataManagerService.class.getName()));
+ doParentage(outData);
+
+ List goodData = new ArrayList();
for (int i=0; i < outData.length; i++) {
+ if (outData[i] != null) {
+ goodData.add(outData[i]);
+ }
+ }
+
+ outData = (Data[]) goodData.toArray(new Data[0]);
+
+ if (outData.length != 0) {
dataManager.setSelectedData(outData);
}
}
@@ -86,4 +102,44 @@
return new Data[0];
}
}
+
+ //only does anything if parentage=default so far...
+ protected void doParentage(Data[] outData) {
+ //make sure the parent set is the original Data and not the
+ //converted data...
+ if (outData != null && data != null && originalData != null
+ && originalData.length == data.length) {
+ for (int i=0; i < outData.length; i++) {
+ Object parent = outData[i].getMetaData().get(DataProperty.PARENT);
+
+ if (parent != null) {
+ for (int j=0; j < data.length; i++) {
+ if (parent == data[j]) {
+ outData[i].getMetaData().put(DataProperty.PARENT,
+ originalData[j]);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ //check and act on parentage settings
+ String parentage = (String)ref.getProperty("parentage");
+ if (parentage != null) {
+ parentage = parentage.trim();
+ if (parentage.equalsIgnoreCase("default")) {
+ if (originalData != null && originalData.length > 0 && originalData[0] != null) {
+
+ for (int i=0; i < outData.length; i++) {
+ //if they don't have a parent set already then we set one
+ if (outData[i] != null &&
+ outData[i].getMetaData().get(DataProperty.PARENT) == null) {
+ outData[i].getMetaData().put(DataProperty.PARENT, originalData[0]);
+ }
+ }
+ }
+ }
+ }
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|