You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(7) |
Aug
|
Sep
(46) |
Oct
(102) |
Nov
(10) |
Dec
(21) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(1) |
Feb
(3) |
Mar
(14) |
Apr
(9) |
May
(12) |
Jun
(4) |
Jul
(40) |
Aug
(60) |
Sep
(38) |
Oct
(2) |
Nov
(1) |
Dec
(42) |
2008 |
Jan
(23) |
Feb
(29) |
Mar
(107) |
Apr
(27) |
May
(3) |
Jun
(1) |
Jul
(15) |
Aug
(7) |
Sep
(19) |
Oct
|
Nov
(2) |
Dec
|
2009 |
Jan
(36) |
Feb
(4) |
Mar
(2) |
Apr
(1) |
May
(1) |
Jun
(15) |
Jul
(30) |
Aug
(32) |
Sep
(11) |
Oct
(21) |
Nov
(12) |
Dec
(15) |
2010 |
Jan
(29) |
Feb
(9) |
Mar
(25) |
Apr
|
May
(7) |
Jun
(5) |
Jul
(21) |
Aug
(32) |
Sep
(10) |
Oct
(8) |
Nov
(29) |
Dec
(8) |
2011 |
Jan
(9) |
Feb
(35) |
Mar
(11) |
Apr
(4) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
(3) |
Dec
(30) |
2012 |
Jan
(5) |
Feb
(7) |
Mar
(10) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <bh...@us...> - 2008-03-12 12:52:39
|
Revision: 652 http://cishell.svn.sourceforge.net/cishell/?rev=652&view=rev Author: bh2 Date: 2008-03-12 05:52:35 -0700 (Wed, 12 Mar 2008) Log Message: ----------- branching the wizards project to update it to CIShell 1.0 Modified Paths: -------------- branches/spec_update/org.cishell.templates.wizards/org.cishell.templates.wizards/templates_3.0/java_algorithm/java/$algClass$.java branches/spec_update/org.cishell.templates.wizards/org.cishell.templates.wizards/templates_3.0/java_algorithm/java/$algClass$Factory.java Added Paths: ----------- branches/spec_update/org.cishell.templates.wizards/org.cishell.templates.wizards/ Copied: branches/spec_update/org.cishell.templates.wizards/org.cishell.templates.wizards (from rev 650, trunk/templates/org.cishell.templates.wizards) Modified: branches/spec_update/org.cishell.templates.wizards/org.cishell.templates.wizards/templates_3.0/java_algorithm/java/$algClass$.java =================================================================== --- trunk/templates/org.cishell.templates.wizards/templates_3.0/java_algorithm/java/$algClass$.java 2008-03-11 19:35:36 UTC (rev 650) +++ branches/spec_update/org.cishell.templates.wizards/org.cishell.templates.wizards/templates_3.0/java_algorithm/java/$algClass$.java 2008-03-12 12:52:35 UTC (rev 652) @@ -17,7 +17,7 @@ this.context = context; } - public Data[] execute() { + public Data[] execute() throws AlgorithmExecutionException { return null; } } \ No newline at end of file Modified: branches/spec_update/org.cishell.templates.wizards/org.cishell.templates.wizards/templates_3.0/java_algorithm/java/$algClass$Factory.java =================================================================== --- trunk/templates/org.cishell.templates.wizards/templates_3.0/java_algorithm/java/$algClass$Factory.java 2008-03-11 19:35:36 UTC (rev 650) +++ branches/spec_update/org.cishell.templates.wizards/org.cishell.templates.wizards/templates_3.0/java_algorithm/java/$algClass$Factory.java 2008-03-12 12:52:35 UTC (rev 652) @@ -6,29 +6,9 @@ import org.cishell.framework.algorithm.Algorithm; import org.cishell.framework.algorithm.AlgorithmFactory; import org.cishell.framework.data.Data; -import org.osgi.service.component.ComponentContext; -import org.osgi.service.metatype.MetaTypeProvider; -import org.osgi.service.metatype.MetaTypeService; - public class $algClass$Factory implements AlgorithmFactory { - private MetaTypeProvider provider; - - protected void activate(ComponentContext ctxt) { - //You may delete all references to metatype service if - //your algorithm does not require parameters and return - //null in the createParameters() method - MetaTypeService mts = (MetaTypeService)ctxt.locateService("MTS"); - provider = mts.getMetaTypeInformation(ctxt.getBundleContext().getBundle()); - } - protected void deactivate(ComponentContext ctxt) { - provider = null; - } - public Algorithm createAlgorithm(Data[] data, Dictionary parameters, CIShellContext context) { return new $algClass$(data, parameters, context); } - public MetaTypeProvider createParameters(Data[] data) { - return provider; - } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-03-12 12:52:36
|
Revision: 651 http://cishell.svn.sourceforge.net/cishell/?rev=651&view=rev Author: bh2 Date: 2008-03-12 05:52:30 -0700 (Wed, 12 Mar 2008) Log Message: ----------- branching the wizards project to update it to CIShell 1.0 Added Paths: ----------- branches/spec_update/org.cishell.templates.wizards/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-03-11 19:36:43
|
Revision: 650 http://cishell.svn.sourceforge.net/cishell/?rev=650&view=rev Author: bh2 Date: 2008-03-11 12:35:36 -0700 (Tue, 11 Mar 2008) Log Message: ----------- * Revised the title page * Added apache 2.0 license text * updated figures * added acknowledgements * added userprefs package for user-adjustable preferences Barring any other editions, this spec is... DONE!!!! Modified Paths: -------------- branches/spec_update/org.cishell.framework/META-INF/MANIFEST.MF branches/spec_update/org.cishell.framework/javadoc.xml branches/spec_update/org.cishell.framework/src/org/cishell/overview.html trunk/core/org.cishell.docs/build.properties trunk/core/org.cishell.docs/src/img/cishellInteraction.dia trunk/core/org.cishell.docs/src/img/cishellInteraction.eps trunk/core/org.cishell.docs/src/img/cishellInteraction.pdf trunk/core/org.cishell.docs/src/specification/main.tex trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex trunk/core/org.cishell.docs/src/specification/tex/data.tex trunk/core/org.cishell.docs/src/specification/tex/dataconversionservice.tex trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex trunk/core/org.cishell.docs/src/specification/tex/framework.tex trunk/core/org.cishell.docs/src/specification/tex/guibuilderservice.tex trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex trunk/core/org.cishell.docs/src/specification/tex/introduction.tex trunk/core/org.cishell.docs/src/specification/tex/logservice.tex trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex trunk/core/org.cishell.docs/src/specification/tex/preferencesservice.tex trunk/core/org.cishell.docs/src/specification/tex/schedulerservice.tex trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex Added Paths: ----------- branches/spec_update/org.cishell.framework/.settings/org.eclipse.jdt.core.prefs branches/spec_update/org.cishell.framework/src/org/cishell/framework/userprefs/ branches/spec_update/org.cishell.framework/src/org/cishell/framework/userprefs/UserPrefsProperty.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/userprefs/package.html trunk/core/org.cishell.docs/src/img/cishellLogo.png trunk/core/org.cishell.docs/src/specification/tex/license.tex trunk/core/org.cishell.docs/src/specification/tex/title.tex Added: branches/spec_update/org.cishell.framework/.settings/org.eclipse.jdt.core.prefs =================================================================== --- branches/spec_update/org.cishell.framework/.settings/org.eclipse.jdt.core.prefs (rev 0) +++ branches/spec_update/org.cishell.framework/.settings/org.eclipse.jdt.core.prefs 2008-03-11 19:35:36 UTC (rev 650) @@ -0,0 +1,12 @@ +#Wed Feb 06 22:39:13 GMT 2008 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.4 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning +org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning +org.eclipse.jdt.core.compiler.source=1.3 Modified: branches/spec_update/org.cishell.framework/META-INF/MANIFEST.MF =================================================================== --- branches/spec_update/org.cishell.framework/META-INF/MANIFEST.MF 2008-03-10 22:31:38 UTC (rev 649) +++ branches/spec_update/org.cishell.framework/META-INF/MANIFEST.MF 2008-03-11 19:35:36 UTC (rev 650) @@ -1,19 +1,19 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 -Bundle-Name: CIShell Framework API +Bundle-Name: CIShell Platform API Bundle-SymbolicName: org.cishell.framework -Bundle-Version: 0.3.0 -Bundle-Vendor: Bruce Herr -Bundle-Localization: plugin +Bundle-Version: 1.0.0 +Bundle-Vendor: Cyberinfrastructure for Network Science Center Import-Package: org.osgi.framework, org.osgi.service.log, org.osgi.service.metatype, org.osgi.service.prefs -Export-Package: org.cishell.app.service.datamanager, - org.cishell.app.service.scheduler, - org.cishell.framework, - org.cishell.framework.algorithm, - org.cishell.framework.data, - org.cishell.service.conversion, - org.cishell.service.guibuilder -Eclipse-LazyStart: true +Export-Package: org.cishell.app.service.datamanager;version="1.0.0", + org.cishell.app.service.scheduler;version="1.0.0", + org.cishell.framework;version="1.0.0", + org.cishell.framework.algorithm;version="1.0.0", + org.cishell.framework.data;version="1.0.0", + org.cishell.framework.userprefs;version="1.0.0", + org.cishell.service.conversion;version="1.0.0", + org.cishell.service.guibuilder;version="1.0.0" +Bundle-ActivationPolicy: lazy Modified: branches/spec_update/org.cishell.framework/javadoc.xml =================================================================== --- branches/spec_update/org.cishell.framework/javadoc.xml 2008-03-10 22:31:38 UTC (rev 649) +++ branches/spec_update/org.cishell.framework/javadoc.xml 2008-03-11 19:35:36 UTC (rev 650) @@ -14,7 +14,7 @@ version="true" nodeprecatedlist="false" nodeprecated="false" - packagenames="org.cishell.framework.data,org.cishell.service.guibuilder,org.cishell.app.service.scheduler,org.cishell.framework,org.cishell.app.service.datamanager,org.cishell.framework.algorithm,org.cishell.service.conversion" + packagenames="org.cishell.framework.data,org.cishell.framework.userprefs,org.cishell.service.guibuilder,org.cishell.app.service.scheduler,org.cishell.framework,org.cishell.app.service.datamanager,org.cishell.framework.algorithm,org.cishell.service.conversion" sourcepath="src" classpath="lib/osgi.core.jar:lib/osgi.compendium.jar" overview="src/org/cishell/overview.html" Added: branches/spec_update/org.cishell.framework/src/org/cishell/framework/userprefs/UserPrefsProperty.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/userprefs/UserPrefsProperty.java (rev 0) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/userprefs/UserPrefsProperty.java 2008-03-11 19:35:36 UTC (rev 650) @@ -0,0 +1,112 @@ +/* **************************************************************************** + * CIShell: Cyberinfrastructure Shell, An Algorithm Integration Framework. + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the Apache License v2.0 which accompanies + * this distribution, and is available at: + * http://www.apache.org/licenses/LICENSE-2.0.html + * + * Created on Feb 8, 2008 at Indiana University. + * + * Contributors: + * Indiana University - + * ***************************************************************************/ +package org.cishell.framework.userprefs; + +/** + * A standard set of properties and values to be placed in a service's + * metadata Dictionary when registering a service with the OSGi service registry + * for the purpose of publishing and receiving user-adjustable preferences. + * + * See the <a href="http://cishell.org/dev/docs/spec/cishell-spec-1.0.pdf"> + * CIShell Specification 1.0</a> for information on publishing user-adjustable + * preferences. + */ +public interface UserPrefsProperty { + + /** + * The suffix to add to the service's PID for generating a local preferences + * PID when using the standard naming convention + */ + public static final String LOCAL_PREFS_OCD_SUFFIX = ".prefs.local"; + + /** + * The suffix to add to the service's PID for generating a global preferences + * PID when using the standard naming convention + */ + public static final String GLOBAL_PREFS_OCD_SUFFIX = ".prefs.global"; + + /** + * The suffix to add to the service's PID for an {@link Algorithm}'s + * user-entered input parameters PID when using the standard naming convention + */ + public static final String PARAM_PREFS_OCD_SUFFIX = ""; + + /** + * The key for specifying a local preferences PID. + * Only use this when not following the standard naming convention. + */ + public static final String LOCAL_PREFS_PID = "local_prefs_pid"; + + /** + * The key for specifying a global preferences PID. + * Only use this when not following the standard naming convention. + */ + public static final String GLOBAL_PREFS_PID = "global_prefs_pid"; + + + + /** + * The key for specifying what types of preferences are published + */ + public static final String PREFS_PUBLISHED_KEY = "prefs_published"; + + /** + * The value for specifying that local preferences are to be published + */ + public static final String PUBLISH_LOCAL_PREFS_VALUE = "local"; + + /** + * The value for specifying that global preferences are to be published + */ + public static final String PUBLISH_GLOBAL_PREFS_VALUE = "global"; + + /** + * The value for specifying that an {@link Algorithm}'s user-entered input + * parameter defaults may be adjusted by the user + */ + public static final String PUBLISH_PARAM_DEFAULT_PREFS_VALUE = "param-defaults"; + + /** + * The key for declaring a need to receive preferences. "true" and "false" + * are the possible associated values. + */ + public static final String RECEIVE_PREFS_KEY = "receive_prefs"; + + + + /** + * The suffix to add to the service's PID for getting the local preferences + * directly from the ConfigurationAdmin (not recommended) + */ + public static final String LOCAL_PREFS_CONF_SUFFIX = ""; + + /** + * The suffix to add to the service's PID for getting the global preferences + * directly from the ConfigurationAdmin (not recommended) + */ + public static final String GLOBAL_PREFS_CONF_SUFFIX = GLOBAL_PREFS_OCD_SUFFIX; + + /** + * The suffix to add to the service's PID for getting an {@link Algorithm}'s + * user-entered input parameter defaults that have been user-adjusted directly + * from the ConfigurationAdmin (not recommended) + */ + public static final String PARAM_PREFS_CONF_SUFFIX = ".prefs.params"; + + /** + * A key set in each configuration object which states the Bundle-Version of + * the service when it was last updated + */ + public static final String BUNDLE_VERSION_KEY = "Bundle-Version"; +} Added: branches/spec_update/org.cishell.framework/src/org/cishell/framework/userprefs/package.html =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/userprefs/package.html (rev 0) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/userprefs/package.html 2008-03-11 19:35:36 UTC (rev 650) @@ -0,0 +1,30 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <title>org.cishell.framework.userprefs Package-level Javadoc</title> +<!-- +/* **************************************************************************** + * CIShell: Cyberinfrastructure Shell, An Algorithm Integration Framework. + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the Apache License v2.0 which accompanies + * this distribution, and is available at: + * http://www.apache.org/licenses/LICENSE-2.0.html + * + * Created on Mar 11, 2008 at Indiana University. + * + * Contributors: + * Indiana University - + * ***************************************************************************/ +--> +</head> +<body>Provides interfaces required for publishing user-adjustable preferences. +<h2>Package Specification</h2> +The API related to publishing user-adjustable preferences. + +@see <a href="http://cishell.org/dev/docs/spec/cishell-spec-1.0.pdf"> +CIShell Specification 1.0</a> + +</body> +</html> \ No newline at end of file Modified: branches/spec_update/org.cishell.framework/src/org/cishell/overview.html =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/overview.html 2008-03-10 22:31:38 UTC (rev 649) +++ branches/spec_update/org.cishell.framework/src/org/cishell/overview.html 2008-03-11 19:35:36 UTC (rev 650) @@ -20,7 +20,7 @@ --> </head> <body> -API documentation for the Cyberinfrastructure Shell specification +API documentation for the Cyberinfrastructure Shell specification. @see <a href="http://www.osgi.org/osgi_technology/download_specs.asp">OSGi Service Platform Specification, Release 4</a></li> Modified: trunk/core/org.cishell.docs/build.properties =================================================================== --- trunk/core/org.cishell.docs/build.properties 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/build.properties 2008-03-11 19:35:36 UTC (rev 650) @@ -7,7 +7,7 @@ fw.src.dir = src fw.dir = ../org.cishell.framework fw.classpath = ${fw.dir}/lib/osgi.core.jar:${fw.dir}/lib/osgi.compendium.jar -fw.packages = org.cishell.framework.data,org.cishell.service.guibuilder,org.cishell.app.service.scheduler,org.cishell.framework,org.cishell.app.service.datamanager,org.cishell.framework.algorithm,org.cishell.service.conversion +fw.packages = org.cishell.framework.data,org.cishell.framework.userprefs,org.cishell.service.guibuilder,org.cishell.app.service.scheduler,org.cishell.framework,org.cishell.app.service.datamanager,org.cishell.framework.algorithm,org.cishell.service.conversion lib.ant_latex = lib/ant_latex_0.0.9_1.jar lib.texdoclet.jar = lib/texdoclet.jar Modified: trunk/core/org.cishell.docs/src/img/cishellInteraction.dia =================================================================== (Binary files differ) Modified: trunk/core/org.cishell.docs/src/img/cishellInteraction.eps =================================================================== --- trunk/core/org.cishell.docs/src/img/cishellInteraction.eps 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/img/cishellInteraction.eps 2008-03-11 19:35:36 UTC (rev 650) @@ -1,11 +1,11 @@ %!PS-Adobe-2.0 EPSF-2.0 %%Title: /home/bherr/workspace/org.cishell.docs/src/img/cishellInteraction.dia %%Creator: Dia v0.96.1 -%%CreationDate: Fri Mar 7 16:39:20 2008 +%%CreationDate: Tue Mar 11 11:32:40 2008 %%For: bherr %%Orientation: Portrait %%Magnification: 1.0000 -%%BoundingBox: 0 0 1055 520 +%%BoundingBox: 0 0 1257 521 %%BeginSetup %%EndSetup %%EndComments @@ -341,7 +341,7 @@ currentdict end definefont pop 28.346000 -28.346000 scale -3.053560 -24.440100 translate +10.163560 -24.440100 translate %%EndProlog @@ -381,17 +381,17 @@ [] 0 sd 0 slj 0 slc -n 27.417828 17.145000 m 23.876500 17.145000 l 23.876500 17.144000 l 22.655676 17.144000 l s +n 27.417800 17.145000 m 23.876500 17.145000 l 23.876500 17.144000 l 22.655700 17.144000 l s /Courier-latin1 ff 0.560000 scf sf (Creates) 23.976500 16.864500 m dup sw 2.450000 exch sub 7 div exch 0.0 exch gs 1 -1 sc ashow gr -(n) 26.867828 16.865000 m +(n) 26.867800 16.865000 m dup sw 0.350000 exch sub 1 div exch 0.0 exch gs 1 -1 sc ashow gr -(1) 22.855676 16.864000 m +(1) 22.855700 16.864000 m dup sw 0.350000 exch sub 1 div exch 0.0 exch gs 1 -1 sc ashow gr @@ -414,16 +414,16 @@ 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 12.958700 10.229000 m 12.958700 12.429000 l 19.143700 12.429000 l 19.143700 10.229000 l f +n 13.008700 9.429000 m 13.008700 11.629000 l 19.193700 11.629000 l 19.193700 9.429000 l f 0.000000 0.000000 0.000000 srgb -n 12.958700 10.229000 m 12.958700 12.429000 l 19.143700 12.429000 l 19.143700 10.229000 l cp s +n 13.008700 9.429000 m 13.008700 11.629000 l 19.193700 11.629000 l 19.193700 9.429000 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) 13.776200 10.731500 m +(<<interface>>) 13.826200 9.931500 m dup sw 4.550000 exch sub 13 div exch 0.0 exch gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(DataValidator) 13.208700 11.699000 m +(DataValidator) 13.258700 10.899000 m dup sw 5.685000 exch sub 13 div exch 0.0 exch gs 1 -1 sc ashow gr @@ -495,14 +495,14 @@ [] 0 sd [] 0 sd 0 slc -n 16.035133 15.993750 m 16.049006 12.915798 l s +n 16.035100 15.993800 m 16.093829 12.115748 l s [] 0 sd 0 slj 0 slc -n 16.050696 12.540802 m 16.298440 13.041924 l 16.049006 12.915798 l 15.798445 13.039670 l ef -n 16.050696 12.540802 m 16.298440 13.041924 l 16.049006 12.915798 l 15.798445 13.039670 l cp s +n 16.099507 11.740791 m 16.341907 12.244519 l 16.093829 12.115748 l 15.841965 12.236948 l ef +n 16.099507 11.740791 m 16.341907 12.244519 l 16.093829 12.115748 l 15.841965 12.236948 l cp s /Courier-latin1 ff 0.560000 scf sf -( Optional) 16.043166 14.071375 m +( Optional) 16.068150 13.671400 m dup sw 3.150000 exch sub 9 div exch 0.0 exch gs 1 -1 sc ashow gr @@ -525,7 +525,7 @@ [] 0 sd 0 slj 0 slc -n 18.731000 22.187000 m 18.736900 22.187000 l 18.736900 18.244000 l 18.781750 18.244000 l s +n 18.796000 22.187000 m 18.736900 22.187000 l 18.736900 18.244000 l 18.781700 18.244000 l s /Courier-latin1 ff 0.560000 scf sf (Service Constants) 18.836900 19.935500 m dup sw 5.950000 exch sub @@ -567,16 +567,16 @@ 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 3.336170 6.180020 m 3.336170 8.380020 l 12.048670 8.380020 l 12.048670 6.180020 l f +n 3.348670 6.167520 m 3.348670 8.367520 l 12.061170 8.367520 l 12.061170 6.167520 l f 0.000000 0.000000 0.000000 srgb -n 3.336170 6.180020 m 3.336170 8.380020 l 12.048670 8.380020 l 12.048670 6.180020 l cp s +n 3.348670 6.167520 m 3.348670 8.367520 l 12.061170 8.367520 l 12.061170 6.167520 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<class>>) 6.117420 6.682520 m +(<<class>>) 6.129920 6.670020 m dup sw 3.150000 exch sub 9 div exch 0.0 exch gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(LocalCIShellContext) 3.586170 7.650020 m +(LocalCIShellContext) 3.598670 7.637520 m dup sw 8.212500 exch sub 19 div exch 0.0 exch gs 1 -1 sc ashow gr @@ -585,19 +585,19 @@ [] 0 sd 0 slj 0 slc -n 7.710510 11.258897 m 7.710510 8.828840 l 7.711170 8.828840 l 7.711170 8.429910 l s +n 7.701548 11.258857 m 7.710510 8.828840 l 7.704920 8.828840 l 7.704920 8.417545 l s [] 0 sd 0 slj 0 slc -n 7.710510 11.633897 m 7.460510 11.133897 l 7.710510 11.258897 l 7.960510 11.133897 l ef -n 7.710510 11.633897 m 7.460510 11.133897 l 7.710510 11.258897 l 7.960510 11.133897 l cp s +n 7.700165 11.633854 m 7.452011 11.132936 l 7.701548 11.258857 l 7.952007 11.134780 l ef +n 7.700165 11.633854 m 7.452011 11.132936 l 7.701548 11.258857 l 7.952007 11.134780 l cp s 0.100000 slw [] 0 sd [] 0 sd 0 slj 0 slc -n 22.626200 17.313300 m 21.531500 18.353100 l 22.625500 18.353100 l ef -n 22.626200 17.313300 m 21.531500 18.353100 l 22.625500 18.353100 l cp s +n 22.713700 17.313300 m 21.619000 18.353100 l 22.713000 18.353100 l ef +n 22.713700 17.313300 m 21.619000 18.353100 l 22.713000 18.353100 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb @@ -671,67 +671,170 @@ gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd +1.000000 1.000000 1.000000 srgb +n 15.656400 6.140000 m 15.656400 8.340000 l 23.778900 8.340000 l 23.778900 6.140000 l f +0.000000 0.000000 0.000000 srgb +n 15.656400 6.140000 m 15.656400 8.340000 l 23.778900 8.340000 l 23.778900 6.140000 l cp s +/Courier-latin1 ff 0.560000 scf sf +(<<interface>>) 17.442650 6.642500 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr +/Helvetica-Bold-latin1 ff 0.700000 scf sf +(ParameterMutator) 15.906400 7.610000 m +dup sw 7.622500 exch sub +16 div exch 0.0 exch + gs 1 -1 sc ashow gr +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 19.722600 15.993800 m 19.717965 8.826803 l s +[] 0 sd 0 slj 0 slc -n 1.095190 10.315100 m 2.207520 10.315100 l 2.207520 12.896000 l 4.361150 12.896000 l s -(Provides Access) 2.307520 11.325550 m -dup sw 5.250000 exch sub -15 div exch 0.0 exch +n 19.717722 8.451803 m 19.968046 8.951642 l 19.717965 8.826803 l 19.468046 8.951965 l ef +n 19.717722 8.451803 m 19.968046 8.951642 l 19.717965 8.826803 l 19.468046 8.951965 l cp s +/Courier-latin1 ff 0.560000 scf sf +( Optional) 19.720125 12.026900 m +dup sw 3.150000 exch sub +9 div exch 0.0 exch gs 1 -1 sc ashow gr -(4) 1.295190 10.035100 m -dup sw 0.350000 exch sub -1 div exch 0.0 exch +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n -5.096060 14.242500 m -5.096060 16.442500 l -0.046060 16.442500 l -0.046060 14.242500 l f +0.000000 0.000000 0.000000 srgb +n -5.096060 14.242500 m -5.096060 16.442500 l -0.046060 16.442500 l -0.046060 14.242500 l cp s +/Courier-latin1 ff 0.560000 scf sf +(<<interface>>) -4.846060 14.745000 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch gs 1 -1 sc ashow gr -(n) 3.811150 12.616000 m -dup sw 0.350000 exch sub -1 div exch 0.0 exch +/Helvetica-Bold-latin1 ff 0.700000 scf sf +(LogService) -4.832310 15.712500 m +dup sw 4.522500 exch sub +10 div exch 0.0 exch gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n -3.003560 9.065060 m 0.446440 9.065060 l 1.046440 9.665060 l 1.046440 11.565060 l -3.003560 11.565060 l ef +n -8.508560 11.530000 m -8.508560 13.730000 l -0.036060 13.730000 l -0.036060 11.530000 l f 0.000000 0.000000 0.000000 srgb -n -3.003560 9.065060 m 0.446440 9.065060 l 1.046440 9.665060 l 1.046440 11.565060 l -3.003560 11.565060 l cp s -0.050000 slw -n 0.446440 9.065060 m 0.446440 9.665060 l 1.046440 9.665060 l s +n -8.508560 11.530000 m -8.508560 13.730000 l -0.036060 13.730000 l -0.036060 11.530000 l cp s /Courier-latin1 ff 0.560000 scf sf -(Standard ) -2.653560 10.117560 m -dup sw 3.150000 exch sub -9 div exch 0.0 exch +(<<interface>>) -6.547310 12.032500 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch gs 1 -1 sc ashow gr -(Services) -2.653560 10.917560 m -dup sw 2.800000 exch sub -8 div exch 0.0 exch +/Helvetica-Bold-latin1 ff 0.700000 scf sf +(PreferencesService) -8.258560 13.000000 m +dup sw 7.972500 exch sub +18 div exch 0.0 exch gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 15.656440 6.540000 m 15.656440 8.740000 l 23.778940 8.740000 l 23.778940 6.540000 l f +n -10.113560 6.160000 m -10.113560 8.360000 l -0.046060 8.360000 l -0.046060 6.160000 l f 0.000000 0.000000 0.000000 srgb -n 15.656440 6.540000 m 15.656440 8.740000 l 23.778940 8.740000 l 23.778940 6.540000 l cp s +n -10.113560 6.160000 m -10.113560 8.360000 l -0.046060 8.360000 l -0.046060 6.160000 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) 17.442690 7.042500 m +(<<interface>>) -7.354810 6.662500 m dup sw 4.550000 exch sub 13 div exch 0.0 exch gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(ParameterMutator) 15.906440 8.010000 m -dup sw 7.622500 exch sub -16 div exch 0.0 exch +(DataConversionService) -9.863560 7.630000 m +dup sw 9.567500 exch sub +21 div exch 0.0 exch gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd +1.000000 1.000000 1.000000 srgb +n -8.008560 8.867500 m -8.008560 11.067500 l -0.056060 11.067500 l -0.056060 8.867500 l f +0.000000 0.000000 0.000000 srgb +n -8.008560 8.867500 m -8.008560 11.067500 l -0.056060 11.067500 l -0.056060 8.867500 l cp s +/Courier-latin1 ff 0.560000 scf sf +(<<interface>>) -6.307310 9.370000 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr +/Helvetica-Bold-latin1 ff 0.700000 scf sf +(GUIBuilderService) -7.758560 10.337500 m +dup sw 7.452500 exch sub +17 div exch 0.0 exch + gs 1 -1 sc ashow gr +0.100000 slw [] 0 sd +0 slj 0 slc -n 19.722633 15.993750 m 19.718022 9.226803 l s +n 0.002994 7.260000 m 2.047600 7.260000 l 2.047600 12.896000 l 4.410510 12.896000 l s +/Courier-latin1 ff 0.560000 scf sf +(Provides Access) 2.147600 9.798000 m +dup sw 5.250000 exch sub +15 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 0.202994 6.980000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr +(n) 3.860510 12.616000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr +0.100000 slw [] 0 sd +[] 0 sd 0 slj 0 slc -n 19.717766 8.851803 m 19.968107 9.351633 l 19.718022 9.226803 l 19.468107 9.351974 l ef -n 19.717766 8.851803 m 19.968107 9.351633 l 19.718022 9.226803 l 19.468107 9.351974 l cp s -/Courier-latin1 ff 0.560000 scf sf -( Optional) 19.720161 12.226875 m -dup sw 3.150000 exch sub -9 div exch 0.0 exch +n 0.053166 10.164762 m -1.041534 11.204562 l 0.052466 11.204562 l ef +n 0.053166 10.164762 m -1.041534 11.204562 l 0.052466 11.204562 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 0.043882 12.838512 m -1.050818 13.878312 l 0.043182 13.878312 l ef +n 0.043882 12.838512 m -1.050818 13.878312 l 0.043182 13.878312 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 0.052632 15.554762 m -1.042068 16.594562 l 0.051932 16.594562 l ef +n 0.052632 15.554762 m -1.042068 16.594562 l 0.051932 16.594562 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 0.061382 7.458512 m -1.033318 8.498312 l 0.060682 8.498312 l ef +n 0.061382 7.458512 m -1.033318 8.498312 l 0.060682 8.498312 l cp s +0.100000 slw +[] 0 sd +0 slj +0 slc +n -0.006049 9.967500 m 2.043610 9.967500 l 2.043610 12.896000 l 4.361082 12.896000 l s +(1) 0.193951 9.687500 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch gs 1 -1 sc ashow gr +0.100000 slw +[] 0 sd +0 slj +0 slc +n 0.011290 12.630000 m 2.043610 12.630000 l 2.043610 12.896000 l 4.410510 12.896000 l s +(1) 0.211290 12.350000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr +0.100000 slw +[] 0 sd +0 slj +0 slc +n 0.003286 15.342500 m 2.043610 15.342500 l 2.043610 12.896000 l 4.361082 12.896000 l s +(1) 0.203286 15.062500 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr showpage Modified: trunk/core/org.cishell.docs/src/img/cishellInteraction.pdf =================================================================== (Binary files differ) Added: trunk/core/org.cishell.docs/src/img/cishellLogo.png =================================================================== (Binary files differ) Property changes on: trunk/core/org.cishell.docs/src/img/cishellLogo.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/core/org.cishell.docs/src/specification/main.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/main.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/main.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,37 +1,45 @@ %% Cyberinfrastructure Shell (CIShell) Core Specification %% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% % \documentclass[pdftex,11pt,letterpaper]{report} \usepackage[top=1in, left=1in, right=1in, bottom=1in]{geometry} \usepackage[pdftex]{graphicx} \DeclareGraphicsExtensions{.pdf,.png,.jpg,.mps,.eps} -\usepackage[pdftex]{hyperref} \usepackage{color} +\usepackage{../mystyle} +\input{./tex/api.tex} +\packagesheader{} + +\usepackage[pdftex]{hyperref} \hypersetup{ - pdftitle={Cyberinfrastructure Shell (CIShell) Core Specification 1.0}, % - title pdfsubject={Cyberinfrastructure Shell (CIShell) Core Specification - 1.0}, - pdfauthor={}, - pdfnewwindow=true, % links in new window + pdftitle={Cyberinfrastructure Shell (CIShell) - Core Specification 1.0}, + pdfsubject={Cyberinfrastructure Shell (CIShell) - Core Specification 1.0}, + pdfauthor={Bruce W. Herr II}, + pdfnewwindow=true% links in new window } -\usepackage{../mystyle} -\title{Cyberinfrastructure Shell (CIShell) \\ -Core Specification \\ -1.0 \\ -\textbf{DRAFT}} -% \author{} % Will fill in later -% \date{} % ditto +\raggedright -\input{./tex/api.tex} -\packagesheader{} - \begin{document} -\maketitle{} +\input{./tex/title.tex} \tableofcontents{} \input{./tex/introduction.tex} @@ -45,8 +53,8 @@ \orgcishellframework{} \orgcishellframeworkalgorithm{} \orgcishellframeworkdata{} +\orgcishellframeworkuserprefs{} -%% Each service gets its own tex file \input{./tex/dataconversionservice.tex} \input{./tex/guibuilderservice.tex} \input{./tex/logservice.tex} @@ -54,4 +62,6 @@ \input{./tex/datamanagerservice.tex} \input{./tex/schedulerservice.tex} +\input{./tex/license.tex} + \end{document} Modified: trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + \section{Algorithm Specification} \subsection*{\textit{Version 1.0}} Modified: trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + \subsection{Algorithm Types} \label{algConstraints} \subsubsection{Introduction} Modified: trunk/core/org.cishell.docs/src/specification/tex/data.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/data.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/data.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + \section{Data Specification} \label{dataSpec} \subsection*{\textit{Version 1.0}} Modified: trunk/core/org.cishell.docs/src/specification/tex/dataconversionservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/dataconversionservice.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/dataconversionservice.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + \chapter{Data Conversion Service Specification} \section*{\textit{Version 1.0}} \section{Introduction} Modified: trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + \chapter{Data Manager Application Service Specification} \section*{\textit{Version 1.0}} Modified: trunk/core/org.cishell.docs/src/specification/tex/framework.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/framework.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/framework.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + \chapter{Framework API} \section*{\textit{Version 1.0}} Modified: trunk/core/org.cishell.docs/src/specification/tex/guibuilderservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/guibuilderservice.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/guibuilderservice.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + \chapter{GUI Builder Service Specification} \section*{\textit{Version 1.0}} \section{Introduction} Modified: trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + \section{User Interface Specification} \label{GUISpec} \subsection*{\textit{Version 1.0}} Modified: trunk/core/org.cishell.docs/src/specification/tex/introduction.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/introduction.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/introduction.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + \chapter{Introduction} The Cyberinfrastructure Shell (CIShell) is an open source, community-driven @@ -10,12 +28,28 @@ seamlessly; and ultimately (4) end-users to use datasets and algorithms effectively. +\section{Acknowledgements} + +The Cyberinfrastructure Shell was designed and developed at the +Cyberinfrastructure for Network Science Center (CNSC) at Indiana University in +Bloomington, Indiana. The specification and API was designed and authored by +Bruce W. Herr II, but received input from all members of the CIShell team. +Important contributors from the CIShell team include Katy B\"{o}rner (director of +CNSC), Weixia Huang, Russell Duhon, Micah Linnemeier, and Timothy Kelley. Much of +the design of CIShell draws on previous work by Shashikant Penumarthy, Bruce W. +Herr II, and Katy B\"{o}rner on the Information Visualization Cyberinfrastructure +(IVC). Thanks go out to all those who have used or contributed to IVC, CIShell, +and the Network Workbench (the first project to use CIShell). + \section{CIShell Platform Overview} The CIShell Platform consists of Java interface definitions for algorithms, data, services for algorithm developers, and services for application developers. Much of the platform uses metadata and is fully defined. +This specification and associated Java API are released under the Apache 2.0 +License. + %The next version should have this section. %\section{What is New} @@ -32,7 +66,7 @@ \item Application developers building on CIShell \end{itemize} -The CIShell Specifications assume that the reader has at least one year of +The CIShell Specification assumes that the reader has at least one year of practical experience in writing Java programs. CIShell is built to run on the OSGi Service Platform Release 4\footnote{http://www.osgi.org/Release4/Download} and thus a working knowledge of OSGi is expected. OSGi (and thus CIShell) is @@ -71,6 +105,8 @@ Framework Specification & org.cishell.framework & Version 1.0 \\ Algorithm Specification & org.cishell.framework.algorithm & Version 1.0 \\ Data Specification & org.cishell.framework.data & Version 1.0 \\ +User Adjustable Preferences Specification & org.cishell.framework.userprefs & +Version 1.0 \\ Data Conversion Service Specification & org.cishell.service.conversion & Version 1.0 \\ GUI Builder Service Specification & org.cishell.service.guibuilder & Version Added: trunk/core/org.cishell.docs/src/specification/tex/license.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/license.tex (rev 0) +++ trunk/core/org.cishell.docs/src/specification/tex/license.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -0,0 +1,199 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + +\appendix + +\chapter{Apache 2.0 License} +\begin{verbatim} + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +\end{verbatim} \ No newline at end of file Modified: trunk/core/org.cishell.docs/src/specification/tex/logservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/logservice.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/logservice.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + \chapter{Log Service Specification} \label{logService} \section*{Version 1.3} Modified: trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + \section{OSGi Dependencies} CIShell is built to be run in a fully compliant OSGi Service Platform R4 Modified: trunk/core/org.cishell.docs/src/specification/tex/preferencesservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/preferencesservice.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/preferencesservice.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + \chapter{Preferences Service Specification} \label{preferencesService} \section*{Version 1.1} Modified: trunk/core/org.cishell.docs/src/specification/tex/schedulerservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/schedulerservice.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/schedulerservice.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + \chapter{Scheduler Application Service Specification} \section*{Version 1.0} Added: trunk/core/org.cishell.docs/src/specification/tex/title.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/title.tex (rev 0) +++ trunk/core/org.cishell.docs/src/specification/tex/title.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -0,0 +1,59 @@ +%% Cyberinfrastructure Shell (CIShell) Core Specification +%% +%% Copyright 2006,2007,2008 Indiana University +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +% + +\begin{titlepage} +\begin{center} + +\vspace*{1in} + +\includegraphics[width=0.7\textwidth]{../img/cishellLogo.png}\\ +{\LARGE Cyberinfrastructure Shell}\\ +{\Large Core Specification 1.0}\\ +%{\Large 1.0} +\center{\large March 2008} + +\vspace*{\fill} + +\begin{minipage}{0.7\textwidth} +\begin{small} +\definecolor{Gray}{rgb}{0.55,0.55,0.55} +{\color{Gray} + +\center{Copyright \copyright{} 2006, 2007, 2008 Indiana University} + +\begin{flushleft} +Licensed under the Apache License, Version 2.0 (the ``License''); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at +\end{flushleft} + +\center{http://www.apache.org/licenses/LICENSE-2.0} + +\begin{flushleft} +Unless required by applicable law or agreed to in writing, software distributed +under the License is distributed on an ``AS IS'' BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the License for the +specific language governing permissions and limitations under the License. +\end{flushleft} + +} +\end{small} +\end{minipage} + +\end{center} +\end{titlepage} Modified: trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex 2008-03-10 22:31:38 UTC (rev 649) +++ trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex 2008-03-11 19:35:36 UTC (rev 650) @@ -1,3 +1,21 @@ +%% Cyberinfrastruc... [truncated message content] |
From: <bh...@us...> - 2008-03-10 22:31:43
|
Revision: 649 http://cishell.svn.sourceforge.net/cishell/?rev=649&view=rev Author: bh2 Date: 2008-03-10 15:31:38 -0700 (Mon, 10 Mar 2008) Log Message: ----------- Going over the spec with a fine toothed comb... The spec is nearly complete! Modified Paths: -------------- branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/DataManagerService.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/LocalCIShellContext.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmFactory.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmProperty.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/DataValidator.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ParameterMutator.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/Data.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/DataProperty.java branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/DataConversionService.java branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUIBuilderService.java trunk/core/org.cishell.docs/src/specification/main.tex trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex trunk/core/org.cishell.docs/src/specification/tex/data.tex trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex trunk/core/org.cishell.docs/src/specification/tex/framework.tex trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex trunk/core/org.cishell.docs/src/specification/tex/introduction.tex trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex Modified: branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/DataManagerService.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/DataManagerService.java 2008-03-07 21:56:18 UTC (rev 648) +++ branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/DataManagerService.java 2008-03-10 22:31:38 UTC (rev 649) @@ -18,7 +18,7 @@ /** * A service for managing loaded {@link Data} objects. * {@link DataManagerListener}s may be registered to be notified of changes - * in the model manager. + * in the data manager. * * Application developers are encouraged to use this service for managing the * models they have loaded into memory. Algorithm developers are encouraged not Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/LocalCIShellContext.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/LocalCIShellContext.java 2008-03-07 21:56:18 UTC (rev 648) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/LocalCIShellContext.java 2008-03-10 22:31:38 UTC (rev 649) @@ -20,7 +20,7 @@ * A simple implementation of {@link CIShellContext} that pulls the * CIShell services from the provided {@link BundleContext} that all OSGi * bundles receive on activation. This was included in the standard API since - * it will be used frequently by CIShell Application writers. + * it will be used frequently by CIShell application developers. * * This implementation only returns standard services or the service strings * given to it in its constructor. @@ -44,7 +44,7 @@ /** * Initializes the CIShell context with a custom set of standard services. - * Only the standard services provided will be allowed to be retrieved from + * Only the service in the array will be allowed to be retrieved from * this <code>CIShellContext</code>. * * @param bContext The <code>BundleContext</code> to use to find Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmFactory.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmFactory.java 2008-03-07 21:56:18 UTC (rev 648) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmFactory.java 2008-03-10 22:31:38 UTC (rev 649) @@ -21,15 +21,13 @@ /** * A service interface for creating {@link Algorithm}s to be executed. - * <br> * An algorithm developer must create an implementation of this interface and * register it (along with some standard metadata about the algorithm, defined * in the {@link AlgorithmProperty} class) in the OSGi service registry. - * <br> * If the algorithm requires input in addition to the raw data provided, a * {@link MetaTypeProvider} must be published to OSGi's {@link MetaTypeService} * (usually through a METADATA.XML file in the algorithm's bundle). - * <br> + * * See the <a href="http://cishell.org/dev/docs/spec/cishell-spec-1.0.pdf"> * CIShell Specification 1.0</a> for documentation on the full requirements for * algorithm creation. Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmProperty.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmProperty.java 2008-03-07 21:56:18 UTC (rev 648) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmProperty.java 2008-03-10 22:31:38 UTC (rev 649) @@ -15,8 +15,8 @@ /** * A standard set of properties and values used for creating a service - * Dictionary that is provided when registering an {@link AlgorithmFactory} - * with the OSGi service registry. + * metadata Dictionary that is provided when registering an + * {@link AlgorithmFactory} with the OSGi service registry. * * See the <a href="http://cishell.org/dev/docs/spec/cishell-spec-1.0.pdf"> * CIShell Specification 1.0</a> for documentation on each property. Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/DataValidator.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/DataValidator.java 2008-03-07 21:56:18 UTC (rev 648) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/DataValidator.java 2008-03-10 22:31:38 UTC (rev 649) @@ -24,10 +24,6 @@ * make additional checks. For example, if an algorithm only worked on * symmetric matrices, this interface would check the data ahead of time * to ensure that the given matrix was in fact a symmetric matrix. - * <br> - * In order for CIShell applications to fully recognize this additional validation - * method, an algorithm developer must register this interface in addition to the - * algorithm interface when registering their service. * * @author Bruce Herr (bh...@bh...) */ Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ParameterMutator.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ParameterMutator.java 2008-03-07 21:56:18 UTC (rev 648) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ParameterMutator.java 2008-03-10 22:31:38 UTC (rev 649) @@ -21,7 +21,7 @@ * An additional interface an {@link AlgorithmFactory} can implement that allows * for adding, modifying, or removing input parameters before being shown to the * end-user for input. This interface is often implemented by algorithms that - * wish to customize the input UI based on the actual input data. + * wish to customize the user interface based on the actual input data. * * @author Bruce Herr (bh...@bh...) */ Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/Data.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/Data.java 2008-03-07 21:56:18 UTC (rev 648) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/Data.java 2008-03-10 22:31:38 UTC (rev 649) @@ -17,15 +17,16 @@ import java.util.Dictionary; /** - * A class that encapsulates data and its metadata. This class is used to pass - * data between algorithms and is what algorithms optionally create when executed. + * A class that contains data, its format, and its metadata. This class is used + * to pass data between algorithms and is what algorithms optionally create when + * executed. * * @author Bruce Herr (bh...@bh...) */ public interface Data { /** * Returns the metadata associated with the data stored in this Data object. - * Some standard keys are in the {@link DataProperty} interface. + * Standard keys and values are in the {@link DataProperty} interface. * * @return The data's metadata */ Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/DataProperty.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/DataProperty.java 2008-03-07 21:56:18 UTC (rev 648) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/DataProperty.java 2008-03-10 22:31:38 UTC (rev 649) @@ -15,7 +15,7 @@ /** - * Standard property keys to use when creating metadata for a + * Standard property keys and values to use when creating metadata for a * {@link Data} object * * @author Bruce Herr (bh...@bh...) Modified: branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/DataConversionService.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/DataConversionService.java 2008-03-07 21:56:18 UTC (rev 648) +++ branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/DataConversionService.java 2008-03-10 22:31:38 UTC (rev 649) @@ -36,8 +36,7 @@ * returned {@link Converter}s, which may be a composite of multiple * algorithms, will take a {@link Data} object of the specified * <code>inFormat</code> and convert it to a Data object of type - * <code>outFormat</code>. If there is no way to convert the Data object, - * <code>null</code> will be returned. + * <code>outFormat</code>. * * @param inFormat The type of Data object to be converted. This String * should be formatted in the same way as an algorithm's @@ -46,8 +45,7 @@ * String should be formatted in the same way as an * algorithm's {@link AlgorithmProperty#OUT_DATA}. * @return An array of {@link Converter}s that can convert a Data object of - * the given inFormat to the specified outFormat, or - * <code>null</code> if there is no valid conversion sequence + * the given inFormat to the specified outFormat */ public Converter[] findConverters(String inFormat, String outFormat); @@ -58,20 +56,16 @@ * @param data The Data object to convert * @param outFormat The output format to convert to * @return An array of {@link Converter}s that can convert the - * given Data object to the specified output format, or - * <code>null</code> if there is no valid conversion sequence + * given Data object to the specified output format */ public Converter[] findConverters(Data data, String outFormat); /** - * Tries to convert a given Data object to the specified output format. If - * the conversion fails or there is no way to convert it, this method will - * return a <code>null</code>. + * Tries to convert a given Data object to the specified output format * * @param data The Data to convert * @param outFormat The format of the Data object to be returned - * @return A Data object with the specified output format, or - * <code>null</code> if there is no valid conversion sequence + * @return A Data object with the specified output format * @throws ConversionException If the data conversion fails while converting */ public Data convert(Data data, String outFormat) throws ConversionException; Modified: branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUIBuilderService.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUIBuilderService.java 2008-03-07 21:56:18 UTC (rev 648) +++ branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUIBuilderService.java 2008-03-10 22:31:38 UTC (rev 649) @@ -17,7 +17,6 @@ import org.osgi.service.log.LogService; import org.osgi.service.metatype.MetaTypeProvider; -import org.osgi.service.metatype.MetaTypeService; import org.osgi.service.metatype.ObjectClassDefinition; /** @@ -26,11 +25,11 @@ * simple information and a more flexible way to create {@link GUI}s using a * standard OSGi {@link MetaTypeProvider}. The MetaTypeProvider basically lists * what input is needed (String, Integer, Float, etc...), a description of the - * input, and a way to validate input. There is also an XML format that OSGi - * provides a service ({@link MetaTypeService}) for that will parse the XML into - * a MetaTypeProvider instance. See the + * input, and a way to validate input. + * + * See the * <a href="http://cishell.org/dev/docs/spec/cishell-spec-1.0.pdf"> - * CIShell Specification 1.0</a> for documentation about creating GUIs with this + * CIShell Specification 1.0</a> for documentation on creating GUIs with this * service. * * Algorithm writers are encouraged to use this service if they need to get Modified: trunk/core/org.cishell.docs/src/specification/main.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/main.tex 2008-03-07 21:56:18 UTC (rev 648) +++ trunk/core/org.cishell.docs/src/specification/main.tex 2008-03-10 22:31:38 UTC (rev 649) @@ -1,4 +1,4 @@ -%% CIShell Specification +%% Cyberinfrastructure Shell (CIShell) Core Specification %% % @@ -54,10 +54,4 @@ \input{./tex/datamanagerservice.tex} \input{./tex/schedulerservice.tex} -%%% We have no references thus far, so this is commented out for now. -% Bibliography: -% \clearpage -% \bibliographystyle{plain} -% \bibliography{../bibliography} - \end{document} Modified: trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-03-07 21:56:18 UTC (rev 648) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-03-10 22:31:38 UTC (rev 649) @@ -7,22 +7,40 @@ The CIShell Platform has been specifically designed around the idea of the algorithm. It is the central and most important concept. Algorithms are fully defined and self-contained bits of execution. They can do many things from data -conversion, data analysis, and can even spawn whole outside programs if needed. +conversion, data analysis, and can even spawn whole external programs if needed. Algorithms are very well defined black boxes in that what can come into and out -of the algorithm is specified in each algorithm's metadata. Other than that, -CIShell makes no attempt to understand the algorithm. +of the algorithm is specified in each algorithm's service metadata and +associated \class{MetaTypeProvider}. Other than that, CIShell makes no attempt +to understand the algorithm. +\subsubsection{Essentials} +\begin{itemize} + \item \textit{Application Independence} - Algorithms must be usable in a wide + variety of contexts and should not be tied to any one CIShell environment or + front end where possible. + \item \textit{User Interface Independence} - Algorithms should not have to tie + themselves to a single UI where possible. + \item \textit{Black Box Algorithms} - Algorithms are black boxes whose + possible interactions are described in metadata. + \item \textit{Delayed Execution} - There may be a large delay between an + algorithm getting parameters for execution and its actual execution. + \item \textit{Remote Execution} - Algorithm interfaces should be designed to + facilitate remote execution of algorithms where possible. +\end{itemize} + +\subsubsection{Operations} + To be recognized by CIShell, an \class{AlgorithmFactory} must be registered with -OSGi's Service Registry. The service registry requires three things when +OSGi's service registry. The service registry requires three things when registering: an interface (\class{AlgorithmFactory}), an implementation, and a \class{Dictionary} of metadata. The algorithm developer provides the implementation and metadata. The metadata helps to differentiate and define the algorithm for search and discovery, see section \ref{algMetaData}. An algorithm defines its inputs in two ways. First, the input data is defined in -the algorithm's service metadata. Second, the acceptable user-entered parameters -are defined in a \class{MetaTypeProvider} and published to the -\class{MetaTypeService}, see section \ref{GUISpec}. +the algorithm's service metadata. Second, the acceptable user-entered +input parameters are defined in a \class{MetaTypeProvider} and published to the +\class{MetaTypeService}. Figure \ref{fig:algExecWorkflow} shows the typical flow of information into and out of an algorithm. First the input parameter specification is pulled from the @@ -39,22 +57,21 @@ \label{fig:algExecWorkflow} \end{figure} + \subsection{Optional Interfaces} Algorithm developers may augment algorithms with additional interfaces to enhance -parts of the execution workflow. See each interface's documentation for more +parts of the execution workflow. See each interface's API documentation for more details. \begin{description} \item[ParameterMutator] An \class{AlgorithmFactory} can implement the \class{ParameterMutator} interface to add, remove, or modify an algorithm's - parameters (\class{AttributeDefinition}s in an \class{ObjectClassDefinition} - in a \class{MetaTypeProvider}) between the time when its - \class{MetaTypeProvider} is pulled from the \class{MetaTypeService} and when - the corresponding UI is shown to the user. This is typically done to - customize the input parameters based on the data to be given to the - algorithm. See section \ref{GUISpec} for information on constructing and - publishing \class{MetaTypeProviders}. + input parameters between the time when its \class{MetaTypeProvider} is pulled + from the \class{MetaTypeService} and when the corresponding UI is shown to the + user. This is typically done to customize the input parameters based on the + data to be given to the algorithm. See section \ref{GUISpec} for information + on constructing and publishing \class{MetaTypeProviders}. \item[DataValidator] An \class{AlgorithmFactory} can implement the \class{DataValidator} interface to validate the data beyond the data format @@ -65,16 +82,16 @@ of an \class{Algorithm}'s progress while executing. \end{description} -\subsection{Algorithm Service Metadata Definition} +\subsection{Service Metadata} \label{algMetaData} -When an algorithm is registered with OSGi's service registry, a dictionary of -metadata is provided. Since the algorithm itself is a black box, the metadata is -used to provide information about the algorithm. Information such as the format -of each \class{Data} item to be input and output is provided. In addition to the -mechanics of the algorithms, data such as the authors, label, urls, citation -references, and description are provided. This metadata can be searched by anyone -using OSGi's service registry to find relevant algorithms. +When an algorithm is registered with OSGi's service registry, a +\class{Dictionary} of metadata is provided. Since the algorithm itself is a black +box, the metadata is used to provide information about the algorithm. Information +such as the format of each \class{Data} item to be input and output is provided. +In addition to the mechanics of the algorithms, data such as the authors, label, +urls, citation references, and description are provided. This metadata can be +searched by anyone using OSGi's service registry to find relevant algorithms. Each standard metadata element required by the CIShell specification is defined below and in the interface \class{AlgorithmProperty}. It defines each key string @@ -87,7 +104,7 @@ be available in the service registry at any given time. It is recommended to use the Java naming scheme including path for this purpose, i.e., ``org.cishell.my.algorithm.MyAlgorithm''. This metadata element is defined -as part of the OSGi Service Platform Core Specification, section 6.1.12.58. +as part of the OSGi Service Platform Core Specification, section 6.1.12. \begin{quote} \begin{description} @@ -114,11 +131,12 @@ \subsection*{in\_data} Specifies the formats and number of \class{Data} inputs the algorithm accepts. The string is a comma separated list of data formats as -defined in section \ref{dataSpec}. If any data is optional, prefix the associated -format with a ``?''. When receiving the \class{Data} array, an optional -\class{Data} element will be null if it is not provided. If no \class{Data} -inputs are necessary then the string ``null'' or not specifying the in\_data attribute -at all is valid. +defined in section \ref{dataSpec}. If no \class{Data} inputs are necessary then +the string ``null'' or not specifying the in\_data attribute at all is valid. +If any data is optional, prefix the associated format with a ``?''. When the +\class{AlgorithmFactory.createAlgorithm} method is called with a \class{Data} +array, an optional \class{Data} element will be \class{null} if it is not +provided. By using the ``+'', ``*'', or ``?'' prefixes, ambiguities could arise from specifying multiple input formats that could easily fit into two or more @@ -140,12 +158,12 @@ \subsection*{out\_data} Specifies the formats and number of \class{Data} inputs -the algorithm produces when successfully run. The string is a comma separated -list of data formats as defined in section \ref{dataSpec}. If any data is -optional, prefix the associated format with a ``?''. When producing the -\class{Data} array, an optional \class{Data} element must be null if it is not -produced. If no \class{Data} is output then the string ``null'' or not specifying -the out\_data attribute at all is valid. +the algorithm produces when successfully executed. The string is a comma +separated list of data formats as defined in section \ref{dataSpec}. If no +\class{Data} is output then the string ``null'' or not specifying the out\_data +attribute at all is valid. If any data is optional, prefix the associated +format with a ``?''. When producing the \class{Data} array, an optional +\class{Data} element must be \class{null} if it is not produced. \begin{quote} \begin{description} @@ -161,12 +179,12 @@ \subsection*{parentage} -If this metadata element is used, it defines how the output \class{Data} -produced by the algorithm should be arranged. \class{Data} items can be given a parent as -part of their metadata (which usually means the \class{Data} was derived from -the referenced \class{Data}). If parentage is set to ``default'' then each of the -algorithm's outputted \class{Data} items will have their parent \class{Data} item -set as the first inputted \class{Data} item (if applicable) by the +If this metadata element is used, it defines how the output \class{Data} produced +by the algorithm should be arranged. \class{Data} items can be given a parent as +part of their metadata (which usually means the \class{Data} was derived from the +referenced \class{Data}). If parentage is set to ``default'' then each of the +algorithm's output \class{Data} items will have their parent \class{Data} item +set as the first input \class{Data} item (if applicable) by the CIShell-conforming application. If parentage is set to something else or is not set at all, then it is up to the algorithm to set up these relationships. Modified: trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-03-07 21:56:18 UTC (rev 648) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-03-10 22:31:38 UTC (rev 649) @@ -1,9 +1,6 @@ -\section{Algorithm Type Specifications} - -\subsection*{\textit{Version 1.0}} - +\subsection{Algorithm Types} \label{algConstraints} -\subsection{Introduction} +\subsubsection{Introduction} CIShell algorithms are a generic concept which have many uses. In the CIShell Platform, they are used in 4 contexts: as general data-centric algorithms to be @@ -11,21 +8,21 @@ Algorithms), as data validators (Validator Algorithms), and as providers of data (Dataset Algorithms). In order to better separate these uses, a lightweight type system has been introduced. The only way to tell the difference between them is -by the constraints defined for each algorithm type. +by the constraints defined for each algorithm type as defined below. -\subsection{Base Algorithm Constraints} +\subsubsection{Base Algorithm Constraints} All conformant algorithms regardless of type, must adhere to the following constraints: -\subsubsection*{Required:} +\paragraph*{Required:} \begin{itemize} \item The algorithm must be a conformant \class{AlgorithmFactory} implementation and properly registered as a service. \item The algorithm's service metadata must contain a valid ``service.pid''. \end{itemize} -\subsubsection*{Optional:} +\paragraph*{Optional:} \begin{itemize} \item The algorithm's service metadata should have ``remoteable=true'' if it meets the requirements of a remoteable algorithm. @@ -38,12 +35,12 @@ ``documentation\_url'', ``reference'', ``reference\_url'', and ``written\_in''. \end{itemize} -\subsection{Standard Algorithms} +\subsubsection{Standard Algorithms} Standard CIShell algorithms are the algorithms that most end-users will encounter. A standard algorithm has the following constraints: -\subsubsection*{Required:} +\paragraph*{Required:} \begin{itemize} \item The algorithm must be a conformant \class{AlgorithmFactory} implementation and properly registered as a service. @@ -59,10 +56,10 @@ ``menu\_path''. \end{itemize} -\subsubsection*{Optional:} +\paragraph*{Optional:} \begin{itemize} - \item If additional user-entered parameters are needed, the algorithm should - provide a \class{MetaTypeProvider} published by the \class{MetaTypeService}. + \item If additional user-entered input parameters are needed, the algorithm + should provide a \class{MetaTypeProvider} published to the \class{MetaTypeService}. \item The algorithm's service metadata should have ``remoteable=true'' if it meets the requirements of a remoteable algorithm. \item The algorithm's service metadata should have ``parentage=default'' if @@ -74,7 +71,7 @@ ``documentation\_url'', ``reference'', ``reference\_url'', and ``written\_in''. \end{itemize} -\subsection{Dataset Algorithms} +\subsubsection{Dataset Algorithms} A dataset algorithm is a custom type of CIShell algorithm for providing pre-generated data for use in the CIShell Platform. Dataset algorithms act just @@ -82,7 +79,7 @@ Applications may not even treat them any differently than standard algorithms. A dataset algorithm has the following constraints: -\subsubsection*{Required:} +\paragraph*{Required:} \begin{itemize} \item The algorithm must be a conformant \class{AlgorithmFactory} implementation and properly registered as a service. @@ -103,7 +100,7 @@ as its ``out\_data''. \end{itemize} -\subsubsection*{Optional:} +\paragraph*{Optional:} \begin{itemize} \item The algorithm's service metadata should have ``remoteable=true'' if it meets the requirements of a remoteable algorithm. @@ -112,7 +109,7 @@ ``documentation\_url'', ``reference'', and ``reference\_url''. \end{itemize} -\subsection{Converter Algorithms} +\subsubsection{Converter Algorithms} \label{converterAlg} A converter algorithm is a custom type of CIShell algorithm for converting data @@ -120,7 +117,7 @@ \class{DataConversionService} and are not used directly by end-users. A converter algorithm has the following constraints: -\subsubsection*{Required:} +\paragraph*{Required:} \begin{itemize} \item The algorithm must be a conformant \class{AlgorithmFactory} implementation and properly registered as a service. @@ -132,12 +129,12 @@ \item The algorithm's service metadata must have ``type=converter''. \item The algorithm's service metadata must have ``conversion=lossy'' if data is lost during conversion or ``conversion=lossless'' if not. - \item The algorithm must not require any parameters. The \class{Dictionary} - passed to the createAlgorithm method will always be empty. + \item The algorithm must not require any input parameters. The + \class{Dictionary} passed to the createAlgorithm method will always be empty. \end{itemize} -\subsubsection*{Optional:} -\begin{itemize}an +\paragraph*{Optional:} +\begin{itemize} \item The algorithm's service metadata should have ``remoteable=true'' if it meets the requirements of a remoteable algorithm. \item The algorithm's service metadata should have a ``label'' which is a @@ -150,7 +147,7 @@ in accordingly. \end{itemize} -\subsection{Validator Algorithms} +\subsubsection{Validator Algorithms} A validator algorithm is a custom type of CIShell algorithm which checks either an incoming or outgoing file to be sure it is of the type specified. This is @@ -161,28 +158,29 @@ bringing in outside data and saving out data from CIShell. A validator algorithm has the following constraints: -\subsubsection*{Required:} +\paragraph*{Required:} \begin{itemize} \item The algorithm must be a conformant \class{AlgorithmFactory} implementation and properly registered as a service. \item The algorithm must take in a single \class{Data} item and validate the item producing a single \class{Data} item (with the same data, but changed - format) or \class{null} if the file being validated is not of the right + format) or throw an exception if the file being validated is not of the right type. This must be reflected in the algorithm's service metadata where ``in\_data'' and ``out\_data'' have only one data item each with one - containing a ``file:'' format and the other a ``file-ext:'' depending on the - direction of validation. + containing a ``file:\textit{mime/type}'' format and the other a + ``file-ext:\textit{file-extension}'' depending on the direction of validation. + See section \ref{dataSpec} for data format details. \item The algorithm must not alter the data. Its only purpose is to validate the proposed incoming or outgoing file. \item The algorithm's service metadata must contain a valid ``service.pid''. \item The algorithm's service metadata must have ``type=validator''. \item The algorithm's service metadata must have a ``label'' which is the common name of the data format being validated. - \item The algorithm must not require any parameters. The \class{Dictionary} - passed to the createAlgorithm method will always be empty. + \item The algorithm must not require any input parameters. The + \class{Dictionary} passed to the createAlgorithm method will always be empty. \end{itemize} -\subsubsection*{Optional:} +\paragraph*{Optional:} \begin{itemize} \item The algorithm's service metadata should have ``remoteable=true'' if it meets the requirements of a remoteable algorithm. Modified: trunk/core/org.cishell.docs/src/specification/tex/data.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/data.tex 2008-03-07 21:56:18 UTC (rev 648) +++ trunk/core/org.cishell.docs/src/specification/tex/data.tex 2008-03-10 22:31:38 UTC (rev 649) @@ -4,8 +4,8 @@ \subsection{Introduction} Data to be operated on is passed around in \class{Data} objects which hold the -real data, the data's format, and its properties (metadata). The real data can be -any Java \class{Object}. The format is a string describing the 'format' of the +real data, the data's format, and the data's properties (metadata). The real +data can be any Java \class{Object}. The format is a string describing the 'format' of the data, see next section. Finally, the properties help describe the data. The label to give the data, the parent \class{Data} object from which it was derived from, and a coarse data type can all be defined in the \class{Data}'s properties. See @@ -32,5 +32,5 @@ zero or more, prefix the type with a ``*''. This corresponds to a \class{Data} object that is wrapping multiple (zero or one or more depending on the prefix) other \class{Data} objects of the associated format in a Java array -(\class{Data[]}) stored as its wrapped real data. This is useful for algorithms -that can work on a variable number of \class{Data} items. +(\class{Data[]}) stored as its contained real data. This is useful for +algorithms that can work on a variable number of \class{Data} items. Modified: trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex 2008-03-07 21:56:18 UTC (rev 648) +++ trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex 2008-03-10 22:31:38 UTC (rev 649) @@ -20,7 +20,7 @@ implementation of \class{DataManagerListener} with empty method implementations. \item \textit{Data} - The interface used to pass data (other than - parameters) and its metadata between algorithms. + input parameters) and its metadata between algorithms. \end{itemize} \orgcishellappservicedatamanager{} \ No newline at end of file Modified: trunk/core/org.cishell.docs/src/specification/tex/framework.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/framework.tex 2008-03-07 21:56:18 UTC (rev 648) +++ trunk/core/org.cishell.docs/src/specification/tex/framework.tex 2008-03-10 22:31:38 UTC (rev 649) @@ -7,21 +7,6 @@ The \class{org.cishell.framework} package and subpackages define the core of CIShell. The key components being algorithms, data, and CIShell service access. -\subsection{Essentials} -\begin{itemize} - \item \textit{Application Independence} - Algorithms must be usable in a wide - variety of contexts and should not be tied to any one CIShell environment or - front end where possible. - \item \textit{User Interface Independence} - Algorithms should not have to tie - themselves to a single UI where possible. - \item \textit{Black Box Algorithms} - Algorithms are black boxes whose - possible interactions are described in metadata. - \item \textit{Delayed Execution} - There may be a large delay between an - algorithm getting parameters for execution and its actual execution. - \item \textit{Remote Execution} - Algorithm interfaces should be designed to - facilitate remote execution of algorithms where possible. -\end{itemize} - \subsection{Entities} \begin{itemize} @@ -33,20 +18,20 @@ \item \textit{AlgorithmProperty} - The interface which provides string constants for an algorithm's service metadata. \item \textit{ParameterMutator} - The interface an \class{AlgorithmFactory} - extends to provide the ability to add, remove, or modify user-entered - parameters specifications (see section \ref{GUISpec}) before being shown to an - end-user. + extends to provide the ability to add, remove, or modify its input + parameters specification (see section \ref{GUISpec}) before being transformed + into a form for user input. \item \textit{DataValidator} - The interface an \class{AlgorithmFactory} extends to provide additional data validation in addition to the data format validation that an application should provide ahead of time. \item \textit{ProgressTrackable} - The interface an \class{Algorithm} extends - to allow for more detailed monitoring and control of an Algorithm's progress while - executing. + to allow for more detailed monitoring and control of an \class{Algorithm}'s + progress while executing. \item \textit{ProgressMonitor} - The interface for a class to be passed in to a \class{ProgressTrackable} \class{Algorithm} so that the \class{Algorithm} can be controlled and provide information on its progress while executing. \item \textit{Data} - The interface used to pass data (other than - parameters) and meta-data between algorithms. + input parameters) and its metadata between algorithms. \item \textit{BasicData} - A simple implementation of the \class{Data} interface. \item \textit{DataProperty} - The interface which provides string constants @@ -56,7 +41,7 @@ services. \item \textit{LocalCIShellContext} - A simple implementation of the \class{CIShellContext} interface which pulls CIShell services from the OSGi - Service Registry. + service registry. \end{itemize} \begin{figure}[htb!] @@ -68,8 +53,7 @@ \subsection{Operations} -The algorithm developer should fully implement the \class{AlgorithmFactory} -interface and make it available in OSGi's service registry. The system developer -will provide the services required by CIShell in OSGi's service registry. -Application developers will provide everything else, orchestrating the passing of -information between algorithms. +The algorithm developer should implement algorithms as described in this +specification. The system developer will provide the services required by CIShell +in OSGi's service registry. Application developers will provide everything else, +orchestrating the passing of information between algorithms. Modified: trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex 2008-03-07 21:56:18 UTC (rev 648) +++ trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex 2008-03-10 22:31:38 UTC (rev 649) @@ -4,21 +4,19 @@ \subsection{Introduction} For many algorithms, just looking at the data given isn't enough. Additional -parameters are often needed to know how to operate on a given piece of data. An -algorithm can define what parameters are needed by providing a +input parameters are often needed to know how to operate on a given piece of +data. An algorithm can define what parameters are needed by providing a \class{MetaTypeProvider}. It defines the types, value range, and textual description of the parameters needed. From this information, a user interface (UI) can be created that asks a user for the data. The \class{MetaTypeProvider} is not tied to any specific UI, so it can be reused depending on the context (desktop application, web application, command line, etc.). -\class{MetaTypeProvider} is defined in the OSGi R4 Specification Service -Compendium as part of the Meta Type Service. \class{MetaTypeProvider}s can be -created in code or can be specified in an xml file (as defined in the -specification) and pulled out of the \class{MetaTypeService} service. A +\class{MetaTypeProvider} is an interface defined in the OSGi R4 Specification +Service Compendium as part of the ``Metatype Service Specification''. A \class{MetaTypeProvider} can be thought of as a collection of UIs. Each UI is -called an \class{ObjectClassDefinition}, which provides a UI name and -description and is a collection of parameters. Each parameter is an +called an \class{ObjectClassDefinition}, which provides a UI name and description +and is a collection of parameters. Each parameter is an \class{AttributeDefinition} which includes the type, label, description, default value, and range of valid values. Drop-down boxes can also be defined by using option labels and values with the \class{AttributeDefinition}. OSGi's @@ -31,7 +29,7 @@ strings, integers, booleans, etc, but several useful types are missing. To support more types, an \class{AttributeDefinition} (AD) of type ``string'' has its default value set to a certain string so that the UI builder recognizes this -and selects an appropriate widget. When the algorithm receives the user entered +and selects an appropriate widget. When the algorithm receives the user-entered parameters, the associated value will be of type \class{java.lang.String}, but should contain the correct value as defined below. @@ -53,3 +51,26 @@ color values the user chose. Each item in the comma separated list would be between 0 and 255. The first item would be the red value, second green value, and third blue value. + +\subsection{Publishing MetaTypeProviders} + +For user-adjustable preferences and algorithm input parameters, a +\class{MetaTypeProvider} is required to be published to the +\class{MetaTypeService}. This can be done in two ways, through code or by a +METADATA.XML file. + +To publish through code, a few steps must be followed. First, the service to be +registered with the OSGi service registry must fully implement +\class{org.\-osgi.\-service.\-cm.\-ManagedService} and +\class{org.\-osgi.\-service.\-metatype.\-MetaTypeProvider}. Second, when +registering the service, both \class{ManagedService} and \class{MetaTypeProvider} +must be in the list of interfaces the service implements. If these two things are +done, the \class{MetaTypeService} will notice it and add it to its registry of +\class{MetaTypeProviders}. + +The recommended way to publish \class{MetaTypeProviders} is to publish through a +METADATA.XML file. A METADATA.XML file must be included in the algorithm's OSGi +bundle in a specific directory, ``OSGI-INF/metatype/''. The +\class{MetaTypeService} will notice this in the bundle and add it to its registry +of \class{MetaTypeProviders}. See the ``Metatype Service Specification'' in the +OSGi specification for details on the XML format. Modified: trunk/core/org.cishell.docs/src/specification/tex/introduction.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/introduction.tex 2008-03-07 21:56:18 UTC (rev 648) +++ trunk/core/org.cishell.docs/src/specification/tex/introduction.tex 2008-03-10 22:31:38 UTC (rev 649) @@ -7,12 +7,12 @@ while retaining their intellectual rights after distribution; (2) data holders to easily disseminate their data for use by others; (3) application developers to design applications from custom sets of algorithms and datasets that interoperate -seamlessly; and ultimately (4) end-users to use existing datasets and algorithms +seamlessly; and ultimately (4) end-users to use datasets and algorithms effectively. \section{CIShell Platform Overview} -The CIShell Platform consists of Java interface definitions of algorithms, data, +The CIShell Platform consists of Java interface definitions for algorithms, data, services for algorithm developers, and services for application developers. Much of the platform uses metadata and is fully defined. @@ -35,8 +35,9 @@ The CIShell Specifications assume that the reader has at least one year of practical experience in writing Java programs. CIShell is built to run on the OSGi Service Platform Release 4\footnote{http://www.osgi.org/Release4/Download} -and thus a working knowledge of OSGi is expected. OSGi (and thus CIShell) is highly dynamic and must be taken into consideration -when developing anything on CIShell. +and thus a working knowledge of OSGi is expected. OSGi (and thus CIShell) is +highly dynamic and must be taken into consideration when developing anything on +CIShell. Non-Java algorithm developers may not need to know any Java and should be mainly concerned with the metadata definitions for algorithms and data. They may also Modified: trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex 2008-03-07 21:56:18 UTC (rev 648) +++ trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex 2008-03-10 22:31:38 UTC (rev 649) @@ -10,10 +10,11 @@ \subsection*{Required Services} \begin{description} \item[Metatype Service] as described in OSGi section 105 ``Metatype Service - Specification,'' this service defines the \class{MetaTypeProvider} class used - for specifying user interfaces in CIShell. In addition, it provides an XML - format for automatically generating \class{MetaTypeProvider}s and a service, - \class{MetaTypeService}, for harvesting them for use. + Specification,'' this service is used by CIShell to find + \class{MetaTypeProviders} for user interface specification, user-adjustable + preferences, and input parameters. It also provides an XML format for + automatically generating \class{MetaTypeProvider}s which the + \class{MetaTypeService} harvests for use. \item[Log Service] as described in OSGi section 101 ``Log Service Specification,'' this service is used as a universal logging system for algorithms and services. See chapter \ref{logService} for more details. Modified: trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex 2008-03-07 21:56:18 UTC (rev 648) +++ trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex 2008-03-10 22:31:38 UTC (rev 649) @@ -6,7 +6,7 @@ The user-adjustable preferences specification defines how any service can publish user-adjustable preferences both globally and locally. In addition to global and local preferences, algorithms can allow the system to allow end-users to adjust -the default values for algorithms' user-entered parameters specification +the default values for algorithms' user-entered input parameters specification published to the \class{MetaTypeService}. For storing data that is not directly end-user adjustable, see chapter \ref{preferencesService}. @@ -20,14 +20,15 @@ \class{ManagedService}. See section \ref{GUISpec} for more information. \subsubsection*{Designate an OCD a Persistent ID (PID)} Then they must designate -the ObjectClassDefinition a persistent id (PID). The PID can be designated in two -ways. The simplest way is by following the convention of creating a string with -the associated service's ``service.pid'' and appending either ``.prefs.local'' or -``.prefs.global''. The other way is to designate whatever PID the developer -wishes and to provide a service property ``local\_pref\_pid'' or -``global\_pref\_pid'' which is set to whatever PID they chose. +the \class{ObjectClassDefinition} a persistent id (PID). The PID can be +designated in two ways. The simplest way is by following the convention of +creating a string with the associated service's ``service.pid'' and appending +either ``.prefs.local'' or ``.prefs.global''. The other way is to designate +whatever PID the developer wishes and to provide a service property +``local\_pref\_pid'' or ``global\_pref\_pid'' which is set to whatever PID they +chose. -\subsubsection*{Designate What Preferences are to be Published} To let the system +\subsubsection*{Declare What Preferences are to be Published} To let the system know that you wish to publish preferences, the system properties must contain a ``prefs\_published'' key with zero or more of the following values (separated by commas): ``local'' for publishing local prefs, ``global'' for global prefs, and @@ -37,12 +38,11 @@ defaults, algorithm developers allow end-users to adjust the default values they see when running their algorithm. This is typically accomplished by wrapping the \class{MetaTypeProvider} published by the algorithm to the -\class{MetaTypeService} (with PID designated to either the algorithm's -``service.pid'' or whatever was specified by the algorithm's ``parameters\_pid'') -with overridden \class{AttributeDefinitions} that change their default value. -Many systems will have this on by default, but if the ``prefs\_published'' key is -set in the algorithm's service metadata and ``param-defaults'' is not set, then -this feature will be disabled for the algorithm. +\class{MetaTypeService} with overridden \class{AttributeDefinitions} that +change their default value. Many systems will have this on by default, but if +the ``prefs\_published'' key is set in the algorithm's service metadata and +``param-defaults'' is not set, then this feature will be disabled for the +algorithm. \subsubsection*{Receiving Preference Data} To be notified of changes to local or global preferences, the service must implement @@ -50,7 +50,7 @@ metadata ``receive\_prefs=true''. When either the local or global preferences are updated, the updated method will be passed a \class{Dictionary} of all of the id/value pairs, including the updated ones. Local preferences will have the same ids as -the AttributeDefinitions (AD) defined in the associated OCD. The local +the \class{AttributeDefinition}s (AD) defined in the associated OCD. The local preferences will also have an additional id ``Bundle-Version", which contains the version of the service's associated bundle that was used when the preference data was last updated. Global preferences will have the same ids (plus a This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-03-07 21:56:26
|
Revision: 648 http://cishell.svn.sourceforge.net/cishell/?rev=648&view=rev Author: bh2 Date: 2008-03-07 13:56:18 -0800 (Fri, 07 Mar 2008) Log Message: ----------- * cautioned readers on ambiguous in_data statements * added parameters_pid key for algorithms with custom pids for their parameters OCD * moved createParameters out of AF to ParameterMutator * require metatype service use for algorithm user-input parameters * added PARAMETERS_PID to AlgorithmProperty * added TABLE_TYPE to DataProperty * bumped to version 1.0 (though still not done yet, of course) * changed the build system's output of the spec's name to match what is published on cishell.org/the javadocs * updated the images that used to refer to createParameters. The images still need more clarity I think. Still TODO: * clean up/clarify/refine the text and images of both the spec and the javadocs Modified Paths: -------------- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmFactory.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmProperty.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/DataProperty.java trunk/core/org.cishell.docs/build.properties trunk/core/org.cishell.docs/src/img/algExecWorkflow.dia trunk/core/org.cishell.docs/src/img/algExecWorkflow.eps trunk/core/org.cishell.docs/src/img/algExecWorkflow.pdf trunk/core/org.cishell.docs/src/img/cishellInteraction.dia trunk/core/org.cishell.docs/src/img/cishellInteraction.eps trunk/core/org.cishell.docs/src/img/cishellInteraction.pdf trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex trunk/core/org.cishell.docs/src/specification/tex/framework.tex trunk/core/org.cishell.docs/src/specification/tex/introduction.tex trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex Added Paths: ----------- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ParameterMutator.java Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmFactory.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmFactory.java 2008-03-06 18:05:47 UTC (rev 647) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmFactory.java 2008-03-07 21:56:18 UTC (rev 648) @@ -17,35 +17,28 @@ import org.cishell.framework.CIShellContext; import org.cishell.framework.data.Data; -import org.osgi.service.metatype.MetaTypeProvider; +import org.osgi.service.metatype.MetaTypeService; /** - * A class for creating {@link Algorithm}s. This class provides the - * parameters needed by its associated <code>Algorithm</code> on demand and when - * given correct data, will create an <code>Algorithm</code> that can be executed. + * A service interface for creating {@link Algorithm}s to be executed. * <br> * An algorithm developer must create an implementation of this interface and * register it (along with some standard metadata about the algorithm, defined * in the {@link AlgorithmProperty} class) in the OSGi service registry. + * <br> + * If the algorithm requires input in addition to the raw data provided, a + * {@link MetaTypeProvider} must be published to OSGi's {@link MetaTypeService} + * (usually through a METADATA.XML file in the algorithm's bundle). + * <br> + * See the <a href="http://cishell.org/dev/docs/spec/cishell-spec-1.0.pdf"> + * CIShell Specification 1.0</a> for documentation on the full requirements for + * algorithm creation. * * @author Bruce Herr (bh...@bh...) */ public interface AlgorithmFactory { + /** - * Creates a set of parameter definitions that specify what parameters are - * needed in order to run its associated Algorithm - * - * @param data An optional argument, the Data array that will be given to - * this class to create an Algorithm with the createAlgorithm - * method. Clients that don't know the Data array that is going - * to be used ahead of time can give a <code>null</code> value. - * @return An OSGi {@link MetaTypeProvider} that defines the parameters - * needed by the Algorithm this class creates. May be - * <code>null</code> if no parameters are needed. - */ - public MetaTypeProvider createParameters(Data[] data); - - /** * Creates an {@link Algorithm} to be executed * * @param data The data to be given to the Algorithm to process. @@ -54,7 +47,8 @@ * dictionary (the 'in_data' key) when registered as a * service in OSGi. * @param parameters A set of key-value pairs that were created based on - * the parameters given by the createParameters method + * the associated input specification published to the + * {@link MetaTypeService} * @param context The context by which the Algorithm can gain access to * standard CIShell services * @return An <code>Algorithm</code> primed for execution Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmProperty.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmProperty.java 2008-03-06 18:05:47 UTC (rev 647) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmProperty.java 2008-03-07 21:56:18 UTC (rev 648) @@ -28,13 +28,16 @@ public static final String OUT_DATA = "out_data"; public static final String NULL_DATA = "null"; + public static final String PARAMETERS_PID = "parameters_pid"; + public static final String PARENTAGE = "parentage"; public static final String DEFAULT_PARENTAGE="default"; public static final String ALGORITHM_TYPE = "type"; public static final String TYPE_CONVERTER = "converter"; public static final String TYPE_VALIDATOR = "validator"; - + public static final String TYPE_DATASET = "dataset"; + public static final String REMOTEABLE = "remoteable"; public static final String REMOTE = "remote"; @@ -58,11 +61,4 @@ public static final String REFERENCE = "reference"; public static final String REFERENCE_URL = "reference_url"; public static final String WRITTEN_IN = "written_in"; - - - - //Undocumented/possibly-unnecessary properties - public static final String TYPE_ALGORITHM = "algorithm"; - public static final String TYPE_DATASET = "dataset"; - public static final String METATYPE_ID = "metatype-id"; } Added: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ParameterMutator.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ParameterMutator.java (rev 0) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ParameterMutator.java 2008-03-07 21:56:18 UTC (rev 648) @@ -0,0 +1,46 @@ +/* **************************************************************************** + * CIShell: Cyberinfrastructure Shell, An Algorithm Integration Framework. + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the Apache License v2.0 which accompanies + * this distribution, and is available at: + * http://www.apache.org/licenses/LICENSE-2.0.html + * + * Created on Mar 7, 2008 at Indiana University. + * + * Contributors: + * Indiana University - + * ***************************************************************************/ +package org.cishell.framework.algorithm; + +import org.cishell.framework.data.Data; +import org.osgi.service.metatype.AttributeDefinition; +import org.osgi.service.metatype.ObjectClassDefinition; + +/** + * An additional interface an {@link AlgorithmFactory} can implement that allows + * for adding, modifying, or removing input parameters before being shown to the + * end-user for input. This interface is often implemented by algorithms that + * wish to customize the input UI based on the actual input data. + * + * @author Bruce Herr (bh...@bh...) + */ +public interface ParameterMutator { + + /** + * Adds, modifies, or removes {@link Algorithm} parameters + * ({@link AttributeDefinition}s) from a given {@link ObjectClassDefinition} + * returning either the same (if no changes are made) input or a new, + * mutated version of the input + * + * @param data An optional argument, the Data array that will be given to + * this class to create an Algorithm with the createAlgorithm + * method. Applications that don't know the Data array that is going + * to be used ahead of time can give a <code>null</code> value. + * @param parameters A set of AttributeDefinitions which define the + * algorithm's input parameters + * @return An OSGi {@link ObjectClassDefinition} that defines the parameters + * needed by the Algorithm this class creates + */ + public ObjectClassDefinition mutateParameters(Data[] data, ObjectClassDefinition parameters); +} Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/DataProperty.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/DataProperty.java 2008-03-06 18:05:47 UTC (rev 647) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/DataProperty.java 2008-03-07 21:56:18 UTC (rev 648) @@ -66,6 +66,9 @@ /** Says this data model is abstractly a network */ public static String NETWORK_TYPE = "Network"; + + /** Says this data model is abstractly a table */ + public static String TABLE_TYPE = "Table"; /** Says this data model is abstractly a tree */ public static String TREE_TYPE = "Tree"; Modified: trunk/core/org.cishell.docs/build.properties =================================================================== --- trunk/core/org.cishell.docs/build.properties 2008-03-06 18:05:47 UTC (rev 647) +++ trunk/core/org.cishell.docs/build.properties 2008-03-07 21:56:18 UTC (rev 648) @@ -1,4 +1,4 @@ -version = 0.8 +version = 1.0 build.dir = build api.tex = api.tex @@ -16,9 +16,9 @@ spec.tex = main.tex spec.dir = src/specification -spec.html.dir = ${build.dir}/cishell-specification-${version} +spec.html.dir = ${build.dir}/cishell-spec-${version} spec.tmp.pdf = ${spec.dir}/main.pdf -spec.final.pdf = ${build.dir}/cishell-specification-${version}.pdf +spec.final.pdf = ${build.dir}/cishell-spec-${version}.pdf guide.tex = main.tex guide.dir = src/dev_guide Modified: trunk/core/org.cishell.docs/src/img/algExecWorkflow.dia =================================================================== (Binary files differ) Modified: trunk/core/org.cishell.docs/src/img/algExecWorkflow.eps =================================================================== --- trunk/core/org.cishell.docs/src/img/algExecWorkflow.eps 2008-03-06 18:05:47 UTC (rev 647) +++ trunk/core/org.cishell.docs/src/img/algExecWorkflow.eps 2008-03-07 21:56:18 UTC (rev 648) @@ -1,11 +1,11 @@ %!PS-Adobe-2.0 EPSF-2.0 -%%Title: /home/bherr/cishell-workspace/org.cishell.docs/src/img/algExecWorkflow.dia -%%Creator: Dia v0.95 -%%CreationDate: Wed Jan 9 10:58:56 2008 +%%Title: /home/bherr/workspace/org.cishell.docs/src/img/algExecWorkflow.dia +%%Creator: Dia v0.96.1 +%%CreationDate: Fri Mar 7 16:33:37 2008 %%For: bherr %%Orientation: Portrait %%Magnification: 1.0000 -%%BoundingBox: 0 0 1146 381 +%%BoundingBox: 0 0 1146 358 %%BeginSetup %%EndSetup %%EndComments @@ -341,20 +341,26 @@ currentdict end definefont pop 28.346000 -28.346000 scale --3.052330 -20.889800 translate +-3.030488 -20.889800 translate %%EndProlog 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 14.958000 16.044000 m 14.958000 18.244000 l 22.508000 18.244000 l 22.508000 16.044000 l f +n 14.913806 16.044000 m 14.913806 18.244000 l 22.561306 18.244000 l 22.561306 16.044000 l f 0.000000 0.000000 0.000000 srgb -n 14.958000 16.044000 m 14.958000 18.244000 l 22.508000 18.244000 l 22.508000 16.044000 l cp s +n 14.913806 16.044000 m 14.913806 18.244000 l 22.561306 18.244000 l 22.561306 16.044000 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 18.733000 ex sub 16.694000 m gs 1 -1 sc sh gr +(<<interface>>) 16.462556 16.546500 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(AlgorithmFactory) dup sw 2 div 18.733000 ex sub 17.694000 m gs 1 -1 sc sh gr +(AlgorithmFactory) 15.163806 17.514000 m +dup sw 7.147500 exch sub +16 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb @@ -362,19 +368,34 @@ 0.000000 0.000000 0.000000 srgb n 27.318000 16.045000 m 27.318000 18.245000 l 32.368000 18.245000 l 32.368000 16.045000 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 29.843000 ex sub 16.695000 m gs 1 -1 sc sh gr +(<<interface>>) 27.568000 16.547500 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(Algorithm) dup sw 2 div 29.843000 ex sub 17.695000 m gs 1 -1 sc sh gr +(Algorithm) 27.803000 17.515000 m +dup sw 4.080000 exch sub +9 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 0 slj 0 slc -n 27.273500 17.145000 m 23.346400 17.145000 l 23.346400 17.144000 l 22.558300 17.144000 l s +n 27.273544 17.145000 m 23.346400 17.145000 l 23.346400 17.144000 l 22.611078 17.144000 l s /Courier-latin1 ff 0.560000 scf sf -(creates) 23.446400 16.994500 m gs 1 -1 sc sh gr -n 25.996400 16.994500 m 25.996400 16.594500 l 26.396400 16.794500 l ef -(1) dup sw 27.073500 ex sub 16.995000 m gs 1 -1 sc sh gr -(1) 22.758300 16.994000 m gs 1 -1 sc sh gr +(creates) 23.446400 16.864500 m +dup sw 2.450000 exch sub +7 div exch 0.0 exch + gs 1 -1 sc ashow gr +n 25.996400 17.004500 m 25.996400 16.604500 l 26.396400 16.804500 l ef +(1) 26.723544 16.865000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 22.811078 16.864000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb @@ -382,19 +403,31 @@ 0.000000 0.000000 0.000000 srgb n 4.652850 16.044700 m 4.652850 18.244700 l 9.702850 18.244700 l 9.702850 16.044700 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 7.177850 ex sub 16.694700 m gs 1 -1 sc sh gr +(<<interface>>) 4.902850 16.547200 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(Data) dup sw 2 div 7.177850 ex sub 17.694700 m gs 1 -1 sc sh gr +(Data) 6.207850 17.514700 m +dup sw 1.940000 exch sub +4 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 3.102330 18.639800 m 3.102330 20.839800 l 9.702330 20.839800 l 9.702330 18.639800 l f +n 3.102330 18.639800 m 3.102330 20.839800 l 9.672330 20.839800 l 9.672330 18.639800 l f 0.000000 0.000000 0.000000 srgb -n 3.102330 18.639800 m 3.102330 20.839800 l 9.702330 20.839800 l 9.702330 18.639800 l cp s +n 3.102330 18.639800 m 3.102330 20.839800 l 9.672330 20.839800 l 9.672330 18.639800 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 6.402330 ex sub 19.289800 m gs 1 -1 sc sh gr +(<<interface>>) 4.112330 19.142300 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(CIShellContext) dup sw 2 div 6.402330 ex sub 20.289800 m gs 1 -1 sc sh gr +(CIShellContext) 3.352330 20.109800 m +dup sw 6.070000 exch sub +14 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd [] 0 sd @@ -406,20 +439,34 @@ [] 0 sd 0 slj 0 slc -n 9.702330 19.739800 m 11.446400 19.739800 l 11.446400 17.144000 l 14.958000 17.144000 l s +n 9.702330 19.739800 m 11.446400 19.739800 l 11.446400 17.144000 l 14.913806 17.144000 l s /Courier-latin1 ff 0.560000 scf sf -(1) 9.902330 19.589800 m gs 1 -1 sc sh gr -(1) dup sw 14.758000 ex sub 16.994000 m gs 1 -1 sc sh gr +(1) 9.902330 19.459800 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 14.363806 16.864000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 0 slj 0 slc -n 9.702850 17.144700 m 11.777300 17.144700 l 11.777300 17.144000 l 14.958000 17.144000 l s -/Courier-latin1 ff 0.560000 scf sf -(given) 11.877300 16.994350 m gs 1 -1 sc sh gr -n 13.727300 16.994350 m 13.727300 16.594350 l 14.127300 16.794350 l ef -(0..n) 9.902850 16.994700 m gs 1 -1 sc sh gr -(1) dup sw 14.758000 ex sub 16.994000 m gs 1 -1 sc sh gr +n 9.702850 17.144700 m 11.777300 17.144700 l 11.777300 17.144000 l 14.913806 17.144000 l s +(given) 11.877300 16.864350 m +dup sw 1.750000 exch sub +5 div exch 0.0 exch + gs 1 -1 sc ashow gr +n 13.727300 17.004350 m 13.727300 16.604350 l 14.127300 16.804350 l ef +(0..n) 9.902850 16.864700 m +dup sw 1.400000 exch sub +4 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 14.363806 16.864000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb @@ -427,116 +474,149 @@ 0.000000 0.000000 0.000000 srgb n 4.651040 13.330300 m 4.651040 15.530300 l 9.701040 15.530300 l 9.701040 13.330300 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 7.176040 ex sub 13.980300 m gs 1 -1 sc sh gr +(<<interface>>) 4.901040 13.832800 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(Dictionary) dup sw 2 div 7.176040 ex sub 14.980300 m gs 1 -1 sc sh gr +(Dictionary) 5.057290 14.800300 m +dup sw 4.237500 exch sub +10 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 0 slj 0 slc -n 9.751110 14.430300 m 11.452300 14.430300 l 11.452300 17.144000 l 14.958000 17.144000 l s +n 9.751088 14.430300 m 11.452300 14.430300 l 11.452300 17.144000 l 14.913806 17.144000 l s /Courier-latin1 ff 0.560000 scf sf -(1) 9.951110 14.280300 m gs 1 -1 sc sh gr -(1) dup sw 14.758000 ex sub 16.994000 m gs 1 -1 sc sh gr +(1) 9.951088 14.150300 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 14.363806 16.864000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 38.373000 16.043700 m 38.373000 18.243700 l 43.423000 18.243700 l 43.423000 16.043700 l f +n 38.337645 16.061378 m 38.337645 18.261378 l 43.387645 18.261378 l 43.387645 16.061378 l f 0.000000 0.000000 0.000000 srgb -n 38.373000 16.043700 m 38.373000 18.243700 l 43.423000 18.243700 l 43.423000 16.043700 l cp s +n 38.337645 16.061378 m 38.337645 18.261378 l 43.387645 18.261378 l 43.387645 16.061378 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 40.898000 ex sub 16.693700 m gs 1 -1 sc sh gr +(<<interface>>) 38.587645 16.563878 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(Data) dup sw 2 div 40.898000 ex sub 17.693700 m gs 1 -1 sc sh gr +(Data) 39.892645 17.531378 m +dup sw 1.940000 exch sub +4 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 0 slj 0 slc -n 38.323900 17.143700 m 33.196400 17.143700 l 33.196400 17.145000 l 32.368000 17.145000 l s +n 38.317212 17.161378 m 33.196400 17.161378 l 33.196400 17.145000 l 32.368000 17.145000 l s /Courier-latin1 ff 0.560000 scf sf -(creates) 33.296400 16.994350 m gs 1 -1 sc sh gr -n 35.846400 16.994350 m 35.846400 16.594350 l 36.246400 16.794350 l ef -(0..n) dup sw 38.123900 ex sub 16.993700 m gs 1 -1 sc sh gr -(1) 32.568000 16.995000 m gs 1 -1 sc sh gr +(creates) 33.296400 16.873189 m +dup sw 2.450000 exch sub +7 div exch 0.0 exch + gs 1 -1 sc ashow gr +n 35.846400 17.013189 m 35.846400 16.613189 l 36.246400 16.813189 l ef +(0..n) 36.717212 16.881378 m +dup sw 1.400000 exch sub +4 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 32.568000 16.865000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 14.842100 7.525020 m 14.842100 9.725020 l 22.392100 9.725020 l 22.392100 7.525020 l f +n 3.080488 8.325020 m 3.080488 10.525020 l 10.580488 10.525020 l 10.580488 8.325020 l f 0.000000 0.000000 0.000000 srgb -n 14.842100 7.525020 m 14.842100 9.725020 l 22.392100 9.725020 l 22.392100 7.525020 l cp s +n 3.080488 8.325020 m 3.080488 10.525020 l 10.580488 10.525020 l 10.580488 8.325020 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 18.617100 ex sub 8.175020 m gs 1 -1 sc sh gr +(<<interface>>) 4.555488 8.827520 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(AlgorithmFactory) dup sw 2 div 18.617100 ex sub 9.175020 m gs 1 -1 sc sh gr +(MetaTypeService) 3.330488 9.795020 m +dup sw 7.000000 exch sub +15 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 27.902100 7.526020 m 27.902100 9.726020 l 35.802100 9.726020 l 35.802100 7.526020 l f +n 16.052100 8.326020 m 16.052100 10.526020 l 24.019600 10.526020 l 24.019600 8.326020 l f 0.000000 0.000000 0.000000 srgb -n 27.902100 7.526020 m 27.902100 9.726020 l 35.802100 9.726020 l 35.802100 7.526020 l cp s +n 16.052100 8.326020 m 16.052100 10.526020 l 24.019600 10.526020 l 24.019600 8.326020 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 31.852100 ex sub 8.176020 m gs 1 -1 sc sh gr +(<<interface>>) 17.760850 8.828520 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(MetaTypeProvider) dup sw 2 div 31.852100 ex sub 9.176020 m gs 1 -1 sc sh gr +(MetaTypeProvider) 16.302100 9.796020 m +dup sw 7.467500 exch sub +16 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 0 slj 0 slc -n 27.852214 8.626020 m 23.434100 8.626020 l 23.434100 8.625020 l 22.442123 8.625020 l s +n 16.002904 9.426020 m 11.584100 9.426020 l 11.584100 9.425020 l 10.630708 9.425020 l s /Courier-latin1 ff 0.560000 scf sf -(provides) 23.534100 8.475520 m gs 1 -1 sc sh gr -n 26.434100 8.475520 m 26.434100 8.075520 l 26.834100 8.275520 l ef -(1) dup sw 27.652214 ex sub 8.476020 m gs 1 -1 sc sh gr -(1) 22.642123 8.475020 m gs 1 -1 sc sh gr +(provides) 11.684100 9.145520 m +dup sw 2.800000 exch sub +8 div exch 0.0 exch + gs 1 -1 sc ashow gr +n 14.584100 9.285520 m 14.584100 8.885520 l 14.984100 9.085520 l ef +(1) 15.452904 9.146020 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 10.830708 9.145020 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd -1.000000 1.000000 1.000000 srgb -n 4.595000 7.525000 m 4.595000 9.725000 l 9.645000 9.725000 l 9.645000 7.525000 l f -0.000000 0.000000 0.000000 srgb -n 4.595000 7.525000 m 4.595000 9.725000 l 9.645000 9.725000 l 9.645000 7.525000 l cp s -/Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 7.120000 ex sub 8.175000 m gs 1 -1 sc sh gr -/Helvetica-Bold-latin1 ff 0.700000 scf sf -(Data) dup sw 2 div 7.120000 ex sub 9.175000 m gs 1 -1 sc sh gr -0.100000 slw [] 0 sd -[] 0 sd 0 slj 0 slc -n 22.510300 8.794320 m 21.415600 9.834120 l 22.509600 9.834120 l ef -n 22.510300 8.794320 m 21.415600 9.834120 l 22.509600 9.834120 l cp s +n 10.660300 9.594320 m 9.565600 10.634120 l 10.659600 10.634120 l ef +n 10.660300 9.594320 m 9.565600 10.634120 l 10.659600 10.634120 l cp s 0.100000 slw [] 0 sd -0 slj -0 slc -n 9.645000 8.625000 m 11.534100 8.625000 l 11.534100 8.625020 l 14.842100 8.625020 l s -/Courier-latin1 ff 0.560000 scf sf -(given) 11.634100 8.475010 m gs 1 -1 sc sh gr -n 13.484100 8.475010 m 13.484100 8.075010 l 13.884100 8.275010 l ef -(0..n) 9.845000 8.475000 m gs 1 -1 sc sh gr -(1) dup sw 14.642100 ex sub 8.475020 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd 1.000000 1.000000 1.000000 srgb -n 37.470200 7.774310 m 42.670200 7.774310 l 43.270200 8.374310 l 43.270200 9.474310 l 37.470200 9.474310 l ef +n 26.920200 8.574310 m 32.120200 8.574310 l 32.720200 9.174310 l 32.720200 10.274310 l 26.920200 10.274310 l ef 0.000000 0.000000 0.000000 srgb -n 37.470200 7.774310 m 42.670200 7.774310 l 43.270200 8.374310 l 43.270200 9.474310 l 37.470200 9.474310 l cp s +n 26.920200 8.574310 m 32.120200 8.574310 l 32.720200 9.174310 l 32.720200 10.274310 l 26.920200 10.274310 l cp s 0.050000 slw -n 42.670200 7.774310 m 42.670200 8.374310 l 43.270200 8.374310 l s +n 32.120200 8.574310 m 32.120200 9.174310 l 32.720200 9.174310 l s /Courier-latin1 ff 0.560000 scf sf -(Get User Input) 37.820200 8.974310 m gs 1 -1 sc sh gr +(Get User Input) 27.270200 9.626810 m +dup sw 4.900000 exch sub +14 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 0 slj 0 slc -n 35.852423 8.626020 m 37.201100 8.626020 l 37.201100 8.624310 l 37.420059 8.624310 l s +n 24.069652 9.426020 m 25.351100 9.426020 l 25.351100 9.424310 l 26.878624 9.424310 l s /Courier-latin1 ff 0.560000 scf sf 0.100000 slw [] 0 sd 0 slj 0 slc -n 40.370200 9.522621 m 40.370200 12.650000 l 7.176040 12.650000 l 7.176040 13.330300 l s -/Courier-latin1 ff 0.560000 scf sf -(creates) dup sw 2 div 23.773120 ex sub 12.500000 m gs 1 -1 sc sh gr -n 22.348120 12.500000 m 22.348120 12.100000 l 21.948120 12.300000 l ef +n 29.820200 10.322085 m 29.820200 12.650000 l 7.176040 12.650000 l 7.176040 13.330300 l s +(creates) 17.273120 12.370000 m +dup sw 2.450000 exch sub +7 div exch 0.0 exch + gs 1 -1 sc ashow gr +n 17.073120 12.510000 m 17.073120 12.110000 l 16.673120 12.310000 l ef showpage Modified: trunk/core/org.cishell.docs/src/img/algExecWorkflow.pdf =================================================================== (Binary files differ) Modified: trunk/core/org.cishell.docs/src/img/cishellInteraction.dia =================================================================== (Binary files differ) Modified: trunk/core/org.cishell.docs/src/img/cishellInteraction.eps =================================================================== --- trunk/core/org.cishell.docs/src/img/cishellInteraction.eps 2008-03-06 18:05:47 UTC (rev 647) +++ trunk/core/org.cishell.docs/src/img/cishellInteraction.eps 2008-03-07 21:56:18 UTC (rev 648) @@ -1,11 +1,11 @@ %!PS-Adobe-2.0 EPSF-2.0 -%%Title: /home/bherr/cishell-workspace/org.cishell.docs/src/img/cishellInteraction.dia -%%Creator: Dia v0.95 -%%CreationDate: Tue Jan 8 18:06:57 2008 +%%Title: /home/bherr/workspace/org.cishell.docs/src/img/cishellInteraction.dia +%%Creator: Dia v0.96.1 +%%CreationDate: Fri Mar 7 16:39:20 2008 %%For: bherr %%Orientation: Portrait %%Magnification: 1.0000 -%%BoundingBox: 0 0 1053 520 +%%BoundingBox: 0 0 1055 520 %%BeginSetup %%EndSetup %%EndComments @@ -341,20 +341,26 @@ currentdict end definefont pop 28.346000 -28.346000 scale -3.053557 -24.440110 translate +3.053560 -24.440100 translate %%EndProlog 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 14.958000 16.044000 m 14.958000 18.244000 l 22.508000 18.244000 l 22.508000 16.044000 l f +n 14.958000 16.044000 m 14.958000 18.244000 l 22.605500 18.244000 l 22.605500 16.044000 l f 0.000000 0.000000 0.000000 srgb -n 14.958000 16.044000 m 14.958000 18.244000 l 22.508000 18.244000 l 22.508000 16.044000 l cp s +n 14.958000 16.044000 m 14.958000 18.244000 l 22.605500 18.244000 l 22.605500 16.044000 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 18.733000 ex sub 16.694000 m gs 1 -1 sc sh gr +(<<interface>>) 16.506750 16.546500 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(AlgorithmFactory) dup sw 2 div 18.733000 ex sub 17.694000 m gs 1 -1 sc sh gr +(AlgorithmFactory) 15.208000 17.514000 m +dup sw 7.147500 exch sub +16 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb @@ -362,220 +368,370 @@ 0.000000 0.000000 0.000000 srgb n 27.468000 16.045000 m 27.468000 18.245000 l 32.518000 18.245000 l 32.518000 16.045000 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 29.993000 ex sub 16.695000 m gs 1 -1 sc sh gr +(<<interface>>) 27.718000 16.547500 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(Algorithm) dup sw 2 div 29.993000 ex sub 17.695000 m gs 1 -1 sc sh gr +(Algorithm) 27.953000 17.515000 m +dup sw 4.080000 exch sub +9 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 0 slj 0 slc -n 27.417846 17.145000 m 23.876543 17.145000 l 23.876543 17.144000 l 22.556752 17.144000 l s +n 27.417828 17.145000 m 23.876500 17.145000 l 23.876500 17.144000 l 22.655676 17.144000 l s /Courier-latin1 ff 0.560000 scf sf -(Creates) 23.976543 16.994500 m gs 1 -1 sc sh gr -(n) dup sw 27.217846 ex sub 16.995000 m gs 1 -1 sc sh gr -(1) 22.756752 16.994000 m gs 1 -1 sc sh gr +(Creates) 23.976500 16.864500 m +dup sw 2.450000 exch sub +7 div exch 0.0 exch + gs 1 -1 sc ashow gr +(n) 26.867828 16.865000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 22.855676 16.864000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 14.706000 22.187000 m 14.706000 24.387000 l 22.756000 24.387000 l 22.756000 22.187000 l f +n 14.706000 22.187000 m 14.706000 24.387000 l 22.886000 24.387000 l 22.886000 22.187000 l f 0.000000 0.000000 0.000000 srgb -n 14.706000 22.187000 m 14.706000 24.387000 l 22.756000 24.387000 l 22.756000 22.187000 l cp s +n 14.706000 22.187000 m 14.706000 24.387000 l 22.886000 24.387000 l 22.886000 22.187000 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 18.731000 ex sub 22.837000 m gs 1 -1 sc sh gr +(<<interface>>) 16.521000 22.689500 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(AlgorithmProperty) dup sw 2 div 18.731000 ex sub 23.837000 m gs 1 -1 sc sh gr +(AlgorithmProperty) 14.956000 23.657000 m +dup sw 7.680000 exch sub +17 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 15.658686 9.829000 m 15.658686 12.029000 l 21.808686 12.029000 l 21.808686 9.829000 l f +n 12.958700 10.229000 m 12.958700 12.429000 l 19.143700 12.429000 l 19.143700 10.229000 l f 0.000000 0.000000 0.000000 srgb -n 15.658686 9.829000 m 15.658686 12.029000 l 21.808686 12.029000 l 21.808686 9.829000 l cp s +n 12.958700 10.229000 m 12.958700 12.429000 l 19.143700 12.429000 l 19.143700 10.229000 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 18.733686 ex sub 10.479000 m gs 1 -1 sc sh gr +(<<interface>>) 13.776200 10.731500 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(DataValidator) dup sw 2 div 18.733686 ex sub 11.479000 m gs 1 -1 sc sh gr +(DataValidator) 13.208700 11.699000 m +dup sw 5.685000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 25.944343 10.154657 m 25.944343 12.354657 l 34.044343 12.354657 l 34.044343 10.154657 l f +n 25.944300 10.154700 m 25.944300 12.354700 l 34.036800 12.354700 l 34.036800 10.154700 l f 0.000000 0.000000 0.000000 srgb -n 25.944343 10.154657 m 25.944343 12.354657 l 34.044343 12.354657 l 34.044343 10.154657 l cp s +n 25.944300 10.154700 m 25.944300 12.354700 l 34.036800 12.354700 l 34.036800 10.154700 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 29.994343 ex sub 10.804657 m gs 1 -1 sc sh gr +(<<interface>>) 27.715550 10.657200 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(ProgressTrackable) dup sw 2 div 29.994343 ex sub 11.804657 m gs 1 -1 sc sh gr +(ProgressTrackable) 26.194300 11.624700 m +dup sw 7.592500 exch sub +17 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 26.740000 6.159000 m 26.740000 8.359000 l 33.990000 8.359000 l 33.990000 6.159000 l f +n 26.740000 6.159000 m 26.740000 8.359000 l 34.097500 8.359000 l 34.097500 6.159000 l f 0.000000 0.000000 0.000000 srgb -n 26.740000 6.159000 m 26.740000 8.359000 l 33.990000 8.359000 l 33.990000 6.159000 l cp s +n 26.740000 6.159000 m 26.740000 8.359000 l 34.097500 8.359000 l 34.097500 6.159000 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 30.365000 ex sub 6.809000 m gs 1 -1 sc sh gr +(<<interface>>) 28.143750 6.661500 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(ProgressMonitor) dup sw 2 div 30.365000 ex sub 7.809000 m gs 1 -1 sc sh gr +(ProgressMonitor) 26.990000 7.629000 m +dup sw 6.857500 exch sub +15 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 5.011421 17.736731 m 5.011421 19.936731 l 10.061421 19.936731 l 10.061421 17.736731 l f +n 5.011420 17.736700 m 5.011420 19.936700 l 10.061420 19.936700 l 10.061420 17.736700 l f 0.000000 0.000000 0.000000 srgb -n 5.011421 17.736731 m 5.011421 19.936731 l 10.061421 19.936731 l 10.061421 17.736731 l cp s +n 5.011420 17.736700 m 5.011420 19.936700 l 10.061420 19.936700 l 10.061420 17.736700 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 7.536421 ex sub 18.386731 m gs 1 -1 sc sh gr +(<<interface>>) 5.261420 18.239200 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(Data) dup sw 2 div 7.536421 ex sub 19.386731 m gs 1 -1 sc sh gr +(Data) 6.566420 19.206700 m +dup sw 1.940000 exch sub +4 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n -2.927751 17.728768 m -2.927751 19.928768 l 1.672249 19.928768 l 1.672249 17.728768 l f +n -2.927750 17.728800 m -2.927750 19.928800 l 1.679750 19.928800 l 1.679750 17.728800 l f 0.000000 0.000000 0.000000 srgb -n -2.927751 17.728768 m -2.927751 19.928768 l 1.672249 19.928768 l 1.672249 17.728768 l cp s +n -2.927750 17.728800 m -2.927750 19.928800 l 1.679750 19.928800 l 1.679750 17.728800 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<class>>) dup sw 2 div -0.627751 ex sub 18.378768 m gs 1 -1 sc sh gr +(<<class>>) -2.199000 18.231300 m +dup sw 3.150000 exch sub +9 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(BasicData) dup sw 2 div -0.627751 ex sub 19.378768 m gs 1 -1 sc sh gr +(BasicData) -2.677750 19.198800 m +dup sw 4.107500 exch sub +9 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd [] 0 sd 0 slc -n 18.733127 15.995378 m 18.733506 12.564425 l s +n 16.035133 15.993750 m 16.049006 12.915798 l s [] 0 sd 0 slj 0 slc -n 18.733547 12.189425 m 18.983492 12.689453 l 18.733506 12.564425 l 18.483492 12.689398 l ef -n 18.733547 12.189425 m 18.983492 12.689453 l 18.733506 12.564425 l 18.483492 12.689398 l cp s +n 16.050696 12.540802 m 16.298440 13.041924 l 16.049006 12.915798 l 15.798445 13.039670 l ef +n 16.050696 12.540802 m 16.298440 13.041924 l 16.049006 12.915798 l 15.798445 13.039670 l cp s /Courier-latin1 ff 0.560000 scf sf -( Optional) 18.733343 14.036500 m gs 1 -1 sc sh gr +( Optional) 16.043166 14.071375 m +dup sw 3.150000 exch sub +9 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd [] 0 sd 0 slc -n 29.993257 16.017552 m 29.993975 12.868909 l s +n 29.993300 16.017600 m 29.993993 12.868903 l s [] 0 sd 0 slj 0 slc -n 29.994061 12.493909 m 30.243947 12.993966 l 29.993975 12.868909 l 29.743947 12.993852 l ef -n 29.994061 12.493909 m 30.243947 12.993966 l 29.993975 12.868909 l 29.743947 12.993852 l cp s +n 29.994075 12.493903 m 30.243965 12.993958 l 29.993993 12.868903 l 29.743965 12.993848 l ef +n 29.994075 12.493903 m 30.243965 12.993958 l 29.993993 12.868903 l 29.743965 12.993848 l cp s /Courier-latin1 ff 0.560000 scf sf -( Optional) 29.993672 14.199828 m gs 1 -1 sc sh gr +( Optional) 29.993700 14.059800 m +dup sw 3.150000 exch sub +9 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 0 slj 0 slc -n 18.731000 22.187000 m 18.736886 22.187000 l 18.736886 18.244000 l 18.733000 18.244000 l s +n 18.731000 22.187000 m 18.736900 22.187000 l 18.736900 18.244000 l 18.781750 18.244000 l s /Courier-latin1 ff 0.560000 scf sf -(Service Constants) 18.836886 20.065500 m gs 1 -1 sc sh gr +(Service Constants) 18.836900 19.935500 m +dup sw 5.950000 exch sub +17 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 0 slj 0 slc -n 26.700999 7.259000 m 24.447119 7.259000 l 24.447119 11.254657 l 25.944343 11.254657 l s -/Courier-latin1 ff 0.560000 scf sf -(Communications) 24.547119 9.106828 m gs 1 -1 sc sh gr -(1) dup sw 26.500999 ex sub 7.109000 m gs 1 -1 sc sh gr -(1) dup sw 25.744343 ex sub 11.104657 m gs 1 -1 sc sh gr +n 26.701000 7.259000 m 24.447100 7.259000 l 24.447100 11.254700 l 25.944300 11.254700 l s +(Communications) 24.547100 8.976850 m +dup sw 4.900000 exch sub +14 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 26.151000 6.979000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 25.394300 10.974700 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 4.410510 11.796019 m 4.410510 13.996019 l 11.010510 13.996019 l 11.010510 11.796019 l f +n 4.410510 11.796000 m 4.410510 13.996000 l 10.980510 13.996000 l 10.980510 11.796000 l f 0.000000 0.000000 0.000000 srgb -n 4.410510 11.796019 m 4.410510 13.996019 l 11.010510 13.996019 l 11.010510 11.796019 l cp s +n 4.410510 11.796000 m 4.410510 13.996000 l 10.980510 13.996000 l 10.980510 11.796000 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 7.710510 ex sub 12.446019 m gs 1 -1 sc sh gr +(<<interface>>) 5.420510 12.298500 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(CIShellContext) dup sw 2 div 7.710510 ex sub 13.446019 m gs 1 -1 sc sh gr +(CIShellContext) 4.660510 13.266000 m +dup sw 6.070000 exch sub +14 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 3.336167 6.180019 m 3.336167 8.380019 l 12.086167 8.380019 l 12.086167 6.180019 l f +n 3.336170 6.180020 m 3.336170 8.380020 l 12.048670 8.380020 l 12.048670 6.180020 l f 0.000000 0.000000 0.000000 srgb -n 3.336167 6.180019 m 3.336167 8.380019 l 12.086167 8.380019 l 12.086167 6.180019 l cp s +n 3.336170 6.180020 m 3.336170 8.380020 l 12.048670 8.380020 l 12.048670 6.180020 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<class>>) dup sw 2 div 7.711167 ex sub 6.830019 m gs 1 -1 sc sh gr +(<<class>>) 6.117420 6.682520 m +dup sw 3.150000 exch sub +9 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(LocalCIShellContext) dup sw 2 div 7.711167 ex sub 7.830019 m gs 1 -1 sc sh gr +(LocalCIShellContext) 3.586170 7.650020 m +dup sw 8.212500 exch sub +19 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd [] 0 sd 0 slj 0 slc -n 7.710510 11.258868 m 7.710510 8.828843 l 7.711167 8.828843 l 7.711167 8.429915 l s +n 7.710510 11.258897 m 7.710510 8.828840 l 7.711170 8.828840 l 7.711170 8.429910 l s [] 0 sd 0 slj 0 slc -n 7.710510 11.633868 m 7.460510 11.133868 l 7.710510 11.258868 l 7.960510 11.133868 l ef -n 7.710510 11.633868 m 7.460510 11.133868 l 7.710510 11.258868 l 7.960510 11.133868 l cp s +n 7.710510 11.633897 m 7.460510 11.133897 l 7.710510 11.258897 l 7.960510 11.133897 l ef +n 7.710510 11.633897 m 7.460510 11.133897 l 7.710510 11.258897 l 7.960510 11.133897 l cp s 0.100000 slw [] 0 sd [] 0 sd 0 slj 0 slc -n 22.626177 17.313299 m 21.531491 18.353113 l 22.625491 18.353113 l ef -n 22.626177 17.313299 m 21.531491 18.353113 l 22.625491 18.353113 l cp s +n 22.626200 17.313300 m 21.531500 18.353100 l 22.625500 18.353100 l ef +n 22.626200 17.313300 m 21.531500 18.353100 l 22.625500 18.353100 l cp s 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 4.650942 22.190110 m 4.650942 24.390110 l 10.700942 24.390110 l 10.700942 22.190110 l f +n 4.650940 22.190100 m 4.650940 24.390100 l 10.690940 24.390100 l 10.690940 22.190100 l f 0.000000 0.000000 0.000000 srgb -n 4.650942 22.190110 m 4.650942 24.390110 l 10.700942 24.390110 l 10.700942 22.190110 l cp s +n 4.650940 22.190100 m 4.650940 24.390100 l 10.690940 24.390100 l 10.690940 22.190100 l cp s /Courier-latin1 ff 0.560000 scf sf -(<<interface>>) dup sw 2 div 7.675942 ex sub 22.840110 m gs 1 -1 sc sh gr +(<<interface>>) 5.395940 22.692600 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr /Helvetica-Bold-latin1 ff 0.700000 scf sf -(DataProperty) dup sw 2 div 7.675942 ex sub 23.840110 m gs 1 -1 sc sh gr +(DataProperty) 4.900940 23.660100 m +dup sw 5.540000 exch sub +12 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd [] 0 sd 0 slj 0 slc -n 1.672249 18.828768 m 4.717962 18.828768 l 4.717962 18.836731 l 4.524618 18.836731 l s +n 1.672250 18.828800 m 4.717960 18.828800 l 4.717960 18.836700 l 4.524617 18.836700 l s [] 0 sd 0 slj 0 slc -n 4.899618 18.836731 m 4.399618 19.086731 l 4.524618 18.836731 l 4.399618 18.586731 l ef -n 4.899618 18.836731 m 4.399618 19.086731 l 4.524618 18.836731 l 4.399618 18.586731 l cp s +n 4.899617 18.836700 m 4.399617 19.086700 l 4.524617 18.836700 l 4.399617 18.586700 l ef +n 4.899617 18.836700 m 4.399617 19.086700 l 4.524617 18.836700 l 4.399617 18.586700 l cp s 0.100000 slw [] 0 sd 0 slj 0 slc -n 7.675942 22.190110 m 7.339526 22.190110 l 7.339526 19.936731 l 7.536421 19.936731 l s +n 7.675940 22.190100 m 7.339530 22.190100 l 7.339530 19.936700 l 7.536420 19.936700 l s /Courier-latin1 ff 0.560000 scf sf -(Data Constants) 7.439526 20.913420 m gs 1 -1 sc sh gr +(Data Constants) 7.439530 20.783400 m +dup sw 4.900000 exch sub +14 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 0 slj 0 slc -n 11.062569 12.898019 m 12.164040 12.898019 l 12.164040 17.144000 l 14.958000 17.144000 l s -/Courier-latin1 ff 0.560000 scf sf -(given) 12.264040 14.871010 m gs 1 -1 sc sh gr -(n) 11.262569 12.748019 m gs 1 -1 sc sh gr -(1) dup sw 14.758000 ex sub 16.994000 m gs 1 -1 sc sh gr +n 11.062600 12.898000 m 12.164000 12.898000 l 12.164000 17.144000 l 14.958000 17.144000 l s +(given) 12.264000 14.741000 m +dup sw 1.750000 exch sub +5 div exch 0.0 exch + gs 1 -1 sc ashow gr +(n) 11.262600 12.618000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 14.408000 16.864000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 0 slj 0 slc -n 10.061421 18.836731 m 12.164040 18.836731 l 12.164040 17.144000 l 14.958000 17.144000 l s -/Courier-latin1 ff 0.560000 scf sf -(given) 12.264040 17.840365 m gs 1 -1 sc sh gr -(0..n) 10.261421 18.686731 m gs 1 -1 sc sh gr -(1) dup sw 14.758000 ex sub 16.994000 m gs 1 -1 sc sh gr +n 10.061400 18.836700 m 12.164000 18.836700 l 12.164000 17.144000 l 14.958000 17.144000 l s +(given) 12.264000 17.710350 m +dup sw 1.750000 exch sub +5 div exch 0.0 exch + gs 1 -1 sc ashow gr +(0..n) 10.261400 18.556700 m +dup sw 1.400000 exch sub +4 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 14.408000 16.864000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 0 slj 0 slc -n 1.095192 10.315063 m 2.207518 10.315063 l 2.207518 12.896019 l 4.361154 12.896019 l s -/Courier-latin1 ff 0.560000 scf sf -(Provides Access) 2.307518 11.455541 m gs 1 -1 sc sh gr -(4) 1.295192 10.165063 m gs 1 -1 sc sh gr -(n) dup sw 4.161154 ex sub 12.746019 m gs 1 -1 sc sh gr +n 1.095190 10.315100 m 2.207520 10.315100 l 2.207520 12.896000 l 4.361150 12.896000 l s +(Provides Access) 2.307520 11.325550 m +dup sw 5.250000 exch sub +15 div exch 0.0 exch + gs 1 -1 sc ashow gr +(4) 1.295190 10.035100 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr +(n) 3.811150 12.616000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n -3.003557 9.065063 m 0.446443 9.065063 l 1.046443 9.665063 l 1.046443 11.565063 l -3.003557 11.565063 l ef +n -3.003560 9.065060 m 0.446440 9.065060 l 1.046440 9.665060 l 1.046440 11.565060 l -3.003560 11.565060 l ef 0.000000 0.000000 0.000000 srgb -n -3.003557 9.065063 m 0.446443 9.065063 l 1.046443 9.665063 l 1.046443 11.565063 l -3.003557 11.565063 l cp s +n -3.003560 9.065060 m 0.446440 9.065060 l 1.046440 9.665060 l 1.046440 11.565060 l -3.003560 11.565060 l cp s 0.050000 slw -n 0.446443 9.065063 m 0.446443 9.665063 l 1.046443 9.665063 l s +n 0.446440 9.065060 m 0.446440 9.665060 l 1.046440 9.665060 l s /Courier-latin1 ff 0.560000 scf sf -(Standard ) -2.653557 10.265063 m gs 1 -1 sc sh gr -(Services) -2.653557 11.065063 m gs 1 -1 sc sh gr +(Standard ) -2.653560 10.117560 m +dup sw 3.150000 exch sub +9 div exch 0.0 exch + gs 1 -1 sc ashow gr +(Services) -2.653560 10.917560 m +dup sw 2.800000 exch sub +8 div exch 0.0 exch + gs 1 -1 sc ashow gr +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 15.656440 6.540000 m 15.656440 8.740000 l 23.778940 8.740000 l 23.778940 6.540000 l f +0.000000 0.000000 0.000000 srgb +n 15.656440 6.540000 m 15.656440 8.740000 l 23.778940 8.740000 l 23.778940 6.540000 l cp s +/Courier-latin1 ff 0.560000 scf sf +(<<interface>>) 17.442690 7.042500 m +dup sw 4.550000 exch sub +13 div exch 0.0 exch + gs 1 -1 sc ashow gr +/Helvetica-Bold-latin1 ff 0.700000 scf sf +(ParameterMutator) 15.906440 8.010000 m +dup sw 7.622500 exch sub +16 div exch 0.0 exch + gs 1 -1 sc ashow gr +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 19.722633 15.993750 m 19.718022 9.226803 l s +[] 0 sd +0 slj +0 slc +n 19.717766 8.851803 m 19.968107 9.351633 l 19.718022 9.226803 l 19.468107 9.351974 l ef +n 19.717766 8.851803 m 19.968107 9.351633 l 19.718022 9.226803 l 19.468107 9.351974 l cp s +/Courier-latin1 ff 0.560000 scf sf +( Optional) 19.720161 12.226875 m +dup sw 3.150000 exch sub +9 div exch 0.0 exch + gs 1 -1 sc ashow gr showpage Modified: trunk/core/org.cishell.docs/src/img/cishellInteraction.pdf =================================================================== (Binary files differ) Modified: trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-03-06 18:05:47 UTC (rev 647) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-03-07 21:56:18 UTC (rev 648) @@ -21,15 +21,16 @@ An algorithm defines its inputs in two ways. First, the input data is defined in the algorithm's service metadata. Second, the acceptable user-entered parameters -are defined in a \class{MetaTypeProvider}, see section \ref{GUISpec}. +are defined in a \class{MetaTypeProvider} and published to the +\class{MetaTypeService}, see section \ref{GUISpec}. Figure \ref{fig:algExecWorkflow} shows the typical flow of information into and out of an algorithm. First the input parameter specification is pulled from the -\class{AlgorithmFactory}. If parameters are needed, then a UI is created and user -inputs are entered. To create an \class{Algorithm}, the \class{AlgorithmFactory} -is passed the user-entered parameters, zero or more pieces of data, and a -\class{CIShellContext}. The \class{Algorithm} is then executed and produces zero -or more pieces of data. +\class{MetaTypeService}. If parameters are needed, then a UI is created and +user inputs are entered. To create an \class{Algorithm}, the +\class{AlgorithmFactory} is passed the user-entered parameters, zero or more +pieces of data, and a \class{CIShellContext}. The \class{Algorithm} is then +executed and produces zero or more pieces of data. \begin{figure}[htb!] \centering @@ -41,13 +42,29 @@ \subsection{Optional Interfaces} Algorithm developers may augment algorithms with additional interfaces to enhance -parts of the execution workflow. An \class{AlgorithmFactory} can also implement -the \class{DataValidator} interface to validate the data beyond the data format -validation that an application should provide ahead of time. An \class{Algorithm} -can implement \class{ProgressTrackable} to allow for more detailed monitoring and -control of an \class{Algorithm}'s progress while executing. See each interface's -documentation for more details. +parts of the execution workflow. See each interface's documentation for more +details. +\begin{description} + \item[ParameterMutator] An \class{AlgorithmFactory} can implement the + \class{ParameterMutator} interface to add, remove, or modify an algorithm's + parameters (\class{AttributeDefinition}s in an \class{ObjectClassDefinition} + in a \class{MetaTypeProvider}) between the time when its + \class{MetaTypeProvider} is pulled from the \class{MetaTypeService} and when + the corresponding UI is shown to the user. This is typically done to + customize the input parameters based on the data to be given to the + algorithm. See section \ref{GUISpec} for information on constructing and + publishing \class{MetaTypeProviders}. + + \item[DataValidator] An \class{AlgorithmFactory} can implement the + \class{DataValidator} interface to validate the data beyond the data format + validation that an application should provide ahead of time. + + \item[ProgressTrackable] An \class{Algorithm} can implement + \class{ProgressTrackable} to allow for more detailed monitoring and control + of an \class{Algorithm}'s progress while executing. +\end{description} + \subsection{Algorithm Service Metadata Definition} \label{algMetaData} @@ -79,11 +96,21 @@ \end{quote} -\subsection*{parameters_pid} -\comments{Still need to define\ldots may play a bigger role than previously -though\ldots} +\subsection*{parameters\_pid} +When this key is not set, an algorithm's user-entered input parameters are +assumed to be registered in the \class{MetaTypeService} with a persistent id +equal to the algorithm service's ``service.pid''. An algorithm can override this +by setting this key to their custom persistent id. See section \ref{GUISpec} +for information on creating and publishing input parameters. +\begin{quote} +\begin{description} + \item[Example 1:] parameters\_pid = org.my.custom.pid.that.i.want.to.use +\end{description} +\end{quote} + + \subsection*{in\_data} Specifies the formats and number of \class{Data} inputs the algorithm accepts. The string is a comma separated list of data formats as @@ -93,6 +120,11 @@ inputs are necessary then the string ``null'' or not specifying the in\_data attribute at all is valid. +By using the ``+'', ``*'', or ``?'' prefixes, ambiguities could arise from +specifying multiple input formats that could easily fit into two or more +of the formats. An algorithm developer should take care when reading +in \class{Data} arrays from possibly ambiguous in\_data strings. + \begin{quote} \begin{description} \item[Example 1:] in\_data = null Modified: trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-03-06 18:05:47 UTC (rev 647) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-03-07 21:56:18 UTC (rev 648) @@ -62,8 +62,7 @@ \subsubsection*{Optional:} \begin{itemize} \item If additional user-entered parameters are needed, the algorithm should - provide a \class{MetaTypeProvider} through its AlgorithmFactory's - createParameters method. + provide a \class{MetaTypeProvider} published by the \class{MetaTypeService}. \item The algorithm's service metadata should have ``remoteable=true'' if it meets the requirements of a remoteable algorithm. \item The algorithm's service metadata should have ``parentage=default'' if @@ -133,10 +132,8 @@ \item The algorithm's service metadata must have ``type=converter''. \item The algorithm's service metadata must have ``conversion=lossy'' if data is lost during conversion or ``conversion=lossless'' if not. - \item The algorithm must not require any parameters. The - \class{AlgorithmFactory}'s createParameters method will never be called and - the \class{Dictionary} passed to the createAlgorithm method will always be - empty. + \item The algorithm must not require any parameters. The \class{Dictionary} + passed to the createAlgorithm method will always be empty. \end{itemize} \subsubsection*{Optional:} @@ -181,10 +178,8 @@ \item The algorithm's service metadata must have ``type=validator''. \item The algorithm's service metadata must have a ``label'' which is the common name of the data format being validated. - \item The algorithm must not require any parameters. The - \class{AlgorithmFactory}'s createParameters method will never be called and - the \class{Dictionary} passed to the createAlgorithm method will always be - empty. + \item The algorithm must not require any parameters. The \class{Dictionary} + passed to the createAlgorithm method will always be empty. \end{itemize} \subsubsection*{Optional:} Modified: trunk/core/org.cishell.docs/src/specification/tex/framework.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/framework.tex 2008-03-06 18:05:47 UTC (rev 647) +++ trunk/core/org.cishell.docs/src/specification/tex/framework.tex 2008-03-07 21:56:18 UTC (rev 648) @@ -32,6 +32,10 @@ algorithm. \item \textit{AlgorithmProperty} - The interface which provides string constants for an algorithm's service metadata. + \item \textit{ParameterMutator} - The interface an \class{AlgorithmFactory} + extends to provide the ability to add, remove, or modify user-entered + parameters specifications (see section \ref{GUISpec}) before being shown to an + end-user. \item \textit{DataValidator} - The interface an \class{AlgorithmFactory} extends to provide additional data validation in addition to the data format validation that an application should provide ahead of time. Modified: trunk/core/org.cishell.docs/src/specification/tex/introduction.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/introduction.tex 2008-03-06 18:05:47 UTC (rev 647) +++ trunk/core/org.cishell.docs/src/specification/tex/introduction.tex 2008-03-07 21:56:18 UTC (rev 648) @@ -7,7 +7,7 @@ while retaining their intellectual rights after distribution; (2) data holders to easily disseminate their data for use by others; (3) application developers to design applications from custom sets of algorithms and datasets that interoperate -seamlessly; and finally (4) end-users to use existing datasets and algorithms +seamlessly; and ultimately (4) end-users to use existing datasets and algorithms effectively. \section{CIShell Platform Overview} @@ -48,12 +48,12 @@ In this specification, algorithms are referred to in three different contexts. An abstract algorithm, is the pure idea of the algorithm with no actual source code. It is a series of steps sometimes put into psuedo-code and often published in -academic journals. An \class{Algorithm} with a capital A refers the Java class +academic journals. An \class{Algorithm} with a capital A refers to the Java class called Algorithm. And finally, an algorithm with a lowercase A refers to the -bundle of code that encompasses an algorithm written in code to work with the -CIShell Platform. This includes the implementation of \class{AlgorithmFactory} -and \class{Algorithm}, and the metadata, files, and other code that go into an -OSGi bundle. +bundle of code and metadata that encompasses an algorithm written to work with +the CIShell Platform. This includes the implementation of +\class{AlgorithmFactory} and \class{Algorithm}, and the metadata, files, and +other code that go into an OSGi bundle. All other conventions and terms are exactly the same as from OSGi's Core Specification, section 1.4. @@ -74,8 +74,6 @@ Version 1.0 \\ GUI Builder Service Specification & org.cishell.service.guibuilder & Version 1.0 \\ -Log Service Specification & org.osgi.service.log & Version 1.3 \\ -Preferences Service Specification & org.osgi.service.prefs & Version 1.1 \\ Data Manager Application Service Specification & org.cishell.app.datamanager & Version 1.0 \\ Scheduler Application Service Specification & org.cishell.app.scheduler & Modified: trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex 2008-03-06 18:05:47 UTC (rev 647) +++ trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex 2008-03-07 21:56:18 UTC (rev 648) @@ -13,7 +13,7 @@ Specification,'' this service defines the \class{MetaTypeProvider} class used for specifying user interfaces in CIShell. In addition, it provides an XML format for automatically generating \class{MetaTypeProvider}s and a service, - \class{MetaTypeService}, for harvesting them for use by bundles. + \class{MetaTypeService}, for harvesting them for use. \item[Log Service] as described in OSGi section 101 ``Log Service Specification,'' this service is used as a universal logging system for algorithms and services. See chapter \ref{logService} for more details. Modified: trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex 2008-03-06 18:05:47 UTC (rev 647) +++ trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex 2008-03-07 21:56:18 UTC (rev 648) @@ -6,8 +6,8 @@ The user-adjustable preferences specification defines how any service can publish user-adjustable preferences both globally and locally. In addition to global and local preferences, algorithms can allow the system to allow end-users to adjust -the default values for the algorithm parameters returned from -\class{AlgorithmFactory.createParameters}. For storing data that is not directly +the default values for algorithms' user-entered parameters specification +published to the \class{MetaTypeService}. For storing data that is not directly end-user adjustable, see chapter \ref{preferencesService}. \subsection{Publishing User Adjustable Preferences} @@ -19,13 +19,13 @@ METADATA.XML file or by the service implementing \class{MetaTypeProvider} and \class{ManagedService}. See section \ref{GUISpec} for more information. -\subsubsection*{Designate a Persistent ID (PID) for the OCD} Then they must -designate the ObjectClassDefinition a persistent id (PID). The PID can be -designated in two ways. The simplest way is by following the convention of -creating a string with the associated service's ``service.pid'' and appending -either ``.prefs.local'' or ``.prefs.global''. The other way is to designate -whatever PID the developer wishes and to provide a service property -``local\_pref\_pid'' or ``global\_pref\_pid'' which is set to whatever PID they wish. +\subsubsection*{Designate an OCD a Persistent ID (PID)} Then they must designate +the ObjectClassDefinition a persistent id (PID). The PID can be designated in two +ways. The simplest way is by following the convention of creating a string with +the associated service's ``service.pid'' and appending either ``.prefs.local'' or +``.prefs.global''. The other way is to designate whatever PID the developer +wishes and to provide a service prope... [truncated message content] |
From: <bh...@us...> - 2008-03-06 18:06:33
|
Revision: 647 http://cishell.svn.sourceforge.net/cishell/?rev=647&view=rev Author: bh2 Date: 2008-03-06 10:05:47 -0800 (Thu, 06 Mar 2008) Log Message: ----------- * added rgb: metatype extension * first pass on "User-Adjustable Preferences Specification" * first pass on in/out_data extensions Modified Paths: -------------- trunk/core/org.cishell.docs/src/specification/main.tex trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex trunk/core/org.cishell.docs/src/specification/tex/data.tex trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex trunk/core/org.cishell.docs/src/specification/tex/preferencesservice.tex Added Paths: ----------- trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex Modified: trunk/core/org.cishell.docs/src/specification/main.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/main.tex 2008-03-06 16:46:25 UTC (rev 646) +++ trunk/core/org.cishell.docs/src/specification/main.tex 2008-03-06 18:05:47 UTC (rev 647) @@ -41,6 +41,7 @@ \input{./tex/algorithmtypes.tex} \input{./tex/data.tex} \input{./tex/guidefinition.tex} +\input{./tex/useradjustableprefs.tex} \orgcishellframework{} \orgcishellframeworkalgorithm{} \orgcishellframeworkdata{} Modified: trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-03-06 16:46:25 UTC (rev 646) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-03-06 18:05:47 UTC (rev 647) @@ -78,33 +78,42 @@ \end{description} \end{quote} -\subsection*{in\_data} Specifies the type and number of \class{Data} inputs the -algorithm accepts. The string is a comma separated list of data formats. There -are several valid strings for each data format. If a Java \class{Object} is -expected, use the expected full Java class as a string. If a \class{java.io.File} -is expected, use a string with the format ``file:\textit{mime/type}''. If a -\class{java.io.File} known only by file extension is expected (only applicable -for validator algorithms), a string with the format -``file-ext:\textit{file-extension}''. If no \class{Data} inputs are necessary -then the string ``null'' or not specifying the in\_data attribute at all is -valid. See section \ref{dataSpec} for more information on data format formatting. +\subsection*{parameters_pid} +\comments{Still need to define\ldots may play a bigger role than previously +though\ldots} + + +\subsection*{in\_data} +Specifies the formats and number of \class{Data} inputs the +algorithm accepts. The string is a comma separated list of data formats as +defined in section \ref{dataSpec}. If any data is optional, prefix the associated +format with a ``?''. When receiving the \class{Data} array, an optional +\class{Data} element will be null if it is not provided. If no \class{Data} +inputs are necessary then the string ``null'' or not specifying the in\_data attribute +at all is valid. + \begin{quote} \begin{description} \item[Example 1:] in\_data = null \item[Example 2:] in\_data = java.lang.String \item[Example 3:] in\_data = java.lang.String, file:text/plain, file:text/xml \item[Example 4:] in\_data = file-ext:xml + \item[Example 5:] in\_data = +file:text/plain, *file:text/xml, + ?java.lang.String + \item[Example 6:] in\_data = ?my.package.SpecialClass \end{description} \end{quote} \subsection*{out\_data} -Specifies the type and number of \class{Data} outputs the -algorithm will produce when successfully run. This metadata key has the same -string format as defined in the in\_data specification. If no \class{Data} -outputs are produced then the string ``null'' or not specifying the out\_data -attribute at all is valid. +Specifies the formats and number of \class{Data} inputs +the algorithm produces when successfully run. The string is a comma separated +list of data formats as defined in section \ref{dataSpec}. If any data is +optional, prefix the associated format with a ``?''. When producing the +\class{Data} array, an optional \class{Data} element must be null if it is not +produced. If no \class{Data} is output then the string ``null'' or not specifying +the out\_data attribute at all is valid. \begin{quote} \begin{description} @@ -112,9 +121,13 @@ \item[Example 2:] out\_data = java.lang.String \item[Example 3:] out\_data = java.lang.String, file:text/plain, file:text/xml \item[Example 4:] out\_data = file-ext:csv + \item[Example 5:] out\_data = +file:text/plain, *file:text/xml, + ?java.lang.String + \item[Example 6:] out\_data = ?my.package.SpecialClass \end{description} \end{quote} + \subsection*{parentage} If this metadata element is used, it defines how the output \class{Data} produced by the algorithm should be arranged. \class{Data} items can be given a parent as Modified: trunk/core/org.cishell.docs/src/specification/tex/data.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/data.tex 2008-03-06 16:46:25 UTC (rev 646) +++ trunk/core/org.cishell.docs/src/specification/tex/data.tex 2008-03-06 18:05:47 UTC (rev 647) @@ -4,14 +4,33 @@ \subsection{Introduction} Data to be operated on is passed around in \class{Data} objects which hold the -real data, the data's format, and its properties (metadata). The data can be any -Java \class{Object}. The format is a string which is either a full Java class or -a mime type if it is a \class{java.io.File}. The mime type corresponds to the -file's data type and has the following form - ``file:\textit{mime/type}''. Note -that if no official mime type is available for a file format, a made up one can -be used, but must still conform to how mime types are constructed. See RFCs -3023\footnote{http://tools.ietf.org/html/rfc3023} and -4288\footnote{http://tools.ietf.org/html/rfc4288} for more information on how to -construct MIME types. Finally, the properties help describe the data. The label to give the data, the parent \class{Data} object from which it was derived from, and a coarse data type can -all be defined in the \class{Data}'s properties. See the \class{DataProperty} -interface definition for specific properties to use. +real data, the data's format, and its properties (metadata). The real data can be +any Java \class{Object}. The format is a string describing the 'format' of the +data, see next section. Finally, the properties help describe the data. The label +to give the data, the parent \class{Data} object from which it was derived from, +and a coarse data type can all be defined in the \class{Data}'s properties. See +the \class{DataProperty} interface definition for specific properties to use. + +\subsection{Data Format Specification} + +Data formats are used by algorithms specifying what \class{Data} items are +consumed/producted and \class{Data} objects must know what the format of its +contained real data is. This format is simply a string that says what the +format of the real data is. If the real data is a \class{java.io.File}, use a +MIME type\footnote{If no official mime type is available for a file format, a +made up one can be used, but must still conform to how mime types are +constructed, see RFCs 3023 (http://tools.ietf.org/html/rfc3023) and 4288 +(http://tools.ietf.org/html/rfc4288).} prefixed by ``file:'', i.e., +``file:\textit{mime/type}''. If the real data is a \class{java.io.File} known +only by file extension (only applicable for validator algorithms), use the format +``file-ext:\textit{file-extension}''. Otherwise, if the real data is a Java +\class{Object}, use the full Java class as a string, i.e., ``java.lang.String'' +or ``my.package.SpecialClass''. + +To specify that a single \class{Data} object contains one or more +sub-\class{Data} objects of a single format, prefix the type with a ``+''. For +zero or more, prefix the type with a ``*''. This corresponds to a \class{Data} +object that is wrapping multiple (zero or one or more depending on the prefix) +other \class{Data} objects of the associated format in a Java array +(\class{Data[]}) stored as its wrapped real data. This is useful for algorithms +that can work on a variable number of \class{Data} items. Modified: trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex 2008-03-06 16:46:25 UTC (rev 646) +++ trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex 2008-03-06 18:05:47 UTC (rev 647) @@ -47,3 +47,9 @@ An AD with type ``string'' and default value ``password:'' will receive a string corresponding to the entered password. +\subsubsection*{rgb:} +An AD with type ``string'' and default value ``rgb:'' will +receive a string which is a comma separated list that corresponds to the RGB +color values the user chose. Each item in the comma separated list would be +between 0 and 255. The first item would be the red value, second green value, +and third blue value. Modified: trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex 2008-03-06 16:46:25 UTC (rev 646) +++ trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex 2008-03-06 18:05:47 UTC (rev 647) @@ -21,14 +21,16 @@ Service Specification,'' this service is used as a universal preference storage system for algorithms and services. See chapter \ref{preferencesService} for more details. - \item[Configuration Admin Service] \comments{More details when the expanded - prefs spec is done\ldots} + \item[Configuration Admin Service] as described in OSGi section 104 + ``Configuration Admin Service Specification,'' this service is used as a + manager/provider of configuration information for bundles and services. It is + very useful for meeting the User Adjustable Preferences (section + \ref{userPrefsSpec}) requirements. \end{description} \subsection*{Recommended Services} \begin{description} - \item[Declarative Services] as described in OSGi section 112 ``Declarative Services Specification,'' this service can be used by CIShell algorithms to - simplify algorithm service registration and for finding necessary auxilary services.\item[] + simplify algorithm service registration and for finding necessary auxilary services. \end{description} Modified: trunk/core/org.cishell.docs/src/specification/tex/preferencesservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/preferencesservice.tex 2008-03-06 16:46:25 UTC (rev 646) +++ trunk/core/org.cishell.docs/src/specification/tex/preferencesservice.tex 2008-03-06 18:05:47 UTC (rev 647) @@ -5,10 +5,12 @@ CIShell requires OSGi's standard \class{PreferencesService} to be installed in a CIShell-compliant system. This gives both the algorithms and the applications -built on CIShell a standard preferences storage sytem to use. This service has -not been extended or modified. More information about the -\class{PreferencesService} is available in the OSGi Service Platform Service -Compendium Specification R4, section 106 under ``Preferences Service -Specification.'' - -\comments{Upcoming preferences w/ gui system spec goes here\ldots} +built on CIShell a standard preferences storage system to use. It is used mainly +as a storage mechanism for data that is not necessarily adjustable by end-users. +Things like, last opened file, recently opened files, or any sort of data that +may need to be saved between sessions. This service has not been modified or +extended. More information about the \class{PreferencesService} is available in +the OSGi Service Platform Service Compendium Specification R4, section 106 under +``Preferences Service Specification.'' Algorithm developers wishing to expose +user-adjustable preferences, should refer to section \ref{userPrefsSpec} for +more information on this separate task. Added: trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex (rev 0) +++ trunk/core/org.cishell.docs/src/specification/tex/useradjustableprefs.tex 2008-03-06 18:05:47 UTC (rev 647) @@ -0,0 +1,60 @@ +\section{User Adjustable Preferences Specification} +\label{userPrefsSpec} +\subsection*{\textit{Version 1.0}} +\subsection{Introduction} + +The user-adjustable preferences specification defines how any service can publish +user-adjustable preferences both globally and locally. In addition to global and +local preferences, algorithms can allow the system to allow end-users to adjust +the default values for the algorithm parameters returned from +\class{AlgorithmFactory.createParameters}. For storing data that is not directly +end-user adjustable, see chapter \ref{preferencesService}. + +\subsection{Publishing User Adjustable Preferences} + +\subsubsection*{Create an ObjectClassDefinition (OCD)} To define parameters that +can be adjusted by an end-user, an algorithm developer must first create an +\class{ObjectClassDefinition} which details the parameters to be published. This +OCD must be visible to the \class{MetaTypeService} either through the use of a +METADATA.XML file or by the service implementing \class{MetaTypeProvider} and +\class{ManagedService}. See section \ref{GUISpec} for more information. + +\subsubsection*{Designate a Persistent ID (PID) for the OCD} Then they must +designate the ObjectClassDefinition a persistent id (PID). The PID can be +designated in two ways. The simplest way is by following the convention of +creating a string with the associated service's ``service.pid'' and appending +either ``.prefs.local'' or ``.prefs.global''. The other way is to designate +whatever PID the developer wishes and to provide a service property +``local\_pref\_pid'' or ``global\_pref\_pid'' which is set to whatever PID they wish. + +\subsubsection*{Designate What Preferences are to be Published} To let the system +know that you wish to publish preferences, the system properties must contain a +``prefs\_published'' key with zero or more of the following values (separated by +commas): ``local'' for publishing local prefs, ``global'' for global prefs, and +``param-defaults'' for algorithm parameter defaults. + +\subsubsection*{Algorithm Parameter Defaults} +By publishing algorithm parameter defaults, algorithm developers allow +end-users to adjust the default values they see when running their algorithm. +This is typically accomplished by wrapping the created MetaTypeProvider +returned from AlgorithmFactory.createParameters with overridden +AttributeDefinitions that change their default value. Many systems will have +this on by default, but if the ``prefs\_published'' key is set in the +algorithm's service metadata and ``param-defaults'' is not set, then this +feature will be disabled for the algorithm. + +\subsubsection*{Receiving Preference Data} To be notified of changes to local or +global preferences, the service must implement +\class{org.\-osgi.\-service.\-cm.\-ManagedService} and set in their service +metadata ``receive\_prefs=true''. When either the local or global preferences are updated, +the updated method will be passed a \class{Dictionary} of all of the id/value +pairs, including the updated ones. Local preferences will have the same ids as +the AttributeDefinitions (AD) defined in the associated OCD. The local +preferences will also have an additional id ``Bundle-Version", which contains the +version of the service's associated bundle that was used when the preference data +was last updated. Global preferences will have the same ids (plus a +``Bundle-Version'' id analagous to local preference's) from their OCD's ADs +prefixed by the PID of the published global preference. In this way, all global +preferences published in the system will be available to anyone receiving +preference data. Note that one does not have to publish any preferences to +receive just global preference data. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-03-06 16:49:18
|
Revision: 646 http://cishell.svn.sourceforge.net/cishell/?rev=646&view=rev Author: mwlinnem Date: 2008-03-06 08:46:25 -0800 (Thu, 06 Mar 2008) Log Message: ----------- Refactored name of GraphUtil to TableUtil. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester/graphcomparison/DefaultGraphComparer.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/graphcomparison/ComplexGraphComparer.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/graphcomparison/IdsNotPreservedComparer.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/graphcomparison/IdsPreservedComparer.java Added Paths: ----------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester/graphcomparison/TableUtil.java Removed Paths: ------------- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester/graphcomparison/GraphUtil.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester/graphcomparison/DefaultGraphComparer.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester/graphcomparison/DefaultGraphComparer.java 2008-03-05 16:50:27 UTC (rev 645) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester/graphcomparison/DefaultGraphComparer.java 2008-03-06 16:46:25 UTC (rev 646) @@ -207,8 +207,8 @@ } private boolean areEqualWhenSorted(Table t1, Table t2) { - boolean result = areEqual(GraphUtil.getSorted(t1), - GraphUtil.getSorted(t2)); + boolean result = areEqual(TableUtil.getSorted(t1), + TableUtil.getSorted(t2)); return result; } @@ -277,14 +277,14 @@ * @return a stripped copy of the original table */ private Table getStrippedEdgeTable(Table t) { - Table tCopy = GraphUtil.copyTable(t); + Table tCopy = TableUtil.copyTable(t); tCopy.removeColumn(Graph.DEFAULT_SOURCE_KEY); tCopy.removeColumn(Graph.DEFAULT_TARGET_KEY); return tCopy; } private Table getStrippedNodeTable(Graph g) { - Table tCopy = GraphUtil.copyTable(g.getNodeTable()); + Table tCopy = TableUtil.copyTable(g.getNodeTable()); String nodeKeyField = g.getNodeKeyField(); if (nodeKeyField != null) { tCopy.removeColumn(nodeKeyField); Deleted: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester/graphcomparison/GraphUtil.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester/graphcomparison/GraphUtil.java 2008-03-05 16:50:27 UTC (rev 645) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester/graphcomparison/GraphUtil.java 2008-03-06 16:46:25 UTC (rev 646) @@ -1,56 +0,0 @@ -package org.cishell.testing.convertertester.core.tester.graphcomparison; - -import java.util.Iterator; - -import prefuse.data.Table; -import prefuse.data.Tuple; -import prefuse.data.expression.parser.ExpressionParser; -import prefuse.data.util.Sort; - -public class GraphUtil { - - public static String[] getColumnNames(Table t) { - String[] columnNames = new String[t.getColumnCount()]; - for (int ii = 0; ii < t.getColumnCount(); ii++) { - columnNames[ii] = t.getColumnName(ii); - } - return columnNames; - } - - public static Table copyTable(Table t) { - Table tCopy = new Table(); - tCopy.addColumns(t.getSchema()); - - for (Iterator ii = t.tuples(); ii.hasNext();) { - Tuple tuple = (Tuple) ii.next(); - tCopy.addTuple(tuple); - } - return tCopy; - } - - public static void printTable(Table t) { - Iterator ii = t.tuples(); - while (ii.hasNext()) { - System.out.println((Tuple) ii.next()); - } - } - - public static Table getSorted(Table t) { - return getSortedByColumns(t, getColumnNames(t)); - } - - public static Table getSortedByColumns(Table t, String[] columnNames) { - for (int ii = 0; ii < columnNames.length; ii++) { - String columnName = columnNames[ii]; - if (t.getColumn(columnName) == null) { - System.out.println("WTF, cannot find column " + columnName); - } - } - Sort tSort = new Sort(columnNames); - Table sortedTable = t.select(ExpressionParser.predicate("TRUE"), - tSort); - return sortedTable; - } - - -} Copied: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester/graphcomparison/TableUtil.java (from rev 625, trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester/graphcomparison/GraphUtil.java) =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester/graphcomparison/TableUtil.java (rev 0) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester/graphcomparison/TableUtil.java 2008-03-06 16:46:25 UTC (rev 646) @@ -0,0 +1,56 @@ +package org.cishell.testing.convertertester.core.tester.graphcomparison; + +import java.util.Iterator; + +import prefuse.data.Table; +import prefuse.data.Tuple; +import prefuse.data.expression.parser.ExpressionParser; +import prefuse.data.util.Sort; + +public class TableUtil { + + public static String[] getColumnNames(Table t) { + String[] columnNames = new String[t.getColumnCount()]; + for (int ii = 0; ii < t.getColumnCount(); ii++) { + columnNames[ii] = t.getColumnName(ii); + } + return columnNames; + } + + public static Table copyTable(Table t) { + Table tCopy = new Table(); + tCopy.addColumns(t.getSchema()); + + for (Iterator ii = t.tuples(); ii.hasNext();) { + Tuple tuple = (Tuple) ii.next(); + tCopy.addTuple(tuple); + } + return tCopy; + } + + public static void printTable(Table t) { + Iterator ii = t.tuples(); + while (ii.hasNext()) { + System.out.println((Tuple) ii.next()); + } + } + + public static Table getSorted(Table t) { + return getSortedByColumns(t, getColumnNames(t)); + } + + public static Table getSortedByColumns(Table t, String[] columnNames) { + for (int ii = 0; ii < columnNames.length; ii++) { + String columnName = columnNames[ii]; + if (t.getColumn(columnName) == null) { + System.out.println("WTF, cannot find column " + columnName); + } + } + Sort tSort = new Sort(columnNames); + Table sortedTable = t.select(ExpressionParser.predicate("TRUE"), + tSort); + return sortedTable; + } + + +} Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/graphcomparison/ComplexGraphComparer.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/graphcomparison/ComplexGraphComparer.java 2008-03-05 16:50:27 UTC (rev 645) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/graphcomparison/ComplexGraphComparer.java 2008-03-06 16:46:25 UTC (rev 646) @@ -2,7 +2,7 @@ import java.util.Iterator; -import org.cishell.testing.convertertester.core.tester.graphcomparison.GraphUtil; +import org.cishell.testing.convertertester.core.tester.graphcomparison.TableUtil; import org.cishell.testing.convertertester.core.tester.graphcomparison.RunningLog; import prefuse.data.Table; @@ -31,10 +31,10 @@ return false; } - String[] colNames = GraphUtil.getColumnNames(t1); + String[] colNames = TableUtil.getColumnNames(t1); - boolean result = areEqual(GraphUtil.getSortedByColumns(t1, colNames), - GraphUtil.getSortedByColumns(t2, colNames)); + boolean result = areEqual(TableUtil.getSortedByColumns(t1, colNames), + TableUtil.getSortedByColumns(t2, colNames)); return result; } @@ -155,8 +155,8 @@ t2.getColumnName(ii) + "', while the other does " + "not."); - String[] t1ColNames = GraphUtil.getColumnNames(t1); - String[] t2ColNames = GraphUtil.getColumnNames(t2); + String[] t1ColNames = TableUtil.getColumnNames(t1); + String[] t2ColNames = TableUtil.getColumnNames(t2); log.append("t1 columns: " + format(t1ColNames)); Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/graphcomparison/IdsNotPreservedComparer.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/graphcomparison/IdsNotPreservedComparer.java 2008-03-05 16:50:27 UTC (rev 645) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/graphcomparison/IdsNotPreservedComparer.java 2008-03-06 16:46:25 UTC (rev 646) @@ -6,7 +6,7 @@ import java.util.Set; import org.cishell.testing.convertertester.core.tester.graphcomparison.ComparisonResult; -import org.cishell.testing.convertertester.core.tester.graphcomparison.GraphUtil; +import org.cishell.testing.convertertester.core.tester.graphcomparison.TableUtil; import org.cishell.testing.convertertester.core.tester.graphcomparison.RunningLog; import prefuse.data.Graph; @@ -156,14 +156,14 @@ * @return a stripped copy of the original table */ private Table getStrippedEdgeTable(Table t) { - Table tCopy = GraphUtil.copyTable(t); + Table tCopy = TableUtil.copyTable(t); tCopy.removeColumn(Graph.DEFAULT_SOURCE_KEY); tCopy.removeColumn(Graph.DEFAULT_TARGET_KEY); return tCopy; } private Table getStrippedNodeTable(Graph g) { - Table tCopy = GraphUtil.copyTable(g.getNodeTable()); + Table tCopy = TableUtil.copyTable(g.getNodeTable()); String nodeKeyField = g.getNodeKeyField(); if (nodeKeyField != null) { tCopy.removeColumn(nodeKeyField); Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/graphcomparison/IdsPreservedComparer.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/graphcomparison/IdsPreservedComparer.java 2008-03-05 16:50:27 UTC (rev 645) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/graphcomparison/IdsPreservedComparer.java 2008-03-06 16:46:25 UTC (rev 646) @@ -6,7 +6,7 @@ import java.util.Set; import org.cishell.testing.convertertester.core.tester.graphcomparison.ComparisonResult; -import org.cishell.testing.convertertester.core.tester.graphcomparison.GraphUtil; +import org.cishell.testing.convertertester.core.tester.graphcomparison.TableUtil; import org.cishell.testing.convertertester.core.tester.graphcomparison.RunningLog; import prefuse.data.Graph; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-03-05 16:50:39
|
Revision: 645 http://cishell.svn.sourceforge.net/cishell/?rev=645&view=rev Author: bh2 Date: 2008-03-05 08:50:27 -0800 (Wed, 05 Mar 2008) Log Message: ----------- * added intro section explaining algorithm types * added examples for each algorithm metadata type * added password: metatype extension Modified Paths: -------------- trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex Modified: trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-03-05 15:51:41 UTC (rev 644) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-03-05 16:50:27 UTC (rev 645) @@ -72,24 +72,49 @@ ``org.cishell.my.algorithm.MyAlgorithm''. This metadata element is defined as part of the OSGi Service Platform Core Specification, section 6.1.12.58. -\subsection*{in\_data} -Specifies the type and number of \class{Data} inputs the -algorithm accepts. The string is a comma separated list of data formats. Valid strings -for each data format are: a full Java class if a Java \class{Object} is -expected, a string with the format ``file:\textit{mime/type}'' if a -\class{java.io.File} is expected, or a string with the format -``file-ext:\textit{file-extension}'' if a \class{java.io.File} known only by -extension is expected (only applicable for validator algorithms), see section -\ref{dataSpec}. If no \class{Data} inputs are necessary then the string -``null'' or not specifying the in\_data attribute at all is valid. +\begin{quote} +\begin{description} + \item[Example 1:] service.pid = org.cishell.my.algorithm.MyAlgorithm +\end{description} +\end{quote} -\subsection*{out\_data} -Specifies the type and number of \class{Data} outputs -the algorithm will produce when successfully run. This metadata key has the same string format -as defined in the in\_data specification. If no \class{Data} outputs are -produced then the string ``null'' or not specifying the out\_data attribute at -all is valid. +\subsection*{in\_data} Specifies the type and number of \class{Data} inputs the +algorithm accepts. The string is a comma separated list of data formats. There +are several valid strings for each data format. If a Java \class{Object} is +expected, use the expected full Java class as a string. If a \class{java.io.File} +is expected, use a string with the format ``file:\textit{mime/type}''. If a +\class{java.io.File} known only by file extension is expected (only applicable +for validator algorithms), a string with the format +``file-ext:\textit{file-extension}''. If no \class{Data} inputs are necessary +then the string ``null'' or not specifying the in\_data attribute at all is +valid. See section \ref{dataSpec} for more information on data format formatting. +\begin{quote} +\begin{description} + \item[Example 1:] in\_data = null + \item[Example 2:] in\_data = java.lang.String + \item[Example 3:] in\_data = java.lang.String, file:text/plain, file:text/xml + \item[Example 4:] in\_data = file-ext:xml +\end{description} +\end{quote} + + +\subsection*{out\_data} +Specifies the type and number of \class{Data} outputs the +algorithm will produce when successfully run. This metadata key has the same +string format as defined in the in\_data specification. If no \class{Data} +outputs are produced then the string ``null'' or not specifying the out\_data +attribute at all is valid. + +\begin{quote} +\begin{description} + \item[Example 1:] out\_data = null + \item[Example 2:] out\_data = java.lang.String + \item[Example 3:] out\_data = java.lang.String, file:text/plain, file:text/xml + \item[Example 4:] out\_data = file-ext:csv +\end{description} +\end{quote} + \subsection*{parentage} If this metadata element is used, it defines how the output \class{Data} produced by the algorithm should be arranged. \class{Data} items can be given a parent as @@ -100,13 +125,29 @@ CIShell-conforming application. If parentage is set to something else or is not set at all, then it is up to the algorithm to set up these relationships. -\subsection*{type} +\begin{quote} +\begin{description} + \item[Example 1:] parentage = default +\end{description} +\end{quote} + + +\subsection*{type} Specifies the type of the algorithm. If no type is set, then -it is assumed to be of ``Standard Algorithm'' type. Which metadata keys to use and -their exact meaning varies depending on the type of algorithm. The different +it is assumed to be of ``Standard Algorithm'' type. Which metadata keys to use +and their exact meaning varies depending on the type of algorithm. The different algorithm types and their constraints are defined in section \ref{algConstraints}. +\begin{quote} +\begin{description} + \item[Example 1:] type = converter + \item[Example 2:] type = validator + \item[Example 3:] type = dataset +\end{description} +\end{quote} + + \subsection*{remotable} Specifies if the algorithm can be run remotely. An algorithm can be run remotely if it only uses the services provided by the \class{CIShellContext} @@ -114,14 +155,35 @@ strings are ``true'' or ``false''. If this metadata element is not set, then it is assumed that it cannot be run remotely. +\begin{quote} +\begin{description} + \item[Example 1:] remoteable = true +\end{description} +\end{quote} + + \subsection*{label} Specifies a human-readable short name for the algorithm. What label is acceptable varies depending on the type of the algorithm. +\begin{quote} +\begin{description} + \item[Example 1:] label = Load\ldots +\end{description} +\end{quote} + + \subsection*{description} Provides more details on the workings of the algorithm. What description is acceptable varies depending on the type of the algorithm. +\begin{quote} +\begin{description} + \item[Example 1:] description = Loads selected data into the data manager. +\end{description} +\end{quote} + + \subsection*{menu\_path} Specifies where on the menu an algorithm is to be placed if a menu bar is used. Otherwise, it can act as a primitive hierarchical @@ -129,35 +191,105 @@ each element in the list getting more specific. The last element in the list specifies a group for grouping algorithms in its final menu. Possible groups include: ``additions'' for default placement, ``start'' for being placed at -the start of the menu, or ``end'' for being placed at the end of the menu. Some -examples of valid menu\_path strings include: ``File/additions'', -``Analysis/Undirected Networks/start'', and ``Visualization/Networks/end''. +the start of the menu, or ``end'' for being placed at the end of the menu. +\begin{quote} +\begin{description} + \item[Example 1:] menu\_path = File/additions + \item[Example 2:] menu\_path = Analysis/Undirected Networks/start + \item[Example 3:] menu\_path = Visualization/Networks/end +\end{description} +\end{quote} + + \subsection*{conversion} For converter algorithms, this metadata element specifies if any data is lost in the conversion. Possible values are ``lossy'' and ``lossless''. A description of what type of information is lost should be explained in the description. +\begin{quote} +\begin{description} + \item[Example 1:] conversion = lossy +\end{description} +\end{quote} + + \subsection*{authors} A comma separated list of the authors of the abstract algorithm. +\begin{quote} +\begin{description} + \item[Example 1:] authors = Bruce Herr + \item[Example 2:] authors = Bruce Herr, Weixia Huang, Katy Borner +\end{description} +\end{quote} + + \subsection*{implementers} A comma separated list of the developers who implemented the algorithm in code. +\begin{quote} +\begin{description} + \item[Example 1:] implementers = Bruce Herr + \item[Example 2:] implementers = Bruce Herr, Weixia Huang, Katy Borner +\end{description} +\end{quote} + + \subsection*{integrators} A comma separated list of the developers who integrated the algorithm code as a compliant cishell algorithm. +\begin{quote} +\begin{description} + \item[Example 1:] integrators = Bruce Herr + \item[Example 2:] integrators = Bruce Herr, Weixia Huang, Katy Borner +\end{description} +\end{quote} + + \subsection*{documentation\_url} A URL to relevant documentation for the algorithm. +\begin{quote} +\begin{description} + \item[Example 1:] documentation\_url = http://cishell.org/dev/ +\end{description} +\end{quote} + + \subsection*{reference} A formal reference to a paper explaining the abstract algorithm. +\begin{quote} +\begin{description} + \item[Example 1:] reference = Herr, Bruce W., Huang, Weixia, Penumarthy, + Shashikant, Börner, Katy. (2007) Designing Highly Flexible and Usable + Cyberinfrastructures for Convergence. In William S. Bainbridge and Mihail C. + Roco (Eds.) Progress in Convergence – Technologies for Human Wellbeing. + Annals of the New York Academy of Sciences, Boston, MA, volume 1093, pp. 161-179. +\end{description} +\end{quote} + + \subsection*{reference\_url} A URL to a paper explaining the abstract algorithm. +\begin{quote} +\begin{description} + \item[Example 1:] reference\_url = http://cishell.org/papers/06-cishell.pdf +\end{description} +\end{quote} + + \subsection*{written\_in} A comma separated list of the programming languages used to implement and integrate the algorithm code. + +\begin{quote} +\begin{description} + \item[Example 1:] written\_in = Java + \item[Example 2:] written\_in = Java, C++ +\end{description} +\end{quote} Modified: trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-03-05 15:51:41 UTC (rev 644) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-03-05 16:50:27 UTC (rev 645) @@ -5,8 +5,13 @@ \label{algConstraints} \subsection{Introduction} -CIShell algorithms are a generic concept which have many uses. \comments{flesh -out\ldots} +CIShell algorithms are a generic concept which have many uses. In the CIShell +Platform, they are used in 4 contexts: as general data-centric algorithms to be +used by an end-user (Standard Algorithms), as data converters (Converter +Algorithms), as data validators (Validator Algorithms), and as providers of data +(Dataset Algorithms). In order to better separate these uses, a lightweight type +system has been introduced. The only way to tell the difference between them is +by the constraints defined for each algorithm type. \subsection{Base Algorithm Constraints} Modified: trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex 2008-03-05 15:51:41 UTC (rev 644) +++ trunk/core/org.cishell.docs/src/specification/tex/guidefinition.tex 2008-03-05 16:50:27 UTC (rev 645) @@ -26,11 +26,24 @@ \subsection{MetaTypeProvider Extensions} -Some minor extensions to \class{MetaTypeProvider} were made to support some -use cases. The \class{MetaTypeProvider} supports several primitive types such as -strings, integers, booleans, etc, but several useful types are missing. Two -such types are files and directories. To get a file or a directory as input, -create an \class{AttributeDefinition} with string as its type and with ``file:`` -or ``directory:`` (respectively) as its default value. When the algorithm is -run it will receive a \class{String} which is the absolute path to a file or -directory. +Some minor extensions to \class{MetaTypeProvider} were made to support some use +cases. The \class{MetaTypeProvider} supports several primitive types such as +strings, integers, booleans, etc, but several useful types are missing. To +support more types, an \class{AttributeDefinition} (AD) of type ``string'' has +its default value set to a certain string so that the UI builder recognizes this +and selects an appropriate widget. When the algorithm receives the user entered +parameters, the associated value will be of type \class{java.lang.String}, but +should contain the correct value as defined below. + +\subsubsection*{file:} +An AD with type ``string'' and default value ``file:'' will receive a string +pointing to the absolute path to the file selected by the end-user. + +\subsubsection*{directory:} +An AD with type ``string'' and default value ``directory:'' will receive a string +pointing to the absolute path to the directory selected by the end-user. + +\subsubsection*{password:} +An AD with type ``string'' and default value ``password:'' will receive a string +corresponding to the entered password. + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-03-05 15:51:44
|
Revision: 644 http://cishell.svn.sourceforge.net/cishell/?rev=644&view=rev Author: mwlinnem Date: 2008-03-05 07:51:41 -0800 (Wed, 05 Mar 2008) Log Message: ----------- Small refactoring. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java Modified: trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2008-03-05 15:34:19 UTC (rev 643) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2008-03-05 15:51:41 UTC (rev 644) @@ -13,7 +13,6 @@ * ***************************************************************************/ package org.cishell.reference.gui.datamanager; -import java.io.IOException; import java.util.Dictionary; import java.util.HashMap; import java.util.HashSet; @@ -217,38 +216,26 @@ viewer.getControl().setFocus(); } - public void dataAdded(final Data data, String label) { - // get the data from the model needed to setup the DataModelGUIItem - Dictionary modelDictionary = data.getMetaData(); - - Data parent = (Data) modelDictionary.get(DataProperty.PARENT); - DataGUIItem parentItem; - if (parent == null) { - // if it has no parent, it is a child of the root - parentItem = rootItem; - } else { - // otherwise find the associated DataModelGUIItem for the parent - parentItem = (DataGUIItem) dataToDataGUIItemMap.get(parent); - - //The parent may not be in the GUI. If its not, then use root item - if (parentItem == null) { - parentItem = rootItem; - } - } - - // create the new DataModelGUIItem - final DataGUIItem item = new DataGUIItem(data, parentItem, + public void dataAdded(final Data newData, String label) { + + //get the new data's parent GUI Item (either root or another data item) + DataGUIItem parentItem = getParent(newData); + + // wrap the new data in a DataGUIItem + final DataGUIItem newItem = new DataGUIItem(newData, parentItem, this.brandPluginID); + // notify the parent DataModelGUIItem of its new child - parentItem.addChild(item); + parentItem.addChild(newItem); + // keep a reference to the new model in the model->TreeItem mapping so // that // it can be used in the future if it has a child - dataToDataGUIItemMap.put(data, item); + dataToDataGUIItemMap.put(newData, newItem); // update the ModelManager with the new selection final Set selection = new HashSet(); - selection.add(data); + selection.add(newData); guiRun(new Runnable() { public void run() { @@ -257,15 +244,36 @@ viewer.refresh(); // context menu may need to have options enabled/disabled // based on the new selection - updateContextMenu(data); + updateContextMenu(newData); // update the global selection - viewer.expandToLevel(item, 0); + viewer.expandToLevel(newItem, 0); manager.setSelectedData((Data[]) selection.toArray(new Data[0])); } } }); } + private DataGUIItem getParent(Data data) { + Dictionary modelDictionary = data.getMetaData(); + + Data parent = (Data) modelDictionary.get(DataProperty.PARENT); + DataGUIItem parentItem; + if (parent == null) { + // if it has no parent, it is a child of the root + parentItem = rootItem; + } else { + // otherwise find the associated DataModelGUIItem for the parent + parentItem = (DataGUIItem) dataToDataGUIItemMap.get(parent); + + //The parent may not be in the GUI. If its not, then use root item + if (parentItem == null) { + parentItem = rootItem; + } + } + + return parentItem; + } + private void guiRun(Runnable run) { if (Thread.currentThread() == Display.getDefault().getThread()) { run.run(); @@ -454,7 +462,6 @@ model.getMetaData().put(DataProperty.LABEL, newLabel); viewer.refresh(); newEditor.dispose(); - updatingTreeItem = false; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-03-05 15:34:30
|
Revision: 643 http://cishell.svn.sourceforge.net/cishell/?rev=643&view=rev Author: mwlinnem Date: 2008-03-05 07:34:19 -0800 (Wed, 05 Mar 2008) Log Message: ----------- Various changed I don't recall. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.algorithm/src/org/cishell/testing/convertertester/algorithm/ConverterTesterAlgorithm.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConvResultMaker.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/DefaultTestRunner.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/AllConvsReportGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/ConvertedDataSubGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/FilePassSubGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/reports/FilePassReport.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/FilePassResult.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/filepass/FilePassFailure.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/filepass/FilePassSuccess.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/util/FormatUtil.java Modified: trunk/testing/org.cishell.testing.convertertester.algorithm/src/org/cishell/testing/convertertester/algorithm/ConverterTesterAlgorithm.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.algorithm/src/org/cishell/testing/convertertester/algorithm/ConverterTesterAlgorithm.java 2008-03-04 23:53:10 UTC (rev 642) +++ trunk/testing/org.cishell.testing.convertertester.algorithm/src/org/cishell/testing/convertertester/algorithm/ConverterTesterAlgorithm.java 2008-03-05 15:34:19 UTC (rev 643) @@ -1,6 +1,7 @@ package org.cishell.testing.convertertester.algorithm; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.Dictionary; @@ -295,15 +296,8 @@ Data fpData = createReportData(fpFile, fp.getName(), testReportData); addReturn(fpData); - ConvertedDataReport[] cdrs = fp.getConvertedDataReports(); - if (cdrs != null) { - for (int mm = 0; mm < cdrs.length; mm++) { - File cdrFile = cdrs[mm].getReport(); - Data cdrData = createReportData(cdrFile, cdrs[mm].getName(), fpData); - addReturn(cdrData); + addAllConvertedDataReports(fp, fpData); } - } - } FilePassReport[] fFilePassReports = tr.getFailedFilePassReports(); @@ -313,18 +307,44 @@ Data fpData = createReportData(fpFile, fp.getName(), testReportData); addReturn(fpData); - ConvertedDataReport[] cdrs = fp.getConvertedDataReports(); - if (cdrs != null) { - for (int mm = 0; mm < cdrs.length; mm++) { - File cdrFile = cdrs[mm].getReport(); - Data cdrData = createReportData(cdrFile, cdrs[mm].getName(), fpData); - addReturn(cdrData); + addAllConvertedDataReports(fp, fpData); } - } - } } } + private void addConvertedDataReports(ConvertedDataReport[] cdrs, Data fpData) { + if (cdrs != null) { + for (int mm = 0; mm < cdrs.length; mm++) { + File cdrFile = cdrs[mm].getReport(); + Data cdrData = createReportData(cdrFile, cdrs[mm].getName(), fpData); + addReturn(cdrData); + } + } + } + + private void addAllConvertedDataReports(FilePassReport fp, Data fpData) { + try { + ConvertedDataReport[] testCDRs = fp.getTestConvertedDataReports(); + File testDummyParentFile = File.createTempFile("testdummyfile", ""); + Data testDummyParentData = createReportData(testDummyParentFile, "test phase", fpData); + addReturn(testDummyParentData); + addConvertedDataReports(testCDRs, testDummyParentData); + ConvertedDataReport[] origCompareCDRs = fp.getOrigCompareConvertedDataReports(); + File origCompareDummyParentFile = File.createTempFile("origcomparedummyfile", ""); + Data origCompareDummyParentData = createReportData(origCompareDummyParentFile, "compare phase for original file", fpData); + addReturn(origCompareDummyParentData); + addConvertedDataReports(origCompareCDRs, origCompareDummyParentData); + ConvertedDataReport[] resultCompareCDRs = fp.getResultCompareConvertedDataReports(); + File resultCompareDummyParentFile = File.createTempFile("origresultdummyfile", ""); + Data resultCompareDummyParentData = createReportData(resultCompareDummyParentFile, "compare phase for resulting file", fpData); + addReturn(resultCompareDummyParentData); + addConvertedDataReports(resultCompareCDRs, resultCompareDummyParentData); + } catch (IOException e) { + this.log.log(LogService.LOG_WARNING, "Unable to write converted data reports due to IO Error"); + } + + } + /** * Wraps the report with metadata in a form that is ready to be * returned from the algorithm. @@ -372,6 +392,8 @@ return createReportData(report, label, parent, "file:text/plain", DataProperty.TEXT_TYPE); } + + } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConvResultMaker.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConvResultMaker.java 2008-03-04 23:53:10 UTC (rev 642) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConvResultMaker.java 2008-03-05 15:34:19 UTC (rev 643) @@ -20,9 +20,9 @@ public class ConvResultMaker { - //must succeed at least 3 times in the file pass + //must succeed at least x times in the file pass private static int MINIMUM_SUCCESSES_TO_BE_TRUSTED = 3; - //must be tested by at least 2/3rds of file passes in test + //must be tested by at least x% of file passes in test private static float MINIMUM_PERCENT_FILE_PASSES_REACHED_TO_BE_TRUSTED = .8f; public static AllConvsResult generate(AllTestsResult atr, @@ -65,7 +65,7 @@ //determine which converters always succeeded. int FAILED = -1; - int NEVER_TESTED = 0; + int NEVER_TESTED = 0; // array entries are 0 by default int[] trusted = new int[tr.getAllConverters().length]; for (int jj = 0; jj < fprs.length; jj++) { @@ -94,8 +94,7 @@ ConverterPath testConvs = tr.getTestConverters(); if (fprs.length > 0) { //mark trusted converters. - - + for (int kk = 0; kk < testConvs.size(); kk++) { Converter c = testConvs.get(kk); float percentFilePassesThisConvParticipatedIn = @@ -106,22 +105,6 @@ trustedConverters.add(c); } } -// ConverterPath testConvs = tr.getAllConverters(); -// for (int kk = 0; kk < testConvs.length; kk++) { -// Converter conv = testConvs[kk]; -// if (trusted[kk] == ALWAYS_SUCCEEDED) { -// trustedConverters.add(conv); -// } -// } - -// //technically I wouldn't trust the comparison -// //converters here, but I'm adding this because -// //it makes the results easier to understand. -// ConverterPath compareConvs = tr.getComparisonConverters(); -// for (int kk = 0; kk < compareConvs.size(); kk++) { -// Converter conv = compareConvs.get(kk); -// trustedConverters.add(conv); -// } } } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/DefaultTestRunner.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/DefaultTestRunner.java 2008-03-04 23:53:10 UTC (rev 642) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/DefaultTestRunner.java 2008-03-05 15:34:19 UTC (rev 643) @@ -6,7 +6,6 @@ import java.io.StringWriter; import java.io.Writer; import java.util.ArrayList; -import java.util.Arrays; import java.util.Dictionary; import java.util.Hashtable; import java.util.List; @@ -52,49 +51,62 @@ // test conversion phase ConvertResult testPhaseResult = convert(originalFileData, - testConverters, testData, null); + testConverters, testData); + Data[][] allDataFromTestPhase = testPhaseResult.getAllData(); + if (!testPhaseResult.succeeded()) { FilePassFailure failure = createFailResult(originalFileData, PassPhase.TEST_CONV_PHASE, testPhaseResult.getFailInfo(), - testPhaseResult.getAllData()); + allDataFromTestPhase, + null, + null); testResults.add(failure); continue; } Data[] resultFileData = testPhaseResult.getResult(); - Data[][] allDataFromTestPhase = testPhaseResult.getAllData(); + // comparison conversion (for original file) phase ConvertResult comparePhaseOrigResult = convert(originalFileData, - comparisonConverters, testData, allDataFromTestPhase); + comparisonConverters, testData); + Data[][] allDataFromOrigComparePhase = comparePhaseOrigResult.getAllData(); + if (!comparePhaseOrigResult.succeeded()) { FilePassFailure failure = createFailResult(originalFileData, PassPhase.COMPARE_CONV_ORIG_PHASE, comparePhaseOrigResult.getFailInfo(), - comparePhaseOrigResult.getAllData()); + allDataFromTestPhase, + allDataFromOrigComparePhase, + null); testResults.add(failure); continue; } Data[] originalInMemory = comparePhaseOrigResult.getResult(); - Data[][] allDataFromTestAndComparisonPhases = comparePhaseOrigResult.getAllData(); + //comparison conversion (for result file) phase ConvertResult comparePhaseResultResult = convert(resultFileData, - comparisonConverters, testData, allDataFromTestAndComparisonPhases); + comparisonConverters, testData); + Data[][] allDataFromResultComparePhase = comparePhaseResultResult.getAllData(); + if (!comparePhaseResultResult.succeeded()) { FilePassFailure failure = createFailResult(originalFileData, PassPhase.COMPARE_CONV_RESULT_PHASE, comparePhaseResultResult.getFailInfo(), - comparePhaseResultResult.getAllData()); + allDataFromTestPhase, + allDataFromOrigComparePhase, + allDataFromResultComparePhase); testResults.add(failure); continue; } Data[] resultInMemory = comparePhaseResultResult.getResult(); + // graph comparison phase @@ -111,13 +123,15 @@ FilePassFailure failure = createFailResult(originalFileData, explanation, PassPhase.GRAPH_COMPARE_PHASE, null, - comparePhaseResultResult.getAllData()); + allDataFromTestPhase, + allDataFromOrigComparePhase, + allDataFromResultComparePhase); testResults.add(failure); continue; } FilePassSuccess success = new FilePassSuccess(originalFileData, - "", comparePhaseResultResult.getAllData()); + "", allDataFromTestPhase, allDataFromOrigComparePhase, allDataFromResultComparePhase); testResults.add(success); } @@ -127,20 +141,19 @@ } private ConvertResult convert(Data[] startData, - ConverterPath converters, TestConfigData testData, Data[][] previousData) { + ConverterPath converters, TestConfigData testData) { Data[] currentData = getFilePathData(startData); List dataSoFar = new ArrayList(); - if (previousData != null) { - dataSoFar.addAll(Arrays.asList(previousData)); - } - if (startData != null) { - dataSoFar.add(startData); - } +// if (startData != null) { +// alterMetaData(startData); +// dataSoFar.add(startData); +// } + /* - * rig up fake CISHellContext so we can get ahold of + * rig up fake CIShellContext so we can get ahold of * errors sent to logger. */ FakeLogCIShellContext fakeCContext = @@ -148,14 +161,14 @@ - dataSoFar.add(currentData); + //dataSoFar.add(currentData); Converter currentConverter = null; try { for (int ii = 0; ii < converters.size(); ii++) { currentConverter = converters.get(ii); - //no parameters used - Hashtable parameters = new Hashtable(); + + Hashtable parameters = new Hashtable(); //no parameters used currentData = currentConverter.execute(currentData, parameters, fakeCContext); @@ -207,16 +220,16 @@ private FilePassFailure createFailResult(Data[] origData, String explanation, PassPhase lastReachedPhase, - Converter failedConverter, Data[][] allData) { + Converter failedConverter, Data[][] testData, Data[][] origCompareData, Data[][] resultCompareData) { FilePassFailure failure = new FilePassFailure(origData, explanation, - lastReachedPhase, failedConverter, allData); + lastReachedPhase, failedConverter, testData, origCompareData, resultCompareData); return failure; } private FilePassFailure createFailResult(Data[] origData, - PassPhase lastReachedPhase, ConvFailureInfo failInfo, Data[][] allData) { + PassPhase lastReachedPhase, ConvFailureInfo failInfo, Data[][] testData, Data[][] origCompareData, Data[][] resultCompareData) { return createFailResult(origData, failInfo.getExplanation(), - lastReachedPhase, failInfo.getFailedConverter(), allData); + lastReachedPhase, failInfo.getFailedConverter(), testData, origCompareData, resultCompareData); } private class ConvertResult { @@ -312,6 +325,44 @@ Dictionary md = datum.getMetaData(); if (md.get(DataProperty.LABEL) == null) { md.put(DataProperty.LABEL, "result of " + converter.getShortName()); + } else { + alterMetaData(data); + md.put(DataProperty.LABEL, md.get(DataProperty.LABEL) + ": result of " + converter.getShortName()); } } + + private String getFileName(String fileLabel) { + + //index variables will be -1 if index is not found. + int descriptionEndIndex = fileLabel.lastIndexOf(":"); + int filePathEndIndex = fileLabel.lastIndexOf(File.separator); + + //doesn't matter if either variable is -1, since startIndex will be + //zero and none of the string will be cut off the front. + int startIndex = Math.max(descriptionEndIndex, filePathEndIndex) + 1; + + String fileNameWithExtension = fileLabel.substring(startIndex); + + + + int endIndex = fileNameWithExtension.length(); // don't cut any off the end. + + + String fileNameWithoutExtension = fileNameWithExtension.substring(0, endIndex); + + String fileName = fileNameWithoutExtension; + return fileName; + } + + + private void alterMetaData(Data[] origFileData) { + Data data = origFileData[0]; + Dictionary metadata = data.getMetaData(); + String label = (String) metadata.get(DataProperty.LABEL); + if (label != null) { + metadata.put(DataProperty.LABEL, getFileName(label)); + } else { + metadata.put(DataProperty.LABEL, "null"); + } + } } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/AllConvsReportGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/AllConvsReportGenerator.java 2008-03-04 23:53:10 UTC (rev 642) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/allconvs/AllConvsReportGenerator.java 2008-03-05 15:34:19 UTC (rev 643) @@ -50,38 +50,50 @@ report.println("---------------------------------------------"); report.println("" ); + int numTested = 0; + float passedPercentTotal = 0; for (int ii = 0; ii < convResults.length; ii++) { if (convResults[ii].wasTested()) { + if (convResults[ii].wasTested()) { + numTested++; passedPercentTotal += convResults[ii].getPercentPassed(); + } } } - float avgPercentPassed = - passedPercentTotal / convResults.length; + float avgPercentPassed = 0; + if (numTested != 0) { + avgPercentPassed = + passedPercentTotal / (float) numTested; + } float chanceCorrectTotal = 0.0f; for (int ii = 0; ii < convResults.length; ii++) { - if (convResults[ii].wasTested()) { + if (convResults[ii].wasTested()) { chanceCorrectTotal += convResults[ii].getChanceCorrect(); } } + float avgChanceCorrect = 0; + if (numTested != 0) { + avgChanceCorrect = chanceCorrectTotal / ((float) numTested); + } - float avgChanceCorrect = - chanceCorrectTotal / ((float) convResults.length); - List convReportsList = new ArrayList(); List trustedConvs = new ArrayList(); List nonTrustedConvs = new ArrayList(); + List nonTestedConvs = new ArrayList(); for (int ii = 0; ii < convResults.length; ii++) { ConvResult cr = convResults[ii]; if (cr.isTrusted()) { trustedConvs.add(cr); + } else if (cr.wasTested()) { + nonTrustedConvs.add(cr); } else { - nonTrustedConvs.add(cr); + nonTestedConvs.add(cr); } } @@ -90,6 +102,8 @@ trustedConvs.size()); report.println(" # of Non-Trusted Converters : " + nonTrustedConvs.size()); + report.println(" # of Untested Converters :" + + nonTestedConvs.size()); report.println(" Total # of Converters : " + convResults.length); @@ -114,7 +128,7 @@ } report.println(""); - report.println("Non-Trusted Converters..."); + report.println("Non-Trusted Tested Converters..."); for (int ii = 0; ii < nonTrustedConvs.size(); ii++) { ConvResult cr = (ConvResult) nonTrustedConvs.get(ii); Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/ConvertedDataSubGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/ConvertedDataSubGenerator.java 2008-03-04 23:53:10 UTC (rev 642) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/ConvertedDataSubGenerator.java 2008-03-05 15:34:19 UTC (rev 643) @@ -27,9 +27,13 @@ Data firstData = convertedData[0]; Object fileData = firstData.getData(); if (fileData != null && fileData instanceof File) { - this.convertedDataReport = new ConvertedDataReport((File) fileData,(String) firstData.getMetaData().get(DataProperty.LABEL) + "for " + fpr.getName()); + this.convertedDataReport = + new ConvertedDataReport((File) fileData,(String) firstData.getMetaData().get(DataProperty.LABEL) + + " for " + fpr.getName() + " of " + tr.getName()); } else { - this.convertedDataReport = new ConvertedDataReport((String) firstData.getMetaData().get(DataProperty.LABEL) + " for " + fpr.getName() + " of " + tr.getName()); + this.convertedDataReport = + new ConvertedDataReport((String) firstData.getMetaData().get(DataProperty.LABEL) + + " for " + fpr.getName() + " of " + tr.getName()); } } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/FilePassSubGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/FilePassSubGenerator.java 2008-03-04 23:53:10 UTC (rev 642) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/FilePassSubGenerator.java 2008-03-05 15:34:19 UTC (rev 643) @@ -47,20 +47,20 @@ writeReport(report, fpr); - Data[][] allData = fpr.getAllData(); + Data[][] testData = fpr.getTestData(); + Data[][] origCompareData = fpr.getOrigCompareData(); + Data[][] resultCompareData = fpr.getResultCompareData(); - ConvertedDataReport[] convDataReports = null; - if (allData != null) { - convDataReports = new ConvertedDataReport[allData.length]; - - for (int ii = 0; ii < allData.length; ii++) { - Data[] data = allData[ii]; - convDataSubGenerator.generateSubreport(tr, fpr, data); - convDataReports[ii] =convDataSubGenerator.getReport(); - } - } - this.filePassReport = new FilePassReport(reportFile, fpr.getName() + " for " + tr.getName(), convDataReports); + ConvertedDataReport[] testConvDataReports = genConvDataReports(tr, fpr, testData); + ConvertedDataReport[] origCompareConvDataReports = genConvDataReports(tr, fpr,origCompareData); + ConvertedDataReport[] resultCompareConvDataReports = genConvDataReports(tr, fpr,resultCompareData); + + this.filePassReport = new FilePassReport(reportFile, fpr.getName() + " for " + tr.getName(), + testConvDataReports, + origCompareConvDataReports, + resultCompareConvDataReports); + } catch (IOException e) { this.log.log(LogService.LOG_ERROR, "Unable to generate file pass report.", e); @@ -68,10 +68,22 @@ } finally { closeStream(reportOutStream); } - + } + + private ConvertedDataReport[] genConvDataReports(TestResult tr, FilePassResult fpr, Data[][] data) { + if (data != null) { + ConvertedDataReport[] testConvDataReports = new ConvertedDataReport[data.length]; - - + for (int ii = 0; ii < data.length; ii++) { + Data[] datum = data[ii]; + convDataSubGenerator.generateSubreport(tr, fpr, datum); + testConvDataReports[ii] =convDataSubGenerator.getReport(); + } + + return testConvDataReports; + } else { + return new ConvertedDataReport[0]; + } } public FilePassReport getFilePassReport() { Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/reports/FilePassReport.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/reports/FilePassReport.java 2008-03-04 23:53:10 UTC (rev 642) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/reports/FilePassReport.java 2008-03-05 15:34:19 UTC (rev 643) @@ -8,12 +8,20 @@ private String name; - private ConvertedDataReport[] convertedDataReports; + private ConvertedDataReport[] testConvertedDataReports; + private ConvertedDataReport[] origCompareConvertedDataReports; + private ConvertedDataReport[] resultCompareConvertedDataReports; - public FilePassReport (File filePassReport, String name, ConvertedDataReport[] convertedDataReports) { + public FilePassReport (File filePassReport, + String name, + ConvertedDataReport[] testConvertedDataReports, + ConvertedDataReport[] origCompareConvertedDataReports, + ConvertedDataReport[] resultCompareConvertedDataReports) { this.filePassReport = filePassReport; this.name = name; - this.convertedDataReports = convertedDataReports; + this.testConvertedDataReports = testConvertedDataReports; + this.origCompareConvertedDataReports = origCompareConvertedDataReports; + this.resultCompareConvertedDataReports = resultCompareConvertedDataReports; } public File getFilePassReport() { @@ -24,7 +32,16 @@ return this.name; } - public ConvertedDataReport[] getConvertedDataReports() { - return this.convertedDataReports; + public ConvertedDataReport[] getTestConvertedDataReports() { + return this.testConvertedDataReports; } + + public ConvertedDataReport[] getOrigCompareConvertedDataReports() { + return this.origCompareConvertedDataReports; + } + + public ConvertedDataReport[] getResultCompareConvertedDataReports() { + return this.resultCompareConvertedDataReports; + } + } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/FilePassResult.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/FilePassResult.java 2008-03-04 23:53:10 UTC (rev 642) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/FilePassResult.java 2008-03-05 15:34:19 UTC (rev 643) @@ -23,7 +23,10 @@ private String explanation; private PassPhase lastReachedPhase; private Converter failedConverter; - private Data[][] allData; + + private Data[][] testData; + private Data[][] origCompareData; + private Data[][] resultCompareData; //variables not set by constructor @@ -42,13 +45,16 @@ private List chanceAtFaults; public FilePassResult(Data[] originalData, String explanation, - PassPhase lastReachedPhase, Converter failedConverter, Data[][] allData) { + PassPhase lastReachedPhase, Converter failedConverter, Data[][] testData, Data[][] origCompareData, Data[][] resultCompareData) { this.originalData = originalData; this.explanation = explanation; this.lastReachedPhase = lastReachedPhase; this.failedConverter = failedConverter; - this.allData = allData; + this.testData = testData; + this.origCompareData = origCompareData; + this.resultCompareData = resultCompareData; + chanceAtFaults = new ArrayList(); } @@ -97,10 +103,18 @@ return this.originalData; } - public Data[][] getAllData() { - return this.allData; + public Data[][] getTestData() { + return this.testData; } + public Data[][] getOrigCompareData() { + return this.origCompareData; + } + + public Data[][] getResultCompareData() { + return this.resultCompareData; + } + public String getOriginalFileLabel() { return (String) getOriginalData()[0].getMetaData().get(DataProperty.LABEL); } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/filepass/FilePassFailure.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/filepass/FilePassFailure.java 2008-03-04 23:53:10 UTC (rev 642) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/filepass/FilePassFailure.java 2008-03-05 15:34:19 UTC (rev 643) @@ -7,8 +7,8 @@ public class FilePassFailure extends FilePassResult { public FilePassFailure(Data[] originalData, String explanation, - PassPhase phaseReached, Converter failedConverter, Data[][] allData) { + PassPhase phaseReached, Converter failedConverter, Data[][] testData, Data[][] origCompareData, Data[][] resultCompareData) { super(originalData, explanation, phaseReached, - failedConverter, allData); + failedConverter, testData, origCompareData, resultCompareData); } } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/filepass/FilePassSuccess.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/filepass/FilePassSuccess.java 2008-03-04 23:53:10 UTC (rev 642) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/filepass/FilePassSuccess.java 2008-03-05 15:34:19 UTC (rev 643) @@ -5,7 +5,7 @@ public class FilePassSuccess extends FilePassResult { - public FilePassSuccess(Data[] originalData, String explanation, Data[][] allData) { - super(originalData, explanation, PassPhase.SUCCEEDED_PHASE, null, allData); + public FilePassSuccess(Data[] originalData, String explanation, Data[][] testData, Data[][] origCompareData, Data[][] resultCompareData) { + super(originalData, explanation, PassPhase.SUCCEEDED_PHASE, null, testData, origCompareData, resultCompareData); } } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/util/FormatUtil.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/util/FormatUtil.java 2008-03-04 23:53:10 UTC (rev 642) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/util/FormatUtil.java 2008-03-05 15:34:19 UTC (rev 643) @@ -10,11 +10,11 @@ * @return */ public static float formatToPercent(float decimal) { - float temp = decimal; temp *= 100f; temp *= Math.pow(10.0, NUM_DECIMALS); - temp = Math.round(temp) / (float) (Math.pow(10.0, NUM_DECIMALS)); + temp = Math.round(temp); + temp = temp / (float) (Math.pow(10.0, NUM_DECIMALS)); float percent = temp; return percent; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-03-04 23:54:20
|
Revision: 642 http://cishell.svn.sourceforge.net/cishell/?rev=642&view=rev Author: bh2 Date: 2008-03-04 15:53:10 -0800 (Tue, 04 Mar 2008) Log Message: ----------- * fixed doclet to fix some latex output bugs * incorporating lots of various suggestions from team members * fought an epic battle with latex/javadoc to make it line break in a sane manner * added exceptions to algorithm and converter * made periods in javadocs consistent: Javadocs with only one 'sentence' do not get a period. Those with more than one 'sentence' do. * added a section on 'dataset algorithms' * added DataProperty.SHORT_LABEL Modified Paths: -------------- branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/DataManagerListener.java branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/DataManagerService.java branches/spec_update/org.cishell.framework/src/org/cishell/app/service/scheduler/SchedulerListener.java branches/spec_update/org.cishell.framework/src/org/cishell/app/service/scheduler/SchedulerService.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/CIShellContext.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/LocalCIShellContext.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/Algorithm.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmFactory.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/DataValidator.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ProgressMonitor.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ProgressTrackable.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/BasicData.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/Data.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/DataProperty.java branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/Converter.java branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/DataConversionService.java branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUI.java branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUIBuilderService.java branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/SelectionListener.java trunk/core/org.cishell.docs/src/specification/main.tex trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex trunk/core/org.cishell.docs/src/specification/tex/data.tex trunk/core/org.cishell.docs/src/specification/tex/dataconversionservice.tex trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex trunk/core/org.cishell.docs/src/specification/tex/framework.tex trunk/core/org.cishell.docs/src/specification/tex/introduction.tex trunk/core/org.cishell.docs/src/specification/tex/logservice.tex trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex trunk/core/org.cishell.docs/src/specification/tex/preferencesservice.tex trunk/core/org.cishell.docs/src/specification/tex/schedulerservice.tex trunk/core/org.cishell.docs/src/texdoclet/src/org/wonderly/doclets/TexDoclet.java Added Paths: ----------- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmExecutionException.java branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/ConversionException.java Modified: branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/DataManagerListener.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/DataManagerListener.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/DataManagerListener.java 2008-03-04 23:53:10 UTC (rev 642) @@ -17,7 +17,7 @@ /** - * A listener that is notified of changes in the {@link DataManagerService}. + * A listener that is notified of changes in the {@link DataManagerService} * * @author Bruce Herr (bh...@bh...) */ Modified: branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/DataManagerService.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/DataManagerService.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/DataManagerService.java 2008-03-04 23:53:10 UTC (rev 642) @@ -94,7 +94,7 @@ * to change the label so that it is unique. * * @param data The Data - * @param label The new label for the data model. + * @param label The new label for the data model */ public void setLabel(Data data, String label); } Modified: branches/spec_update/org.cishell.framework/src/org/cishell/app/service/scheduler/SchedulerListener.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/app/service/scheduler/SchedulerListener.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/app/service/scheduler/SchedulerListener.java 2008-03-04 23:53:10 UTC (rev 642) @@ -45,7 +45,7 @@ /** * Notification that an already scheduled Algorithm has been unscheduled - * and will therefore not be run. + * and will therefore not be run * * @param algorithm The scheduled Algorithm that was unscheduled */ @@ -62,8 +62,8 @@ * Notification that an Algorithm has finished executing * * @param algorithm The scheduled Algorithm - * @param createdData The Data(s) it returned, or <code>null</code> if - * it returned <code>null</code> + * @param createdData The {@link Data} array it returned, or + * <code>null</code> if it returned <code>null</code> */ public void algorithmFinished(Algorithm algorithm, Data[] createdData); @@ -86,7 +86,7 @@ /** * Notification that the scheduler's schedule of Algorithms to be run has - * been cleared. + * been cleared */ public void schedulerCleared(); } Modified: branches/spec_update/org.cishell.framework/src/org/cishell/app/service/scheduler/SchedulerService.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/app/service/scheduler/SchedulerService.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/app/service/scheduler/SchedulerService.java 2008-03-04 23:53:10 UTC (rev 642) @@ -89,7 +89,7 @@ public boolean unschedule(Algorithm algorithm); /** - * Adds a listener to be notified of events happening in the scheduler. + * Adds a listener to be notified of events happening in the scheduler * * @param listener The listener to be added */ @@ -138,7 +138,7 @@ * * @param algorithm The Algorithm * @return The scheduled time for the Algorithm to run or <code>null</code> - * if the Algorithm is not scheduled or has completed execution. + * if the Algorithm is not scheduled or has completed execution */ public Calendar getScheduledTime(Algorithm algorithm); Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/CIShellContext.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/CIShellContext.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/CIShellContext.java 2008-03-04 23:53:10 UTC (rev 642) @@ -44,10 +44,10 @@ * Locates and returns a standard service given the service name. The * service name is generally the full class name of the service interface. * For example, <code>LogService</code>'s string is - * <code>org.osgi.service.log.LogService</code> + * <code>org.osgi.service.log.LogService</code>. * * @param service A string (usually the associated interface's full - * class name) that specifies the service to retrieve. + * class name) that specifies the service to retrieve * @return An instantiated version of the service requested */ public Object getService(String service); Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/LocalCIShellContext.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/LocalCIShellContext.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/LocalCIShellContext.java 2008-03-04 23:53:10 UTC (rev 642) @@ -36,7 +36,7 @@ * <code>BundleContext</code> * * @param bContext The <code>BundleContext</code> to use to find - * the registered standard services. + * the registered standard services */ public LocalCIShellContext(BundleContext bContext) { this(bContext, DEFAULT_SERVICES); @@ -48,9 +48,9 @@ * this <code>CIShellContext</code>. * * @param bContext The <code>BundleContext</code> to use to find - * registered standard services. + * registered standard services * @param standardServices An array of strings specifying the services that - * are allowed to be retrieved from this class. + * are allowed to be retrieved from this class */ public LocalCIShellContext(BundleContext bContext, String[] standardServices) { this.bContext = bContext; Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/Algorithm.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/Algorithm.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/Algorithm.java 2008-03-04 23:53:10 UTC (rev 642) @@ -28,9 +28,13 @@ public interface Algorithm { /** - * Executes and optionally returns a Data array. + * Executes and optionally returns a Data array * - * @return A Data array that was created or <code>null</code> + * @return A Data array that was created. <code>null</code> is ONLY acceptable + * when the algorithms out_data is null. + * @throws AlgorithmExecutionException An exception has occured while executing + * the algorithm. This exception should have a user-comprehendable message if + * at all possible. */ - public Data[] execute(); + public Data[] execute() throws AlgorithmExecutionException; } Added: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmExecutionException.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmExecutionException.java (rev 0) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmExecutionException.java 2008-03-04 23:53:10 UTC (rev 642) @@ -0,0 +1,32 @@ +/* **************************************************************************** + * CIShell: Cyberinfrastructure Shell, An Algorithm Integration Framework. + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the Apache License v2.0 which accompanies + * this distribution, and is available at: + * http://www.apache.org/licenses/LICENSE-2.0.html + * + * Created on Feb 8, 2008 at Indiana University. + * + * Contributors: + * Indiana University - Initial API + * ***************************************************************************/ +package org.cishell.framework.algorithm; + +/** + * An exception which is thrown when an error occurs in the process of executing + * an {@link Algorithm} + * + * @author Bruce Herr (bh...@bh...) + */ +public class AlgorithmExecutionException extends Exception { + private static final long serialVersionUID = 9017277008277139930L; + + public AlgorithmExecutionException(Exception exception) { + super(exception); + } + + public AlgorithmExecutionException(String message) { + super(message); + } +} Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmFactory.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmFactory.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmFactory.java 2008-03-04 23:53:10 UTC (rev 642) @@ -22,18 +22,18 @@ /** * A class for creating {@link Algorithm}s. This class provides the * parameters needed by its associated <code>Algorithm</code> on demand and when - * given correct data, will create an <code>Algorithm</code> that can be executed. - * An algorithm developer who wishes to be usable by CIShell applications must - * create an implementation of this interface and register it (along with some - * standard metadata about the algorithm, defined in the - * {@link AlgorithmProperty} class) in the OSGi service registry. + * given correct data, will create an <code>Algorithm</code> that can be executed. + * <br> + * An algorithm developer must create an implementation of this interface and + * register it (along with some standard metadata about the algorithm, defined + * in the {@link AlgorithmProperty} class) in the OSGi service registry. * * @author Bruce Herr (bh...@bh...) */ public interface AlgorithmFactory { /** - * Creates a set of parameter definitions that define what parameters are - * needed in order to run its associated Algorithm. + * Creates a set of parameter definitions that specify what parameters are + * needed in order to run its associated Algorithm * * @param data An optional argument, the Data array that will be given to * this class to create an Algorithm with the createAlgorithm @@ -46,7 +46,7 @@ public MetaTypeProvider createParameters(Data[] data); /** - * Creates an {@link Algorithm} to be executed. + * Creates an {@link Algorithm} to be executed * * @param data The data to be given to the Algorithm to process. * Some Algorithms may ignore this value. The order and @@ -54,7 +54,7 @@ * dictionary (the 'in_data' key) when registered as a * service in OSGi. * @param parameters A set of key-value pairs that were created based on - * the parameters given by the createParameters method. + * the parameters given by the createParameters method * @param context The context by which the Algorithm can gain access to * standard CIShell services * @return An <code>Algorithm</code> primed for execution Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/DataValidator.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/DataValidator.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/DataValidator.java 2008-03-04 23:53:10 UTC (rev 642) @@ -24,7 +24,7 @@ * make additional checks. For example, if an algorithm only worked on * symmetric matrices, this interface would check the data ahead of time * to ensure that the given matrix was in fact a symmetric matrix. - * <br /> + * <br> * In order for CIShell applications to fully recognize this additional validation * method, an algorithm developer must register this interface in addition to the * algorithm interface when registering their service. Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ProgressMonitor.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ProgressMonitor.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ProgressMonitor.java 2008-03-04 23:53:10 UTC (rev 642) @@ -59,14 +59,14 @@ /** * Notifies the start of execution of the algorithm in addition to - * revealing how many work units will be used. + * revealing how many work units will be used * * @param capabilities An OR'ed int that tells the monitor what the * algorithm is capable of with respect to the * monitor. The OR'ed values are taken from the int * constants specified in this interface. * @param totalWorkUnits The number of work units, -1 if the - * algorithm does not provide progress information. + * algorithm does not provide progress information */ public void start(int capabilities, int totalWorkUnits); @@ -74,19 +74,19 @@ * Notifies that a certain number of units of work has been completed * * @param work The number of units of work completed - * since last notification. + * since last notification */ public void worked(int work); /** - * The algorithm is finished executing. + * The algorithm is finished executing */ public void done(); /** * Sets or clears a flag for cancellation of this algorithm's execution. * An algorithm developer can ignore or clear this flag if it cannot stop - * midstream. This is one of the methods that can be called by someone + * midstream. This is one of the methods that can be called by something * other than the algorithm. * * @param value Set or clear the cancellation request @@ -105,7 +105,7 @@ /** * Sets or clears a flag for pausing of this algorithm's execution. An * algorithm developer can ignore or clear this flag if it cannot pause - * midstream. This is one of the methods that can be called by someone + * midstream. This is one of the methods that can be called by something * other than the algorithm. * * @param value Set or clear the pause request @@ -123,7 +123,7 @@ /** * Method to describe what the algorithm is currently doing for the benefit - * of the users of the algorithm as it progresses during execution. + * of the users of the algorithm as it progresses during execution * * @param currentWork A short description of the current work the algorithm * is doing Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ProgressTrackable.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ProgressTrackable.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ProgressTrackable.java 2008-03-04 23:53:10 UTC (rev 642) @@ -38,10 +38,10 @@ /** * Returns the progress monitor currently in use, or <code>null</code> if - * no monitor has been set. + * no monitor has been set * * @return The current progress monitor, or <code>null</code> if there - * isn't one set. + * isn't one set */ public ProgressMonitor getProgressMonitor(); } Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/BasicData.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/BasicData.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/BasicData.java 2008-03-04 23:53:10 UTC (rev 642) @@ -58,9 +58,9 @@ } /** - * @see org.cishell.framework.data.Data#getMetaData() + * @see org.cishell.framework.data.Data#getMetadata() */ - public Dictionary getMetaData() { + public Dictionary getMetadata() { return properties; } Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/Data.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/Data.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/Data.java 2008-03-04 23:53:10 UTC (rev 642) @@ -29,10 +29,10 @@ * * @return The data's metadata */ - public Dictionary getMetaData(); + public Dictionary getMetadata(); /** - * Returns the data stored in this Data object. + * Returns the data stored in this Data object * * @return The data (a Java object) */ Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/DataProperty.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/DataProperty.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/DataProperty.java 2008-03-04 23:53:10 UTC (rev 642) @@ -16,7 +16,7 @@ /** * Standard property keys to use when creating metadata for a - * {@link Data} object. + * {@link Data} object * * @author Bruce Herr (bh...@bh...) */ @@ -28,12 +28,20 @@ public static final String LABEL = "Label"; /** + * A short label to give the Data object for shorter displays. It is + * recommended to keep the string length below 20 characters. This will often + * be used for recommended file names when saving the data to disk. The type + * associated with this property is of type {@link String}. + */ + public static final String SHORT_LABEL = "Short_Label"; + + /** * The parent Data object of the Data object. This is used when a Data object * is derived from another Data object to show the hierarchical relationship * between them. This property can be null, signifying that the Data object * was not derived from any other Data object, such as when loading a new Data * object from a file. The type associated with this property is of type - * {@link Data} + * {@link Data}. */ public static final String PARENT = "Parent"; @@ -48,7 +56,7 @@ /** * Flag to determine if the Data object has been modified and not saved since * the modification. This is used to do things like notify the user before - * they exit that a modified Data object exists and see if they want to save + * they exit that a modified Data object exists and ask if they want to save * it. The type associated with this property is of type {@link Boolean}. */ public static final String MODIFIED = "Modified"; @@ -68,6 +76,6 @@ /** Says this data model is abstractly a plain text file */ public static String TEXT_TYPE = "Text"; - /** Says this data model is abstractly an informational graph. */ - public static String GRAPH_TYPE = "Graph"; + /** Says this data model is abstractly a data plot */ + public static String PLOT_TYPE = "Plot"; } Added: branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/ConversionException.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/ConversionException.java (rev 0) +++ branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/ConversionException.java 2008-03-04 23:53:10 UTC (rev 642) @@ -0,0 +1,33 @@ +/* **************************************************************************** + * CIShell: Cyberinfrastructure Shell, An Algorithm Integration Framework. + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the Apache License v2.0 which accompanies + * this distribution, and is available at: + * http://www.apache.org/licenses/LICENSE-2.0.html + * + * Created on Feb 8, 2008 at Indiana University. + * + * Contributors: + * Indiana University - Initial API + * ***************************************************************************/ +package org.cishell.service.conversion; + + +/** + * An exception which is thrown when an error occurs in the process of data + * conversion + * + * @author Bruce Herr (bh...@bh...) + */ +public class ConversionException extends Exception { + private static final long serialVersionUID = 1749134893481511313L; + + public ConversionException(Exception exception) { + super(exception); + } + + public ConversionException(String message) { + super(message); + } +} Modified: branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/Converter.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/Converter.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/Converter.java 2008-03-04 23:53:10 UTC (rev 642) @@ -21,7 +21,7 @@ import org.osgi.framework.ServiceReference; /** - * A class for converting Data objects. + * A class for converting Data objects * * @author Bruce Herr (bh...@bh...) */ @@ -29,16 +29,16 @@ /** * Returns an array of ServiceReferences to converter algorithms in the order - * in which they will be called when converting a Data object. + * in which they will be called when converting a Data object * - * @return An array of ServiceReferences to converter algorithms to be used. + * @return An array of ServiceReferences to converter algorithms to be used */ public ServiceReference[] getConverterChain(); /** * Returns the AlgorithmFactory that can be invoked to convert a given * Data object of the correct input format (as specified in the Dictionary - * from getProperties()) to a Data object of the correct output format. + * from getProperties()) to a Data object of the correct output format * * @return The AlgorithmFactory to do the converting */ @@ -58,11 +58,11 @@ /** * Uses this Converter to convert the given Data object to a new format. * This is a convenience method that uses this Converter to convert a Data - * object of the corrent format to a Data object of the defined output format + * object of the corrent format to a Data object of the defined output format. * * @param data The Data object with compatible format - * @return A Data object of correct output format, or <code>null</code> if the - * conversion fails + * @return A Data object of correct output format + * @throws ConversionException If the data conversion fails while converting */ - public Data convert(Data data); + public Data convert(Data data) throws ConversionException; } Modified: branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/DataConversionService.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/DataConversionService.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/DataConversionService.java 2008-03-04 23:53:10 UTC (rev 642) @@ -46,8 +46,8 @@ * String should be formatted in the same way as an * algorithm's {@link AlgorithmProperty#OUT_DATA}. * @return An array of {@link Converter}s that can convert a Data object of - * the given inFormat to the given outFormat, or <code>null</code> - * if there is no way to convert. + * the given inFormat to the specified outFormat, or + * <code>null</code> if there is no valid conversion sequence */ public Converter[] findConverters(String inFormat, String outFormat); @@ -57,20 +57,22 @@ * * @param data The Data object to convert * @param outFormat The output format to convert to - * @return An array of converters (may be zero length) that can convert the - * given Data object to the specified output format. + * @return An array of {@link Converter}s that can convert the + * given Data object to the specified output format, or + * <code>null</code> if there is no valid conversion sequence */ public Converter[] findConverters(Data data, String outFormat); /** * Tries to convert a given Data object to the specified output format. If * the conversion fails or there is no way to convert it, this method will - * return a <code>null</code> + * return a <code>null</code>. * * @param data The Data to convert * @param outFormat The format of the Data object to be returned * @return A Data object with the specified output format, or - * <code>null</code> if the conversion fails + * <code>null</code> if there is no valid conversion sequence + * @throws ConversionException If the data conversion fails while converting */ - public Data convert(Data data, String outFormat); + public Data convert(Data data, String outFormat) throws ConversionException; } Modified: branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUI.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUI.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUI.java 2008-03-04 23:53:10 UTC (rev 642) @@ -24,13 +24,13 @@ public interface GUI { /** * Pops up this GUI, gets data from the user, and returns what they entered. - * This is a convenience method that first opens the GUI, then pops the GUI - * up to the user, who then enters in the needed information, which is then + * This is a convenience method that first opens the GUI, then shows the GUI + * to the user, who then enters in the needed information, which is then * taken and put into a {@link Dictionary}, and is given to this method's * caller. * - * @return The data the user entered or <code>null</code> if they cancelled - * the operation. + * @return The data the user entered or <code>null</code> if the operation + * was cancelled */ public Dictionary openAndWait(); @@ -52,7 +52,7 @@ /** * Sets the selection listener to be informed when the user finishes - * entering information and hits 'Ok' or cancels. + * entering information and hits 'Ok' or cancels * * @param listener The listener to notify */ Modified: branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUIBuilderService.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUIBuilderService.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUIBuilderService.java 2008-03-04 23:53:10 UTC (rev 642) @@ -35,7 +35,7 @@ * * Algorithm writers are encouraged to use this service if they need to get * additional input from the user rather than creating their own GUI. This is - * to ensure a consistant user input method and so that the GUI can easily be + * to ensure a consistent user input method and so that the GUI can easily be * routed to the user when running remotely. * * @author Bruce Herr (bh...@bh...) @@ -66,8 +66,8 @@ * MetaTypeProvider * @param parameters Provides the parameters needed to get information from * the user - * @return The data the user entered or <code>null</code> if they cancelled - * the operation. + * @return The data the user entered or <code>null</code> if the operation + * was cancelled */ public Dictionary createGUIandWait(String id, MetaTypeProvider parameters); @@ -77,7 +77,7 @@ * @param title The title of the pop-up * @param message The message to display * @param detail Additional details - * @return If they clicked "Ok", <code>true</code>, otherwise + * @return If they clicked "Ok," <code>true</code>, otherwise * <code>false</code> */ public boolean showConfirm(String title, String message, String detail); @@ -88,7 +88,7 @@ * @param title The title of the pop-up * @param message The question to display * @param detail Additional details - * @return If they clicked "Yes", <code>true</code>, otherwise + * @return If they clicked "Yes," <code>true</code>, otherwise * <code>false</code> */ public boolean showQuestion(String title, String message, String detail); Modified: branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/SelectionListener.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/SelectionListener.java 2008-02-27 19:04:07 UTC (rev 641) +++ branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/SelectionListener.java 2008-03-04 23:53:10 UTC (rev 642) @@ -17,8 +17,8 @@ /** * A listener that is notified when all values entered by a {@link GUI} user - * have been validated and they have clicked 'Ok' to proceed or if they - * cancelled the operation + * have been validated and they have clicked 'Ok' to proceed or if the operation + * was cancelled * * @author Bruce Herr (bh...@bh...) */ Modified: trunk/core/org.cishell.docs/src/specification/main.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/main.tex 2008-02-27 19:04:07 UTC (rev 641) +++ trunk/core/org.cishell.docs/src/specification/main.tex 2008-03-04 23:53:10 UTC (rev 642) @@ -2,8 +2,8 @@ %% % -\documentclass[pdftex,11pt,a4paper]{report} -\usepackage[top=0.4in, left=0.5in, right=0.5in, bottom=0.6in]{geometry} +\documentclass[pdftex,11pt,letterpaper]{report} +\usepackage[top=1in, left=1in, right=1in, bottom=1in]{geometry} \usepackage[pdftex]{graphicx} \DeclareGraphicsExtensions{.pdf,.png,.jpg,.mps,.eps} \usepackage[pdftex]{hyperref} Modified: trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-02-27 19:04:07 UTC (rev 641) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-03-04 23:53:10 UTC (rev 642) @@ -7,9 +7,9 @@ The CIShell Platform has been specifically designed around the idea of the algorithm. It is the central and most important concept. Algorithms are fully defined and self-contained bits of execution. They can do many things from data -conversion, data analysis, and can even spawn whole outside programs if it needs -to. Algorithms are very well defined black boxes in that what can come into and -out of the algorithm is specified in each algorithm's metadata. Other than that, +conversion, data analysis, and can even spawn whole outside programs if needed. +Algorithms are very well defined black boxes in that what can come into and out +of the algorithm is specified in each algorithm's metadata. Other than that, CIShell makes no attempt to understand the algorithm. To be recognized by CIShell, an \class{AlgorithmFactory} must be registered with @@ -54,10 +54,10 @@ When an algorithm is registered with OSGi's service registry, a dictionary of metadata is provided. Since the algorithm itself is a black box, the metadata is used to provide information about the algorithm. Information such as the format -of each \class{Data} item to be inputted and outputted is provided. In addition -to the mechanics of the algorithms, interesting data such as the authors, label, -urls, and description are provided. This metadata can be searched by anyone using -OSGi's service registry to find relevant algorithms for use. +of each \class{Data} item to be input and output is provided. In addition to the +mechanics of the algorithms, data such as the authors, label, urls, citation +references, and description are provided. This metadata can be searched by anyone +using OSGi's service registry to find relevant algorithms. Each standard metadata element required by the CIShell specification is defined below and in the interface \class{AlgorithmProperty}. It defines each key string @@ -68,7 +68,7 @@ A string that uniquely identifies the algorithm. The service.pid should not change between sessions and only one algorithm with a given service.pid should be available in the service registry at any given time. It is recommended to -use the Java naming scheme including path for this purpose, i.e. +use the Java naming scheme including path for this purpose, i.e., ``org.cishell.my.algorithm.MyAlgorithm''. This metadata element is defined as part of the OSGi Service Platform Core Specification, section 6.1.12.58. @@ -93,8 +93,8 @@ \subsection*{parentage} If this metadata element is used, it defines how the output \class{Data} produced by the algorithm should be arranged. \class{Data} items can be given a parent as -part of their metadata (which qsually means the \class{Data} was derived from the -referenced \class{Data}). If parentage is set to ``default'' then each of the +part of their metadata (which usually means the \class{Data} was derived from +the referenced \class{Data}). If parentage is set to ``default'' then each of the algorithm's outputted \class{Data} items will have their parent \class{Data} item set as the first inputted \class{Data} item (if applicable) by the CIShell-conforming application. If parentage is set to something else or is not @@ -135,7 +135,7 @@ \subsection*{conversion} For converter algorithms, this metadata element specifies if any data is -lossed in the conversion. Possible values are ``lossy'' and ``lossless''. A +lost in the conversion. Possible values are ``lossy'' and ``lossless''. A description of what type of information is lost should be explained in the description. Modified: trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-02-27 19:04:07 UTC (rev 641) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-03-04 23:53:10 UTC (rev 642) @@ -3,7 +3,11 @@ \subsection*{\textit{Version 1.0}} \label{algConstraints} +\subsection{Introduction} +CIShell algorithms are a generic concept which have many uses. \comments{flesh +out\ldots} + \subsection{Base Algorithm Constraints} All conformant algorithms regardless of type, must adhere to the following @@ -13,7 +17,7 @@ \begin{itemize} \item The algorithm must be a conformant \class{AlgorithmFactory} implementation and properly registered as a service. - \item The algorithm's service metadata must contain a legal ``service.pid''. + \item The algorithm's service metadata must contain a valid ``service.pid''. \end{itemize} \subsubsection*{Optional:} @@ -23,7 +27,7 @@ \item The algorithm's service metadata should have a ``label'' which is a short human-readable name for the algorithm. \item The algorithm's service metadata should have a ``description'' - describing what the algorithm does in more detail. + explaining what the algorithm does in more detail. \item As much of the informational metadata as possible should be provided. This includes ``authors'', ``implementors'', ``integrators'', ``documentation\_url'', ``reference'', ``reference\_url'', and ``written\_in''. @@ -38,12 +42,12 @@ \begin{itemize} \item The algorithm must be a conformant \class{AlgorithmFactory} implementation and properly registered as a service. - \item The algorithm's service metadata must contain a legal ``service.pid''. + \item The algorithm's service metadata must contain a valid ``service.pid''. \item The algorithm's service metadata must have a ``label'' which is a short human-readable name for the algorithm. This is typically used to label an algorithm for an end-user to see. \item The algorithm's service metadata must have a ``description'' - describing what the algorithm does in more detail. + explaining what the algorithm does in more detail. \item The algorithm's service metadata must have a ``menu\_path'' which is simultaneously a classification and a location on a GUI's menubar to place the algorithm in. See section \ref{algMetaData} for how to format a @@ -52,7 +56,9 @@ \subsubsection*{Optional:} \begin{itemize} - + \item If additional user-entered parameters are needed, the algorithm should + provide a \class{MetaTypeProvider} through its AlgorithmFactory's + createParameters method. \item The algorithm's service metadata should have ``remoteable=true'' if it meets the requirements of a remoteable algorithm. \item The algorithm's service metadata should have ``parentage=default'' if @@ -64,7 +70,44 @@ ``documentation\_url'', ``reference'', ``reference\_url'', and ``written\_in''. \end{itemize} +\subsection{Dataset Algorithms} +A dataset algorithm is a custom type of CIShell algorithm for providing +pre-generated data for use in the CIShell Platform. Dataset algorithms act just +like standard algorithms and have a superset of requirements. CIShell +Applications may not even treat them any differently than standard algorithms. A +dataset algorithm has the following constraints: + +\subsubsection*{Required:} +\begin{itemize} + \item The algorithm must be a conformant \class{AlgorithmFactory} + implementation and properly registered as a service. + \item The algorithm's service metadata must contain a valid ``service.pid''. + \item The algorithm's service metadata must have a ``label'' which is a + short human-readable name for the dataset being provided. This is typically + used to label a dataset for an end-user to see. + \item The algorithm's service metadata must have a ``description'' + explaining what the dataset is in more detail. + \item The algorithm's service metadata must have a ``menu\_path'' which is + simultaneously a classification and a location on a GUI's menubar to place + the dataset in. Datasets will typically be in ``File/Datasets/additions'' + See section \ref{algMetaData} for how to format a ``menu\_path''. + \item The algorithm's service metadata must have ``type=dataset''. + \item The algorithm's service metadata must have ``in\_data=null'' or + not defined at all. + \item The algorithm's service metadata must have at least one data item set + as its ``out\_data''. +\end{itemize} + +\subsubsection*{Optional:} +\begin{itemize} + \item The algorithm's service metadata should have ``remoteable=true'' if it + meets the requirements of a remoteable algorithm. + \item As much of the informational metadata as possible should be + provided. This includes ``authors'', ``implementors'', ``integrators'', + ``documentation\_url'', ``reference'', and ``reference\_url''. +\end{itemize} + \subsection{Converter Algorithms} \label{converterAlg} @@ -80,22 +123,26 @@ \item The algorithm must take in a single \class{Data} item and convert the item, producing a single \class{Data} item. This must be reflected in the algorithm's service metadata where ``in\_data'' and ``out\_data'' have only - one format each. - \item The algorithm's service metadata must contain a legal ``service.pid''. + one data item each. + \item The algorithm's service metadata must contain a valid ``service.pid''. \item The algorithm's service metadata must have ``type=converter''. \item The algorithm's service metadata must have ``conversion=lossy'' if data is lost during conversion or ``conversion=lossless'' if not. + \item The algorithm must not require any parameters. The + \class{AlgorithmFactory}'s createParameters method will never be called and + the \class{Dictionary} passed to the createAlgorithm method will always be + empty. \end{itemize} \subsubsection*{Optional:} -\begin{itemize} +\begin{itemize}an \item The algorithm's service metadata should have ``remoteable=true'' if it meets the requirements of a remoteable algorithm. \item The algorithm's service metadata should have a ``label'' which is a short human-readable name for the converter, usually with the common name of the input data format and output data format. \item The algorithm's service metadata should have a ``description'' - describing the conversion in more detail, especially what data may be lossed + explaining the conversion in more detail, especially what data may be lossed if ``conversion=lossy''. \item The algorithm's service metadata should have ``implementers'' filled in accordingly. @@ -120,15 +167,19 @@ item producing a single \class{Data} item (with the same data, but changed format) or \class{null} if the file being validated is not of the right type. This must be reflected in the algorithm's service metadata where - ``in\_data'' and ``out\_data'' have only one format each with one containing - a ``file:'' format and the other a ``file-ext:'' depending on the direction - of validation. + ``in\_data'' and ``out\_data'' have only one data item each with one + containing a ``file:'' format and the other a ``file-ext:'' depending on the + direction of validation. \item The algorithm must not alter the data. Its only purpose is to validate the proposed incoming or outgoing file. - \item The algorithm's service metadata must contain a legal ``service.pid''. + \item The algorithm's service metadata must contain a valid ``service.pid''. \item The algorithm's service metadata must have ``type=validator''. \item The algorithm's service metadata must have a ``label'' which is the common name of the data format being validated. + \item The algorithm must not require any parameters. The + \class{AlgorithmFactory}'s createParameters method will never be called and + the \class{Dictionary} passed to the createAlgorithm method will always be + empty. \end{itemize} \subsubsection*{Optional:} Modified: trunk/core/org.cishell.docs/src/specification/tex/data.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/data.tex 2008-02-27 19:04:07 UTC (rev 641) +++ trunk/core/org.cishell.docs/src/specification/tex/data.tex 2008-03-04 23:53:10 UTC (rev 642) @@ -9,9 +9,9 @@ a mime type if it is a \class{java.io.File}. The mime type corresponds to the file's data type and has the following form - ``file:\textit{mime/type}''. Note that if no official mime type is available for a file format, a made up one can -be used, but must still conform to how mime types are constructed. See RFCs 3023 -and 4288 for more information on how to construct MIME types. Finally, the -properties help describe the data. The label to give the data, the parent -\class{Data} object from which it was derived from, and a coarse data type can +be used, but must still conform to how mime types are constructed. See RFCs +3023\footnote{http://tools.ietf.org/html/rfc3023} and +4288\footnote{http://tools.ietf.org/html/rfc4288} for more information on how to +construct MIME types. Finally, the properties help describe the data. The label to give the data, the parent \class{Data} object from which it was derived from, and a coarse data type can all be defined in the \class{Data}'s properties. See the \class{DataProperty} interface definition for specific properties to use. Modified: trunk/core/org.cishell.docs/src/specification/tex/dataconversionservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/dataconversionservice.tex 2008-02-27 19:04:07 UTC (rev 641) +++ trunk/core/org.cishell.docs/src/specification/tex/dataconversionservice.tex 2008-03-04 23:53:10 UTC (rev 642) @@ -3,11 +3,11 @@ \section{Introduction} A conscious design decision was made for CIShell not to enforce a central data -model/format that all algorithms had to work with. Instead, an algorithm -expresses in its service metadata for each data item coming into and out of the -algorithm what the format of the data is. It is the job of the code calling the -algorithm to get the data in the right format before calling the algorithm. The -Data Conversion Service is used here to simplify the process of converting data. +model/format that all algorithms have to work with. Instead, an algorithm +expresses the data format of each data item coming into and out of the algorithm +in its service metadata. It is the job of the code calling the algorithm to get +the data in the right format before calling the algorithm. The Data Conversion +Service is used here to simplify the process of converting data. \subsection{Entities} Modified: trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex 2008-02-27 19:04:07 UTC (rev 641) +++ trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex 2008-03-04 23:53:10 UTC (rev 642) @@ -7,7 +7,7 @@ The Data Manager Service is an optional service designed for application developers to have a central \class{Data} management system. Algorithm developers may use this too if they wish, but it is not guaranteed to be -available accross all CIShell-compliant systems. +available across all CIShell-compliant systems. \subsection{Entities} Modified: trunk/core/org.cishell.docs/src/specification/tex/framework.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/framework.tex 2008-02-27 19:04:07 UTC (rev 641) +++ trunk/core/org.cishell.docs/src/specification/tex/framework.tex 2008-03-04 23:53:10 UTC (rev 642) @@ -46,7 +46,7 @@ \item \textit{BasicData} - A simple implementation of the \class{Data} interface. \item \textit{DataProperty} - The interface which provides string constants - for \class{Data}'s metadata. + for \class{Data} metadata. \item \textit{CIShellContext} - The interface for a class to be passed in to an \class{AlgorithmFactory} for use in gaining access to standard CIShell services. Modified: trunk/core/org.cishell.docs/src/specification/tex/introduction.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/introduction.tex 2008-02-27 19:04:07 UTC (rev 641) +++ trunk/core/org.cishell.docs/src/specification/tex/introduction.tex 2008-03-04 23:53:10 UTC (rev 642) @@ -7,8 +7,8 @@ while retaining their intellectual rights after distribution; (2) data holders to easily disseminate their data for use by others; (3) application developers to design applications from custom sets of algorithms and datasets that interoperate -seamlessly; and finally (4) researchers, educators, and practitioners to use -existing datasets and algorithms to further science. +seamlessly; and finally (4) end-users to use existing datasets and algorithms +effectively. \section{CIShell Platform Overview} @@ -16,42 +16,53 @@ services for algorithm developers, and services for application developers. Much of the platform uses metadata and is fully defined. -\section{What is New} +%The next version should have this section. +%\section{What is New} -This is the first release of the CIShell Platform Specification. Future -versions will strive for backwards compatibility. +%This is the first release of the CIShell Platform Specification. Future +%versions will strive for backwards compatibility. \section{Reader Level} This specification is written for the following audiences: \begin{itemize} - \item Java Algorithm developers - \item Non-Java Algorithm developers + \item Java algorithm developers + \item Non-Java algorithm developers \item Framework and system service developers (system developers) \item Application developers building on CIShell \end{itemize} The CIShell Specifications assume that the reader has at least one year of practical experience in writing Java programs. CIShell is built to run on the -OSGi Service Platform Release 4 and thus a working knowledge of OSGi is expected. -OSGi (and thus CIShell) is highly dynamic and must be taken into consideration +OSGi Service Platform Release 4\footnote{http://www.osgi.org/Release4/Download} +and thus a working knowledge of OSGi is expected. OSGi (and thus CIShell) is highly dynamic and must be taken into consideration when developing anything on CIShell. -Non-Java Algorithm developers may not need to know any Java and should be mainly +Non-Java algorithm developers may not need to know any Java and should be mainly concerned with the metadata definitions for algorithms and data. They may also need to be aware of OSGi and the other services CIShell provides, but more than likely will not directly interact with them. \section{Conventions and Terms} -The conventions and terms are exactly the same as from OSGi's Core +In this specification, algorithms are referred to in three different contexts. An +abstract algorithm, is the pure idea of the algorithm with no actual source code. +It is a series of steps sometimes put into psuedo-code and often published in +academic journals. An \class{Algorithm} with a capital A refers the Java class +called Algorithm. And finally, an algorithm with a lowercase A refers to the +bundle of code that encompasses an algorithm written in code to work with the +CIShell Platform. This includes the implementation of \class{AlgorithmFactory} +and \class{Algorithm}, and the metadata, files, and other code that go into an +OSGi bundle. + +All other conventions and terms are exactly the same as from OSGi's Core Specification, section 1.4. \section{Version Information} This is the first release of the CIShell Platform Specification. All packages are at 1.0 for this release. Subsequent releases may increase the version number of -specific packages, if changes have been made. +specific packages if changes have been made. \begin{table}[h!] \begin{tabular}{l l l} @@ -65,8 +76,6 @@ 1.0 \\ Log Service Specification & org.osgi.service.log & Version 1.3 \\ Preferences Service Specification & org.osgi.service.prefs & Version 1.1 \\ -GUI Preferences Service Specification & org.cishell.service.\comments{TBD} & -Version 1.0 \\ Data Manager Application Service Specification & org.cishell.app.datamanager & Version 1.0 \\ Scheduler Application Service Specification & org.cishell.app.scheduler & Modified: trunk/core/org.cishell.docs/src/specification/tex/logservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/logservice.tex 2008-02-27 19:04:07 UTC (rev 641) +++ trunk/core/org.cishell.docs/src/specification/tex/logservice.tex 2008-03-04 23:53:10 UTC (rev 642) @@ -8,8 +8,8 @@ built on CIShell a standard logging sytem to use. This service has not been extended or modified. More information about the \class{LogService} is available in the OSGi Service Platform Service Compendium Specification R4, section 101 -under ``Log Service Specification''. Recommend output per log level for CIShell -algorithms are listed in table \ref{table:logLevels}. +under ``Log Service Specification.'' Recommended output per log level for +CIShell algorithms are listed in table \ref{table:logLevels}. \begin{table}[htb!] \begin{center} @@ -18,10 +18,10 @@ LOG\_DEBUG & Used for problem determination and may be irrelevent to anyone but the algorithm developer. \\ LOG\_ERROR & Indicates a problem occurred while the algorithm was executing. -Indicators of possible fixes should be outputted to this level along with +Indicators of possible fixes should be output to this level along with relevent information describing what went wrong, if possible. \\ LOG\_INFO & Used for providing information about and while the algorithm is -executing and does not indicate a problem. \\ +executing. It does not indicate a problem. \\ LOG\_WARNING & Indicates that the algorithm will still be executed, but that outputs may not be what was expected. This is often in response to illogical, but still valid user inputs. Modified: trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex 2008-02-27 19:04:07 UTC (rev 641) +++ trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex 2008-03-04 23:53:10 UTC (rev 642) @@ -4,21 +4,22 @@ implementation. In addition to the base OSGi implementation, several optional OSGi services are required to be available in a fully compliant CIShell implementation. Each additional required service is described in the OSGi -Service Platform Service Compendium R4. +Service Platform Service Compendium +R4\footnote{http://www.osgi.org/Release4/Download}. \subsection*{Required Services} \begin{description} \item[Metatype Service] as described in OSGi section 105 ``Metatype Service - Specification'', this service defines the \class{MetaTypeProvider} class used + Specification,'' this service defines the \class{MetaTypeProvider} class used for specifying user interfaces in CIShell. In addition, it provides an XML format for automatically generating \class{MetaTypeProvider}s and a service, \class{MetaTypeService}, for harvesting them for use by bundles. \item[Log Service] as described in OSGi section 101 ``Log Service - Specification'', this service is used as a universal logging system for + Specification,'' this service is used as a universal logging system for algorithms and services. See chapter \ref{logService} for more details. \item[Preferences Service] as described in OSGi section 106 ``Preferences - Service Specification'', this service is used as a universal preference storage - system for algorithms and services. See chapter \ref{preferencesService} for + Service Specification,'' this service is used as a universal preference + storage system for algorithms and services. See chapter \ref{preferencesService} for more details. \item[Configuration Admin Service] \comments{More details when the expanded prefs spec is done\ldots} @@ -28,6 +29,6 @@ \begin{description} \item[Declarative Services] as described in OSGi section 112 ``Declarative - Services Specification'', this service can b... [truncated message content] |
From: <bh...@us...> - 2008-02-27 19:05:47
|
Revision: 641 http://cishell.svn.sourceforge.net/cishell/?rev=641&view=rev Author: bh2 Date: 2008-02-27 11:04:07 -0800 (Wed, 27 Feb 2008) Log Message: ----------- Re-enabled use of DataValidators for algorithms. Modified Paths: -------------- 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/AlgorithmWrapper.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java 2008-02-26 23:31:15 UTC (rev 640) +++ trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java 2008-02-27 19:04:07 UTC (rev 641) @@ -26,6 +26,7 @@ import org.cishell.framework.algorithm.Algorithm; import org.cishell.framework.algorithm.AlgorithmFactory; import org.cishell.framework.algorithm.AlgorithmProperty; +import org.cishell.framework.algorithm.DataValidator; import org.cishell.framework.algorithm.ProgressMonitor; import org.cishell.framework.algorithm.ProgressTrackable; import org.cishell.framework.data.Data; @@ -94,6 +95,21 @@ ciContext.getService(GUIBuilderService.class.getName()); AlgorithmFactory factory = (AlgorithmFactory) bContext.getService(ref); + + if (factory instanceof DataValidator) { + String validation = ((DataValidator) factory).validate(data); + + if (validation != null && validation.length() > 0) { + String label = (String) ref.getProperty(LABEL); + if (label == null) { + label = "Algorithm"; + } + + builder.showError("Invalid Data", "The data given to \""+label+"\" is incompatible for this reason: "+validation , (String) null); + return null; + } + } + this.provider = factory.createParameters(data); String pid = (String)ref.getProperty(Constants.SERVICE_PID); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-02-26 23:31:27
|
Revision: 640 http://cishell.svn.sourceforge.net/cishell/?rev=640&view=rev Author: mwlinnem Date: 2008-02-26 15:31:15 -0800 (Tue, 26 Feb 2008) Log Message: ----------- Minor change in error message text. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/FileLoad.java Modified: trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/FileLoad.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/FileLoad.java 2008-02-26 19:51:53 UTC (rev 639) +++ trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/FileLoad.java 2008-02-26 23:31:15 UTC (rev 640) @@ -143,8 +143,8 @@ // no converters found means the file format is not supported if (serviceRefList == null || serviceRefList.length == 0){ - guiBuilder.showError("Unsupported File Format", "Sorry, the file format: *."+fileExtension+" is not supported so far.", - "Sorry, the file format: *."+fileExtension+" is not supported so far. \n"+ + guiBuilder.showError("Unsupported File Format", "Sorry, the file format: *."+fileExtension+" is not yet supported.", + "Sorry, the file format: *."+fileExtension+" is not yet supported. \n"+ "Please send your requests to cis...@li.... \n" +"Thank you."); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zh...@us...> - 2008-02-26 19:52:40
|
Revision: 639 http://cishell.svn.sourceforge.net/cishell/?rev=639&view=rev Author: zhang45 Date: 2008-02-26 11:51:53 -0800 (Tue, 26 Feb 2008) Log Message: ----------- improvement for viewing csv, Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/view/FileView.java Modified: trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/view/FileView.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/view/FileView.java 2008-02-26 16:58:55 UTC (rev 638) +++ trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/view/FileView.java 2008-02-26 19:51:53 UTC (rev 639) @@ -123,39 +123,55 @@ }else{ - final Converter[] converters = conversionManager.findConverters(data[i], "file-ext:*"); + final Converter[] convertersCSV = conversionManager.findConverters(data[i], "file-ext:csv"); + //logger.log(LogService.LOG_ERROR, "convertersCSV's length = " + convertersCSV.length); + if (convertersCSV.length == 1) + { + Data newDataCSV = convertersCSV[0].convert(data[i]); + tempFile = getTempFileCSV(); + isCSVFile = true; + copy((File)newDataCSV.getData(), tempFile); + lastSaveSuccessful = true; + + } + else if (convertersCSV.length > 1) + { + Data newDataCSV = convertersCSV[0].convert(data[i]); + for (int j = 1; j < convertersCSV.length; j++ ) + { + newDataCSV = convertersCSV[j].convert(newDataCSV); + } + tempFile = getTempFileCSV(); + isCSVFile = true; + copy((File)newDataCSV.getData(), tempFile); + lastSaveSuccessful = true; + } + else{ + final Converter[] converters = conversionManager.findConverters(data[i], "file-ext:*"); - if (converters.length < 1) { - guiBuilder.showError("No Converters", - "No valid converters for data type: " + - data[i].getData().getClass().getName(), - "Please install a plugin that will save the data type to a file"); - } - else if (converters.length == 1){ - //If length=1, use the unique path to save it directly - //and bring the text editor. - Data newData = converters[0].convert(data[i]); - if (format.startsWith("prefuse.data.Table")) - { - tempFile = getTempFileCSV(); - isCSVFile = true; + if (converters.length < 1) { + guiBuilder.showError("No Converters", + "No valid converters for data type: " + + data[i].getData().getClass().getName(), + "Please install a plugin that will save the data type to a file"); + } + else if (converters.length == 1){ + //If length=1, use the unique path to save it directly + //and bring the text editor. + Data newData = converters[0].convert(data[i]); + tempFile = getTempFile(); + copy((File)newData.getData(), tempFile); + lastSaveSuccessful = true; + } + else { + if (!parentShell.isDisposed()) { + DataViewer dataViewer = new DataViewer(parentShell, data[i], converters); + display.syncExec(dataViewer); + lastSaveSuccessful = dataViewer.isSaved; + tempFile = dataViewer.theFile; + } } - else - { - tempFile = getTempFile(); - - } - copy((File)newData.getData(), tempFile); - lastSaveSuccessful = true; - } - else { - if (!parentShell.isDisposed()) { - DataViewer dataViewer = new DataViewer(parentShell, data[i], converters); - display.syncExec(dataViewer); - lastSaveSuccessful = dataViewer.isSaved; - tempFile = dataViewer.theFile; - } - } + } } if (isCSVFile){//TC181 Display.getDefault().syncExec(new Runnable() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hu...@us...> - 2008-02-26 16:59:00
|
Revision: 638 http://cishell.svn.sourceforge.net/cishell/?rev=638&view=rev Author: huangb Date: 2008-02-26 08:58:55 -0800 (Tue, 26 Feb 2008) Log Message: ----------- tag v0.9.0 Added Paths: ----------- tags/v0.9.0/testing/ Copied: tags/v0.9.0/testing (from rev 637, trunk/testing) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hu...@us...> - 2008-02-26 16:58:25
|
Revision: 637 http://cishell.svn.sourceforge.net/cishell/?rev=637&view=rev Author: huangb Date: 2008-02-26 08:58:23 -0800 (Tue, 26 Feb 2008) Log Message: ----------- tag v0.9.0 Added Paths: ----------- tags/v0.9.0/templates/ Copied: tags/v0.9.0/templates (from rev 636, trunk/templates) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hu...@us...> - 2008-02-26 16:58:09
|
Revision: 636 http://cishell.svn.sourceforge.net/cishell/?rev=636&view=rev Author: huangb Date: 2008-02-26 08:58:05 -0800 (Tue, 26 Feb 2008) Log Message: ----------- tag v0.9.0 Added Paths: ----------- tags/v0.9.0/libs/ Copied: tags/v0.9.0/libs (from rev 635, trunk/libs) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hu...@us...> - 2008-02-26 16:57:48
|
Revision: 635 http://cishell.svn.sourceforge.net/cishell/?rev=635&view=rev Author: huangb Date: 2008-02-26 08:57:45 -0800 (Tue, 26 Feb 2008) Log Message: ----------- tag v0.9.0 Added Paths: ----------- tags/v0.9.0/examples/ Copied: tags/v0.9.0/examples (from rev 634, trunk/examples) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hu...@us...> - 2008-02-26 16:57:27
|
Revision: 634 http://cishell.svn.sourceforge.net/cishell/?rev=634&view=rev Author: huangb Date: 2008-02-26 08:57:21 -0800 (Tue, 26 Feb 2008) Log Message: ----------- tag v0.9.0 Added Paths: ----------- tags/v0.9.0/deployment/ Copied: tags/v0.9.0/deployment (from rev 633, trunk/deployment) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hu...@us...> - 2008-02-26 16:56:55
|
Revision: 633 http://cishell.svn.sourceforge.net/cishell/?rev=633&view=rev Author: huangb Date: 2008-02-26 08:56:52 -0800 (Tue, 26 Feb 2008) Log Message: ----------- tag v0.9.0 Added Paths: ----------- tags/v0.9.0/core/ Copied: tags/v0.9.0/core (from rev 632, trunk/core) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hu...@us...> - 2008-02-26 16:56:30
|
Revision: 632 http://cishell.svn.sourceforge.net/cishell/?rev=632&view=rev Author: huangb Date: 2008-02-26 08:56:23 -0800 (Tue, 26 Feb 2008) Log Message: ----------- tag v0.9.0 Added Paths: ----------- tags/v0.9.0/clients/ Copied: tags/v0.9.0/clients (from rev 631, trunk/clients) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hu...@us...> - 2008-02-26 16:55:34
|
Revision: 631 http://cishell.svn.sourceforge.net/cishell/?rev=631&view=rev Author: huangb Date: 2008-02-26 08:55:27 -0800 (Tue, 26 Feb 2008) Log Message: ----------- tag v0.9.0 Added Paths: ----------- tags/v0.9.0/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-02-26 16:23:43
|
Revision: 630 http://cishell.svn.sourceforge.net/cishell/?rev=630&view=rev Author: bh2 Date: 2008-02-26 08:23:04 -0800 (Tue, 26 Feb 2008) Log Message: ----------- force overwriting the tricksy current.pack.definition.xml Modified Paths: -------------- trunk/deployment/org.cishell.reference.releng/installer/build.xml Modified: trunk/deployment/org.cishell.reference.releng/installer/build.xml =================================================================== --- trunk/deployment/org.cishell.reference.releng/installer/build.xml 2008-02-21 21:25:29 UTC (rev 629) +++ trunk/deployment/org.cishell.reference.releng/installer/build.xml 2008-02-26 16:23:04 UTC (rev 630) @@ -45,7 +45,7 @@ </target> <target name='-compile.installer'> - <copy file="pack.definitions/pack.${platform}.xml" tofile="current.pack.definition.xml" /> + <copy file="pack.definitions/pack.${platform}.xml" tofile="current.pack.definition.xml" overwrite="true"/> <replace file="current.pack.definition.xml"> <replacefilter token="@{build.dir}" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 629 http://cishell.svn.sourceforge.net/cishell/?rev=629&view=rev Author: mwlinnem Date: 2008-02-21 13:25:29 -0800 (Thu, 21 Feb 2008) Log Message: ----------- Should get the directory path correct both on Windows and Linux/Macs now. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/FileComponent.java Modified: trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/FileComponent.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/FileComponent.java 2008-02-21 14:23:49 UTC (rev 628) +++ trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/FileComponent.java 2008-02-21 21:25:29 UTC (rev 629) @@ -105,9 +105,7 @@ //by default, point to NWB or CIShell application installation directory if (currentValue == null) { - System.out.println("value before being trimmed:" + System.getProperty("osgi.install.area")); - value = System.getProperty("osgi.install.area").replace("file:/",""); - System.out.println("value after being trimmed:" + value); + value = new File(System.getProperty("osgi.install.area").replace("file:","")).getAbsolutePath(); currentValue = value; } else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 628 http://cishell.svn.sourceforge.net/cishell/?rev=628&view=rev Author: mwlinnem Date: 2008-02-21 06:23:49 -0800 (Thu, 21 Feb 2008) Log Message: ----------- Added temporary debug code. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/FileComponent.java Modified: trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/FileComponent.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/FileComponent.java 2008-02-21 14:20:45 UTC (rev 627) +++ trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/FileComponent.java 2008-02-21 14:23:49 UTC (rev 628) @@ -105,7 +105,9 @@ //by default, point to NWB or CIShell application installation directory if (currentValue == null) { - value = System.getProperty("osgi.install.area").replace("file:/",""); + System.out.println("value before being trimmed:" + System.getProperty("osgi.install.area")); + value = System.getProperty("osgi.install.area").replace("file:/",""); + System.out.println("value after being trimmed:" + value); currentValue = value; } else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |