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. |