Package org.pdfsam.guiclient.business.listeners.mediators

Source Code of org.pdfsam.guiclient.business.listeners.mediators.UpdateCheckerMediator$UpdateChecker

/*
* Created on 27-Feb-2008
* Copyright (C) 2008 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.listeners.mediators;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import java.net.URLEncoder;

import org.apache.log4j.Logger;
import org.pdfsam.guiclient.GuiClient;
import org.pdfsam.guiclient.configuration.Configuration;
import org.pdfsam.guiclient.gui.panels.JStatusPanel;
import org.pdfsam.guiclient.updates.UpdateManager;
import org.pdfsam.i18n.GettextResource;
/**
* Update checker mediator
* @author Andrea Vacondio
*/
public class UpdateCheckerMediator implements ActionListener {

  private JStatusPanel statusPanel = null;
  private final UpdateChecker updateChecker = new UpdateChecker();
  private Thread t = null;
 
  public UpdateCheckerMediator(JStatusPanel statusPanel){
    this.statusPanel = statusPanel;
    t = new Thread(updateChecker);
  }
 
  public void actionPerformed(ActionEvent e) {
    checkForUpdates();
  }
 
  /**
   * Run the runnable to check if an update is available after a delay
   * @param delay
   * @param forceRecheck tells if a complete check have to be done.
   */
  public void checkForUpdates(long delay, boolean forceRecheck){
    updateChecker.setDelay(delay);
    updateChecker.setForceRecheck(forceRecheck);
    if(!t.isAlive()){
      t = new Thread(updateChecker);
      t.start();
    }
  }
 
  /**
   * Run the runnable to check if an update is available
   */
  public void checkForUpdates(){
    checkForUpdates(0, true);
  }
 
  /**
   * Runnable that checks for updates
   * @author Andrea Vacondio
   */
  private class UpdateChecker implements Runnable{
   
    private Logger log = null;
    private long delay = 0;
    private boolean forceRecheck = false;
    private UpdateManager updateManager = null;
    private final String destinationUrl = "http://www.pdfsam.org/check-version.php";
   
   
    /**
     * @param delay the delay to set
     */
    public void setDelay(long delay) {
      this.delay = delay;
    }   

    /**
     * @param forceRecheck the forceRecheck to set
     */
    public void setForceRecheck(boolean forceRecheck) {
      this.forceRecheck = forceRecheck;
    }

    /**
     * check for a new version available and, if there is one, updates the status bar.
     */
    public void run() {
      try{
         Thread.sleep(delay);
         URL url = new URL(destinationUrl+"?version="+URLEncoder.encode(GuiClient.getVersionType(),"UTF-8")+"&remoteversion="+URLEncoder.encode(GuiClient.getVersion(),"UTF-8")+"&branch="+URLEncoder.encode(GuiClient.getBranch(),"UTF-8"));
         if(updateManager == null){
           updateManager = new UpdateManager(url);
         }
         updateManager.checkForNewVersion(forceRecheck);
         if(updateManager.isNewVersionAvailable()){
           getLogger().info(GettextResource.gettext(Configuration.getInstance().getI18nResourceBundle(),"New version available."));
           statusPanel.setNewAvailableVersion(updateManager.getAvailableVersion());
         }else{
           getLogger().info(GettextResource.gettext(Configuration.getInstance().getI18nResourceBundle(),"No new version available."));
         }
      }catch(Exception ex){
        getLogger().error(GettextResource.gettext(Configuration.getInstance().getI18nResourceBundle(),"Error: "), ex);
        }         
    }
   
    private Logger getLogger(){
      if(log == null){
        log = Logger.getLogger(UpdateChecker.class.getPackage().getName());
      }
      return log;
     
    }
  }
}
TOP

Related Classes of org.pdfsam.guiclient.business.listeners.mediators.UpdateCheckerMediator$UpdateChecker

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.