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
|
Revision: 627 http://cishell.svn.sourceforge.net/cishell/?rev=627&view=rev Author: mwlinnem Date: 2008-02-21 06:20:45 -0800 (Thu, 21 Feb 2008) Log Message: ----------- Directories will now be correct on Windows, but not on Linux or Mac (will make it work for both in a second, after some testing). 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-16 01:19:53 UTC (rev 626) +++ 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) @@ -105,7 +105,7 @@ //by default, point to NWB or CIShell application installation directory if (currentValue == null) { - value = System.getProperty("osgi.install.area").replace("file:",""); + value = System.getProperty("osgi.install.area").replace("file:/",""); currentValue = value; } else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-02-16 01:20:01
|
Revision: 626 http://cishell.svn.sourceforge.net/cishell/?rev=626&view=rev Author: mwlinnem Date: 2008-02-15 17:19:53 -0800 (Fri, 15 Feb 2008) Log Message: ----------- Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.core.new/META-INF/MANIFEST.MF trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.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/alltests/FilePassSubGenerator.java trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.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/reports/TestReport.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 Added Paths: ----------- 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/reports/ConvertedDataReport.java Modified: trunk/testing/org.cishell.testing.convertertester.core.new/META-INF/MANIFEST.MF =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/META-INF/MANIFEST.MF 2008-02-16 01:04:29 UTC (rev 625) +++ trunk/testing/org.cishell.testing.convertertester.core.new/META-INF/MANIFEST.MF 2008-02-16 01:19:53 UTC (rev 626) @@ -4,7 +4,6 @@ Bundle-SymbolicName: org.cishell.testing.convertertester.core.new Bundle-Version: 0.0.1 Bundle-ClassPath: . -Bundle-Localization: plugin Import-Package: org.cishell.framework, org.cishell.framework.algorithm, org.cishell.framework.data, Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java 2008-02-16 01:04:29 UTC (rev 625) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/ConverterTester2.java 2008-02-16 01:19:53 UTC (rev 626) @@ -117,8 +117,6 @@ CIShellContext cContext, BundleContext bContext) { - - Map fileFormatToTestConvs = convGraph.getTestMap(); Map fileFormatToCompareConvs = convGraph.getCompareMap(); @@ -156,6 +154,7 @@ if (filteredTestConvs != null && compareConv != null) { for (int kk = 0; kk < filteredTestConvs.length; kk++) { + System.out.println("Running converter path " + kk); numTestsSoFar++; ConverterPath testConv = filteredTestConvs[kk]; 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-02-16 01:04:29 UTC (rev 625) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/DefaultTestRunner.java 2008-02-16 01:19:53 UTC (rev 626) @@ -6,11 +6,14 @@ 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; import org.cishell.framework.data.BasicData; import org.cishell.framework.data.Data; +import org.cishell.framework.data.DataProperty; import org.cishell.testing.convertertester.core.converter.graph.Converter; import org.cishell.testing.convertertester.core.converter.graph.ConverterPath; import org.cishell.testing.convertertester.core.tester.graphcomparison.ComparisonResult; @@ -40,7 +43,7 @@ ConverterPath testConverters = testData.getTestConverters(); ConverterPath comparisonConverters = testData .getComparisonConverters(); - + List testResults = new ArrayList(); for (int ii = 0; ii < testFileData.length; ii++) { @@ -49,40 +52,45 @@ // test conversion phase ConvertResult testPhaseResult = convert(originalFileData, - testConverters, testData); + testConverters, testData, null); if (!testPhaseResult.succeeded()) { FilePassFailure failure = createFailResult(originalFileData, PassPhase.TEST_CONV_PHASE, - testPhaseResult.getFailInfo()); + testPhaseResult.getFailInfo(), + testPhaseResult.getAllData()); testResults.add(failure); continue; } Data[] resultFileData = testPhaseResult.getResult(); + Data[][] allDataFromTestPhase = testPhaseResult.getAllData(); // comparison conversion (for original file) phase ConvertResult comparePhaseOrigResult = convert(originalFileData, - comparisonConverters, testData); + comparisonConverters, testData, allDataFromTestPhase); if (!comparePhaseOrigResult.succeeded()) { FilePassFailure failure = createFailResult(originalFileData, PassPhase.COMPARE_CONV_ORIG_PHASE, - comparePhaseOrigResult.getFailInfo()); + comparePhaseOrigResult.getFailInfo(), + comparePhaseOrigResult.getAllData()); testResults.add(failure); continue; } Data[] originalInMemory = comparePhaseOrigResult.getResult(); - + Data[][] allDataFromTestAndComparisonPhases = comparePhaseOrigResult.getAllData(); + //comparison conversion (for result file) phase ConvertResult comparePhaseResultResult = convert(resultFileData, - comparisonConverters, testData); + comparisonConverters, testData, allDataFromTestAndComparisonPhases); if (!comparePhaseResultResult.succeeded()) { FilePassFailure failure = createFailResult(originalFileData, PassPhase.COMPARE_CONV_RESULT_PHASE, - comparePhaseResultResult.getFailInfo()); + comparePhaseResultResult.getFailInfo(), + comparePhaseResultResult.getAllData()); testResults.add(failure); continue; } @@ -102,13 +110,14 @@ graphComparisonPhaseResult.getLog(); FilePassFailure failure = createFailResult(originalFileData, explanation, PassPhase.GRAPH_COMPARE_PHASE, - null); + null, + comparePhaseResultResult.getAllData()); testResults.add(failure); continue; } FilePassSuccess success = new FilePassSuccess(originalFileData, - ""); + "", comparePhaseResultResult.getAllData()); testResults.add(success); } @@ -118,10 +127,18 @@ } private ConvertResult convert(Data[] startData, - ConverterPath converters, TestConfigData testData) { + ConverterPath converters, TestConfigData testData, Data[][] previousData) { Data[] currentData = getFilePathData(startData); + List dataSoFar = new ArrayList(); + if (previousData != null) { + dataSoFar.addAll(Arrays.asList(previousData)); + } + + if (startData != null) { + dataSoFar.add(startData); + } /* * rig up fake CISHellContext so we can get ahold of * errors sent to logger. @@ -129,16 +146,24 @@ FakeLogCIShellContext fakeCContext = new FakeLogCIShellContext(testData.getContext()); + + + 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(); currentData = currentConverter.execute(currentData, parameters, fakeCContext); + + if (currentData != null) { + setMetaData(currentData, currentConverter); + dataSoFar.add(currentData); + } /* * There are two ways that converters generally fail. @@ -164,34 +189,34 @@ ConvFailureInfo failInfo = new ConvFailureInfo( explanation, converter); - ConvertResult result = new ConvertResult(failInfo); + ConvertResult result = new ConvertResult(failInfo, (Data[][]) dataSoFar.toArray(new Data[dataSoFar.size()][])); return result; } } } catch (Throwable t) { ConvFailureInfo failInfo = new ConvFailureInfo(getStackTrace(t), currentConverter); - ConvertResult result = new ConvertResult(failInfo); + ConvertResult result = new ConvertResult(failInfo,(Data[][]) dataSoFar.toArray(new Data[dataSoFar.size()][])); return result; } Data[] resultData = currentData; - ConvertResult result = new ConvertResult(resultData); + ConvertResult result = new ConvertResult(resultData,(Data[][]) dataSoFar.toArray(new Data[dataSoFar.size()][])); return result; } private FilePassFailure createFailResult(Data[] origData, String explanation, PassPhase lastReachedPhase, - Converter failedConverter) { + Converter failedConverter, Data[][] allData) { FilePassFailure failure = new FilePassFailure(origData, explanation, - lastReachedPhase, failedConverter); + lastReachedPhase, failedConverter, allData); return failure; } private FilePassFailure createFailResult(Data[] origData, - PassPhase lastReachedPhase, ConvFailureInfo failInfo) { + PassPhase lastReachedPhase, ConvFailureInfo failInfo, Data[][] allData) { return createFailResult(origData, failInfo.getExplanation(), - lastReachedPhase, failInfo.getFailedConverter()); + lastReachedPhase, failInfo.getFailedConverter(), allData); } private class ConvertResult { @@ -199,18 +224,20 @@ private boolean succeeded; private Data[] result; + + private Data[][] allData; private ConvFailureInfo failInfo; - public ConvertResult(Data[] result) { + public ConvertResult(Data[] result, Data[][] allData) { this.result = result; - + this.allData = allData; this.succeeded = true; } - public ConvertResult(ConvFailureInfo failInfo) { + public ConvertResult(ConvFailureInfo failInfo, Data[][] allData) { this.failInfo = failInfo; - + this.allData = allData; this.succeeded = false; } @@ -221,6 +248,10 @@ public Data[] getResult() { return result; } + + public Data[][] getAllData() { + return this.allData; + } public ConvFailureInfo getFailInfo() { return this.failInfo; @@ -271,4 +302,16 @@ return logText; } + + private void setMetaData(Data[] data, Converter converter) { + if (data == null || data.length < 1) { + return; + } + + Data datum = data[0]; + Dictionary md = datum.getMetaData(); + if (md.get(DataProperty.LABEL) == null) { + md.put(DataProperty.LABEL, "result of " + converter.getShortName()); + } + } } Added: 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 (rev 0) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/ConvertedDataSubGenerator.java 2008-02-16 01:19:53 UTC (rev 626) @@ -0,0 +1,59 @@ +package org.cishell.testing.convertertester.core.tester2.reportgen.alltests; + +import java.io.File; +import java.io.PrintStream; + +import org.cishell.framework.data.Data; +import org.cishell.framework.data.DataProperty; +import org.cishell.testing.convertertester.core.tester2.reportgen.reports.ConvertedDataReport; +import org.cishell.testing.convertertester.core.tester2.reportgen.results.FilePassResult; +import org.cishell.testing.convertertester.core.tester2.reportgen.results.TestResult; +import org.osgi.service.log.LogService; + +public class ConvertedDataSubGenerator { +private ConvertedDataReport convertedDataReport; + + private LogService log; + + public ConvertedDataSubGenerator(LogService log) { + this.log = log; + } + + public void generateSubreport(TestResult tr, FilePassResult fpr, Data[] convertedData) { + if (convertedData.length == 0) { + return; + } + + 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()); + } else { + this.convertedDataReport = new ConvertedDataReport((String) firstData.getMetaData().get(DataProperty.LABEL) + " for " + fpr.getName() + " of " + tr.getName()); + } + } + + public ConvertedDataReport getReport() { + return this.convertedDataReport; + } + + public void writeReport(PrintStream report, FilePassResult fpr) { + + report.println(""); + report.println("File used : " + fpr.getOriginalFileLabel()); + + report.println(""); + if (! fpr.getExplanation().trim().equals("")) { + + if (fpr.failedWhileConverting()) { + report.println("Failed at " + fpr.getFailedConverter()); + } + + report.println("Explanation... \r\n" + fpr.getExplanation()); + } + + report.println(""); + + report.flush(); + } +} 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-02-16 01:04:29 UTC (rev 625) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/FilePassSubGenerator.java 2008-02-16 01:19:53 UTC (rev 626) @@ -5,23 +5,28 @@ import java.io.IOException; import java.io.PrintStream; +import org.cishell.framework.data.Data; import org.cishell.testing.convertertester.core.tester2.reportgen.ReportGenerator; +import org.cishell.testing.convertertester.core.tester2.reportgen.reports.ConvertedDataReport; import org.cishell.testing.convertertester.core.tester2.reportgen.reports.FilePassReport; import org.cishell.testing.convertertester.core.tester2.reportgen.results.FilePassResult; -import org.cishell.testing.convertertester.core.tester2.reportgen.results.filepass.PassPhase; +import org.cishell.testing.convertertester.core.tester2.reportgen.results.TestResult; import org.osgi.service.log.LogService; public class FilePassSubGenerator { private FilePassReport filePassReport; + private ConvertedDataSubGenerator convDataSubGenerator; + private LogService log; public FilePassSubGenerator(LogService log) { this.log = log; + this.convDataSubGenerator = new ConvertedDataSubGenerator(log); } - public void generateSubreport(FilePassResult fpr) { + public void generateSubreport(TestResult tr, FilePassResult fpr) { FileOutputStream reportOutStream = null; try { File reportFile = new File(ReportGenerator.TEMP_DIR + fpr.getName()); @@ -42,8 +47,20 @@ writeReport(report, fpr); - this.filePassReport = new FilePassReport(reportFile, fpr.getName()); + Data[][] allData = fpr.getAllData(); + 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); + } catch (IOException e) { this.log.log(LogService.LOG_ERROR, "Unable to generate file pass report.", e); Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java 2008-02-16 01:04:29 UTC (rev 625) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/alltests/TestReportSubGenerator.java 2008-02-16 01:19:53 UTC (rev 626) @@ -33,7 +33,7 @@ public void generateSubreport(TestResult tr) { FileOutputStream reportOutStream = null; try { - File reportFile = new File(ReportGenerator.TEMP_DIR + tr.getName()); + File reportFile = new File(ReportGenerator.TEMP_DIR + tr.getName() + " for " + tr.getName()); reportOutStream = new FileOutputStream(reportFile); PrintStream report = new PrintStream(reportOutStream); @@ -102,7 +102,7 @@ for (int ii = 0; ii < successfulFPs.length; ii++) { FilePassResult successfulFP = successfulFPs[ii]; - filePassSubGen.generateSubreport(successfulFP); + filePassSubGen.generateSubreport(tr, successfulFP); FilePassReport filePassReport = filePassSubGen.getFilePassReport(); successfulFPReports.add(filePassReport); @@ -112,15 +112,14 @@ for (int ii = 0; ii < failedFPs.length; ii++) { FilePassResult failedFP = failedFPs[ii]; - filePassSubGen.generateSubreport(failedFP); + filePassSubGen.generateSubreport(tr, failedFP); FilePassReport filePassReport = filePassSubGen.getFilePassReport(); failedFPReports.add(filePassReport); } - //TODO: remove file pass reports this.testReport = new TestReport(reportFile, tr.getNameWithSuccess(), - new FilePassReport[0], - new FilePassReport[0]); + (FilePassReport[]) successfulFPReports.toArray(new FilePassReport[successfulFPReports.size()]), + (FilePassReport[]) failedFPReports.toArray(new FilePassReport[failedFPReports.size()])); } catch (IOException e) { Added: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/reports/ConvertedDataReport.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/reports/ConvertedDataReport.java (rev 0) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/reports/ConvertedDataReport.java 2008-02-16 01:19:53 UTC (rev 626) @@ -0,0 +1,27 @@ +package org.cishell.testing.convertertester.core.tester2.reportgen.reports; + +import java.io.File; + +public class ConvertedDataReport implements Report { + + private String name; + private File report; + + public ConvertedDataReport (File report, String name) { + this.report = report; + this.name = name; + } + + public ConvertedDataReport(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public File getReport() { + return report; + } + +} 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-02-16 01:04:29 UTC (rev 625) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/reports/FilePassReport.java 2008-02-16 01:19:53 UTC (rev 626) @@ -8,9 +8,12 @@ private String name; - public FilePassReport (File filePassReport, String name) { + private ConvertedDataReport[] convertedDataReports; + + public FilePassReport (File filePassReport, String name, ConvertedDataReport[] convertedDataReports) { this.filePassReport = filePassReport; this.name = name; + this.convertedDataReports = convertedDataReports; } public File getFilePassReport() { @@ -20,4 +23,8 @@ public String getName() { return this.name; } + + public ConvertedDataReport[] getConvertedDataReports() { + return this.convertedDataReports; + } } Modified: trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/reports/TestReport.java =================================================================== --- trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/reports/TestReport.java 2008-02-16 01:04:29 UTC (rev 625) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/reports/TestReport.java 2008-02-16 01:19:53 UTC (rev 626) @@ -8,7 +8,6 @@ private File testReport; private FilePassReport[] successfulFilePassReports; private FilePassReport[] failedFilePassReports; - private String name; public TestReport(File testReport, String name, FilePassReport[] successfulFilePassReports, 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-02-16 01:04:29 UTC (rev 625) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/FilePassResult.java 2008-02-16 01:19:53 UTC (rev 626) @@ -23,6 +23,7 @@ private String explanation; private PassPhase lastReachedPhase; private Converter failedConverter; + private Data[][] allData; //variables not set by constructor @@ -41,11 +42,12 @@ private List chanceAtFaults; public FilePassResult(Data[] originalData, String explanation, - PassPhase lastReachedPhase, Converter failedConverter) { + PassPhase lastReachedPhase, Converter failedConverter, Data[][] allData) { this.originalData = originalData; this.explanation = explanation; this.lastReachedPhase = lastReachedPhase; this.failedConverter = failedConverter; + this.allData = allData; chanceAtFaults = new ArrayList(); } @@ -95,6 +97,10 @@ return this.originalData; } + public Data[][] getAllData() { + return this.allData; + } + 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-02-16 01:04:29 UTC (rev 625) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/filepass/FilePassFailure.java 2008-02-16 01:19:53 UTC (rev 626) @@ -7,8 +7,8 @@ public class FilePassFailure extends FilePassResult { public FilePassFailure(Data[] originalData, String explanation, - PassPhase phaseReached, Converter failedConverter) { + PassPhase phaseReached, Converter failedConverter, Data[][] allData) { super(originalData, explanation, phaseReached, - failedConverter); + failedConverter, allData); } } 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-02-16 01:04:29 UTC (rev 625) +++ trunk/testing/org.cishell.testing.convertertester.core.new/src/org/cishell/testing/convertertester/core/tester2/reportgen/results/filepass/FilePassSuccess.java 2008-02-16 01:19:53 UTC (rev 626) @@ -5,7 +5,7 @@ public class FilePassSuccess extends FilePassResult { - public FilePassSuccess(Data[] originalData, String explanation) { - super(originalData, explanation, PassPhase.SUCCEEDED_PHASE, null); + public FilePassSuccess(Data[] originalData, String explanation, Data[][] allData) { + super(originalData, explanation, PassPhase.SUCCEEDED_PHASE, null, allData); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-02-16 01:04:35
|
Revision: 625 http://cishell.svn.sourceforge.net/cishell/?rev=625&view=rev Author: mwlinnem Date: 2008-02-15 17:04:29 -0800 (Fri, 15 Feb 2008) Log Message: ----------- Changes for converted data. Modified Paths: -------------- trunk/testing/org.cishell.testing.convertertester.algorithm/META-INF/MANIFEST.MF trunk/testing/org.cishell.testing.convertertester.algorithm/src/org/cishell/testing/convertertester/algorithm/ConverterTesterAlgorithm.java Modified: trunk/testing/org.cishell.testing.convertertester.algorithm/META-INF/MANIFEST.MF =================================================================== --- trunk/testing/org.cishell.testing.convertertester.algorithm/META-INF/MANIFEST.MF 2008-02-13 15:14:14 UTC (rev 624) +++ trunk/testing/org.cishell.testing.convertertester.algorithm/META-INF/MANIFEST.MF 2008-02-16 01:04:29 UTC (rev 625) @@ -9,7 +9,14 @@ org.cishell.framework, org.cishell.framework.algorithm, org.cishell.framework.data, + org.cishell.reference.app.service.datamanager, + org.cishell.reference.app.service.scheduler, org.cishell.reference.gui.common, + org.cishell.reference.gui.datamanager, + org.cishell.reference.gui.guibuilder.swt, + org.cishell.reference.gui.scheduler, + org.cishell.reference.gui.workspace, + org.cishell.reference.service.conversion, org.cishell.reference.service.metatype, org.cishell.service.conversion, org.cishell.service.guibuilder, 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-02-13 15:14:14 UTC (rev 624) +++ trunk/testing/org.cishell.testing.convertertester.algorithm/src/org/cishell/testing/convertertester/algorithm/ConverterTesterAlgorithm.java 2008-02-16 01:04:29 UTC (rev 625) @@ -24,6 +24,7 @@ import org.cishell.testing.convertertester.core.tester2.reportgen.reports.AllErrorReport; import org.cishell.testing.convertertester.core.tester2.reportgen.reports.AllTestsReport; import org.cishell.testing.convertertester.core.tester2.reportgen.reports.ConvReport; +import org.cishell.testing.convertertester.core.tester2.reportgen.reports.ConvertedDataReport; import org.cishell.testing.convertertester.core.tester2.reportgen.reports.FilePassReport; import org.cishell.testing.convertertester.core.tester2.reportgen.reports.ReadMeReport; import org.cishell.testing.convertertester.core.tester2.reportgen.reports.TestReport; @@ -266,7 +267,9 @@ * @param report the report to be returned from this algorithm */ private void addReturn(Data report) { - this.returnList.add(report); + if (report != null) { + this.returnList.add(report); + } } @@ -292,6 +295,14 @@ 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); + } + } } FilePassReport[] fFilePassReports = @@ -302,6 +313,14 @@ 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); + } + } } } } @@ -323,6 +342,13 @@ Data parent, String format, String type) { Data reportData = new BasicData(report, format); Dictionary metadata = reportData.getMetaData(); + if (label == null) { + label = "no label"; + } + + if (type == null) { + type = "No type"; + } metadata.put(DataProperty.LABEL, label); metadata.put(DataProperty.TYPE, type); if (parent != null) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-02-13 15:14:23
|
Revision: 624 http://cishell.svn.sourceforge.net/cishell/?rev=624&view=rev Author: mwlinnem Date: 2008-02-13 07:14:14 -0800 (Wed, 13 Feb 2008) Log Message: ----------- Added preference property info for things related to preference service. Modified Paths: -------------- trunk/core/org.cishell.framework/META-INF/MANIFEST.MF Added Paths: ----------- trunk/core/org.cishell.framework/src/org/cishell/framework/preference/ trunk/core/org.cishell.framework/src/org/cishell/framework/preference/PreferenceProperty.java Modified: trunk/core/org.cishell.framework/META-INF/MANIFEST.MF =================================================================== --- trunk/core/org.cishell.framework/META-INF/MANIFEST.MF 2008-02-12 17:51:18 UTC (rev 623) +++ trunk/core/org.cishell.framework/META-INF/MANIFEST.MF 2008-02-13 15:14:14 UTC (rev 624) @@ -14,6 +14,7 @@ org.cishell.framework, org.cishell.framework.algorithm, org.cishell.framework.data, + org.cishell.framework.preference, org.cishell.service.conversion, org.cishell.service.guibuilder Eclipse-LazyStart: true Added: trunk/core/org.cishell.framework/src/org/cishell/framework/preference/PreferenceProperty.java =================================================================== --- trunk/core/org.cishell.framework/src/org/cishell/framework/preference/PreferenceProperty.java (rev 0) +++ trunk/core/org.cishell.framework/src/org/cishell/framework/preference/PreferenceProperty.java 2008-02-13 15:14:14 UTC (rev 624) @@ -0,0 +1,53 @@ +/* **************************************************************************** + * 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.preference; + +public interface PreferenceProperty { + + //used to override the default id of the local preference OCD + public static final String LOCAL_PREF_PID = "local_pref_pid"; + //used to override the default ids of the global preference OCDs + public static final String GLOBAL_PREF_PID = "global_pref_pid"; + +// //set to true in a service's properties if you want the CIShell preference service to look for local preferences in your METADATA.XML file +// //In addition to the described behavior, setting this to true will also cause the same behavior as setting 'receive prefs' to true. +// public static final String PUBLISH_LOCAL_PREFS_KEY = "publish_local_prefs"; +// //set to true in a service's properties if you want the CIShell preference service to look for global preferences in your METADATA.XML file +// public static final String PUBLISH_GLOBAL_PREF_KEY = "publish_global_prefs"; +// //set to true in a service's properties if you want to are not publishing local preferences, but still want to receive global preference info +// public static final String RECEIVE_PREFS_KEY = "receive_prefs"; +// //set to true if you want the default values of your parameters to be changeable in the preferences menu +// public static final String PUBLISH_PARAM_DEFAULT_PREFS_KEY = "publish_param_prefs"; + + public static final String PREFS_PUBLISHED_KEY = "prefs_published"; + public static final String PUBLISH_LOCAL_PREF_VALUE = "local"; + public static final String PUBLISH_GLOBAL_PREF_VALUE = "global"; + public static final String PUBLISH_PARAM_DEFAULT_PREF_VALUE = "param-defaults"; + + public static final String RECEIVE_PREFS_KEY = "receive_prefs"; + + //by default, OCDs with the ID `service.pid` + `one of these suffixes` will be treated as the OCD for the OCD type that corresponds to the suffix. + + public static final String LOCAL_PREFS_OCD_SUFFIX = ".prefs.local"; //with or without digit (>=2) on end + public static final String GLOBAL_PREFS_OCD_SUFFIX = ".prefs.global"; //with or without digit ( >= 2) on end + public static final String PARAM_PREFS_OCD_SUFFIX = ""; + + public static final String LOCAL_PREFS_CONF_SUFFIX = ""; + public static final String GLOBAL_PREFS_CONF_SUFFIX = GLOBAL_PREFS_OCD_SUFFIX; + public static final String PARAM_PREFS_CONF_SUFFIX = ".prefs.params"; + + //used to remember what bundle version a preference configuration object corresponds to + //the same as OSGi one. + public static final String BUNDLE_VERSION_KEY = "Bundle-Version"; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tea...@us...> - 2008-02-12 17:51:24
|
Revision: 623 http://cishell.svn.sourceforge.net/cishell/?rev=623&view=rev Author: teakettle22 Date: 2008-02-12 09:51:18 -0800 (Tue, 12 Feb 2008) Log Message: ----------- Incomplete - # 197: Using Options in MetaData.XML generates NullPointerException https://cns-trac.slis.indiana.edu/trac/nwb/ticket/197 Fixed, coding by Micah, error found by Tim Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/LabelingComponent.java trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/StringComponent.java Modified: trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/LabelingComponent.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/LabelingComponent.java 2008-02-08 21:12:55 UTC (rev 622) +++ trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/LabelingComponent.java 2008-02-12 17:51:18 UTC (rev 623) @@ -88,6 +88,7 @@ String[] defaults = attr.getDefaultValue(); if (defaults != null && defaults.length > 0) { + Object value = StringConverter.getInstance().stringToObject(attr, defaults[0]); setValue(value); } Modified: trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/StringComponent.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/StringComponent.java 2008-02-08 21:12:55 UTC (rev 622) +++ trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/StringComponent.java 2008-02-12 17:51:18 UTC (rev 623) @@ -13,6 +13,8 @@ * ***************************************************************************/ package org.cishell.reference.gui.guibuilder.swt.builder.components; +import java.util.Arrays; + import org.cishell.reference.gui.guibuilder.swt.builder.AbstractComponent; import org.cishell.reference.gui.guibuilder.swt.builder.StringConverter; import org.eclipse.swt.SWT; @@ -24,7 +26,6 @@ import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Text; /** @@ -98,7 +99,11 @@ } private String getListValue() { - return optionValues[combo.getSelectionIndex()]; + if (optionValues != null) { + return optionValues[combo.getSelectionIndex()]; + } else { + return "You are not specifying option values, fool!"; + } } public String validate() { @@ -113,6 +118,23 @@ } public void setValue(Object value) { + if (text != null) { text.setText(value == null ? "" : value.toString()); + } else if (combo != null) { + + int setComboToIndex = -1; + for (int i = 0; i < optionValues.length; i++) { + if (value.equals(optionValues[i])) { + setComboToIndex = i; + } + } + + if (setComboToIndex != -1) { + combo.select(setComboToIndex); + } else { + System.err.println("Attempted to set combo box to a value " + + "that didn't exist inside the combo box."); + } + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-02-08 21:12:58
|
Revision: 622 http://cishell.svn.sourceforge.net/cishell/?rev=622&view=rev Author: mwlinnem Date: 2008-02-08 13:12:55 -0800 (Fri, 08 Feb 2008) Log Message: ----------- Added error message if you can't add Scheduler to Tools menu. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.scheduler/src/org/cishell/reference/gui/scheduler/Activator.java Modified: trunk/clients/gui/org.cishell.reference.gui.scheduler/src/org/cishell/reference/gui/scheduler/Activator.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.scheduler/src/org/cishell/reference/gui/scheduler/Activator.java 2008-02-08 20:54:14 UTC (rev 621) +++ trunk/clients/gui/org.cishell.reference.gui.scheduler/src/org/cishell/reference/gui/scheduler/Activator.java 2008-02-08 21:12:55 UTC (rev 622) @@ -96,6 +96,11 @@ } manager = manager.findMenuUsingPath("tools"); + + if (manager == null) { + System.err.println( "Unable to add Scheduler to Tools menu, since Tools menu does not exist."); + } + manager.appendToGroup("start", scheduler); SchedulerView view = SchedulerView.getDefault(); boolean visible = view != null This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-02-08 20:54:20
|
Revision: 621 http://cishell.svn.sourceforge.net/cishell/?rev=621&view=rev Author: mwlinnem Date: 2008-02-08 12:54:14 -0800 (Fri, 08 Feb 2008) Log Message: ----------- Scheduler now waits (for up to 1.5 seconds) to let the menu manager add the tools menu. Fixes race condition bug. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.scheduler/src/org/cishell/reference/gui/scheduler/Activator.java Modified: trunk/clients/gui/org.cishell.reference.gui.scheduler/src/org/cishell/reference/gui/scheduler/Activator.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.scheduler/src/org/cishell/reference/gui/scheduler/Activator.java 2008-02-07 21:46:52 UTC (rev 620) +++ trunk/clients/gui/org.cishell.reference.gui.scheduler/src/org/cishell/reference/gui/scheduler/Activator.java 2008-02-08 20:54:14 UTC (rev 621) @@ -27,6 +27,9 @@ private static BundleContext context; private boolean waitForBundleContext; + private static final int ATTEMPTS_TO_FIND_TOOLBAR = 15; + private static final int SLEEP_TIME = 100; + public Activator() { plugin = this; } @@ -81,6 +84,17 @@ public void run() { Action scheduler = new SchedulerAction(); IMenuManager manager = CIShellApplication.getMenuManager(); + + IMenuManager newManager = null; + for (int i = 0; i < ATTEMPTS_TO_FIND_TOOLBAR && newManager == null; i++) { + try { + Thread.sleep(SLEEP_TIME); + } catch (InterruptedException e) { + e.printStackTrace(); + } + newManager = manager.findMenuUsingPath("tools"); + } + manager = manager.findMenuUsingPath("tools"); manager.appendToGroup("start", scheduler); SchedulerView view = SchedulerView.getDefault(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-02-07 21:47:15
|
Revision: 620 http://cishell.svn.sourceforge.net/cishell/?rev=620&view=rev Author: mwlinnem Date: 2008-02-07 13:46:52 -0800 (Thu, 07 Feb 2008) Log Message: ----------- Errors caused by algorithms executed in data chooser are now logged correctly. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/LoadDataChooser.java Modified: trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/LoadDataChooser.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/LoadDataChooser.java 2008-02-07 21:38:27 UTC (rev 619) +++ trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/LoadDataChooser.java 2008-02-07 21:46:52 UTC (rev 620) @@ -165,6 +165,7 @@ dm = new Data[]{new BasicData(theFile.getPath(),String.class.getName())}; dm = persister.createAlgorithm(dm, null, ciContext).execute(); } catch (Throwable e) { + this.logger.log(LogService.LOG_ERROR, "Error occurred while executing selection", e); e.printStackTrace(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-02-07 21:38:49
|
Revision: 619 http://cishell.svn.sourceforge.net/cishell/?rev=619&view=rev Author: mwlinnem Date: 2008-02-07 13:38:27 -0800 (Thu, 07 Feb 2008) Log Message: ----------- Fixed code that crashed the save dialog when saving data with certain labels. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/save/FileSaver.java Modified: trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/save/FileSaver.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/save/FileSaver.java 2008-02-07 00:15:28 UTC (rev 618) +++ trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/save/FileSaver.java 2008-02-07 21:38:27 UTC (rev 619) @@ -191,7 +191,7 @@ //find the first character of the file name extension. - int extensionBeginIndex = fileNameWithExtension.indexOf("."); + int extensionBeginIndex = fileNameWithExtension.lastIndexOf("."); int endIndex; @@ -201,7 +201,7 @@ //first period. } else { //we didn't find an extension on the file name. - endIndex = fileLabel.length(); // don't cut any off the end. + endIndex = fileNameWithExtension.length(); // don't cut any off the end. } String fileNameWithoutExtension = fileNameWithExtension.substring(0, endIndex); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-02-07 00:16:26
|
Revision: 618 http://cishell.svn.sourceforge.net/cishell/?rev=618&view=rev Author: bh2 Date: 2008-02-06 16:15:28 -0800 (Wed, 06 Feb 2008) Log Message: ----------- * Added section listing versions of each specified package * Removed typos, clarified, etc * Updated/Cleaned API text * Added some addition AlgorithmProperty properties * Removed DataProperty.GRACE_TYPE and replaced it with GRAPH_TYPE. GRACE_TYPE is WAY too specific to be in the specification. * Removed public Converter[] findConverters(String inFormat, String outFormat, int maxHops, String maxComplexity); from DataConversionService since it is not used and is not worth specifying at this time. Modified Paths: -------------- branches/spec_update/org.cishell.framework/javadoc.xml 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/package.html 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/package.html 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/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/ProgressMonitor.java branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/package.html 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/framework/data/package.html branches/spec_update/org.cishell.framework/src/org/cishell/framework/package.html branches/spec_update/org.cishell.framework/src/org/cishell/overview.html 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/conversion/package.html branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUIBuilderService.java branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/package.html 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/introduction.tex trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex Modified: branches/spec_update/org.cishell.framework/javadoc.xml =================================================================== --- branches/spec_update/org.cishell.framework/javadoc.xml 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/javadoc.xml 2008-02-07 00:15:28 UTC (rev 618) @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project default="javadoc"> - <property name="version" value="0.5.0" /> + <property name="version" value="1.0" /> <target name="javadoc"> <javadoc destdir="bin/doc" access="public" 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-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/DataManagerService.java 2008-02-07 00:15:28 UTC (rev 618) @@ -16,14 +16,14 @@ import org.cishell.framework.data.Data; /** - * A service for managing loaded {@link Data}s. + * A service for managing loaded {@link Data} objects. * {@link DataManagerListener}s may be registered to be notified of changes * in the model manager. * - * Clients are encouraged to use this service for managing the models they have - * loaded into memory. Algorithm writers are encouraged not to use this service - * as it is not guaranteed to be available like the standard CIShell services - * are. + * Application developers are encouraged to use this service for managing the + * models they have loaded into memory. Algorithm developers are encouraged not + * to use this service as it is not guaranteed to be available like the standard + * CIShell services are. * * @author Bruce Herr (bh...@bh...) */ @@ -81,7 +81,6 @@ */ public void removeDataManagerListener(DataManagerListener listener); - /** * Returns the label for a stored Data object * Modified: branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/package.html =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/package.html 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/app/service/datamanager/package.html 2008-02-07 00:15:28 UTC (rev 618) @@ -2,7 +2,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <title>org.cishell.framework.datamodel Package-level Javadoc</title> + <title>org.cishell.app.service.datamanager Package-level Javadoc</title> <!-- /* **************************************************************************** * CIShell: Cyberinfrastructure Shell, An Algorithm Integration Framework. @@ -19,9 +19,12 @@ * ***************************************************************************/ --> </head> -<body>Provides the specification for the CIShell data manager service. +<body>Provides interfaces for the CIShell Data Manager Service. <h2>Package Specification</h2> -This package specifies the API related to the data manager service. +The API related to the Data Manager Service. +@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/app/service/scheduler/SchedulerService.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/app/service/scheduler/SchedulerService.java 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/app/service/scheduler/SchedulerService.java 2008-02-07 00:15:28 UTC (rev 618) @@ -23,9 +23,10 @@ * A service for scheduling {@link Algorithm}s to be run. * {@link SchedulerListener}s may be registered to be notified of events. * - * Clients are encouraged to use this service for scheduling Algorithms to be - * run. Algorithm writers are encouraged not to use this service as it is not - * guaranteed to be available like the standard CIShell services are. + * Application Developers are encouraged to use this service for scheduling + * Algorithms to be run. Algorithm developers are encouraged not to use this + * service as it is not guaranteed to be available like the standard CIShell + * services are. * * @author Bruce Herr (bh...@bh...) */ @@ -141,7 +142,6 @@ */ public Calendar getScheduledTime(Algorithm algorithm); - /** * Returns an Algorithm's associated ServiceReference if one was provided * when the Algorithm was scheduled Modified: branches/spec_update/org.cishell.framework/src/org/cishell/app/service/scheduler/package.html =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/app/service/scheduler/package.html 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/app/service/scheduler/package.html 2008-02-07 00:15:28 UTC (rev 618) @@ -2,7 +2,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <title>org.cishell.framework.datamodel Package-level Javadoc</title> + <title>org.cishell.app.service.scheduler Package-level Javadoc</title> <!-- /* **************************************************************************** * CIShell: Cyberinfrastructure Shell, An Algorithm Integration Framework. @@ -19,9 +19,12 @@ * ***************************************************************************/ --> </head> -<body>Provides the specification for the CIShell scheduler service. +<body>Provides interfaces for the CIShell Scheduler Service. <h2>Package Specification</h2> -This package specifies the API related to the scheduler service. +The API related to the Scheduler Service. +@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/framework/CIShellContext.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/CIShellContext.java 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/CIShellContext.java 2008-02-07 00:15:28 UTC (rev 618) @@ -21,7 +21,7 @@ /** * The context by which algorithms in the framework can gain access to standard * CIShell services. An instantiated CIShellContext must provide access to at - * least the default services (as of this specification, the OSGi + * least the default services (as of the 1.0 specification, the OSGi * {@link LogService}, the OSGi {@link PreferencesService}, the * CIShell defined {@link DataConversionService}, and the CIShell defined * {@link GUIBuilderService}). Other services may be made available through @@ -32,7 +32,7 @@ public interface CIShellContext { /** - * Contains an array of the strings to access the default services + * Contains an array of the valid strings corresponding to the default services */ public static final String[] DEFAULT_SERVICES = new String[] { LogService.class.getName(), 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-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/LocalCIShellContext.java 2008-02-07 00:15:28 UTC (rev 618) @@ -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 Client writers. + * it will be used frequently by CIShell Application writers. * * This implementation only returns standard services or the service strings * given to it in its constructor. @@ -44,13 +44,13 @@ /** * Initializes the CIShell context with a custom set of standard services. - * Only the standard services provided will be allowed to be gotten from + * Only the standard services provided will be allowed to be retrieved from * this <code>CIShellContext</code>. * * @param bContext The <code>BundleContext</code> to use to find * registered standard services. * @param standardServices An array of strings specifying the services that - * are allowed to be gotten 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-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/Algorithm.java 2008-02-07 00:15:28 UTC (rev 618) @@ -13,31 +13,22 @@ * ***************************************************************************/ package org.cishell.framework.algorithm; -import org.cishell.framework.CIShellContext; import org.cishell.framework.data.Data; /** - * In CIShell, an algorithm can be basically any arbitrary code - * execution cycle. What happens when the execute method is run is entirely - * up to the Algorithm writer. Some algorithms may be primed with a Data array - * that it analyzes and returns a derivitive Data array or it may convert from - * one Data array to another or not take in any Data array and based on some - * given parameters create an entirely new Data array. + * A class which executes some arbitrary code and optionally returns any data + * produced. What happens when the execute method is run is entirely + * up to the Algorithm developer. Algorithms should be primed with whatever data + * is needed, usually by its associated {@link AlgorithmFactory}, before + * execution. This allows an Algorithm to be set up, then scheduled for later + * execution. * - * Algorithms are typically also given a {@link CIShellContext} by which they - * can gain access to standard services like logging, preferences, and gui - * creation. If an algorithm only uses these standard services and does not pop - * up any graphical gui (aside from using the GUIBuilderService) then this - * Algorithm may be safely run remotely. - * * @author Bruce Herr (bh...@bh...) */ public interface Algorithm { /** - * Executes and optionally returns a Data array. Algorithms are usually - * primed ahead of time with all the necessary data needed. This allows - * an Algorithm to be set up, then scheduled for later execution. + * Executes and optionally returns a Data array. * * @return A Data array that was created or <code>null</code> */ 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-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmFactory.java 2008-02-07 00:15:28 UTC (rev 618) @@ -20,13 +20,13 @@ import org.osgi.service.metatype.MetaTypeProvider; /** - * A class for creating {@link Algorithm}s. This class provides the parameters - * needed by an <code>Algorithm</code> on demand and when given correct data, - * will create an <code>Algorithm</code> that can be executed. An algorithm - * writer who wishes to be usable by CIShell clients must create an - * implementation of this interface and register it (along with some standard - * meta-data about the algorithm, defined in the {@link AlgorithmProperty} - * class) in the OSGi service registry. + * 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. * * @author Bruce Herr (bh...@bh...) */ @@ -55,7 +55,7 @@ * service in OSGi. * @param parameters A set of key-value pairs that were created based on * the parameters given by the createParameters method. - * @param context The context by which an Algorithm can gain access to + * @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-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/AlgorithmProperty.java 2008-02-07 00:15:28 UTC (rev 618) @@ -15,29 +15,54 @@ /** * A standard set of properties and values used for creating a service - * Dictionary that is provided when registering an AlgorithmFactory with the - * OSGi service registry. + * 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. + * * @author Bruce Herr (bh...@bh...) */ public interface AlgorithmProperty { public static final String IN_DATA = "in_data"; public static final String OUT_DATA = "out_data"; public static final String NULL_DATA = "null"; - public static final String CONVERSION = "conversion"; - public static final String LOSSY = "lossy"; - public static final String LOSSLESS = "lossless"; - public static final String MENU_PATH = "menu_path"; + + 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 REMOTEABLE = "remoteable"; + public static final String REMOTE = "remote"; + public static final String LABEL = "label"; public static final String DESCRIPTION = "description"; + + public static final String MENU_PATH = "menu_path"; public static final String ADDITIONS_GROUP = "additions"; public static final String START_GROUP = "start"; public static final String END_GROUP = "end"; - public static final String METATYPE_ID = "metatype-id"; - public static final String REMOTEABLE = "remoteable"; - public static final String REMOTE = "remote"; - public static final String ALGORITHM_TYPE = "type"; - public static final String TYPE_CONVERTER = "converter"; + + public static final String CONVERSION = "conversion"; + public static final String LOSSY = "lossy"; + public static final String LOSSLESS = "lossless"; + + public static final String AUTHORS = "authors"; + public static final String IMPLEMENTERS = "implementers"; + public static final String INTEGRATORS = "integrators"; + + public static final String DOCUMENTATION_URL = "documentation_url"; + 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"; } 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-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/DataValidator.java 2008-02-07 00:15:28 UTC (rev 618) @@ -25,8 +25,8 @@ * 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 clients to fully recognize this additional validation - * method, an algorithm writer must register this interface in addition to the + * 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/ProgressMonitor.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ProgressMonitor.java 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/ProgressMonitor.java 2008-02-07 00:15:28 UTC (rev 618) @@ -16,9 +16,9 @@ /** * A class to monitor the progress of an algorithm. It allows for notification * of progress, notification of cancellation, notification of pausing, and - * description of current work during execution. These methods are generally - * only called by the algorithm with the CIShell client providing the progress - * monitor implementation. + * description of current work during execution. Except for the setter methods, + * the methods are generally only called by the algorithm with the CIShell + * application providing the progress monitor implementation. * * @author Bruce Herr (bh...@bh...) */ @@ -61,11 +61,11 @@ * Notifies the start of execution of the algorithm in addition to * revealing how many work units will be used. * - * @param capabilities An ORed int that tells the monitor what the + * @param capabilities An OR'ed int that tells the monitor what the * algorithm is capable of with respect to the - * monitor. The ORed values are taken from the int + * monitor. The OR'ed values are taken from the int * constants specified in this interface. - * @param totalWorkUnits The number of work units, may be -1 if the + * @param totalWorkUnits The number of work units, -1 if the * algorithm does not provide progress information. */ public void start(int capabilities, int totalWorkUnits); @@ -85,7 +85,7 @@ /** * Sets or clears a flag for cancellation of this algorithm's execution. - * An algorithm writer can ignore or clear this flag if it cannot stop + * 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 * other than the algorithm. * @@ -104,7 +104,7 @@ /** * Sets or clears a flag for pausing of this algorithm's execution. An - * algorithm writer can ignore or clear this flag if it cannot pause + * 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 * other than the algorithm. * Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/package.html =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/package.html 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/algorithm/package.html 2008-02-07 00:15:28 UTC (rev 618) @@ -19,12 +19,12 @@ * ***************************************************************************/ --> </head> -<body>Provides interfaces required for creating CIShell compatible algorithms. +<body>Provides interfaces required for creating CIShell algorithms. <h2>Package Specification</h2> -This package specifies the API related to creation of CIShell compatible -algorithms. +The API related to creation of CIShell algorithms. -TODO: Describe here how an algorithm is integrated into OSGi. +@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/framework/data/BasicData.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/BasicData.java 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/BasicData.java 2008-02-07 00:15:28 UTC (rev 618) @@ -29,7 +29,7 @@ private String format; /** - * Creates a Data object with the given data and an empty meta-data + * Creates a Data object with the given data and an empty metadata * {@link Dictionary} * * @param data The data being wrapped @@ -39,9 +39,9 @@ } /** - * Creates a Data object with the given data and meta-data {@link Dictionary} + * Creates a Data object with the given data and metadata {@link Dictionary} * - * @param properties The meta-data about the data + * @param properties The metadata about the data * @param data The data being wrapped */ public BasicData(Dictionary properties, Object data, String format) { 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-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/Data.java 2008-02-07 00:15:28 UTC (rev 618) @@ -17,40 +17,36 @@ import java.util.Dictionary; /** - * A class that encapsulates data and its meta-data. This class is used to pass + * 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. * * @author Bruce Herr (bh...@bh...) */ public interface Data { /** - * Returns the meta-data associated with the data stored in this Data object. + * Returns the metadata associated with the data stored in this Data object. * Some standard keys are in the {@link DataProperty} interface. * - * @return The data's meta-data + * @return The data's metadata */ public Dictionary getMetaData(); /** * Returns the data stored in this Data object. * - * @return The data (a java object) + * @return The data (a Java object) */ public Object getData(); /** - * Get the format of the encapsulated data. If the data is a {@link File}, + * Returns the format of the encapsulated data. If the data is a {@link File}, * then this method returns what MIME type it is with "file:" prepended - * (eg. file:text/plain). Otherwise, the string returned should be the java + * (eg. file:text/plain). Otherwise, the string returned should be the Java * class it represents. For algorithms this format should be the same as * their OUT_DATA property. * * @return The main format of the data */ public String getFormat(); - - //TODO: Consider these methods for inclusion in Data - //public String getUID(); //may be better for specifying parent datamodels - //public Object getDataAsFormat(String format); } 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-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/DataProperty.java 2008-02-07 00:15:28 UTC (rev 618) @@ -15,7 +15,7 @@ /** - * Standard property keys to use when creating meta-data for a + * Standard property keys to use when creating metadata for a * {@link Data} object. * * @author Bruce Herr (bh...@bh...) @@ -30,14 +30,13 @@ /** * 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 + * 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} */ public static final String PARENT = "Parent"; - //TODO: should we consider removing this/changing it? /** * The general type of the Data object. Various standard types are created as * constants with name *_TYPE from this class. These can be used, or new @@ -66,9 +65,9 @@ /** Says this data model is abstractly an unknown type */ public static String OTHER_TYPE = "Unknown"; - /** a plain text file */ + /** Says this data model is abstractly a plain text file */ public static String TEXT_TYPE = "Text"; - /** a file can be fed to xmgrace */ - public static String GRACE_TYPE = "Grace"; + /** Says this data model is abstractly an informational graph. */ + public static String GRAPH_TYPE = "Graph"; } Modified: branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/package.html =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/package.html 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/data/package.html 2008-02-07 00:15:28 UTC (rev 618) @@ -2,7 +2,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <title>org.cishell.framework.datamodel Package-level Javadoc</title> + <title>org.cishell.framework.data Package-level Javadoc</title> <!-- /* **************************************************************************** * CIShell: Cyberinfrastructure Shell, An Algorithm Integration Framework. @@ -21,9 +21,10 @@ </head> <body>Provides interfaces required for creating Data objects. <h2>Package Specification</h2> -This package specifies the API related to creation of Data objects. +The API related to creation of Data objects. -TODO: Describe here what a Data object is, how it is used, and why it is used. +@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/framework/package.html =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/framework/package.html 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/framework/package.html 2008-02-07 00:15:28 UTC (rev 618) @@ -2,7 +2,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <title>org.cishell.framework.algorithm Package-level Javadoc</title> + <title>org.cishell.framework Package-level Javadoc</title> <!-- /* **************************************************************************** * CIShell: Cyberinfrastructure Shell, An Algorithm Integration Framework. @@ -19,11 +19,12 @@ * ***************************************************************************/ --> </head> -<body>The base package of the CIShell framework specification. +<body>The core package for the CIShell platform API. <h2>Package Specification</h2> -This package is the root package for the CIShell framework specification +The core package for the CIShell platform API -TODO: Talk about the framework and give links. +@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-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/overview.html 2008-02-07 00:15:28 UTC (rev 618) @@ -2,7 +2,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <title>org.cishell.framework.algorithm Package-level Javadoc</title> + <title>org.cishell Package-level Javadoc</title> <!-- /* **************************************************************************** * CIShell: Cyberinfrastructure Shell, An Algorithm Integration Framework. @@ -20,13 +20,14 @@ --> </head> <body> -This document is the API specification for the CIShell 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> -@see <a href="http://bundles.osgi.org/javadoc/r4/">OSGi Service Platform, +Service Platform Specification, Release 4</a></li> +@see <a href="http://bundles.osgi.org/javadoc/r4/">OSGi Service Platform Release 4 API</a> -@see "The CIShell Specification Paper" +@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/service/conversion/Converter.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/Converter.java 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/Converter.java 2008-02-07 00:15:28 UTC (rev 618) @@ -28,24 +28,24 @@ public interface Converter { /** - * Returns an array of ServiceReferences to converters in the order that - * they will be called when converting a Data + * Returns an array of ServiceReferences to converter algorithms in the order + * in which they will be called when converting a Data object. * - * @return An array ServiceReferences to converters 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 of the correct in format (as specified in the Dictionary from - * getProperties()) to a Data of the correct out format. + * Data object of the correct input format (as specified in the Dictionary + * from getProperties()) to a Data object of the correct output format. * * @return The AlgorithmFactory to do the converting */ public AlgorithmFactory getAlgorithmFactory(); /** - * Get properties of the converter (same as algorithm service properties). + * Get properties of the Converter (same as algorithm service properties). * It is a set of properties that correspond to the * {@link AlgorithmProperty}s properties. The IN_DATA and OUT_DATA * properties are guaranteed to be set in this Dictionary. @@ -56,12 +56,12 @@ public Dictionary getProperties(); /** - * 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 out format + * 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 * - * @param data The Data object with compatible in format - * @return A Data object of correct out format, or <code>null</code> if the + * @param data The Data object with compatible format + * @return A Data object of correct output format, or <code>null</code> if the * conversion fails */ public Data convert(Data data); 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-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/DataConversionService.java 2008-02-07 00:15:28 UTC (rev 618) @@ -23,7 +23,7 @@ * with the OSGi service registry and specified in its service dictionary that * they are a converter. A converter will specify what data format it takes in * ('in_data'), what it converts it to ('out_data'), and whether any information - * will be lost in the conversion ('consersion'='lossless'|'lossy'). Using this + * will be lost in the conversion ('conversion'='lossless'|'lossy'). Using this * and other standard algorithm properties, a DataConversionService will try and * find the fastest, most efficient way to convert from one format to another. * @@ -32,7 +32,7 @@ public interface DataConversionService { /** - * Finds a converter from one format to another if at all possible. The + * Finds converters from one format to another if at all possible. The * 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 @@ -45,42 +45,13 @@ * @param outFormat The type of Data object that should be produced. This * String should be formatted in the same way as an * algorithm's {@link AlgorithmProperty#OUT_DATA}. - * @return An AlgorithmFactory that will convert a Data object of the given - * inFormat to the given outFormat, or <code>null</code> if there is - * no way to convert. + * @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. */ public Converter[] findConverters(String inFormat, String outFormat); /** - * Finds a converter from one format to another falling within the given - * parameters. The max number of converters to use (maxHops) and the - * maximum allowed complexity for the converters to limit the impact a - * conversion will make. The 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 - * within the given parameters, <code>null</code> will be returned. - * - * @param inFormat The type of Data object to be converted. This String - * should be formatted in the same way as an algorithm's - * {@link AlgorithmProperty#IN_DATA}. - * @param outFormat The type of Data object that should be produced. This - * String should be formatted in the same way as an - * algorithm's {@link AlgorithmProperty#OUT_DATA}. - * @param maxHops The maximum number of converters to use for the - * conversion. - * @param maxComplexity The maximum complexity the conversion algorithm can - * have in order to be considered for use in the - * conversion. The format of the String is in big-O - * notation. Examples are 'O(n)', 'O(n^2)', 'O(log(n))'. - * @return An AlgorithmFactory that will convert a Data object of the given - * inFormat to the given outFormat, or <code>null</code> if there is - * no way to convert within the given parameters. - */ - public Converter[] findConverters(String inFormat, String outFormat, - int maxHops, String maxComplexity); - - /** * Tries to find all the converters that can be used to transform the given * Data object to the specified output format * @@ -102,6 +73,4 @@ * <code>null</code> if the conversion fails */ public Data convert(Data data, String outFormat); - - // TODO: More methods of conversion here? } Modified: branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/package.html =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/package.html 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/service/conversion/package.html 2008-02-07 00:15:28 UTC (rev 618) @@ -2,7 +2,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <title>org.cishell.framework.datamodel Package-level Javadoc</title> + <title>org.cishell.service.conversion Package-level Javadoc</title> <!-- /* **************************************************************************** * CIShell: Cyberinfrastructure Shell, An Algorithm Integration Framework. @@ -19,9 +19,12 @@ * ***************************************************************************/ --> </head> -<body>Provides the specification for the CIShell data conversion service. +<body>Provides interfaces for the CIShell Data Conversion Service. <h2>Package Specification</h2> -This package specifies the API related to the data conversion service. +The API related to the Data Conversion Service. +@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/service/guibuilder/GUIBuilderService.java =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUIBuilderService.java 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/GUIBuilderService.java 2008-02-07 00:15:28 UTC (rev 618) @@ -28,11 +28,10 @@ * 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. More information about MetaTypeProvider and - * MetaTypeService is available in the OSGi Service Platform Specification, - * Release 4 Service Compendium, Section 105 (pg 129). You can download it at - * <a href="http://www.osgi.org/osgi_technology/download_specs.asp"> - * http://www.osgi.org/osgi_technology/download_specs.asp</a>. + * a MetaTypeProvider instance. 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 + * service. * * 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 Modified: branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/package.html =================================================================== --- branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/package.html 2008-02-05 17:32:44 UTC (rev 617) +++ branches/spec_update/org.cishell.framework/src/org/cishell/service/guibuilder/package.html 2008-02-07 00:15:28 UTC (rev 618) @@ -2,7 +2,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <title>org.cishell.framework.datamodel Package-level Javadoc</title> + <title>org.cishell.service.guibuilder Package-level Javadoc</title> <!-- /* **************************************************************************** * CIShell: Cyberinfrastructure Shell, An Algorithm Integration Framework. @@ -19,9 +19,12 @@ * ***************************************************************************/ --> </head> -<body>Provides the specification for the CIShell GUI builder service. +<body>Provides interfaces for the CIShell GUI Builder Service. <h2>Package Specification</h2> -This package specifies the API related to the GUI builder service. +The API related to the GUI Builder Service. +@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: trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-02-05 17:32:44 UTC (rev 617) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-02-07 00:15:28 UTC (rev 618) @@ -92,13 +92,13 @@ \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). 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. +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 +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 +set at all, then it is up to the algorithm to set up these relationships. \subsection*{type} Specifies the type of the algorithm. If no type is set, then @@ -129,12 +129,12 @@ 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, ``end'' for being placed at the end of the menu. Some +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''. \subsection*{conversion} -For converters algorithms, this metadata element specifies if any data is +For converter algorithms, this metadata element specifies if any data is lossed 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-05 17:32:44 UTC (rev 617) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-02-07 00:15:28 UTC (rev 618) @@ -78,7 +78,7 @@ \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 convert the - item producing a single \class{Data} item. This must be reflected in 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''. Modified: trunk/core/org.cishell.docs/src/specification/tex/introduction.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/introduction.tex 2008-02-05 17:32:44 UTC (rev 617) +++ trunk/core/org.cishell.docs/src/specification/tex/introduction.tex 2008-02-07 00:15:28 UTC (rev 618) @@ -52,3 +52,26 @@ 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. + +\begin{table}[h!] +\begin{tabular}{l l l} +\textbf{Item} & \textbf{Package} & \textbf{Version} \\ +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 \\ +Data Conversion Service Specification & org.cishell.service.conversion & +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 \\ +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 & +Version 1.0 \\ +\end{tabular} +\caption{Packages and Versions} +\label{table:packageVersions} +\end{table} \ No newline at end of file Modified: trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex 2008-02-05 17:32:44 UTC (rev 617) +++ trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex 2008-02-07 00:15:28 UTC (rev 618) @@ -6,13 +6,13 @@ implementation. Each additional required service is described in the OSGi Service Platform Service Compendium R4. -\subsection*{Required Service} +\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 by bundles. + \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 algorithms and services. See chapter \ref{logService} for more details. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-02-05 17:32:47
|
Revision: 617 http://cishell.svn.sourceforge.net/cishell/?rev=617&view=rev Author: bh2 Date: 2008-02-05 09:32:44 -0800 (Tue, 05 Feb 2008) Log Message: ----------- Installer now installs to the user's Desktop on windows platforms. Modified Paths: -------------- trunk/deployment/org.cishell.reference.releng/installer/build.xml Added Paths: ----------- trunk/deployment/org.cishell.reference.releng/installer/info/target_location.windows.txt Modified: trunk/deployment/org.cishell.reference.releng/installer/build.xml =================================================================== --- trunk/deployment/org.cishell.reference.releng/installer/build.xml 2008-02-01 19:19:04 UTC (rev 616) +++ trunk/deployment/org.cishell.reference.releng/installer/build.xml 2008-02-05 17:32:44 UTC (rev 617) @@ -137,6 +137,7 @@ id="Unix_shortcutSpec.xml"/> <res id="InfoPanel.info" src="info/thanks.txt" parse="yes" /> <res id="XInfoPanel.info" src="info/mac_instructions.txt" parse="yes" /> + <res id="TargetPanel.dir.windows" src="info/target_location.windows.txt"/> </resources> <native type="izpack" name="ShellLink.dll" /> @@ -168,4 +169,4 @@ ]]></config> </izpack> </target> -</project> \ No newline at end of file +</project> Added: trunk/deployment/org.cishell.reference.releng/installer/info/target_location.windows.txt =================================================================== --- trunk/deployment/org.cishell.reference.releng/installer/info/target_location.windows.txt (rev 0) +++ trunk/deployment/org.cishell.reference.releng/installer/info/target_location.windows.txt 2008-02-05 17:32:44 UTC (rev 617) @@ -0,0 +1,3 @@ +$SYSTEM_user_home\Desktop\$archivePrefix + + Property changes on: trunk/deployment/org.cishell.reference.releng/installer/info/target_location.windows.txt ___________________________________________________________________ Name: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-02-01 19:19:12
|
Revision: 616 http://cishell.svn.sourceforge.net/cishell/?rev=616&view=rev Author: bh2 Date: 2008-02-01 11:19:04 -0800 (Fri, 01 Feb 2008) Log Message: ----------- * Decided against refactoring service listeners to be services themselves * Discussion on recommended logging at different levels * Expanded several services' specification text * Commented out bibliography section until we have references to reference, if ever * Expanded several sections * Described OSGi Prerequisites 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/algorithmtypes.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/logservice.tex trunk/core/org.cishell.docs/src/specification/tex/preferencesservice.tex trunk/core/org.cishell.docs/src/specification/tex/schedulerservice.tex Added Paths: ----------- trunk/core/org.cishell.docs/src/img/guiCreationWorkflow.dia trunk/core/org.cishell.docs/src/img/guiCreationWorkflow.eps trunk/core/org.cishell.docs/src/img/guiCreationWorkflow.pdf trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex Added: trunk/core/org.cishell.docs/src/img/guiCreationWorkflow.dia =================================================================== (Binary files differ) Property changes on: trunk/core/org.cishell.docs/src/img/guiCreationWorkflow.dia ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/core/org.cishell.docs/src/img/guiCreationWorkflow.eps =================================================================== --- trunk/core/org.cishell.docs/src/img/guiCreationWorkflow.eps (rev 0) +++ trunk/core/org.cishell.docs/src/img/guiCreationWorkflow.eps 2008-02-01 19:19:04 UTC (rev 616) @@ -0,0 +1,463 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: /home/bherr/workspace/org.cishell.docs/src/img/guiCreationWorkflow.dia +%%Creator: Dia v0.96.1 +%%CreationDate: Fri Feb 1 12:08:35 2008 +%%For: bherr +%%Orientation: Portrait +%%Magnification: 1.0000 +%%BoundingBox: 0 0 564 234 +%%BeginSetup +%%EndSetup +%%EndComments +%%BeginProlog +[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E +/F /G /H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W /X /Y +/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c +/d /e /f /g /h /i /j /k /l /m +/n /o /p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright +/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior +/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf +/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde +/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex +/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring +/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def +/cp {closepath} bind def +/c {curveto} bind def +/f {fill} bind def +/a {arc} bind def +/ef {eofill} bind def +/ex {exch} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth pop} bind def +/tr {translate} bind def + +/ellipsedict 8 dict def +ellipsedict /mtrx matrix put +/ellipse +{ ellipsedict begin + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def /savematrix mtrx currentmatrix def + x y tr xrad yrad sc + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} def + +/mergeprocs { +dup length +3 -1 roll +dup +length +dup +5 1 roll +3 -1 roll +add +array cvx +dup +3 -1 roll +0 exch +putinterval +dup +4 2 roll +putinterval +} bind def +/Times-Roman-latin1 + /Times-Roman findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Times-Italic-latin1 + /Times-Italic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Times-Bold-latin1 + /Times-Bold findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Times-BoldItalic-latin1 + /Times-BoldItalic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/AvantGarde-Book-latin1 + /AvantGarde-Book findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/AvantGarde-BookOblique-latin1 + /AvantGarde-BookOblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/AvantGarde-Demi-latin1 + /AvantGarde-Demi findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/AvantGarde-DemiOblique-latin1 + /AvantGarde-DemiOblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Bookman-Light-latin1 + /Bookman-Light findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Bookman-LightItalic-latin1 + /Bookman-LightItalic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Bookman-Demi-latin1 + /Bookman-Demi findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Bookman-DemiItalic-latin1 + /Bookman-DemiItalic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Courier-latin1 + /Courier findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Courier-Oblique-latin1 + /Courier-Oblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Courier-Bold-latin1 + /Courier-Bold findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Courier-BoldOblique-latin1 + /Courier-BoldOblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-latin1 + /Helvetica findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-Oblique-latin1 + /Helvetica-Oblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-Bold-latin1 + /Helvetica-Bold findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-BoldOblique-latin1 + /Helvetica-BoldOblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-Narrow-latin1 + /Helvetica-Narrow findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-Narrow-Oblique-latin1 + /Helvetica-Narrow-Oblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-Narrow-Bold-latin1 + /Helvetica-Narrow-Bold findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Helvetica-Narrow-BoldOblique-latin1 + /Helvetica-Narrow-BoldOblique findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/NewCenturySchoolbook-Roman-latin1 + /NewCenturySchoolbook-Roman findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/NewCenturySchoolbook-Italic-latin1 + /NewCenturySchoolbook-Italic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/NewCenturySchoolbook-Bold-latin1 + /NewCenturySchoolbook-Bold findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/NewCenturySchoolbook-BoldItalic-latin1 + /NewCenturySchoolbook-BoldItalic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Palatino-Roman-latin1 + /Palatino-Roman findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Palatino-Italic-latin1 + /Palatino-Italic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Palatino-Bold-latin1 + /Palatino-Bold findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Palatino-BoldItalic-latin1 + /Palatino-BoldItalic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/Symbol-latin1 + /Symbol findfont +definefont pop +/ZapfChancery-MediumItalic-latin1 + /ZapfChancery-MediumItalic findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +/ZapfDingbats-latin1 + /ZapfDingbats findfont + dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding isolatin1encoding def + currentdict end +definefont pop +28.346000 -28.346000 scale +1.430000 -10.305000 translate +%%EndProlog + + +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n -1.380000 2.130000 m -1.380000 4.330000 l 6.587500 4.330000 l 6.587500 2.130000 l f +0.000000 0.000000 0.000000 srgb +n -1.380000 2.130000 m -1.380000 4.330000 l 6.587500 4.330000 l 6.587500 2.130000 l cp s +/Courier-latin1 ff 0.560000 scf sf +(<<interface>>) 0.328750 2.632500 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) -1.130000 3.600000 m +dup sw 7.467500 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 +n 0.070000 7.605000 m 0.070000 9.805000 l 5.120000 9.805000 l 5.120000 7.605000 l f +0.000000 0.000000 0.000000 srgb +n 0.070000 7.605000 m 0.070000 9.805000 l 5.120000 9.805000 l 5.120000 7.605000 l cp s +/Courier-latin1 ff 0.560000 scf sf +(<<interface>>) 0.320000 8.107500 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 +(GUI) 1.862500 9.075000 m +dup sw 1.465000 exch sub +3 div exch 0.0 exch + gs 1 -1 sc ashow gr +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 10.395000 2.130000 m 10.395000 4.330000 l 18.347500 4.330000 l 18.347500 2.130000 l f +0.000000 0.000000 0.000000 srgb +n 10.395000 2.130000 m 10.395000 4.330000 l 18.347500 4.330000 l 18.347500 2.130000 l cp s +/Courier-latin1 ff 0.560000 scf sf +(<<interface>>) 12.096250 2.632500 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) 10.645000 3.600000 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 sd +0 slj +0 slc +n 18.390237 3.390461 m 17.295537 4.430261 l 18.389537 4.430261 l ef +n 18.390237 3.390461 m 17.295537 4.430261 l 18.389537 4.430261 l cp s +0.100000 slw +[] 0 sd +1.000000 1.000000 1.000000 srgb +n 9.383141 7.603098 m 9.383141 9.803098 l 17.073141 9.803098 l 17.073141 7.603098 l f +0.000000 0.000000 0.000000 srgb +n 9.383141 7.603098 m 9.383141 9.803098 l 17.073141 9.803098 l 17.073141 7.603098 l cp s +/Courier-latin1 ff 0.560000 scf sf +(<<interface>>) 10.953141 8.105598 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 +(SelectionListener) 9.633141 9.073098 m +dup sw 7.190000 exch sub +17 div exch 0.0 exch + gs 1 -1 sc ashow gr +0.100000 slw +[] 0 sd +0 slj +0 slc +n 6.637009 3.230000 m 7.570000 3.230000 l 7.570000 3.230000 l 10.395000 3.230000 l s +/Courier-latin1 ff 0.560000 scf sf +(given) 7.670000 2.950000 m +dup sw 1.750000 exch sub +5 div exch 0.0 exch + gs 1 -1 sc ashow gr +(n) 6.837009 2.950000 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 9.845000 2.950000 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 14.371250 4.380258 m 14.371250 6.101090 l 2.595000 6.101090 l 2.595000 7.554982 l s +(Creates) 7.258125 5.821090 m +dup sw 2.450000 exch sub +7 div exch 0.0 exch + gs 1 -1 sc ashow gr +(1) 14.571250 4.782758 m +dup sw 0.350000 exch sub +1 div exch 0.0 exch + gs 1 -1 sc ashow gr +(n) 2.795000 7.157482 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 5.167678 8.705000 m 5.819508 8.705000 l 5.819508 8.703098 l 9.333453 8.703098 l s +(notifies) 5.919508 8.424049 m +dup sw 2.800000 exch sub +8 div exch 0.0 exch + gs 1 -1 sc ashow gr +showpage Added: trunk/core/org.cishell.docs/src/img/guiCreationWorkflow.pdf =================================================================== (Binary files differ) Property changes on: trunk/core/org.cishell.docs/src/img/guiCreationWorkflow.pdf ___________________________________________________________________ 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-02-01 16:10:45 UTC (rev 615) +++ trunk/core/org.cishell.docs/src/specification/main.tex 2008-02-01 19:19:04 UTC (rev 616) @@ -36,6 +36,7 @@ \input{./tex/introduction.tex} \input{./tex/framework.tex} +\input{./tex/osgidependencies.tex} \input{./tex/algorithms.tex} \input{./tex/algorithmtypes.tex} \input{./tex/data.tex} @@ -52,9 +53,10 @@ \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} +% \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-02-01 16:10:45 UTC (rev 615) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-02-01 19:19:04 UTC (rev 616) @@ -14,7 +14,7 @@ To be recognized by CIShell, an \class{AlgorithmFactory} must be registered with OSGi's Service Registry. The service registry requires three things when -registering: An interface (\class{AlgorithmFactory}), an implementation, and a +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}. Modified: trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-02-01 16:10:45 UTC (rev 615) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-02-01 19:19:04 UTC (rev 616) @@ -48,16 +48,17 @@ 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 ``menu\_path''. - \item The algorithm's service metadata must not have a ``type'' set. \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 The algorithm's service metadata should have ``parentage=default'' if it wishes to use the default \class{Data} parenting scheme described in section \ref{algMetaData}. + \item The algorithm's service metadata does not need to have a ``type'' set. \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''. @@ -83,7 +84,7 @@ \item The algorithm's service metadata must contain a legal ``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 lossed during conversion or ``conversion=lossless'' if not. + data is lost during conversion or ``conversion=lossless'' if not. \end{itemize} \subsubsection*{Optional:} @@ -107,7 +108,9 @@ necessary due to the fact that one cannot simply assume based on the file extension what type of file format the data is in. Checking the contents of the file is necessary, especially in the case of multiple file formats for the same -file extension (e.g., XML). A validator algorithm has the following constraints: +file extension (e.g., XML). This type of algorithm is important for reliably +bringing in outside data and saving out data from CIShell. A validator algorithm +has the following constraints: \subsubsection*{Required:} \begin{itemize} Modified: trunk/core/org.cishell.docs/src/specification/tex/dataconversionservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/dataconversionservice.tex 2008-02-01 16:10:45 UTC (rev 615) +++ trunk/core/org.cishell.docs/src/specification/tex/dataconversionservice.tex 2008-02-01 19:19:04 UTC (rev 616) @@ -25,17 +25,18 @@ \section{Data Conversion Service} The Data Conversion Service provides unified access to converter algorithms. -\class{DataConversionService} system developers may choose not to use converter -algorithms, but is ill-advised. Also, good implementations will take advantage of -the nature of algorithms to allow for more than just single hop conversions. -Since all converter algorithms specify a single data object in and a single data -object out, a graph can be constructed where nodes are the data formats and edges -are the converters. Using this directed graph, when a conversion between data -formats is requested, the \class{DataConversionService} will choose the shortest -path of converters to do the conversion. A hypothetical conversion graph is -illustrated in figure \ref{fig:conversionGraph}. +\class{DataConversionService} system developers may choose not to leverage +converter algorithms, but this is ill-advised. Also, good implementations will +take advantage of the nature of converter algorithms to allow for more than just +single hop conversions. Since all converter algorithms specify a single data +object in and a single data object out, a graph can be constructed where nodes +are the data formats and edges are the converters. Using this directed graph, +when a conversion between data formats is requested, the +\class{DataConversionService} will choose the shortest path of converters to do +the conversion. A hypothetical conversion graph is illustrated in figure +\ref{fig:conversionGraph}. -\begin{figure}[htb!] +\begin{figure}[h!] \centering \includegraphics[width=70mm]{../img/conversionGraph.pdf} \caption{A Conversion Graph} Modified: trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex 2008-02-01 16:10:45 UTC (rev 615) +++ trunk/core/org.cishell.docs/src/specification/tex/datamanagerservice.tex 2008-02-01 19:19:04 UTC (rev 616) @@ -20,13 +20,7 @@ implementation of \class{DataManagerListener} with empty method implementations. \item \textit{Data} - The interface used to pass data (other than - parameters) and meta-data between algorithms. + parameters) and its metadata between algorithms. \end{itemize} -\section{Data Manager Service} - -\comments{Needs to be expanded\ldots} -\comments{Refactor listeners to be services a la: -http://www.osgi.org/documents/osgi\_technology/whiteboard.pdf } - \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-02-01 16:10:45 UTC (rev 615) +++ trunk/core/org.cishell.docs/src/specification/tex/framework.tex 2008-02-01 19:19:04 UTC (rev 616) @@ -8,12 +8,14 @@ CIShell. The key components being algorithms, data, and CIShell service access. \subsection{Essentials} - -\comments{Needs work} \begin{itemize} \item \textit{Application Independence} - Algorithms must be usable in a wide - variety of contexts and should not be tied to any one front end where - possible. + 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 Modified: trunk/core/org.cishell.docs/src/specification/tex/guibuilderservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/guibuilderservice.tex 2008-02-01 16:10:45 UTC (rev 615) +++ trunk/core/org.cishell.docs/src/specification/tex/guibuilderservice.tex 2008-02-01 19:19:04 UTC (rev 616) @@ -2,13 +2,14 @@ \section*{\textit{Version 1.0}} \section{Introduction} -The GUI Builder Service provides a user-interface-agnostic solution to -create UIs for simple user input. The UIs are built from the user interface -specification provided by \class{MetaTypeProvider} and requires no UI coding to -be done other than providing an implementation of \class{MetaTypeProvider}. -Information on creating these classes can be found in section \ref{GUISpec}. In -addition to this, simple methods for creating warnings, pop-ups, and -simple yes/no dialog boxes are provided by the GUI Builder Service. +The GUI Builder Service provides a user-interface-agnostic solution to create UIs +for simple user input. The UIs are built from the user interface specification +provided by \class{MetaTypeProvider} and requires no UI coding to be done other +than providing an implementation of \class{MetaTypeProvider}. Information on +creating these classes can be found in section \ref{GUISpec}. In addition, simple +methods for creating warnings, pop-ups, and simple yes/no dialog boxes are +provided by the GUI Builder Service. The GUI creation workflow is illustrated in +figure \ref{fig:guiCreationWorkflow}. \subsection{Entities} @@ -23,9 +24,11 @@ generated by the user's interaction with the UI. \end{itemize} -\section{GUI Builder Service} +\begin{figure}[htb!] +\centering +\includegraphics[width=90mm]{../img/guiCreationWorkflow.pdf} +\caption{GUI Creation Workflow} +\label{fig:guiCreationWorkflow} +\end{figure} -\comments{Needs expanded. Should probably talk about remote GUIs\ldots} -\comments{Insert a figure of the interaction between the entities\ldots} - \orgcishellserviceguibuilder{} Modified: trunk/core/org.cishell.docs/src/specification/tex/logservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/logservice.tex 2008-02-01 16:10:45 UTC (rev 615) +++ trunk/core/org.cishell.docs/src/specification/tex/logservice.tex 2008-02-01 19:19:04 UTC (rev 616) @@ -1,4 +1,5 @@ \chapter{Log Service Specification} +\label{logService} \section*{Version 1.3} \section{Introduction} @@ -7,6 +8,25 @@ 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''. +under ``Log Service Specification''. Recommend output per log level for CIShell +algorithms are listed in table \ref{table:logLevels}. -\comments{Perhaps a discussion on recommend logging at different levels} \ No newline at end of file +\begin{table}[htb!] +\begin{center} +\begin{tabular}{l p{12cm}} +\textbf{Log Level} & \textbf{Recommended Use} \\ +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 +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. \\ +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. +\end{tabular} +\end{center} +\caption{Log Level Recommendations for Algorithms} +\label{table:logLevels} +\end{table} \ No newline at end of file Added: trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex (rev 0) +++ trunk/core/org.cishell.docs/src/specification/tex/osgidependencies.tex 2008-02-01 19:19:04 UTC (rev 616) @@ -0,0 +1,33 @@ +\section{OSGi Dependencies} + +CIShell is built to be run in a fully compliant OSGi Service Platform R4 +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. + +\subsection*{Required Service} +\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 by bundles. + \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. + \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 + more details. + \item[Configuration Admin Service] \comments{More details when the expanded + prefs spec is done\ldots} +\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[] +\end{description} Modified: trunk/core/org.cishell.docs/src/specification/tex/preferencesservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/preferencesservice.tex 2008-02-01 16:10:45 UTC (rev 615) +++ trunk/core/org.cishell.docs/src/specification/tex/preferencesservice.tex 2008-02-01 19:19:04 UTC (rev 616) @@ -1,4 +1,5 @@ \chapter{Preferences Service Specification} +\label{preferencesService} \section*{Version 1.1} \section{Introduction} Modified: trunk/core/org.cishell.docs/src/specification/tex/schedulerservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/schedulerservice.tex 2008-02-01 16:10:45 UTC (rev 615) +++ trunk/core/org.cishell.docs/src/specification/tex/schedulerservice.tex 2008-02-01 19:19:04 UTC (rev 616) @@ -21,10 +21,4 @@ implementations. \end{itemize} -\section{Scheduler Service} - -\comments{Needs to be expanded\ldots} -\comments{Refactor listeners to be services a la: -http://www.osgi.org/documents/osgi\_technology/whiteboard.pdf } - \orgcishellappservicescheduler{} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-02-01 16:10:54
|
Revision: 615 http://cishell.svn.sourceforge.net/cishell/?rev=615&view=rev Author: bh2 Date: 2008-02-01 08:10:45 -0800 (Fri, 01 Feb 2008) Log Message: ----------- branching the framework bundle, so nothing breaks while the spec/api is updated. Added Paths: ----------- branches/spec_update/org.cishell.framework/ Copied: branches/spec_update/org.cishell.framework (from rev 614, trunk/core/org.cishell.framework) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-02-01 16:10:14
|
Revision: 614 http://cishell.svn.sourceforge.net/cishell/?rev=614&view=rev Author: bh2 Date: 2008-02-01 08:10:00 -0800 (Fri, 01 Feb 2008) Log Message: ----------- branching the framework bundle, so nothing breaks while the spec/api is updated. Added Paths: ----------- branches/spec_update/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-02-01 01:48:15
|
Revision: 613 http://cishell.svn.sourceforge.net/cishell/?rev=613&view=rev Author: bh2 Date: 2008-01-31 17:48:12 -0800 (Thu, 31 Jan 2008) Log Message: ----------- The road to buggy software is paved with many 'quick fixes'... Updated StaticExecutableRunner to no longer spawn any threads. All logging and polling is done in the thread the algorithm was executed in. Modified Paths: -------------- trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java Modified: trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java =================================================================== --- trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java 2008-01-31 21:07:23 UTC (rev 612) +++ trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java 2008-02-01 01:48:12 UTC (rev 613) @@ -13,11 +13,10 @@ * ***************************************************************************/ package org.cishell.templates.staticexecutable; -import java.io.BufferedReader; +import java.io.EOFException; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Dictionary; @@ -46,318 +45,341 @@ * @author Bruce Herr (bh...@bh...) */ public class StaticExecutableRunner implements Algorithm { - protected final String tempDir; - protected final GUIBuilderService guiBuilder; - protected final Data[] data; - protected Dictionary parameters; - protected Properties props; - protected CIShellContext ciContext; - - protected ProgressMonitor monitor; - - protected Boolean processRunning = new Boolean(true); - protected Boolean killedOnPurpose = new Boolean(false); - + protected final String tempDir; + protected final GUIBuilderService guiBuilder; + protected final Data[] data; + protected Dictionary parameters; + protected Properties props; + protected CIShellContext ciContext; + protected ProgressMonitor monitor; - public StaticExecutableRunner(BundleContext bContext, CIShellContext ciContext, Properties props, - Dictionary parameters, Data[] data, ProgressMonitor monitor) throws IOException { - this.ciContext = ciContext; - this.props = props; - this.parameters = parameters; - this.data = data; - - this.monitor = monitor; - - guiBuilder = (GUIBuilderService)ciContext.getService(GUIBuilderService.class.getName()); + public StaticExecutableRunner(BundleContext bContext, + CIShellContext ciContext, Properties props, Dictionary parameters, + Data[] data, ProgressMonitor monitor) throws IOException { + this.ciContext = ciContext; + this.props = props; + this.parameters = parameters; + this.data = data; + this.monitor = monitor; + if (monitor == null) + this.monitor = ProgressMonitor.NULL_MONITOR; + if (data == null) + data = new Data[0]; + if (parameters == null) + parameters = new Hashtable(); - - if (data == null) data = new Data[0]; - if (parameters == null) parameters = new Hashtable(); - - tempDir = makeTempDirectory(); - } - - /** - * @see org.cishell.framework.algorithm.Algorithm#execute() - */ - public Data[] execute() { - try { - String algDir = tempDir + File.separator + props.getProperty("Algorithm-Directory") - + File.separator; - - chmod(algDir); - File[] output = execute(getTemplate(algDir), algDir); - - return toData(output); - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException(e); - } - } - - protected Data[] toData(File[] files) { - String outData = (String)props.get(AlgorithmProperty.OUT_DATA); - - //if out data is null then it returns no data - if ((""+outData).trim().equalsIgnoreCase(AlgorithmProperty.NULL_DATA)) { - return null; - } - - String[] formats = outData.split(","); - - Map nameToFileMap = new HashMap(); - for (int i=0; i < files.length; i++) { - nameToFileMap.put(files[i].getName(), files[i]); - } - - Data[] data = null; - if (formats.length > files.length) { - data = new Data[formats.length]; - } else { - data = new Data[files.length]; - } - - for (int i=0; i < data.length; i++) { - String file = props.getProperty("outFile["+i+"]", null); - - if (i < formats.length) { - File f = (File) nameToFileMap.remove(file); - - if (f != null) { - data[i] = new BasicData(f,formats[i]); - - String label = props.getProperty("outFile["+i+"].label", f.getName()); - data[i].getMetaData().put(DataProperty.LABEL, label); - - String type = props.getProperty("outFile["+i+"].type", DataProperty.OTHER_TYPE); - type = type.trim(); - if (type.equalsIgnoreCase(DataProperty.MATRIX_TYPE)) { - type = DataProperty.MATRIX_TYPE; - } else if (type.equalsIgnoreCase(DataProperty.NETWORK_TYPE)) { - type = DataProperty.NETWORK_TYPE; - } else if (type.equalsIgnoreCase(DataProperty.TREE_TYPE)) { - type = DataProperty.TREE_TYPE; - } else if(type.equalsIgnoreCase(DataProperty.TEXT_TYPE)){ - type = DataProperty.TEXT_TYPE; - } else if (type.equalsIgnoreCase(DataProperty.GRACE_TYPE)){ - type = DataProperty.GRACE_TYPE; - } else { - type = DataProperty.OTHER_TYPE; - } - - data[i].getMetaData().put(DataProperty.TYPE, type); - } - } else { - Iterator iter = nameToFileMap.values().iterator(); - while (iter.hasNext()) { - File f = (File) iter.next(); - - data[i] = new BasicData(f, "file:text/plain"); - data[i].getMetaData().put(DataProperty.LABEL, f.getName()); - - i++; - } - break; - } - } - - return data; - } - - protected void chmod(String baseDir) { - //FIXME: Surely java has a way to do this!!!! - if (new File("/bin/chmod").exists()) { - try { - String executable = baseDir + props.getProperty("executable"); - Runtime.getRuntime().exec("/bin/chmod +x " + executable).waitFor(); - } catch (IOException e) { - e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - - protected File[] execute(String[] cmdarray, String baseDir) throws Exception { - File dir = new File(baseDir); - String[] beforeFiles = dir.list(); - - final Process process = Runtime.getRuntime().exec(cmdarray, null, new File(baseDir)); - - process.getOutputStream().close(); - - this.processRunning = new Boolean(true); - - //start thread to consume stdout of process - - new Thread(new Runnable() { - public void run() { - logStream(LogService.LOG_INFO, process.getInputStream()); + guiBuilder = (GUIBuilderService) ciContext + .getService(GUIBuilderService.class.getName()); + tempDir = makeTempDirectory(); + } + + /** + * @see org.cishell.framework.algorithm.Algorithm#execute() + */ + public Data[] execute() { + try { + String algDir = tempDir + File.separator + + props.getProperty("Algorithm-Directory") + File.separator; + + chmod(algDir); + File[] output = execute(getTemplate(algDir), algDir); + + return toData(output); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + } + + protected Data[] toData(File[] files) { + String outData = (String) props.get(AlgorithmProperty.OUT_DATA); + + // if out data is null then it returns no data + if (("" + outData).trim().equalsIgnoreCase(AlgorithmProperty.NULL_DATA)) { + return null; + } + + String[] formats = outData.split(","); + + Map nameToFileMap = new HashMap(); + for (int i = 0; i < files.length; i++) { + nameToFileMap.put(files[i].getName(), files[i]); + } + + Data[] data = null; + if (formats.length > files.length) { + data = new Data[formats.length]; + } else { + data = new Data[files.length]; + } + + for (int i = 0; i < data.length; i++) { + String file = props.getProperty("outFile[" + i + "]", null); + + if (i < formats.length) { + File f = (File) nameToFileMap.remove(file); + + if (f != null) { + data[i] = new BasicData(f, formats[i]); + + String label = props.getProperty( + "outFile[" + i + "].label", f.getName()); + data[i].getMetaData().put(DataProperty.LABEL, label); + + String type = props.getProperty("outFile[" + i + "].type", + DataProperty.OTHER_TYPE); + type = type.trim(); + if (type.equalsIgnoreCase(DataProperty.MATRIX_TYPE)) { + type = DataProperty.MATRIX_TYPE; + } else if (type.equalsIgnoreCase(DataProperty.NETWORK_TYPE)) { + type = DataProperty.NETWORK_TYPE; + } else if (type.equalsIgnoreCase(DataProperty.TREE_TYPE)) { + type = DataProperty.TREE_TYPE; + } else if (type.equalsIgnoreCase(DataProperty.TEXT_TYPE)) { + type = DataProperty.TEXT_TYPE; + } else if (type.equalsIgnoreCase(DataProperty.GRACE_TYPE)) { + type = DataProperty.GRACE_TYPE; + } else { + type = DataProperty.OTHER_TYPE; + } + + data[i].getMetaData().put(DataProperty.TYPE, type); + } + } else { + Iterator iter = nameToFileMap.values().iterator(); + while (iter.hasNext()) { + File f = (File) iter.next(); + + data[i] = new BasicData(f, "file:text/plain"); + data[i].getMetaData().put(DataProperty.LABEL, f.getName()); + + i++; + } + break; } - }).start(); - - //start thread to consume stderr of process - - new Thread(new Runnable() { - public void run() { - logStream(LogService.LOG_ERROR, process.getErrorStream()); + } + + return data; + } + + protected void chmod(String baseDir) { + // FIXME: Surely java has a way to do this!!!! + if (new File("/bin/chmod").exists()) { + try { + String executable = baseDir + props.getProperty("executable"); + Runtime.getRuntime().exec("/bin/chmod +x " + executable) + .waitFor(); + } catch (IOException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); } - }).start(); - - //if we have a monitor... - if (this.monitor != null) { - this.monitor.start(ProgressMonitor.CANCELLABLE, -1); - - //start thread that checks if the user wants to cancel the process - - new Thread(new Runnable() { - public void run() { - checkForCancellation(process); - } - }).start(); - } + } + } - process.waitFor(); - - - this.processRunning = new Boolean(false); - - if (this.monitor != null) { - - this.monitor.done(); - } + protected File[] execute(String[] cmdarray, String baseDir) + throws Exception { + File dir = new File(baseDir); + String[] beforeFiles = dir.list(); - //if the process failed unexpectedly... - if (process.exitValue() != 0 && this.killedOnPurpose.booleanValue() != true) { - //display the error message using gui builder - guiBuilder.showError("Algorithm Could Not Finish Execution", "Sorry, the algorithm could not finish execution.", - "Please check the console window for the error log messages and report the bug.\n" - +"Thank you."); - } - - //get the files output from the process - - String[] afterFiles = dir.list(); - - Arrays.sort(beforeFiles); - Arrays.sort(afterFiles); - - List outputs = new ArrayList(); - - int beforeIndex = 0; - int afterIndex = 0; - - while (beforeIndex < beforeFiles.length && afterIndex < afterFiles.length) { - if (beforeFiles[beforeIndex].equals(afterFiles[afterIndex])) { - beforeIndex++; - afterIndex++; - } else { - outputs.add(new File(baseDir + afterFiles[afterIndex])); - afterIndex++; - } - } - - //get any remaining new files - while (afterIndex < afterFiles.length) { - outputs.add(new File(baseDir + afterFiles[afterIndex])); - afterIndex++; - } - - return (File[]) outputs.toArray(new File[]{}); - } - - protected void logStream(int logLevel, InputStream is) { - LogService log = (LogService) ciContext.getService(LogService.class.getName()); - - if (log == null) return; - - BufferedReader reader = new BufferedReader(new InputStreamReader(is)); + final Process process = Runtime.getRuntime().exec(cmdarray, null, + new File(baseDir)); + process.getOutputStream().close(); + monitor.start(ProgressMonitor.CANCELLABLE, -1); + + InputStream in = process.getInputStream(); + StringBuffer in_buffer = new StringBuffer(); + + InputStream err = process.getErrorStream(); + StringBuffer err_buffer = new StringBuffer(); - try { - String line = reader.readLine(); - while (line != null) { - log.log(logLevel, line); - line = reader.readLine(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - protected void checkForCancellation(Process process) { - while (StaticExecutableRunner.this.processRunning.booleanValue()) { - if (StaticExecutableRunner.this.monitor.isCanceled()) { - StaticExecutableRunner.this.killedOnPurpose = new Boolean(true); - process.destroy(); - } else { - } - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - } - } - } + Integer exitValue = null; + boolean killedOnPurpose = false; + while (!killedOnPurpose && exitValue == null) { + in_buffer = logStream(LogService.LOG_INFO, in, in_buffer); + err_buffer = logStream(LogService.LOG_ERROR, err, err_buffer); - protected String[] getTemplate(String algDir) { - String template = "" + props.getProperty("template"); - String[] cmdarray = template.split("\\s"); - - for (int i=0; i < cmdarray.length; i++) { - cmdarray[i] = substiteVars(cmdarray[i]); - } - - //TODO: Expanded later to support .cmd and other extensions - if (!new File(algDir + cmdarray[0]).exists()) { - if (new File(algDir + cmdarray[0] + ".bat").exists()) { - cmdarray[0] = cmdarray[0]+".bat"; - } - } - cmdarray[0] = algDir + cmdarray[0]; - - return cmdarray; - } - - protected String substiteVars(String str) { - str = str.replaceAll("\\$\\{executable\\}", props.getProperty("executable")); - - for (int i=0; i < data.length; i++) { - String file = ((File) data[i].getData()).getAbsolutePath(); - - if (File.separatorChar == '\\') { - file = file.replace(File.separatorChar, '/'); - } - - str = str.replaceAll("\\$\\{inFile\\["+i+"\\]\\}", file); - - if (File.separatorChar == '\\') { - str = str.replace('/',File.separatorChar); - } - } - - for (Enumeration i=parameters.keys(); i.hasMoreElements(); ) { - String key = (String)i.nextElement(); - Object value = parameters.get(key); - - if (value == null) value = ""; - - str = str.replaceAll("\\$\\{"+key+"\\}", value.toString()); - } - - return str; - } - - public File getTempDirectory() { - return new File(tempDir); - } - - protected String makeTempDirectory() throws IOException { - File sessionDir = Activator.getTempDirectory(); - File dir = File.createTempFile("StaticExecutableRunner-", "", sessionDir); - - dir.delete(); - dir.mkdirs(); - - return dir.getAbsolutePath(); - } + if (monitor.isCanceled()) { + killedOnPurpose = true; + process.destroy(); + } + + try { + int value = process.exitValue(); + exitValue = new Integer(value); + } catch (IllegalThreadStateException e) { + // thrown if the process isn't done. + // kinda nasty, but there looks to be no other option. + } + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + // possibly normal operation + } + } + + monitor.done(); + + // if the process failed unexpectedly... + if (process.exitValue() != 0 && !killedOnPurpose) { + // display the error message using gui builder + guiBuilder.showError( + "Algorithm Could Not Finish Execution", + "Sorry, the algorithm could not finish execution.", + "Please check the console window for the error log messages and report the bug.\n" + + "Thank you."); + } + + // get the files output from the process + String[] afterFiles = dir.list(); + + Arrays.sort(beforeFiles); + Arrays.sort(afterFiles); + + List outputs = new ArrayList(); + + int beforeIndex = 0; + int afterIndex = 0; + + while (beforeIndex < beforeFiles.length + && afterIndex < afterFiles.length) { + if (beforeFiles[beforeIndex].equals(afterFiles[afterIndex])) { + beforeIndex++; + afterIndex++; + } else { + outputs.add(new File(baseDir + afterFiles[afterIndex])); + afterIndex++; + } + } + + // get any remaining new files + while (afterIndex < afterFiles.length) { + outputs.add(new File(baseDir + afterFiles[afterIndex])); + afterIndex++; + } + + return (File[]) outputs.toArray(new File[] {}); + } + + protected StringBuffer logStream(int logLevel, InputStream is, + StringBuffer buffer) { + try { + int available = is.available(); + if (available > 0) { + byte[] b = new byte[available]; + is.read(b); + buffer.append(new String(b)); + + buffer = log(logLevel, buffer); + } + } catch (EOFException e) { + //normal operation + } catch (IOException e) { + e.printStackTrace(); + } + + return buffer; + } + + protected StringBuffer log(int logLevel, StringBuffer buffer) { + if (buffer.indexOf("\n") != -1) { // any new newlines to output? + LogService log = (LogService) ciContext.getService(LogService.class + .getName()); + + int lastGoodIndex = 0; + int fromIndex = 0; + // print out each new line + while (fromIndex != -1 && fromIndex < buffer.length()) { + int toIndex = buffer.indexOf("\n", fromIndex); + + if (toIndex != -1) { + String message = buffer.substring(fromIndex, toIndex); + + if (log == null) { + // This will probably never come up, but if it does + // we'll still get some output. + System.out.println(message); + } else { + log.log(logLevel, message); + } + fromIndex = toIndex+1; + lastGoodIndex = toIndex+1; + } else { + fromIndex = -1; + } + } + // save the last part of the string that doesn't end in a newline + if (lastGoodIndex > 0) { + buffer = new StringBuffer(buffer.substring(lastGoodIndex)); + } + } + + return buffer; + } + + protected String[] getTemplate(String algDir) { + String template = "" + props.getProperty("template"); + String[] cmdarray = template.split("\\s"); + + for (int i = 0; i < cmdarray.length; i++) { + cmdarray[i] = substiteVars(cmdarray[i]); + } + + // TODO: Expanded later to support .cmd and other extensions + if (!new File(algDir + cmdarray[0]).exists()) { + if (new File(algDir + cmdarray[0] + ".bat").exists()) { + cmdarray[0] = cmdarray[0] + ".bat"; + } + } + cmdarray[0] = algDir + cmdarray[0]; + + return cmdarray; + } + + protected String substiteVars(String str) { + str = str.replaceAll("\\$\\{executable\\}", props + .getProperty("executable")); + + for (int i = 0; i < data.length; i++) { + String file = ((File) data[i].getData()).getAbsolutePath(); + + if (File.separatorChar == '\\') { + file = file.replace(File.separatorChar, '/'); + } + + str = str.replaceAll("\\$\\{inFile\\[" + i + "\\]\\}", file); + + if (File.separatorChar == '\\') { + str = str.replace('/', File.separatorChar); + } + } + + for (Enumeration i = parameters.keys(); i.hasMoreElements();) { + String key = (String) i.nextElement(); + Object value = parameters.get(key); + + if (value == null) + value = ""; + + str = str.replaceAll("\\$\\{" + key + "\\}", value.toString()); + } + + return str; + } + + public File getTempDirectory() { + return new File(tempDir); + } + + protected String makeTempDirectory() throws IOException { + File sessionDir = Activator.getTempDirectory(); + File dir = File.createTempFile("StaticExecutableRunner-", "", + sessionDir); + + dir.delete(); + dir.mkdirs(); + + return dir.getAbsolutePath(); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-01-31 21:07:34
|
Revision: 612 http://cishell.svn.sourceforge.net/cishell/?rev=612&view=rev Author: mwlinnem Date: 2008-01-31 13:07:23 -0800 (Thu, 31 Jan 2008) Log Message: ----------- Static Executables are now Progress Trackable. They only support the cancel operation, however (currently executed by highlighting the algorithm and click "Remove From List". Probably should have a separate more obvious cancel button). Modified Paths: -------------- trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableAlgorithmFactory.java trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java Modified: trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableAlgorithmFactory.java =================================================================== --- trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableAlgorithmFactory.java 2008-01-30 22:32:46 UTC (rev 611) +++ trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableAlgorithmFactory.java 2008-01-31 21:07:23 UTC (rev 612) @@ -29,6 +29,8 @@ import org.cishell.framework.CIShellContext; import org.cishell.framework.algorithm.Algorithm; import org.cishell.framework.algorithm.AlgorithmFactory; +import org.cishell.framework.algorithm.ProgressMonitor; +import org.cishell.framework.algorithm.ProgressTrackable; import org.cishell.framework.data.Data; import org.osgi.framework.BundleContext; import org.osgi.service.component.ComponentContext; @@ -73,7 +75,7 @@ return provider; } - private class StaticExecutableAlgorithm implements Algorithm { + private class StaticExecutableAlgorithm implements Algorithm, ProgressTrackable { private String ALGORITHM; private String ALGORITHM_MACOSX_PPC; private String MACOSX; @@ -87,7 +89,10 @@ CIShellContext context; LogService logger; - public StaticExecutableAlgorithm(Data[] data, Dictionary parameters, CIShellContext context) { + private ProgressMonitor monitor; + + public StaticExecutableAlgorithm(Data[] data, Dictionary parameters, CIShellContext context) + { this.data = data; this.parameters = parameters; this.context = context; @@ -112,7 +117,7 @@ serviceProps.put("Algorithm-Directory", algName); StaticExecutableRunner runner = - new StaticExecutableRunner(bContext, context, serviceProps, parameters, data); + new StaticExecutableRunner(bContext, context, serviceProps, parameters, data, monitor); copyFiles(runner.getTempDirectory()); @@ -234,5 +239,13 @@ } return props; } + + public ProgressMonitor getProgressMonitor() { + return this.monitor; + } + + public void setProgressMonitor(ProgressMonitor monitor) { + this.monitor = monitor; + } } } Modified: trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java =================================================================== --- trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java 2008-01-30 22:32:46 UTC (rev 611) +++ trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java 2008-01-31 21:07:23 UTC (rev 612) @@ -32,6 +32,7 @@ import org.cishell.framework.CIShellContext; import org.cishell.framework.algorithm.Algorithm; import org.cishell.framework.algorithm.AlgorithmProperty; +import org.cishell.framework.algorithm.ProgressMonitor; import org.cishell.framework.data.BasicData; import org.cishell.framework.data.Data; import org.cishell.framework.data.DataProperty; @@ -52,13 +53,21 @@ protected Properties props; protected CIShellContext ciContext; + protected ProgressMonitor monitor; + + protected Boolean processRunning = new Boolean(true); + protected Boolean killedOnPurpose = new Boolean(false); + - public StaticExecutableRunner(BundleContext bContext, CIShellContext ciContext, Properties props, Dictionary parameters, Data[] data) throws IOException { + public StaticExecutableRunner(BundleContext bContext, CIShellContext ciContext, Properties props, + Dictionary parameters, Data[] data, ProgressMonitor monitor) throws IOException { this.ciContext = ciContext; this.props = props; this.parameters = parameters; this.data = data; + this.monitor = monitor; + guiBuilder = (GUIBuilderService)ciContext.getService(GUIBuilderService.class.getName()); @@ -73,7 +82,8 @@ */ public Data[] execute() { try { - String algDir = tempDir + File.separator + props.getProperty("Algorithm-Directory") + File.separator; + String algDir = tempDir + File.separator + props.getProperty("Algorithm-Directory") + + File.separator; chmod(algDir); File[] output = execute(getTemplate(algDir), algDir); @@ -176,29 +186,57 @@ process.getOutputStream().close(); + this.processRunning = new Boolean(true); + + //start thread to consume stdout of process + new Thread(new Runnable() { public void run() { logStream(LogService.LOG_INFO, process.getInputStream()); } }).start(); + //start thread to consume stderr of process + new Thread(new Runnable() { public void run() { logStream(LogService.LOG_ERROR, process.getErrorStream()); } }).start(); + //if we have a monitor... + if (this.monitor != null) { + this.monitor.start(ProgressMonitor.CANCELLABLE, -1); + + //start thread that checks if the user wants to cancel the process + + new Thread(new Runnable() { + public void run() { + checkForCancellation(process); + } + }).start(); + } + process.waitFor(); - //successfully ran? - if (process.exitValue() != 0) { + + this.processRunning = new Boolean(false); + + if (this.monitor != null) { + + this.monitor.done(); + } + + //if the process failed unexpectedly... + if (process.exitValue() != 0 && this.killedOnPurpose.booleanValue() != true) { //display the error message using gui builder guiBuilder.showError("Algorithm Could Not Finish Execution", "Sorry, the algorithm could not finish execution.", "Please check the console window for the error log messages and report the bug.\n" +"Thank you."); } - //get the outputted files + //get the files output from the process + String[] afterFiles = dir.list(); Arrays.sort(beforeFiles); @@ -245,6 +283,21 @@ e.printStackTrace(); } } + + protected void checkForCancellation(Process process) { + while (StaticExecutableRunner.this.processRunning.booleanValue()) { + if (StaticExecutableRunner.this.monitor.isCanceled()) { + StaticExecutableRunner.this.killedOnPurpose = new Boolean(true); + process.destroy(); + } else { + } + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + } + } + } protected String[] getTemplate(String algDir) { String template = "" + props.getProperty("template"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-01-30 22:32:52
|
Revision: 611 http://cishell.svn.sourceforge.net/cishell/?rev=611&view=rev Author: bh2 Date: 2008-01-30 14:32:46 -0800 (Wed, 30 Jan 2008) Log Message: ----------- * Fleshed out algorithm constraints for each type of algorithm * Added algorithm metadata element definitions * Added a reference to constructing mime types documentation 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/dataconversionservice.tex trunk/core/org.cishell.docs/src/specification/tex/guibuilderservice.tex Added Paths: ----------- trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex Modified: trunk/core/org.cishell.docs/src/specification/main.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/main.tex 2008-01-30 19:13:58 UTC (rev 610) +++ trunk/core/org.cishell.docs/src/specification/main.tex 2008-01-30 22:32:46 UTC (rev 611) @@ -37,6 +37,7 @@ \input{./tex/introduction.tex} \input{./tex/framework.tex} \input{./tex/algorithms.tex} +\input{./tex/algorithmtypes.tex} \input{./tex/data.tex} \input{./tex/guidefinition.tex} \orgcishellframework{} Modified: trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-01-30 19:13:58 UTC (rev 610) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithms.tex 2008-01-30 22:32:46 UTC (rev 611) @@ -48,21 +48,116 @@ control of an \class{Algorithm}'s progress while executing. See each interface's documentation for more details. -\subsection{Algorithm Service Metadata} +\subsection{Algorithm Service Metadata Definition} \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 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 +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. -\comments{Lots more to do here. Need to define what is/isn't mandatory for each -algorithm type. Perhaps some figures\ldots} +Each standard metadata element required by the CIShell specification is defined +below and in the interface \class{AlgorithmProperty}. It defines each key string +and the valid value strings to set in the metadata \class{Dictionary} when +registering an algorithm as a service. -\subsubsection{Standard Algorithm Constraints} -\label{algConstraints} +\subsection*{service.pid} +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. +``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. +\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*{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). 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} +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 +algorithm types and their constraints are defined in section +\ref{algConstraints}. + +\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} +and does not create its own non-\class{GUIBuilderService}-built GUI. Valid +strings are ``true'' or ``false''. If this metadata element is not set, then +it is assumed that it cannot be run remotely. + +\subsection*{label} +Specifies a human-readable short name for the algorithm. What label is +acceptable varies depending on the type of the algorithm. + +\subsection*{description} +Provides more details on the workings of the algorithm. What +description is acceptable varies depending on the type of the algorithm. + +\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 +classification of the algorithm. The string is a ``/'' separated list with +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, ``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''. + +\subsection*{conversion} +For converters algorithms, this metadata element specifies if any data is +lossed in the conversion. Possible values are ``lossy'' and ``lossless''. A +description of what type of information is lost should be explained in the +description. + +\subsection*{authors} +A comma separated list of the authors of the abstract algorithm. + +\subsection*{implementers} +A comma separated list of the developers who implemented the algorithm in code. + +\subsection*{integrators} +A comma separated list of the developers who integrated the algorithm code as +a compliant cishell algorithm. + +\subsection*{documentation\_url} +A URL to relevant documentation for the algorithm. + +\subsection*{reference} +A formal reference to a paper explaining the abstract algorithm. + +\subsection*{reference\_url} +A URL to a paper explaining the abstract algorithm. + +\subsection*{written\_in} +A comma separated list of the programming languages used to implement and +integrate the algorithm code. Added: trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex (rev 0) +++ trunk/core/org.cishell.docs/src/specification/tex/algorithmtypes.tex 2008-01-30 22:32:46 UTC (rev 611) @@ -0,0 +1,137 @@ +\section{Algorithm Type Specifications} + +\subsection*{\textit{Version 1.0}} + +\label{algConstraints} + +\subsection{Base Algorithm Constraints} + +All conformant algorithms regardless of type, must adhere to 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 legal ``service.pid''. +\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 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. + \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''. +\end{itemize} + +\subsection{Standard Algorithms} + +Standard CIShell algorithms are the algorithms that most end-users will +encounter. A standard 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 legal ``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. + \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 + ``menu\_path''. + \item The algorithm's service metadata must not have a ``type'' set. +\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 The algorithm's service metadata should have ``parentage=default'' if + it wishes to use the default \class{Data} parenting scheme described in + section \ref{algMetaData}. + \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''. +\end{itemize} + + +\subsection{Converter Algorithms} +\label{converterAlg} + +A converter algorithm is a custom type of CIShell algorithm for converting data +of one type to another. Converters are typically leveraged by the +\class{DataConversionService} and are not used directly by end-users. A converter +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 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''. + \item The algorithm's service metadata must have ``type=converter''. + \item The algorithm's service metadata must have ``conversion=lossy'' if + data is lossed during conversion or ``conversion=lossless'' if not. +\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 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 + if ``conversion=lossy''. + \item The algorithm's service metadata should have ``implementers'' filled + in accordingly. +\end{itemize} + +\subsection{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 +necessary due to the fact that one cannot simply assume based on the file +extension what type of file format the data is in. Checking the contents of the +file is necessary, especially in the case of multiple file formats for the same +file extension (e.g., XML). A validator 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 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 + 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. + \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 have ``type=validator''. + \item The algorithm's service metadata must have a ``label'' which is the + common name of the data format being validated. +\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 The algorithm's service metadata should have ``implementers'' filled + in accordingly. +\end{itemize} Modified: trunk/core/org.cishell.docs/src/specification/tex/data.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/data.tex 2008-01-30 19:13:58 UTC (rev 610) +++ trunk/core/org.cishell.docs/src/specification/tex/data.tex 2008-01-30 22:32:46 UTC (rev 611) @@ -1,16 +1,17 @@ \section{Data Specification} +\label{dataSpec} \subsection*{\textit{Version 1.0}} \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.lang.File}. The mime type corresponds to the -file's data type and has the following form - ``file: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 \comments{reference to -mime-type construction}. 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. - +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 +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-01-30 19:13:58 UTC (rev 610) +++ trunk/core/org.cishell.docs/src/specification/tex/dataconversionservice.tex 2008-01-30 22:32:46 UTC (rev 611) @@ -14,13 +14,12 @@ \begin{itemize} \item \textit{DataConversionService} - The service interface for converting data to different formats. - \item \textit{Converter Algorithm} - A special type of algorithm which - converts data from one format to another. + \item \textit{Converter Algorithm} - A special type of algorithm, defined + on page \pageref{converterAlg}, which converts data from one format to + another. \item \textit{Converter} - The interface for a wrapped set of converter algorithms returned by the \class{DataConversionService} that will convert data from one format to another. - \item \textit{Validator} - A special type of converter algorithm which checks - a specified file to see if it is a particular file format. \end{itemize} \section{Data Conversion Service} @@ -43,71 +42,4 @@ \label{fig:conversionGraph} \end{figure} -\subsection{Converter Algorithms} - -A converter algorithm is a standard CIShell algorithm with 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 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''. - \item The algorithm's service metadata must have ``type=converter''. - \item The algorithm's service metadata must have ``conversion=lossy'' if - data is lossed during conversion or ``conversion=lossless'' if not. -\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 The algorithm's service metadata should have a ``label'' which is a - short human-readable name for the converter, usually with a readable 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, perhaps going into what data may be - lossed if ``conversion=lossy''. -\end{itemize} - -\subsection{Validator Algorithms} - -A validator algorithm is a standard CIShell algorithm which checks either an -incoming or outgoing file to be sure it is of the type specified. These algorithms -have 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 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 - 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. - \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 have ``type=validator''. -\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 The algorithm's service metadata should have a ``label'' which is a - short human-readable name for the converter, usually with a readable 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, perhaps going into what data may be - lossed if ``conversion=lossy''. -\end{itemize} - -\orgcishellserviceconversion{} +\orgcishellserviceconversion{} \ No newline at end of file Modified: trunk/core/org.cishell.docs/src/specification/tex/guibuilderservice.tex =================================================================== --- trunk/core/org.cishell.docs/src/specification/tex/guibuilderservice.tex 2008-01-30 19:13:58 UTC (rev 610) +++ trunk/core/org.cishell.docs/src/specification/tex/guibuilderservice.tex 2008-01-30 22:32:46 UTC (rev 611) @@ -10,7 +10,7 @@ addition to this, simple methods for creating warnings, pop-ups, and simple yes/no dialog boxes are provided by the GUI Builder Service. -\subseciton{Entities} +\subsection{Entities} \begin{itemize} \item \textit{GUIBuilderService} - The Service interface for creating @@ -26,5 +26,6 @@ \section{GUI Builder Service} \comments{Needs expanded. Should probably talk about remote GUIs\ldots} +\comments{Insert a figure of the interaction between the entities\ldots} \orgcishellserviceguibuilder{} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fu...@us...> - 2008-01-30 19:14:11
|
Revision: 610 http://cishell.svn.sourceforge.net/cishell/?rev=610&view=rev Author: fugu13 Date: 2008-01-30 11:13:58 -0800 (Wed, 30 Jan 2008) Log Message: ----------- Hook error stream up to the right logging type. Modified Paths: -------------- trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java Modified: trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java =================================================================== --- trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java 2008-01-30 17:06:03 UTC (rev 609) +++ trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java 2008-01-30 19:13:58 UTC (rev 610) @@ -184,7 +184,7 @@ new Thread(new Runnable() { public void run() { - logStream(LogService.LOG_INFO, process.getErrorStream()); + logStream(LogService.LOG_ERROR, process.getErrorStream()); } }).start(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-01-30 17:06:17
|
Revision: 609 http://cishell.svn.sourceforge.net/cishell/?rev=609&view=rev Author: bh2 Date: 2008-01-30 09:06:03 -0800 (Wed, 30 Jan 2008) Log Message: ----------- Made the Desktop Shortcuts option automatically checked by default. 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-01-30 16:54:01 UTC (rev 608) +++ trunk/deployment/org.cishell.reference.releng/installer/build.xml 2008-01-30 17:06:03 UTC (rev 609) @@ -97,7 +97,8 @@ <variables> <variable name="archivePrefix" value="@{archivePrefix}"/> <variable name="projectName" value="@{project.name}"/> - <variable name="projectShortName" value="@{project.short.name}"/> + <variable name="projectShortName" value="@{project.short.name}"/> + <variable name="DesktopShortcutCheckboxEnabled" value="true"/> </variables> <!-- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fu...@us...> - 2008-01-30 16:55:13
|
Revision: 608 http://cishell.svn.sourceforge.net/cishell/?rev=608&view=rev Author: fugu13 Date: 2008-01-30 08:54:01 -0800 (Wed, 30 Jan 2008) Log Message: ----------- This is the potential fix via spinning off a separate thread for each logStream method. Modified Paths: -------------- trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java Modified: trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java =================================================================== --- trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java 2008-01-28 22:54:39 UTC (rev 607) +++ trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java 2008-01-30 16:54:01 UTC (rev 608) @@ -172,10 +172,22 @@ File dir = new File(baseDir); String[] beforeFiles = dir.list(); - Process process = Runtime.getRuntime().exec(cmdarray, null, new File(baseDir)); - - logStream(LogService.LOG_INFO, process.getInputStream()); - logStream(LogService.LOG_ERROR, process.getErrorStream()); + final Process process = Runtime.getRuntime().exec(cmdarray, null, new File(baseDir)); + + process.getOutputStream().close(); + + new Thread(new Runnable() { + public void run() { + logStream(LogService.LOG_INFO, process.getInputStream()); + } + }).start(); + + new Thread(new Runnable() { + public void run() { + logStream(LogService.LOG_INFO, process.getErrorStream()); + } + }).start(); + process.waitFor(); //successfully ran? This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zh...@us...> - 2008-01-28 22:54:43
|
Revision: 607 http://cishell.svn.sourceforge.net/cishell/?rev=607&view=rev Author: zhang45 Date: 2008-01-28 14:54:39 -0800 (Mon, 28 Jan 2008) Log Message: ----------- Ticket181 view CSV file with Excel Modified Paths: -------------- 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/viewwith/FileViewWith.java trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/viewwith/FileViewWithFactory.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-01-25 15:29:43 UTC (rev 606) +++ trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/view/FileView.java 2008-01-28 22:54:39 UTC (rev 607) @@ -63,9 +63,28 @@ } return tempFile; } + + public File getTempFileCSV(){ //TC181 + File tempFile; + + String tempPath = System.getProperty("java.io.tmpdir"); + File tempDir = new File(tempPath+File.separator+"temp"); + if(!tempDir.exists()) + tempDir.mkdir(); + try{ + tempFile = File.createTempFile("xxx-Session-", ".csv", tempDir); + + }catch (IOException e){ + logger.log(LogService.LOG_ERROR, e.toString()); + tempFile = new File (tempPath+File.separator+"temp"+File.separator+"temp.csv"); + } + return tempFile; + } + public Data[] execute() { boolean lastSaveSuccessful = false; + boolean isCSVFile = false;//TC181 String format; Display display; @@ -78,19 +97,34 @@ } parentShell = windows[0].getShell(); display = PlatformUI.getWorkbench().getDisplay(); - tempFile = getTempFile(); + //tempFile = getTempFile(); TC181 for (int i = 0; i < data.length; i++){ Object theData = data[i].getData(); format = data[i].getFormat(); + if (theData instanceof File || format.startsWith("file:text/") || format.startsWith("file-ext:")){ - copy((File)data[i].getData(), tempFile); - lastSaveSuccessful = true; + + if (format.startsWith("file:text/csv") || format.startsWith("file-ext:csv")) + { + tempFile = getTempFileCSV(); + isCSVFile = true; + + } + else + { + tempFile = getTempFile(); + } + copy((File)data[i].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: " + @@ -100,8 +134,18 @@ 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]); - copy((File)newData.getData(), tempFile); + Data newData = converters[0].convert(data[i]); + if (format.startsWith("prefuse.data.Table")) + { + tempFile = getTempFileCSV(); + isCSVFile = true; + } + else + { + tempFile = getTempFile(); + + } + copy((File)newData.getData(), tempFile); lastSaveSuccessful = true; } else { @@ -113,12 +157,21 @@ } } } - - - Display.getDefault().syncExec(new Runnable() { - public void run() { - program = Program.findProgram("txt"); - }}); + if (isCSVFile){//TC181 + Display.getDefault().syncExec(new Runnable() { + public void run() { + program = Program.findProgram("csv"); + }}); + + }else + { + Display.getDefault().syncExec(new Runnable() { + public void run() { + program = Program.findProgram("txt"); + }}); + + } + /* Display.getDefault().syncExec(new Runnable() { public void run() { Modified: trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/viewwith/FileViewWith.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/viewwith/FileViewWith.java 2008-01-25 15:29:43 UTC (rev 606) +++ trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/viewwith/FileViewWith.java 2008-01-28 22:54:39 UTC (rev 607) @@ -33,6 +33,7 @@ Program program; Program programTwo; Program programThree; + Program programFour; //TC181 File tempFile; public FileViewWith(Data[] data, Dictionary parameters, CIShellContext context) { @@ -132,9 +133,14 @@ public void run() { programThree = Program.findProgram("htm"); }}); + //TC181 + Display.getDefault().syncExec(new Runnable() { + public void run() { + programFour = Program.findProgram("csv"); + }}); - - if (program == null && programTwo == null && programThree == null) { + //TC181 + if (program == null && programTwo == null && programThree == null && programThree == null) { guiBuilder.showError("No Viewers for TXT, DOC, or HTM", "No valid viewers for .txt, .doc, or .htm files. " + "The file is located at: "+tempFile.getAbsolutePath(), @@ -158,6 +164,12 @@ public void run() { programThree.execute(tempFile.getAbsolutePath()); }}); + //TC181 + } else if (viewWith.equals("csv")) { + Display.getDefault().syncExec(new Runnable() { + public void run() { + programFour.execute(tempFile.getAbsolutePath()); + }}); } else { // Try to run it with txt viewer... Display.getDefault().syncExec(new Runnable() { Modified: trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/viewwith/FileViewWithFactory.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/viewwith/FileViewWithFactory.java 2008-01-25 15:29:43 UTC (rev 606) +++ trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/viewwith/FileViewWithFactory.java 2008-01-28 22:54:39 UTC (rev 607) @@ -30,6 +30,7 @@ Program programTxt; Program programDoc; Program programHtml; + Program programCsv; //TS181 private MetaTypeProvider provider; protected void activate(ComponentContext ctxt) { @@ -65,6 +66,12 @@ programHtml = Program.findProgram("htm"); }}); + //TC181 + Display.getDefault().syncExec(new Runnable() { + public void run() { + programCsv = Program.findProgram("csv"); + + }}); System.err.println(definition.getID()); @@ -83,6 +90,9 @@ if (programTxt != null) { possiblePrograms++; } + if (programCsv != null) { + possiblePrograms++; + } String[] myOptionLabels = new String[possiblePrograms]; String[] myOptionValues = new String[possiblePrograms]; @@ -98,6 +108,11 @@ myOptionLabels[counter] = programTxt.getName(); myOptionValues[counter++] = "txt"; } + //TC181 + if (programTxt != null) { + myOptionLabels[counter] = programCsv.getName(); + myOptionValues[counter++] = "csv"; + } AttributeDefinition ad = new BasicAttributeDefinition("viewWith", "View file as", "Type of viewer", AttributeDefinition.STRING /*string*/, 0, defValStringArray/*String[] defaultValue*/, null /*validator*/, myOptionLabels, myOptionValues); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-01-25 15:30:33
|
Revision: 606 http://cishell.svn.sourceforge.net/cishell/?rev=606&view=rev Author: bh2 Date: 2008-01-25 07:29:43 -0800 (Fri, 25 Jan 2008) Log Message: ----------- updated the installer builder to output one installer jar per platform rather than generating a web and full installer. Modified Paths: -------------- trunk/deployment/org.cishell.reference.releng/installer/build.xml Added Paths: ----------- trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/ trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.linux.x86.xml trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.linux.x86_64.xml trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.macosx.ppc.xml trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.macosx.x86.xml trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.solaris.sparc.xml trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.win32.vista.xml trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.win32.win32.xml Modified: trunk/deployment/org.cishell.reference.releng/installer/build.xml =================================================================== --- trunk/deployment/org.cishell.reference.releng/installer/build.xml 2008-01-24 20:54:00 UTC (rev 605) +++ trunk/deployment/org.cishell.reference.releng/installer/build.xml 2008-01-25 15:29:43 UTC (rev 606) @@ -6,35 +6,67 @@ Maintained by Bruce Herr (bh...@bh...). --> -<project name='CIShell Installer Builder' default='compile.both' basedir='.'> +<project name='CIShell Installer Builder' default='build' basedir='.'> <!-- Properties --> <property file="build.properties" /> - <property name="full.jar" value="${archivePrefix}-full-installer_${version}.jar"/> - <property name="web.jar" value="${archivePrefix}-web-installer_${version}.jar"/> + <property name="installer.prefix" value="${archivePrefix}-installer-${version}-"/> + <property name="installer.postfix" value=".jar"/> <property name="build.dir" value="${finalResults}/${version.full}"/> - <property name="packs.url" value="${files.url.base}/${version.full}/packs"/> - <property name="packs.dir" value="${build.dir}/packs" /> + <property name="packs.dir" value="${build.dir}/installers" /> + <property file="packs.properties" /> <!-- Allows us to use the IzPack Ant task --> <taskdef name="izpack" classpath="${basedir}/lib/standalone-compiler.jar" classname="com.izforge.izpack.ant.IzPackTask"/> - <target name='compile.both' depends='compile.web,compile.full' /> - - <target name='compile.full'> - <antcall target="-compile"> - <param name="installerType" value="standard" /> - <param name="outputFile" value="${build.dir}/${full.jar}" /> + <target name='build'> + <mkdir dir="${packs.dir}"/> + <antcall target="-compile.installer"> + <param name="platform" value="win32.win32"/> </antcall> + <antcall target="-compile.installer"> + <param name="platform" value="win32.vista"/> + </antcall> + <antcall target="-compile.installer"> + <param name="platform" value="linux.x86"/> + </antcall> + <antcall target="-compile.installer"> + <param name="platform" value="linux.x86_64"/> + </antcall> + <antcall target="-compile.installer"> + <param name="platform" value="macosx.x86"/> + </antcall> + <antcall target="-compile.installer"> + <param name="platform" value="macosx.ppc"/> + </antcall> + <antcall target="-compile.installer"> + <param name="platform" value="solaris.sparc"/> + </antcall> </target> - <target name='compile.web'> - <mkdir dir="${packs.dir}"/> + <target name='-compile.installer'> + <copy file="pack.definitions/pack.${platform}.xml" tofile="current.pack.definition.xml" /> + <replace file="current.pack.definition.xml"> + <replacefilter + token="@{build.dir}" + value="${build.dir}" + /> + <replacefilter + token="@{archivePrefix}" + value="${archivePrefix}" + /> + <replacefilter + token="@{buildLabel}" + value="${buildLabel}" + /> + </replace> + <antcall target="-compile"> - <param name="installerType" value="web" /> - <param name="outputFile" value="${packs.dir}/${web.jar}" /> + <param name="installerType" value="standard" /> + <param name="outputFile" value="${packs.dir}/${installer.prefix}${platform}${installer.postfix}" /> + <param name="pack.definitions" value="pack.definitions/pack.${platform}.xml"/> </antcall> - <move file="${packs.dir}/${web.jar}" tofile="${build.dir}/${web.jar}" /> + <delete file="current.pack.definition.xml" /> </target> <target name='-compile'> @@ -55,9 +87,10 @@ <author name="Bruce Herr" email="bh...@bh..." /> <author name="Weixia Huang" email="hu...@in..." /> <author name="Katy Borner" email="ka...@in..." /> + <author name="Team CIShell" email="cis...@li..." /> + <author name="Team NWB" email="nw...@go..." /> </authors> <url>@{home.url}/</url> - <webdir>@{packs.url}</webdir> <javaversion>1.4</javaversion> </info> @@ -114,7 +147,7 @@ <panels> <panel classname="HelloPanel" /> <panel classname="LicencePanel" /> - <panel classname="PacksPanel"/> + <!-- <panel classname="PacksPanel"/> --> <panel classname="TargetPanel" /> <panel classname="InstallPanel" /> <panel classname="ShortcutPanel" /> @@ -128,95 +161,8 @@ We specify here our packs. --> <packs> - <pack name="Windows_Vista" os="windows" required="no"> - <description>Windows Vista Version</description> - <file unpack="true" targetdir="$INSTALL_PATH" - src="@{build.dir}/@{archivePrefix}-@{buildLabel}-win32.wpf.x86.zip" /> - - <parsable targetfile="$INSTALL_PATH/post_install.bat" /> - <file targetdir="$INSTALL_PATH" - src="post_install/post_install.bat" /> - <executable keep="false" stage="postinstall" - targetfile="$INSTALL_PATH/post_install.bat" /> - </pack> - <pack name="Windows_XP" os="windows" required="no"> - <description>Windows 2000/XP Version</description> - <file unpack="true" targetdir="$INSTALL_PATH" - src="@{build.dir}/@{archivePrefix}-@{buildLabel}-win32.win32.x86.zip" /> - - <parsable targetfile="$INSTALL_PATH/post_install.bat" /> - <file targetdir="$INSTALL_PATH" - src="post_install/post_install.bat" /> - <executable keep="false" stage="postinstall" - targetfile="$INSTALL_PATH/post_install.bat"/> - </pack> - <pack name="32-bit_Linux_(x86)" os="unix" required="no"> - <description>32-bit Linux (x86) Version</description> - <file unpack="true" targetdir="$INSTALL_PATH" - src="@{build.dir}/@{archivePrefix}-@{buildLabel}-linux.gtk.x86.zip" /> - - <parsable targetfile="$INSTALL_PATH/post_install.sh" /> - <file targetdir="$INSTALL_PATH" - src="post_install/post_install.sh" /> - <executable keep="false" stage="postinstall" - targetfile="$INSTALL_PATH/post_install.sh" /> - <executable keep="true" stage="never" - targetfile="$INSTALL_PATH/@{archivePrefix}" /> - </pack> - <pack name="64-bit_Linux_(x86_64)" os="unix" required="no"> - <description>64-bit Linux (x86_64) Version</description> - <file unpack="true" targetdir="$INSTALL_PATH" - src="@{build.dir}/@{archivePrefix}-@{buildLabel}-linux.gtk.x86_64.zip" /> - - <parsable targetfile="$INSTALL_PATH/post_install.sh" /> - <file targetdir="$INSTALL_PATH" - src="post_install/post_install.sh" /> - <executable keep="false" stage="postinstall" - targetfile="$INSTALL_PATH/post_install.sh" /> - <executable keep="true" stage="never" - targetfile="$INSTALL_PATH/@{archivePrefix}" /> - </pack> - <pack name="Mac_OSX_(x86)" os="mac" required="no"> - <description>Mac OSX (x86) Version</description> - <file unpack="true" targetdir="$INSTALL_PATH" - src="@{build.dir}/@{archivePrefix}-@{buildLabel}-macosx.carbon.x86.zip" /> - - <parsable targetfile="$INSTALL_PATH/post_install.sh" /> - <file targetdir="$INSTALL_PATH" - src="post_install/post_install.sh" /> - <executable keep="false" stage="postinstall" - targetfile="$INSTALL_PATH/post_install.sh" /> - <executable keep="true" stage="never" - targetfile="$INSTALL_PATH/@{archivePrefix}.app/Contents/MacOS/@{archivePrefix}" /> - </pack> - <pack name="Mac_OSX_(ppc)" os="mac" required="no"> - <description>Mac OSX (ppc) Version</description> - <file unpack="true" targetdir="$INSTALL_PATH" - src="@{build.dir}/@{archivePrefix}-@{buildLabel}-macosx.carbon.ppc.zip" /> - - <parsable targetfile="$INSTALL_PATH/post_install.sh" /> - <file targetdir="$INSTALL_PATH" - src="post_install/post_install.sh" /> - <executable keep="false" stage="postinstall" - targetfile="$INSTALL_PATH/post_install.sh" /> - <executable keep="true" stage="never" - targetfile="$INSTALL_PATH/@{archivePrefix}.app/Contents/MacOS/@{archivePrefix}" /> - </pack> - <pack name="Solaris_(sparc)" os="unix" required="no"> - <description>Solaris (sparc) Version</description> - <file unpack="true" targetdir="$INSTALL_PATH" - src="@{build.dir}/@{archivePrefix}-@{buildLabel}-solaris.gtk.sparc.zip" /> - - <parsable targetfile="$INSTALL_PATH/post_install.sh" /> - <file targetdir="$INSTALL_PATH" - src="post_install/post_install.sh" /> - <executable keep="false" stage="postinstall" - targetfile="$INSTALL_PATH/post_install.sh" /> - <executable keep="true" stage="never" - targetfile="$INSTALL_PATH/@{archivePrefix}" /> - </pack> + <refpack file="current.pack.definition.xml"/> </packs> - </installation> ]]></config> </izpack> Added: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.linux.x86.xml =================================================================== --- trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.linux.x86.xml (rev 0) +++ trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.linux.x86.xml 2008-01-25 15:29:43 UTC (rev 606) @@ -0,0 +1,17 @@ +<installation version="1.0"> +<packs> + <pack name="32-bit_Linux_(x86)" os="unix" required="yes"> + <description>32-bit Linux (x86) Version</description> + <file unpack="true" targetdir="$INSTALL_PATH" + src="@{build.dir}/@{archivePrefix}-@{buildLabel}-linux.gtk.x86.zip" /> + + <parsable targetfile="$INSTALL_PATH/post_install.sh" /> + <file targetdir="$INSTALL_PATH" + src="post_install/post_install.sh" /> + <executable keep="false" stage="postinstall" + targetfile="$INSTALL_PATH/post_install.sh" /> + <executable keep="true" stage="never" + targetfile="$INSTALL_PATH/@{archivePrefix}" /> + </pack> +</packs> +</installation> \ No newline at end of file Property changes on: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.linux.x86.xml ___________________________________________________________________ Name: svn:mime-type + text/plain Added: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.linux.x86_64.xml =================================================================== --- trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.linux.x86_64.xml (rev 0) +++ trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.linux.x86_64.xml 2008-01-25 15:29:43 UTC (rev 606) @@ -0,0 +1,17 @@ +<installation version="1.0"> +<packs> + <pack name="64-bit_Linux_(x86_64)" os="unix" required="yes"> + <description>64-bit Linux (x86_64) Version</description> + <file unpack="true" targetdir="$INSTALL_PATH" + src="@{build.dir}/@{archivePrefix}-@{buildLabel}-linux.gtk.x86_64.zip" /> + + <parsable targetfile="$INSTALL_PATH/post_install.sh" /> + <file targetdir="$INSTALL_PATH" + src="post_install/post_install.sh" /> + <executable keep="false" stage="postinstall" + targetfile="$INSTALL_PATH/post_install.sh" /> + <executable keep="true" stage="never" + targetfile="$INSTALL_PATH/@{archivePrefix}" /> + </pack> +</packs> +</installation> \ No newline at end of file Property changes on: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.linux.x86_64.xml ___________________________________________________________________ Name: svn:mime-type + text/plain Added: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.macosx.ppc.xml =================================================================== --- trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.macosx.ppc.xml (rev 0) +++ trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.macosx.ppc.xml 2008-01-25 15:29:43 UTC (rev 606) @@ -0,0 +1,17 @@ +<installation version="1.0"> +<packs> + <pack name="Mac_OSX_(ppc)" os="mac" required="yes"> + <description>Mac OSX (ppc) Version</description> + <file unpack="true" targetdir="$INSTALL_PATH" + src="@{build.dir}/@{archivePrefix}-@{buildLabel}-macosx.carbon.ppc.zip" /> + + <parsable targetfile="$INSTALL_PATH/post_install.sh" /> + <file targetdir="$INSTALL_PATH" + src="post_install/post_install.sh" /> + <executable keep="false" stage="postinstall" + targetfile="$INSTALL_PATH/post_install.sh" /> + <executable keep="true" stage="never" + targetfile="$INSTALL_PATH/@{archivePrefix}.app/Contents/MacOS/@{archivePrefix}" /> + </pack> +</packs> +</installation> \ No newline at end of file Property changes on: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.macosx.ppc.xml ___________________________________________________________________ Name: svn:mime-type + text/plain Added: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.macosx.x86.xml =================================================================== --- trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.macosx.x86.xml (rev 0) +++ trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.macosx.x86.xml 2008-01-25 15:29:43 UTC (rev 606) @@ -0,0 +1,17 @@ +<installation version="1.0"> +<packs> + <pack name="Mac_OSX_(x86)" os="mac" required="yes"> + <description>Mac OSX (x86) Version</description> + <file unpack="true" targetdir="$INSTALL_PATH" + src="@{build.dir}/@{archivePrefix}-@{buildLabel}-macosx.carbon.x86.zip" /> + + <parsable targetfile="$INSTALL_PATH/post_install.sh" /> + <file targetdir="$INSTALL_PATH" + src="post_install/post_install.sh" /> + <executable keep="false" stage="postinstall" + targetfile="$INSTALL_PATH/post_install.sh" /> + <executable keep="true" stage="never" + targetfile="$INSTALL_PATH/@{archivePrefix}.app/Contents/MacOS/@{archivePrefix}" /> + </pack> +</packs> +</installation> \ No newline at end of file Property changes on: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.macosx.x86.xml ___________________________________________________________________ Name: svn:mime-type + text/plain Added: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.solaris.sparc.xml =================================================================== --- trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.solaris.sparc.xml (rev 0) +++ trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.solaris.sparc.xml 2008-01-25 15:29:43 UTC (rev 606) @@ -0,0 +1,17 @@ +<installation version="1.0"> +<packs> + <pack name="Solaris_(sparc)" os="unix" required="yes"> + <description>Solaris (sparc) Version</description> + <file unpack="true" targetdir="$INSTALL_PATH" + src="@{build.dir}/@{archivePrefix}-@{buildLabel}-solaris.gtk.sparc.zip" /> + + <parsable targetfile="$INSTALL_PATH/post_install.sh" /> + <file targetdir="$INSTALL_PATH" + src="post_install/post_install.sh" /> + <executable keep="false" stage="postinstall" + targetfile="$INSTALL_PATH/post_install.sh" /> + <executable keep="true" stage="never" + targetfile="$INSTALL_PATH/@{archivePrefix}" /> + </pack> +</packs> +</installation> \ No newline at end of file Property changes on: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.solaris.sparc.xml ___________________________________________________________________ Name: svn:mime-type + text/plain Added: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.win32.vista.xml =================================================================== --- trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.win32.vista.xml (rev 0) +++ trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.win32.vista.xml 2008-01-25 15:29:43 UTC (rev 606) @@ -0,0 +1,15 @@ +<installation version="1.0"> +<packs> + <pack name="Windows_Vista" os="windows" required="yes"> + <description>Windows Vista Version</description> + <file unpack="true" targetdir="$INSTALL_PATH" + src="@{build.dir}/@{archivePrefix}-@{buildLabel}-win32.wpf.x86.zip" /> + + <parsable targetfile="$INSTALL_PATH/post_install.bat" /> + <file targetdir="$INSTALL_PATH" + src="post_install/post_install.bat" /> + <executable keep="false" stage="postinstall" + targetfile="$INSTALL_PATH/post_install.bat" /> + </pack> +</packs> +</installation> \ No newline at end of file Property changes on: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.win32.vista.xml ___________________________________________________________________ Name: svn:mime-type + text/plain Added: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.win32.win32.xml =================================================================== --- trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.win32.win32.xml (rev 0) +++ trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.win32.win32.xml 2008-01-25 15:29:43 UTC (rev 606) @@ -0,0 +1,15 @@ +<installation version="1.0"> +<packs> + <pack name="Windows_XP" os="windows" required="yes"> + <description>Windows 2000/XP Version</description> + <file unpack="true" targetdir="$INSTALL_PATH" + src="@{build.dir}/@{archivePrefix}-@{buildLabel}-win32.win32.x86.zip" /> + + <parsable targetfile="$INSTALL_PATH/post_install.bat" /> + <file targetdir="$INSTALL_PATH" + src="post_install/post_install.bat" /> + <executable keep="false" stage="postinstall" + targetfile="$INSTALL_PATH/post_install.bat"/> + </pack> +</packs> +</installation> \ No newline at end of file Property changes on: trunk/deployment/org.cishell.reference.releng/installer/pack.definitions/pack.win32.win32.xml ___________________________________________________________________ Name: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 605 http://cishell.svn.sourceforge.net/cishell/?rev=605&view=rev Author: mwlinnem Date: 2008-01-24 12:54:00 -0800 (Thu, 24 Jan 2008) Log Message: ----------- Fixed bug that was cutting off the first '/' in absolute file paths. 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-01-24 18:35:08 UTC (rev 604) +++ trunk/clients/gui/org.cishell.reference.gui.guibuilder.swt/src/org/cishell/reference/gui/guibuilder/swt/builder/components/FileComponent.java 2008-01-24 20:54:00 UTC (rev 605) @@ -105,7 +105,7 @@ //by default, point to NWB or CIShell application installation directory if (currentValue == null) { - value = System.getProperty("osgi.install.area").replace("file:/",""); + value = System.getProperty("osgi.install.area").replace("file:",""); currentValue = value; } else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-01-24 18:35:22
|
Revision: 604 http://cishell.svn.sourceforge.net/cishell/?rev=604&view=rev Author: bh2 Date: 2008-01-24 10:35:08 -0800 (Thu, 24 Jan 2008) Log Message: ----------- Added fallback code such that on a 64-bit linux machine, a 32-bit linux static executable will be called if there is no 64-bit linux static executable. Modified Paths: -------------- trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableAlgorithmFactory.java Modified: trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableAlgorithmFactory.java =================================================================== --- trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableAlgorithmFactory.java 2008-01-23 20:54:25 UTC (rev 603) +++ trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableAlgorithmFactory.java 2008-01-24 18:35:08 UTC (rev 604) @@ -79,6 +79,8 @@ private String MACOSX; private String ALGORITHM_WIN32; private String WIN32; + private String ALGORITHM_LINUX_X86; + private String LINUX; private String ALGORITHM_DEFAULT; Data[] data; Dictionary parameters; @@ -96,8 +98,9 @@ MACOSX = "macosx"; ALGORITHM_WIN32 = ALGORITHM + "win32/"; WIN32 = "win32"; + ALGORITHM_LINUX_X86 = ALGORITHM + "linux.x86/"; + LINUX = "linux"; ALGORITHM_DEFAULT = ALGORITHM + "default/"; - } public Data[] execute() { @@ -154,6 +157,8 @@ path = ALGORITHM_WIN32; } else if(os.equals(MACOSX) && entries.contains(ALGORITHM_MACOSX_PPC)) { path = ALGORITHM_MACOSX_PPC; + } else if(os.equals(LINUX) && entries.contains(ALGORITHM_LINUX_X86)) { + path = ALGORITHM_LINUX_X86; } String platform_path = ALGORITHM + os + "." + arch + "/"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bh...@us...> - 2008-01-23 20:54:35
|
Revision: 603 http://cishell.svn.sourceforge.net/cishell/?rev=603&view=rev Author: bh2 Date: 2008-01-23 12:54:25 -0800 (Wed, 23 Jan 2008) Log Message: ----------- Oops, wrong repository... Removed Paths: ------------- trunk/plugins/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |