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

Code
Comments
Other
Rev Date Author Line
7232 17 Nov 16 nicklas 1 /**
7232 17 Nov 16 nicklas 2   $Id$
7232 17 Nov 16 nicklas 3
7232 17 Nov 16 nicklas 4   Copyright (C) 2016 Nicklas Nordborg
7232 17 Nov 16 nicklas 5
7232 17 Nov 16 nicklas 6   This file is part of BASE - BioArray Software Environment.
7232 17 Nov 16 nicklas 7   Available at http://base.thep.lu.se/
7232 17 Nov 16 nicklas 8
7232 17 Nov 16 nicklas 9   BASE is free software; you can redistribute it and/or
7232 17 Nov 16 nicklas 10   modify it under the terms of the GNU General Public License
7232 17 Nov 16 nicklas 11   as published by the Free Software Foundation; either version 3
7232 17 Nov 16 nicklas 12   of the License, or (at your option) any later version.
7232 17 Nov 16 nicklas 13
7232 17 Nov 16 nicklas 14   BASE is distributed in the hope that it will be useful,
7232 17 Nov 16 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
7232 17 Nov 16 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7232 17 Nov 16 nicklas 17   GNU General Public License for more details.
7232 17 Nov 16 nicklas 18
7232 17 Nov 16 nicklas 19   You should have received a copy of the GNU General Public License
7232 17 Nov 16 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
7232 17 Nov 16 nicklas 21 */
7232 17 Nov 16 nicklas 22 package net.sf.basedb.util.extensions.manager.processor;
7232 17 Nov 16 nicklas 23
7232 17 Nov 16 nicklas 24 import java.util.HashSet;
7232 17 Nov 16 nicklas 25 import java.util.Set;
7232 17 Nov 16 nicklas 26
7232 17 Nov 16 nicklas 27 import net.sf.basedb.util.extensions.manager.ExtensionsFile;
7232 17 Nov 16 nicklas 28 import net.sf.basedb.util.extensions.manager.ExtensionsFileProcessor;
7232 17 Nov 16 nicklas 29 import net.sf.basedb.util.extensions.manager.ExtensionsManager;
7232 17 Nov 16 nicklas 30 import net.sf.basedb.util.extensions.manager.ProcessResults;
7232 17 Nov 16 nicklas 31 import net.sf.basedb.util.extensions.manager.ProcessResults.FileResults;
7232 17 Nov 16 nicklas 32 import net.sf.basedb.util.extensions.manager.ExtensionsFile.WriteableExtensionsFile;
7232 17 Nov 16 nicklas 33
7232 17 Nov 16 nicklas 34 /**
7232 17 Nov 16 nicklas 35   Processor implementation for ignoring files.
7232 17 Nov 16 nicklas 36   This processor need to be done in two steps due to
7232 17 Nov 16 nicklas 37   ordering issues when an already installed extension
7232 17 Nov 16 nicklas 38   has been selected for both uninstallation and ignoring.
7232 17 Nov 16 nicklas 39   <p>
7232 17 Nov 16 nicklas 40   The first step is executed via the manager: 
7232 17 Nov 16 nicklas 41   {@link ExtensionsManager#processFiles(ExtensionsFileProcessor)}
7232 17 Nov 16 nicklas 42   and should be done before the {@link net.sf.basedb.clients.web.extensions.UninstalledFileProcessor}
7232 17 Nov 16 nicklas 43   is exectued.
7232 17 Nov 16 nicklas 44   <p>
7232 17 Nov 16 nicklas 45   The second step is either automatically executed when all files
7232 17 Nov 16 nicklas 46   have been processed or by calling {@link #finalizeRegistration(ExtensionsManager)} 
7232 17 Nov 16 nicklas 47   and should be done as the last step of the installation procedure.
7232 17 Nov 16 nicklas 48   
7232 17 Nov 16 nicklas 49   @author Nicklas
7232 17 Nov 16 nicklas 50   @since 3.10
7232 17 Nov 16 nicklas 51 */
7232 17 Nov 16 nicklas 52 public class IgnoreFileProcessor
7232 17 Nov 16 nicklas 53   implements ExtensionsFileProcessor
7232 17 Nov 16 nicklas 54 {
7232 17 Nov 16 nicklas 55
7232 17 Nov 16 nicklas 56   private final ProcessResults results;
7232 17 Nov 16 nicklas 57   private Set<WriteableExtensionsFile> filesToIgnore;
7232 17 Nov 16 nicklas 58   private int numFiles;
7232 17 Nov 16 nicklas 59   private boolean delayRegistration;
7232 17 Nov 16 nicklas 60
7232 17 Nov 16 nicklas 61   public IgnoreFileProcessor(ProcessResults results)
7232 17 Nov 16 nicklas 62   {
7232 17 Nov 16 nicklas 63     this.results = results;
7232 17 Nov 16 nicklas 64   }
7232 17 Nov 16 nicklas 65   
7232 17 Nov 16 nicklas 66   /*
7232 17 Nov 16 nicklas 67     From the RegisterExtensionsProcessor class
7232 17 Nov 16 nicklas 68     ------------------------------------------
7232 17 Nov 16 nicklas 69   */
7232 17 Nov 16 nicklas 70   @Override
7232 17 Nov 16 nicklas 71   public void begin(ExtensionsManager manager, int numFiles)
7232 17 Nov 16 nicklas 72   {
7232 17 Nov 16 nicklas 73     this.numFiles = 0;
7232 17 Nov 16 nicklas 74     this.filesToIgnore = new HashSet<WriteableExtensionsFile>();
7232 17 Nov 16 nicklas 75   }
7232 17 Nov 16 nicklas 76
7232 17 Nov 16 nicklas 77   @Override
7232 17 Nov 16 nicklas 78   public void processFile(ExtensionsManager manager, WriteableExtensionsFile wFile)
7232 17 Nov 16 nicklas 79   {
7232 17 Nov 16 nicklas 80     ExtensionsFile xtFile = wFile.getExtensionsFile();
7232 17 Nov 16 nicklas 81     filesToIgnore.add(wFile);
7233 17 Nov 16 nicklas 82     results.forgetOldResults(xtFile);
7232 17 Nov 16 nicklas 83     numFiles++;
7232 17 Nov 16 nicklas 84   }
7232 17 Nov 16 nicklas 85   @Override
7232 17 Nov 16 nicklas 86   public void done(ExtensionsManager manager)
7232 17 Nov 16 nicklas 87   {
7232 17 Nov 16 nicklas 88     if (!delayRegistration) finalizeRegistration(manager);
7232 17 Nov 16 nicklas 89   }
7232 17 Nov 16 nicklas 90
7232 17 Nov 16 nicklas 91   @Override
7232 17 Nov 16 nicklas 92   public void done(ExtensionsManager manager, Throwable t)
7232 17 Nov 16 nicklas 93   {}
7232 17 Nov 16 nicklas 94   // ---------------------------------------------
7232 17 Nov 16 nicklas 95
7232 17 Nov 16 nicklas 96   /**
7232 17 Nov 16 nicklas 97     Set a flag to indicate if the actual registration of the found
7232 17 Nov 16 nicklas 98     extensions and extension points should be delayed or not.
7232 17 Nov 16 nicklas 99     The default is to not delay registration, which means that
7232 17 Nov 16 nicklas 100     it happend when the {@link #done(ExtensionsManager)} method is
7232 17 Nov 16 nicklas 101     called by the manager. If this flag is set the 
7461 14 Mar 18 nicklas 102     {@link #finalizeRegistration(ExtensionsManager)}
7232 17 Nov 16 nicklas 103     method must be explicitely called.
7232 17 Nov 16 nicklas 104   */
7232 17 Nov 16 nicklas 105   public void setDelayRegistration(boolean delayRegistration)
7232 17 Nov 16 nicklas 106   {
7232 17 Nov 16 nicklas 107     this.delayRegistration = delayRegistration;
7232 17 Nov 16 nicklas 108   }
7232 17 Nov 16 nicklas 109   
7232 17 Nov 16 nicklas 110   /**
7232 17 Nov 16 nicklas 111     Is the actual registration delayed or not?
7232 17 Nov 16 nicklas 112   */
7232 17 Nov 16 nicklas 113   public boolean isRegistrationDelayed()
7232 17 Nov 16 nicklas 114   {
7232 17 Nov 16 nicklas 115     return delayRegistration;
7232 17 Nov 16 nicklas 116   }
7232 17 Nov 16 nicklas 117
7232 17 Nov 16 nicklas 118   /**
7232 17 Nov 16 nicklas 119     Get the number of files that was processed.
7232 17 Nov 16 nicklas 120   */
7232 17 Nov 16 nicklas 121   public int getNumFiles()
7232 17 Nov 16 nicklas 122   {
7232 17 Nov 16 nicklas 123     return numFiles;
7232 17 Nov 16 nicklas 124   }
7232 17 Nov 16 nicklas 125   
7232 17 Nov 16 nicklas 126   /**
7232 17 Nov 16 nicklas 127     Finalize the ignore registration.
7232 17 Nov 16 nicklas 128   */
7232 17 Nov 16 nicklas 129   public void finalizeRegistration(ExtensionsManager manager)
7232 17 Nov 16 nicklas 130   {
7232 17 Nov 16 nicklas 131     for (WriteableExtensionsFile wFile : filesToIgnore)
7232 17 Nov 16 nicklas 132     {
7232 17 Nov 16 nicklas 133       ExtensionsFile xtFile = wFile.getExtensionsFile();
7232 17 Nov 16 nicklas 134       wFile.setError(false);
7232 17 Nov 16 nicklas 135       manager.addIgnore(xtFile.getFile());
7232 17 Nov 16 nicklas 136       FileResults currentResults = results.getResults(xtFile);
7232 17 Nov 16 nicklas 137       String status = "Ignored";
7232 17 Nov 16 nicklas 138       if (currentResults != null && currentResults.getStatus() != null)
7232 17 Nov 16 nicklas 139       {
7232 17 Nov 16 nicklas 140         status = currentResults.getStatus() + " + " + status;
7232 17 Nov 16 nicklas 141       }
7232 17 Nov 16 nicklas 142       results.setStatus(xtFile, status);
7232 17 Nov 16 nicklas 143     }
7232 17 Nov 16 nicklas 144   }
7232 17 Nov 16 nicklas 145
7232 17 Nov 16 nicklas 146
7232 17 Nov 16 nicklas 147 }