Package org.pdfsam.guiclient.business

Source Code of org.pdfsam.guiclient.business.Environment

/*
* Created on 07-Nov-2007
* Copyright (C) 2007 by Andrea Vacondio.
*
* 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 2 of the License.
* 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 for more details.
* You should have received a copy of the GNU General Public License along with this program;
* if not, write to the Free Software Foundation, Inc.,
*  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.pdfsam.guiclient.business;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.ResourceBundle;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.pdfsam.guiclient.GuiClient;
import org.pdfsam.guiclient.configuration.Configuration;
import org.pdfsam.guiclient.gui.panels.JTreePanel;
import org.pdfsam.guiclient.plugins.interfaces.AbstractPlugablePanel;
import org.pdfsam.guiclient.plugins.models.PluginDataModel;
import org.pdfsam.i18n.GettextResource;
/**
* Environment logic
* @author Andrea Vacondio
*
*/
public class Environment {
 
  private static final Logger LOG = Logger.getLogger(Environment.class.getPackage().getName());
 
  private ResourceBundle i18nMessages;

  private Map<PluginDataModel, AbstractPlugablePanel> plugins;
  private JTreePanel treePanel;
 
  public Environment(Map<PluginDataModel, AbstractPlugablePanel> plugins, JTreePanel treePanel){
    this.plugins = plugins;
    this.treePanel = treePanel;
    this.i18nMessages = Configuration.getInstance().getI18nResourceBundle();
  }
 
  /**
   * saves and environment to the output file
   * @param outFile
   * @param savePasswords true save passwords informations
   */
  public void saveEnvironment(File outFile, boolean savePasswords){
    try {
      if (outFile != null){
        synchronized(Environment.class){
          Document document = DocumentHelper.createDocument();
          Element root = document.addElement("pdfsam_saved_jobs");
          root.addAttribute("version", GuiClient.getVersion());
          root.addAttribute("savedate", new SimpleDateFormat("dd-MMM-yyyy").format(new Date()));
          String selection = treePanel.getSelectedPlugin();
          if(selection != null && selection.length()>0){
            root.addAttribute("selection", selection);
          }
          for (AbstractPlugablePanel plugablePanel: plugins.values()) {
            Element node = (Element) root.addElement("plugin");
            node.addAttribute("class", plugablePanel.getClass().getName());
            node.addAttribute("name", plugablePanel.getPluginName());
            plugablePanel.getJobNode(node, savePasswords);
            LOG.info(GettextResource.gettext(i18nMessages, plugablePanel.getPluginName()+ " node environment loaded."));
          }
          BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outFile));
          OutputFormat format = OutputFormat.createPrettyPrint();
          format.setEncoding("UTF-8");
          XMLWriter xmlWriter = new XMLWriter(bos, format);
          xmlWriter.write(document);
          xmlWriter.flush();
          xmlWriter.close();
        }
        LOG.info(GettextResource.gettext(i18nMessages, "Environment saved."));
      }else{
        LOG.error(GettextResource.gettext(i18nMessages, "Error saving environment, output file is null."));
      }
    } catch (Exception ex) {
      LOG.error(GettextResource.gettext(i18nMessages, "Error saving environment."),ex);
    }
  }
 
  /**
   * saves and environment to the output file without saving passwords
   * @param outFile
   */
  public void saveEnvironment(File outFile){
    saveEnvironment(outFile,false);
 
  /**
   * loads an environment from an input file
   * @param inputFile
   */
  public void loadJobs(File inputFile) {
    if (inputFile != null && inputFile.exists() && inputFile.canRead()) {
      try {
        synchronized(Environment.class){
          SAXReader reader = new SAXReader();
          Document document = reader.read(inputFile);
          for (AbstractPlugablePanel plugablePanel: plugins.values()) {
            Node node = document.selectSingleNode("/pdfsam_saved_jobs/plugin[@class=\""
                + plugablePanel.getClass().getName() + "\"]");
            if(node == null){
              //backwards compatibility
              node = document.selectSingleNode("/pdfsam_saved_jobs/plugin[@class=\""
                  + plugablePanel.getClass().getName().replaceAll("^org.pdfsam", "it.pdfsam") + "\"]");
            }
            if(node != null){
              plugablePanel.resetPanel();
              plugablePanel.loadJobNode(node);
            }
          }
          //set the selected plugin
          Node node = document.selectSingleNode("/pdfsam_saved_jobs/@selection");
          if(node!=null){
            treePanel.setSelectedPlugin(node.getText());
          }
          LOG.info(GettextResource.gettext(i18nMessages, "Environment loaded."));
        }
      } catch (Exception ex) {
        LOG.error(GettextResource.gettext(i18nMessages, "Error loading environment."),ex);
      }
    } else {
      LOG.error(GettextResource.gettext(i18nMessages, "Error loading environment from input file. "+inputFile));
    }
  }
}
TOP

Related Classes of org.pdfsam.guiclient.business.Environment

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.