|
From: <mwl...@us...> - 2008-05-09 13:51:05
|
Revision: 777
http://cishell.svn.sourceforge.net/cishell/?rev=777&view=rev
Author: mwlinnem
Date: 2008-05-09 06:50:16 -0700 (Fri, 09 May 2008)
Log Message:
-----------
Added additional error handling.
Modified Paths:
--------------
trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java
trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/metatypewrapper/ParamAD.java
Modified: trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java
===================================================================
--- trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java 2008-05-08 17:51:48 UTC (rev 776)
+++ trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/AlgorithmWrapper.java 2008-05-09 13:50:16 UTC (rev 777)
@@ -100,7 +100,8 @@
printParameters(metatype_pid, provider, parameters);
// create the algorithm
- algorithm = factory.createAlgorithm(data, parameters, ciContext);
+ algorithm = createAlgorithm(factory, data, parameters, ciContext);
+ if (algorithm == null) return null;
trackAlgorithmIfPossible(algorithm);
// execute the algorithm
@@ -115,6 +116,20 @@
return outData;
}
+ protected Algorithm createAlgorithm(AlgorithmFactory factory, Data[] data, Dictionary parameters, CIShellContext ciContext) {
+ try {
+ return factory.createAlgorithm(data, parameters, ciContext);
+ } catch (Exception e) {
+ String errorMessage = "Unexpected error occurred while creating algorithm " +
+ " \""+ref.getProperty(AlgorithmProperty.LABEL)+".\"";
+ GUIBuilderService builder = (GUIBuilderService)
+ ciContext.getService(GUIBuilderService.class.getName());
+ builder.showError("Error!", errorMessage, e);
+ log(LogService.LOG_ERROR, errorMessage, e);
+ return null;
+ }
+ }
+
protected Data[] removeNullData(Data[] outData) {
if (outData != null) {
List goodData = new ArrayList();
@@ -217,7 +232,6 @@
protected MetaTypeProvider getPossiblyMutatedMetaTypeProvider(String metatype_pid, String pid, AlgorithmFactory factory) {
MetaTypeProvider provider = null;
-
MetaTypeService metaTypeService = (MetaTypeService) Activator.getService(MetaTypeService.class.getName());
if (metaTypeService != null) {
provider = metaTypeService.getMetaTypeInformation(ref.getBundle());
@@ -226,14 +240,20 @@
if (factory instanceof ParameterMutator && provider != null) {
try {
ObjectClassDefinition ocd = provider.getObjectClassDefinition(metatype_pid, null);
-
+ if (ocd == null) logNullOCDWarning(pid, metatype_pid);
ocd = ((ParameterMutator) factory).mutateParameters(data, ocd);
-
if (ocd != null) {
provider = new BasicMetaTypeProvider(ocd);
}
} catch (IllegalArgumentException e) {
log(LogService.LOG_DEBUG, pid+" has an invalid metatype id: "+metatype_pid);
+ } catch (Exception e) {
+ GUIBuilderService builder = (GUIBuilderService)
+ ciContext.getService(GUIBuilderService.class.getName());
+ String errorMessage = "An error occurred while preparing to run the algorithm "
+ +ref.getProperty(AlgorithmProperty.LABEL)+".\"";
+ builder.showError("Error!", errorMessage, e);
+ log(LogService.LOG_ERROR, errorMessage, e);
}
}
@@ -423,6 +443,11 @@
return ca;
}
+
+ private void logNullOCDWarning(String pid, String metatype_pid) {
+ this.log(LogService.LOG_WARNING,
+ "Warning: could not get object class definition '" + metatype_pid + "' from the algorithm '" + pid + "'");
+ }
public ProgressMonitor getProgressMonitor() {
if (algorithm instanceof ProgressTrackable) {
Modified: trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/metatypewrapper/ParamAD.java
===================================================================
--- trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/metatypewrapper/ParamAD.java 2008-05-08 17:51:48 UTC (rev 776)
+++ trunk/clients/gui/org.cishell.reference.gui.menumanager/src/org/cishell/reference/gui/menumanager/menu/metatypewrapper/ParamAD.java 2008-05-09 13:50:16 UTC (rev 777)
@@ -61,6 +61,7 @@
private String[] replaceSpecialValues(String[] overrideValues) {
try {
String[] defaultValues = realAD.getDefaultValue();
+ if (defaultValues == null) return new String[0];
String[] replacedValues = new String[defaultValues.length];
for (int i = 0; i < defaultValues.length; i++) {
if (defaultValues[i] != null && defaultValues[i].contains(":") && overrideValues[i] != null && overrideValues[i].equals("")) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|