+/*
+ * 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;
*/
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('.');
}
}
- File file = createTmpFile(prefix, extension, is);
-
+ 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);
- }
- }
-
- private void openFile(File file) {
- try {
- Desktop desktop = null;
- if (Desktop.isDesktopSupported()) {
- desktop = Desktop.getDesktop();
- desktop.open(file);
- } else {
- throw new ArgeoException("Desktop integration not supported.");
- }
- } 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);
}
}
}
return tmpFile;
}
-
}