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.

Reply via email to