/* * Copyright (C) 2014 Alfons Wirtz * website www.freerouting.net * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License at <http://www.gnu.org/licenses/> * for more details. * * WebStart.java * * Created on 4. Dezember 2006, 07:01 * */ package gui; /** * Function used for Java Websrart. * Some put to a separate class to avoid runtime undefined in offline applications. * @author Alfons Wirtz */ public class WebStart { /* * Separate function to avoid runtime undefines in an offline application. */ public static java.net.URL get_code_base() { try { javax.jnlp.BasicService basic_service = (javax.jnlp.BasicService)javax.jnlp.ServiceManager.lookup("javax.jnlp.BasicService"); return basic_service.getCodeBase(); } catch(Exception e) { return null; } } public static javax.jnlp.FileContents save_dialog(String p_parent, String[] p_file_extensions, java.io.InputStream p_input_stream, String p_name) { try { javax.jnlp.FileSaveService file_save_service = (javax.jnlp.FileSaveService)javax.jnlp.ServiceManager.lookup("javax.jnlp.FileSaveService"); javax.jnlp.FileContents curr_file_contents = file_save_service.saveFileDialog(p_parent, p_file_extensions, p_input_stream, p_name); return curr_file_contents; } catch (Exception e) { return null; } } /** * Looks up a file with the input name in the Cookie file system of Java Web Start. * Returns an input stream from that file or null, if no such file was found. */ public static java.io.InputStream get_file_input_stream(String p_file_name) { java.net.URL code_base = WebStart.get_code_base(); if (code_base != null) { try { javax.jnlp.PersistenceService persistence_service = (javax.jnlp.PersistenceService)javax.jnlp.ServiceManager.lookup("javax.jnlp.PersistenceService"); String [] muffins = persistence_service.getNames(code_base); for (int i = 0; i < muffins.length; ++i) { if (muffins[i].equals(p_file_name)) { java.net.URL defaults_file_url = new java.net.URL(code_base.toString() + muffins[i]); javax.jnlp.FileContents file_contents = persistence_service.get(defaults_file_url); return file_contents.getInputStream(); } } } catch(Exception e) { } } return null; } /** * Looks up a file with the input name in the Cookie file system of Java Web Start. * This file will be overwritten. * Creates a new file, if no such file exists yet. */ public static java.io.OutputStream get_file_output_stream(String p_file_name) { java.io.OutputStream output_stream = null; String [] muffins = null; javax.jnlp.PersistenceService persistence_service = null; java.net.URL code_base = get_code_base(); if (code_base != null) { try { persistence_service = (javax.jnlp.PersistenceService)javax.jnlp.ServiceManager.lookup("javax.jnlp.PersistenceService"); muffins = persistence_service.getNames(code_base); } catch(Exception e) { muffins = null; } } try { boolean file_exists = false; java.net.URL file_url = null; if (muffins != null) { for (int i = 0; i < muffins.length; ++i) { if (muffins[i].equals(p_file_name)) { file_url = new java.net.URL(code_base.toString() + muffins[i]); file_exists = true; } } } if (!file_exists) { file_url = new java.net.URL(code_base.toString() + p_file_name); long act_size = persistence_service.create(file_url, MAX_FILE_SIZE); if (act_size < MAX_FILE_SIZE) { return null; } } javax.jnlp.FileContents file_contents = persistence_service.get(file_url); output_stream = file_contents.getOutputStream(true); } catch(Exception e) { return null; } return output_stream; } /* * Deletes all files ending with p_file_ending from the cookie file system. * Return false, if no file to delete was found * If p_confirm_message != null, the user is asked to confirm the delete action. */ public static boolean delete_files(String p_file_ending, String p_confirm_messsage) { boolean file_deleted = false; try { java.net.URL code_base = WebStart.get_code_base(); if (code_base == null) { return false; } javax.jnlp.PersistenceService persistence_service = (javax.jnlp.PersistenceService)javax.jnlp.ServiceManager.lookup("javax.jnlp.PersistenceService"); String [] muffins = persistence_service.getNames(code_base); java.net.URL file_url = null; if (muffins != null) { for (int i = 0; i < muffins.length; ++i) { if (muffins[i].endsWith(p_file_ending)) { file_url = new java.net.URL(code_base.toString() + muffins[i]); if (p_confirm_messsage == null || WindowMessage.confirm(p_confirm_messsage)) { persistence_service.delete(file_url); file_deleted = true; } } } } } catch(Exception e) { file_deleted = false; } return file_deleted; } private static final long MAX_FILE_SIZE = 100000; }