Author: ruschein
Date: 2011-06-30 12:01:08 -0700 (Thu, 30 Jun 2011)
New Revision: 25984
Modified:
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyNetworkViewWriter.java
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyTableWriter.java
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/TunableAbstractCyWriter.java
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/ViewWriter.java
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/VizmapWriter.java
Log:
Force correct extension before writing out a file.
Modified:
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyNetworkViewWriter.java
===================================================================
---
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyNetworkViewWriter.java
2011-06-30 17:51:40 UTC (rev 25983)
+++
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyNetworkViewWriter.java
2011-06-30 19:01:08 UTC (rev 25984)
@@ -34,6 +34,9 @@
* {@inheritDoc}
*/
protected CyWriter getWriter(CyFileFilter filter, File file) throws
Exception{
+ if (!fileExtensionIsOk(file))
+ file = addOrReplaceExtension(outputFile);
+
return writerManager.getWriter(view,filter,file);
}
Modified:
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyTableWriter.java
===================================================================
---
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyTableWriter.java
2011-06-30 17:51:40 UTC (rev 25983)
+++
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyTableWriter.java
2011-06-30 19:01:08 UTC (rev 25984)
@@ -21,7 +21,7 @@
* {@link org.cytoscape.io.write.CyTableWriterFactory} to use to write
the file.
* @param table The {@link org.cytoscape.model.CyTable} to be written
out.
*/
- public CyTableWriter(CyTableWriterManager writerManager, CyTable table ) {
+ public CyTableWriter(CyTableWriterManager writerManager, CyTable table
) {
super(writerManager);
if ( table == null )
throw new NullPointerException("Table is null");
@@ -32,6 +32,9 @@
* {@inheritDoc}
*/
protected CyWriter getWriter(CyFileFilter filter, File file) throws
Exception{
+ if (!fileExtensionIsOk(file))
+ file = addOrReplaceExtension(outputFile);
+
return writerManager.getWriter(table,filter,file);
}
}
Modified:
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/TunableAbstractCyWriter.java
===================================================================
---
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/TunableAbstractCyWriter.java
2011-06-30 17:51:40 UTC (rev 25983)
+++
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/TunableAbstractCyWriter.java
2011-06-30 19:01:08 UTC (rev 25984)
@@ -9,6 +9,7 @@
import java.io.File;
+import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.ArrayList;
@@ -54,4 +55,50 @@
super(writerManager);
options = new ListSingleSelection<String>(new
ArrayList<String>(descriptionFilterMap.keySet()));
}
+
+ protected final boolean fileExtensionIsOk(final File file) {
+ final String exportFileFormat = getExportFileFormat();
+ if (exportFileFormat == null)
+ return true;
+
+ final CyFileFilter filter =
descriptionFilterMap.get(exportFileFormat);
+ if (filter == null)
+ return true;
+
+ final String extension = getExtension(file.getPath());
+ if (extension == null)
+ return false;
+
+ return filter.getExtensions().contains(extension);
+ }
+
+ private static final String getExtension(final String fileName) {
+ final int lastDotPos = fileName.lastIndexOf('.');
+ if (lastDotPos == -1 || lastDotPos == fileName.length() - 1)
+ return null;
+ return fileName.substring(lastDotPos + 1).toLowerCase();
+ }
+
+ protected final File addOrReplaceExtension(final File file) {
+ final CyFileFilter filter =
descriptionFilterMap.get(getExportFileFormat());
+ if (filter == null)
+ return file;
+
+ final Iterator<String> extensions =
filter.getExtensions().iterator();
+ if (!extensions.hasNext())
+ return file;
+
+ final String extension = extensions.next();
+ final String pathWithoutExtension =
stripExtension(file.getPath());
+
+ return new File(pathWithoutExtension + "." + extension);
+ }
+
+ private static String stripExtension(final String fileName) {
+ final String extension = getExtension(fileName);
+ if (extension == null)
+ return fileName;
+
+ return fileName.substring(0, fileName.length() - 1 -
extension.length());
+ }
}
Modified:
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/ViewWriter.java
===================================================================
---
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/ViewWriter.java
2011-06-30 17:51:40 UTC (rev 25983)
+++
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/ViewWriter.java
2011-06-30 19:01:08 UTC (rev 25984)
@@ -23,7 +23,7 @@
* @param writerManager The {@link
org.cytoscape.io.write.PresentationWriterManager} used to determine which type
of
* file should be written.
* @param view The View object to be written to the specified file.
- * @param re The RenderingEngine used to generate the image to be
written to the file.
+ * @param re The RenderingEngine used to generate the image to be
written to the file.
*/
public ViewWriter(final PresentationWriterManager writerManager, final
View<?> view, final RenderingEngine<?> re ) {
super(writerManager);
@@ -41,11 +41,13 @@
* {@inheritDoc}
*/
protected CyWriter getWriter(CyFileFilter filter, File file) throws
Exception {
+ if (!fileExtensionIsOk(file))
+ file = addOrReplaceExtension(outputFile);
return writerManager.getWriter(view,re,filter,file);
}
-
+
@Tunable(description="Save Image As:",
params="fileCategory=image;input=false")
- public File getOutputFile() {
+ public File getOutputFile() {
return outputFile;
}
}
Modified:
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/VizmapWriter.java
===================================================================
---
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/VizmapWriter.java
2011-06-30 17:51:40 UTC (rev 25983)
+++
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/VizmapWriter.java
2011-06-30 19:01:08 UTC (rev 25984)
@@ -21,6 +21,9 @@
@Override
protected CyWriter getWriter(CyFileFilter filter, File file) throws
Exception {
+ if (!fileExtensionIsOk(file))
+ file = addOrReplaceExtension(outputFile);
+
Set<VisualStyle> styles = vmMgr.getAllVisualStyles();
return writerManager.getWriter(styles, filter, file);
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.