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