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