From: <pat...@us...> - 2010-09-30 14:55:50
|
Revision: 1140 http://cishell.svn.sourceforge.net/cishell/?rev=1140&view=rev Author: pataphil Date: 2010-09-30 14:55:41 +0000 (Thu, 30 Sep 2010) Log Message: ----------- * Reimplemented labeling file data items with prettier labels upon loading files. * Reviewed by Joseph. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.persistence/META-INF/MANIFEST.MF trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/FileLoadAlgorithm.java Added Paths: ----------- trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/PrettyLabeler.java Modified: trunk/clients/gui/org.cishell.reference.gui.persistence/META-INF/MANIFEST.MF =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.persistence/META-INF/MANIFEST.MF 2010-09-30 14:54:33 UTC (rev 1139) +++ trunk/clients/gui/org.cishell.reference.gui.persistence/META-INF/MANIFEST.MF 2010-09-30 14:55:41 UTC (rev 1140) @@ -15,6 +15,7 @@ org.cishell.service.database, org.cishell.service.guibuilder;version="1.0.0", org.cishell.utilities, + org.cishell.utilities.dictionary, org.osgi.framework;version="1.3.0", org.osgi.service.cm;version="1.2.0", org.osgi.service.component;version="1.0.0", Modified: trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/FileLoadAlgorithm.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/FileLoadAlgorithm.java 2010-09-30 14:54:33 UTC (rev 1139) +++ trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/FileLoadAlgorithm.java 2010-09-30 14:55:41 UTC (rev 1140) @@ -48,7 +48,10 @@ File file = getFileToLoadFromUser(window, display); if (file != null) { - return validateFile(window, display, file); + Data[] validatedFileData = validateFile(window, display, file); + Data[] labeledFileData = labelFileData(file, validatedFileData); + + return labeledFileData; } else { return null; } @@ -101,13 +104,14 @@ } else { try { return FileValidator.validateFile( - file, validator, this.progressMonitor, this.ciShellContext, this.logger); + file, validator, this.progressMonitor, this.ciShellContext, this.logger); } catch (AlgorithmExecutionException e) { - if (e.getCause() != null - && e.getCause() instanceof UnsupportedEncodingException) { - String logMessage = - "This file cannot be loaded; it uses the unsupported character encoding " - + e.getCause().getMessage() + "."; + if ((e.getCause() != null) + && (e.getCause() instanceof UnsupportedEncodingException)) { + String format = + "This file cannot be loaded; it uses the unsupported character " + + "encoding %s."; + String logMessage = String.format(format, e.getCause().getMessage()); this.logger.log(LogService.LOG_ERROR, logMessage); } else { throw e; @@ -119,13 +123,18 @@ "The chosen file is not compatible with this format. " + "Check that your file is correctly formatted or try another validator. " + "The reason is: " + e.getMessage(); - e.printStackTrace(); // TODO remove this.logger.log(LogService.LOG_ERROR, logMessage); } return null; } + private Data[] labelFileData(File file, Data[] validatedFileData) { + Data[] labeledFileData = PrettyLabeler.relabelWithFileName(validatedFileData, file); + + return labeledFileData; + } + private AlgorithmFactory getValidatorFromUser( IWorkbenchWindow window, Display display, File file) { ValidatorSelectorRunnable validatorSelector = Added: trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/PrettyLabeler.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/PrettyLabeler.java (rev 0) +++ trunk/clients/gui/org.cishell.reference.gui.persistence/src/org/cishell/reference/gui/persistence/load/PrettyLabeler.java 2010-09-30 14:55:41 UTC (rev 1140) @@ -0,0 +1,44 @@ +package org.cishell.reference.gui.persistence.load; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Dictionary; + +import org.cishell.framework.data.BasicData; +import org.cishell.framework.data.Data; +import org.cishell.framework.data.DataProperty; +import org.cishell.utilities.dictionary.DictionaryUtilities; + +public class PrettyLabeler { + public static Data[] relabelWithFileName(Data[] data, File file) { + File absoluteFile = file.getAbsoluteFile(); + File parent = absoluteFile.getParentFile(); + + // TODO parent == null + + String prefix; + String parentName = parent.getName(); + if (parentName.trim().length() == 0) { + prefix = File.separator; + } else { + prefix = "..." + File.separator + parentName + File.separator; + } + + Collection<Data> newData = new ArrayList<Data>(data.length); + + /* TODO: This isn't actually correct. + * It will assign the same label to all of the data items if we ever do this. + */ + for (Data datum : data) { + Dictionary<String, Object> labeledDatumMetadata = + DictionaryUtilities.copy(datum.getMetadata()); + Data labeledDatum = + new BasicData(labeledDatumMetadata, datum.getData(), datum.getFormat()); + labeledDatumMetadata.put(DataProperty.LABEL, prefix + absoluteFile.getName()); + newData.add(labeledDatum); + } + + return newData.toArray(new Data[0]); + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |