]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - eclipse/runtime/org.argeo.eclipse.ui.rcp/src/main/java/org/argeo/eclipse/ui/specific/FileHandler.java
Update license headers
[lgpl/argeo-commons.git] / eclipse / runtime / org.argeo.eclipse.ui.rcp / src / main / java / org / argeo / eclipse / ui / specific / FileHandler.java
index b9c4d31d3fcbe4a0bb74d5c4891f15becb963383..8b48a630733da2f9c74c7f21a6bfcafd58b8da74 100644 (file)
@@ -1,3 +1,18 @@
+/*
+ * Copyright (C) 2007-2012 Mathieu Baudier
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.argeo.eclipse.ui.specific;
 
 import java.awt.Desktop;
@@ -17,13 +32,14 @@ import org.argeo.ArgeoException;
  */
 public class FileHandler {
 
-       // unused file provider : collateral effects of single sourcing, this File
-       // provider is compulsory for RAP file handler
-       public FileHandler(FileProvider jfp) {
-       }
+       private FileProvider provider;
 
-       public void openFile(String fileName, String fileId, InputStream is) {
+       public FileHandler(FileProvider provider) {
+               this.provider = provider;
+       }
 
+       public void openFile(String fileName, String fileId) {
+               String tmpFileName = fileName;
                String prefix = "", extension = "";
                if (fileName != null) {
                        int ind = fileName.lastIndexOf('.');
@@ -33,28 +49,22 @@ public class FileHandler {
                        }
                }
 
-               File file = createTmpFile(prefix, extension, is);
-
-               try {
-                       Desktop desktop = null;
-                       if (Desktop.isDesktopSupported()) {
-                               desktop = Desktop.getDesktop();
-                       }
-                       desktop.open(file);
-               } catch (IOException e) {
-                       throw new ArgeoException("Cannot open file " + file.getName(), e);
-               }
-       }
-
-       private void openFile(File file) {
+               InputStream is = null;
                try {
+                       is = provider.getInputStreamFromFileId(fileId);
+                       File file = createTmpFile(prefix, extension, is);
+                       tmpFileName = file.getName();
                        Desktop desktop = null;
                        if (Desktop.isDesktopSupported()) {
                                desktop = Desktop.getDesktop();
                        }
                        desktop.open(file);
                } catch (IOException e) {
-                       throw new ArgeoException("Cannot open file " + file.getName(), e);
+                       // Note : tmpFileName = fileName if the error has been thrown while
+                       // creating the tmpFile.
+                       throw new ArgeoException("Cannot open file " + tmpFileName, e);
+               } finally {
+                       IOUtils.closeQuietly(is);
                }
        }
 
@@ -73,5 +83,4 @@ public class FileHandler {
                }
                return tmpFile;
        }
-
 }