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