src/core/net/sf/basedb/util/extensions/manager/processor/ResetProcessor.java

Code
Comments
Other
Rev Date Author Line
7228 16 Nov 16 nicklas 1 /**
7228 16 Nov 16 nicklas 2   $Id$
7228 16 Nov 16 nicklas 3
7228 16 Nov 16 nicklas 4   Copyright (C) 2011 Nicklas Nordborg
7228 16 Nov 16 nicklas 5
7228 16 Nov 16 nicklas 6   This file is part of BASE - BioArray Software Environment.
7228 16 Nov 16 nicklas 7   Available at http://base.thep.lu.se/
7228 16 Nov 16 nicklas 8
7228 16 Nov 16 nicklas 9   BASE is free software; you can redistribute it and/or
7228 16 Nov 16 nicklas 10   modify it under the terms of the GNU General Public License
7228 16 Nov 16 nicklas 11   as published by the Free Software Foundation; either version 3
7228 16 Nov 16 nicklas 12   of the License, or (at your option) any later version.
7228 16 Nov 16 nicklas 13
7228 16 Nov 16 nicklas 14   BASE is distributed in the hope that it will be useful,
7228 16 Nov 16 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
7228 16 Nov 16 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7228 16 Nov 16 nicklas 17   GNU General Public License for more details.
7228 16 Nov 16 nicklas 18
7228 16 Nov 16 nicklas 19   You should have received a copy of the GNU General Public License
7228 16 Nov 16 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
7228 16 Nov 16 nicklas 21 */
7228 16 Nov 16 nicklas 22 package net.sf.basedb.util.extensions.manager.processor;
7228 16 Nov 16 nicklas 23
7228 16 Nov 16 nicklas 24 import net.sf.basedb.util.extensions.manager.ExtensionsFile;
7228 16 Nov 16 nicklas 25 import net.sf.basedb.util.extensions.manager.ExtensionsFileProcessor;
7228 16 Nov 16 nicklas 26 import net.sf.basedb.util.extensions.manager.ExtensionsManager;
7228 16 Nov 16 nicklas 27 import net.sf.basedb.util.extensions.manager.ExtensionsFile.WriteableExtensionsFile;
7228 16 Nov 16 nicklas 28 import net.sf.basedb.util.extensions.manager.ProcessResults;
7228 16 Nov 16 nicklas 29
7228 16 Nov 16 nicklas 30 /**
7228 16 Nov 16 nicklas 31   File processor implementation that reset the error flag, class loader, etc.
7228 16 Nov 16 nicklas 32   for all extension files. This is usually needed to be able to
7228 16 Nov 16 nicklas 33   re-install extensions that has been updated or that had an error that 
7703 11 Apr 19 nicklas 34   has now been fixed.
7228 16 Nov 16 nicklas 35
7228 16 Nov 16 nicklas 36   @author Nicklas
7228 16 Nov 16 nicklas 37   @since 3.10
7228 16 Nov 16 nicklas 38   @base.modified $Date$
7228 16 Nov 16 nicklas 39 */
7228 16 Nov 16 nicklas 40 public class ResetProcessor
7228 16 Nov 16 nicklas 41   implements ExtensionsFileProcessor
7228 16 Nov 16 nicklas 42 {
7228 16 Nov 16 nicklas 43
7228 16 Nov 16 nicklas 44   private static final org.slf4j.Logger log = 
7228 16 Nov 16 nicklas 45     org.slf4j.LoggerFactory.getLogger(ResetProcessor.class);
7228 16 Nov 16 nicklas 46   
7228 16 Nov 16 nicklas 47   private final ProcessResults results;
7228 16 Nov 16 nicklas 48   private boolean resetErrorFlag;
7228 16 Nov 16 nicklas 49   private boolean resetClassLoader;
7228 16 Nov 16 nicklas 50   
7228 16 Nov 16 nicklas 51   private int numFiles;
7228 16 Nov 16 nicklas 52   
7228 16 Nov 16 nicklas 53   /**
7228 16 Nov 16 nicklas 54     Create a new processor instance using default
7228 16 Nov 16 nicklas 55     settings.
7228 16 Nov 16 nicklas 56   */
7228 16 Nov 16 nicklas 57   public ResetProcessor(ProcessResults results)
7228 16 Nov 16 nicklas 58   {
7228 16 Nov 16 nicklas 59     this.results = results;
7228 16 Nov 16 nicklas 60     this.resetClassLoader = true;
7228 16 Nov 16 nicklas 61     this.resetErrorFlag = true;
7228 16 Nov 16 nicklas 62   }
7228 16 Nov 16 nicklas 63   
7228 16 Nov 16 nicklas 64   /**
7228 16 Nov 16 nicklas 65     This flag controls if the class loader should be
7228 16 Nov 16 nicklas 66     reset or not. It is on by default.
7228 16 Nov 16 nicklas 67   */
7228 16 Nov 16 nicklas 68   public void setResetClassLoader(boolean resetClassLoader)
7228 16 Nov 16 nicklas 69   {
7228 16 Nov 16 nicklas 70     this.resetClassLoader = resetClassLoader;
7228 16 Nov 16 nicklas 71   }
7228 16 Nov 16 nicklas 72   
7228 16 Nov 16 nicklas 73   public boolean getResetClassLoader()
7228 16 Nov 16 nicklas 74   {
7228 16 Nov 16 nicklas 75     return resetClassLoader;
7228 16 Nov 16 nicklas 76   }
7228 16 Nov 16 nicklas 77   
7228 16 Nov 16 nicklas 78   /**
7228 16 Nov 16 nicklas 79     This flag controls if the error flag should be
7228 16 Nov 16 nicklas 80     reset or not. It is on by default.
7228 16 Nov 16 nicklas 81   */
7228 16 Nov 16 nicklas 82   public void setResetErrorFlag(boolean resetErrorFlag)
7228 16 Nov 16 nicklas 83   {
7228 16 Nov 16 nicklas 84     this.resetErrorFlag = resetErrorFlag;
7228 16 Nov 16 nicklas 85   }
7228 16 Nov 16 nicklas 86   
7228 16 Nov 16 nicklas 87   public boolean getResetrrorFlag()
7228 16 Nov 16 nicklas 88   {
7228 16 Nov 16 nicklas 89     return resetErrorFlag;
7228 16 Nov 16 nicklas 90   }
7228 16 Nov 16 nicklas 91
7228 16 Nov 16 nicklas 92   /*
7228 16 Nov 16 nicklas 93     From the ExtensionsFileProcessor interface
7228 16 Nov 16 nicklas 94     ------------------------------------------
7228 16 Nov 16 nicklas 95   */
7228 16 Nov 16 nicklas 96   @Override
7228 16 Nov 16 nicklas 97   public void begin(ExtensionsManager manager, int numFiles)
7228 16 Nov 16 nicklas 98   {
7228 16 Nov 16 nicklas 99     log.debug("Starting ResetProcessor: errorFlag="+resetErrorFlag + "; classLoader="+resetClassLoader);
7228 16 Nov 16 nicklas 100     this.numFiles = 0;
7228 16 Nov 16 nicklas 101   }
7228 16 Nov 16 nicklas 102   
7228 16 Nov 16 nicklas 103   @Override
7228 16 Nov 16 nicklas 104   public void processFile(ExtensionsManager manager, WriteableExtensionsFile wFile)
7228 16 Nov 16 nicklas 105   {
7228 16 Nov 16 nicklas 106     ExtensionsFile xtFile = wFile.getExtensionsFile();
7228 16 Nov 16 nicklas 107     log.debug("Resetting: " + xtFile);
7228 16 Nov 16 nicklas 108     numFiles++;
7228 16 Nov 16 nicklas 109     try
7228 16 Nov 16 nicklas 110     {
7228 16 Nov 16 nicklas 111       wFile.open();
7228 16 Nov 16 nicklas 112       if (resetErrorFlag)
7228 16 Nov 16 nicklas 113       {
7228 16 Nov 16 nicklas 114         wFile.setError(false);
7228 16 Nov 16 nicklas 115         results.forgetOldResults(xtFile);
7228 16 Nov 16 nicklas 116       }
7228 16 Nov 16 nicklas 117       if (resetClassLoader) 
7228 16 Nov 16 nicklas 118       {
7228 16 Nov 16 nicklas 119         wFile.resetClassLoader();
7228 16 Nov 16 nicklas 120       }
7228 16 Nov 16 nicklas 121     }
7228 16 Nov 16 nicklas 122     finally
7228 16 Nov 16 nicklas 123     {
7228 16 Nov 16 nicklas 124       wFile.close();
7228 16 Nov 16 nicklas 125     }
7228 16 Nov 16 nicklas 126   }
7228 16 Nov 16 nicklas 127
7228 16 Nov 16 nicklas 128   @Override
7228 16 Nov 16 nicklas 129   public void done(ExtensionsManager manager)
7228 16 Nov 16 nicklas 130   {}
7228 16 Nov 16 nicklas 131
7228 16 Nov 16 nicklas 132   @Override
7228 16 Nov 16 nicklas 133   public void done(ExtensionsManager manager, Throwable t)
7228 16 Nov 16 nicklas 134   {}
7228 16 Nov 16 nicklas 135   // ---------------------------------------------
7228 16 Nov 16 nicklas 136
7228 16 Nov 16 nicklas 137   /**
7228 16 Nov 16 nicklas 138     Get the number of files that was processed.
7228 16 Nov 16 nicklas 139   */
7228 16 Nov 16 nicklas 140   public int getNumFiles()
7228 16 Nov 16 nicklas 141   {
7228 16 Nov 16 nicklas 142     return numFiles;
7228 16 Nov 16 nicklas 143   }
7228 16 Nov 16 nicklas 144
7228 16 Nov 16 nicklas 145   
7228 16 Nov 16 nicklas 146 }