com.izforge.izpack.installer
Class UnpackerBase

java.lang.Object
  extended by com.izforge.izpack.installer.UnpackerBase
All Implemented Interfaces:
IUnpacker, java.lang.Runnable
Direct Known Subclasses:
MultiVolumeUnpacker, Unpacker

public abstract class UnpackerBase
extends java.lang.Object
implements IUnpacker

Abstract base class for all unpacker implementations.

Author:
Dennis Reil,

Field Summary
protected  java.io.File absolute_installpath
          The absolute path of the installation.
static java.lang.String ALIVE
           
protected static boolean discardInterrupt
          Do not perform a interrupt call.
protected  AbstractUIProgressHandler handler
          The installer listener.
protected  AutomatedInstallData idata
          The installdata.
protected static java.util.HashMap<java.lang.Object,java.lang.String> instances
          The instances of the unpacker objects.
static java.lang.String INTERRUPT
           
protected static boolean interruptDesired
          Interrupt flag if global interrupt is desired.
static java.lang.String INTERRUPTED
           
protected static java.lang.String LANG_FILE_NAME
          The name of the XML file that specifies the panel langpack
protected  LocaleDatabase langpack
          The packs locale database.
protected  boolean result
          The result of the operation.
protected  RulesEngine rules
           
protected  UninstallData udata
          The uninstallation data.
protected  VariableSubstitutor vs
          The variables substitutor.
 
Constructor Summary
UnpackerBase(AutomatedInstallData idata, AbstractUIProgressHandler handler)
          The constructor.
 
Method Summary
protected  void addToInstances()
          Adds this to the map of all existent instances of Unpacker.
private  boolean fileMatchesOnePattern(java.lang.String filename, java.util.ArrayList<org.apache.regexp.RE> patterns)
           
protected  java.util.List[] getCustomActions()
          Returns the defined custom actions split into types including a constructed type for the file related installer listeners.
 boolean getResult()
          Return the state of the operation.
static java.util.HashMap getRunningInstances()
          Returns a copy of the active unpacker instances.
protected  void handleAdditionalUninstallData(UninstallData udata, java.util.List[] customData)
          Adds additional unistall data to the uninstall data object.
protected  void informListeners(java.util.List[] customActions, int action, java.lang.Object firstParam, java.lang.Object secondParam, java.lang.Object thirdParam)
          Informs all listeners which would be informed at the given action type.
static boolean interruptAll(long waitTime)
          Initiate interrupt of all alive Unpacker and waits until all Unpacker are interrupted or the wait time has arrived.
static boolean isDiscardInterrupt()
          Returns whether an interrupt request should be discarded or not.
static boolean isInterruptDesired()
          Returns the interrupt desired state.
private static boolean isInterruptReady()
           
protected  boolean mkDirsWithEnhancement(java.io.File dest, PackFile pf, java.util.List[] customActions)
          Creates the given directory recursive and calls the method "afterDir" of each listener with the current file object and the pack file object.
protected  boolean performInterrupted()
          Sets the interrupt flag for this Unpacker to INTERRUPTED if the previos state was INTERRUPT or INTERRUPTED and returns whether interrupt was initiate or not.
protected  void performUpdateChecks(java.util.ArrayList<UpdateCheck> updatechecks)
           
private  java.util.List<org.apache.regexp.RE> preparePatterns(java.util.ArrayList<java.lang.String> list, org.apache.regexp.RECompiler recompiler)
           
protected  void putUninstaller()
          Puts the uninstaller.
protected  void removeFromInstances()
          Removes this from the map of all existent instances of Unpacker.
abstract  void run()
           
static void setDiscardInterrupt(boolean di)
          Sets the discard interrupt flag.
private static void setInterruptAll()
          Initiate interrupt of all alive Unpacker.
private static void setInterruptDesired(boolean interruptDesired)
           
 void setRules(RulesEngine rules)
          Called by the InstallerFrame to set a reference to the RulesEngine, which will be used to check conditions.
private  boolean shouldInterrupt()
          Returns whether interrupt was initiate or not for this Unpacker.
 void writeInstallationInformation()
          Writes information about the installed packs and the variables at installation time.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

idata

protected AutomatedInstallData idata
The installdata.


handler

protected AbstractUIProgressHandler handler
The installer listener.


udata

protected UninstallData udata
The uninstallation data.


vs

protected VariableSubstitutor vs
The variables substitutor.


absolute_installpath

protected java.io.File absolute_installpath
The absolute path of the installation. (NOT the canonical!)


langpack

protected LocaleDatabase langpack
The packs locale database.


result

protected boolean result
The result of the operation.


instances

protected static java.util.HashMap<java.lang.Object,java.lang.String> instances
The instances of the unpacker objects.


interruptDesired

protected static boolean interruptDesired
Interrupt flag if global interrupt is desired.


discardInterrupt

protected static boolean discardInterrupt
Do not perform a interrupt call.


LANG_FILE_NAME

protected static final java.lang.String LANG_FILE_NAME
The name of the XML file that specifies the panel langpack

See Also:
Constant Field Values

ALIVE

public static final java.lang.String ALIVE
See Also:
Constant Field Values

INTERRUPT

public static final java.lang.String INTERRUPT
See Also:
Constant Field Values

INTERRUPTED

public static final java.lang.String INTERRUPTED
See Also:
Constant Field Values

rules

protected RulesEngine rules
Constructor Detail

UnpackerBase

public UnpackerBase(AutomatedInstallData idata,
                    AbstractUIProgressHandler handler)
The constructor.

Parameters:
idata - The installation data.
handler - The installation progress handler.
Method Detail

setRules

public void setRules(RulesEngine rules)
Description copied from interface: IUnpacker
Called by the InstallerFrame to set a reference to the RulesEngine, which will be used to check conditions.

Specified by:
setRules in interface IUnpacker
Parameters:
rules - - an instantiated RulesEngine

getRunningInstances

public static java.util.HashMap getRunningInstances()
Returns a copy of the active unpacker instances.

Returns:
a copy of active unpacker instances

addToInstances

protected void addToInstances()
Adds this to the map of all existent instances of Unpacker.


removeFromInstances

protected void removeFromInstances()
Removes this from the map of all existent instances of Unpacker.


setInterruptAll

private static void setInterruptAll()
Initiate interrupt of all alive Unpacker. This method does not interrupt the Unpacker objects else it sets only the interrupt flag for the Unpacker objects. The dispatching of interrupt will be performed by the Unpacker objects self.


interruptAll

public static boolean interruptAll(long waitTime)
Initiate interrupt of all alive Unpacker and waits until all Unpacker are interrupted or the wait time has arrived. If the doNotInterrupt flag in InstallerListener is set to true, the interrupt will be discarded.

Parameters:
waitTime - wait time in millisecounds
Returns:
true if the interrupt will be performed, false if the interrupt will be discarded

isInterruptReady

private static boolean isInterruptReady()

performInterrupted

protected boolean performInterrupted()
Sets the interrupt flag for this Unpacker to INTERRUPTED if the previos state was INTERRUPT or INTERRUPTED and returns whether interrupt was initiate or not.

Returns:
whether interrupt was initiate or not

shouldInterrupt

private boolean shouldInterrupt()
Returns whether interrupt was initiate or not for this Unpacker.

Returns:
whether interrupt was initiate or not

getResult

public boolean getResult()
Return the state of the operation.

Specified by:
getResult in interface IUnpacker
Returns:
true if the operation was successful, false otherwise.

fileMatchesOnePattern

private boolean fileMatchesOnePattern(java.lang.String filename,
                                      java.util.ArrayList<org.apache.regexp.RE> patterns)
Parameters:
filename -
patterns -
Returns:
true if the file matched one pattern, false if it did not

preparePatterns

private java.util.List<org.apache.regexp.RE> preparePatterns(java.util.ArrayList<java.lang.String> list,
                                                             org.apache.regexp.RECompiler recompiler)
Parameters:
list - A list of file name patterns (in ant fileset syntax)
recompiler - The regular expression compiler (used to speed up RE compiling).
Returns:
List of org.apache.regexp.RE

informListeners

protected void informListeners(java.util.List[] customActions,
                               int action,
                               java.lang.Object firstParam,
                               java.lang.Object secondParam,
                               java.lang.Object thirdParam)
                        throws java.lang.Exception
Informs all listeners which would be informed at the given action type.

Parameters:
customActions - array of lists with the custom action objects
action - identifier for which callback should be called
firstParam - first parameter for the call
secondParam - second parameter for the call
thirdParam - third parameter for the call
Throws:
java.lang.Exception

getCustomActions

protected java.util.List[] getCustomActions()
Returns the defined custom actions split into types including a constructed type for the file related installer listeners.

Returns:
array of lists of custom action data like listeners

mkDirsWithEnhancement

protected boolean mkDirsWithEnhancement(java.io.File dest,
                                        PackFile pf,
                                        java.util.List[] customActions)
                                 throws java.lang.Exception
Creates the given directory recursive and calls the method "afterDir" of each listener with the current file object and the pack file object. On error an exception is raised.

Parameters:
dest - the directory which should be created
pf - current pack file object
customActions - all defined custom actions
Returns:
false on error, true else
Throws:
java.lang.Exception

isDiscardInterrupt

public static boolean isDiscardInterrupt()
Returns whether an interrupt request should be discarded or not.

Returns:
Returns the discard interrupt flag

setDiscardInterrupt

public static void setDiscardInterrupt(boolean di)
Sets the discard interrupt flag.

Parameters:
di - the discard interrupt flag to set

isInterruptDesired

public static boolean isInterruptDesired()
Returns the interrupt desired state.

Returns:
the interrupt desired state

setInterruptDesired

private static void setInterruptDesired(boolean interruptDesired)
Parameters:
interruptDesired - The interrupt desired flag to set

putUninstaller

protected void putUninstaller()
                       throws java.lang.Exception
Puts the uninstaller.

Throws:
java.lang.Exception - Description of the Exception

handleAdditionalUninstallData

protected void handleAdditionalUninstallData(UninstallData udata,
                                             java.util.List[] customData)
Adds additional unistall data to the uninstall data object.

Parameters:
udata - unistall data
customData - array of lists of custom action data like uninstaller listeners

run

public abstract void run()
Specified by:
run in interface java.lang.Runnable

performUpdateChecks

protected void performUpdateChecks(java.util.ArrayList<UpdateCheck> updatechecks)
Parameters:
updatechecks -

writeInstallationInformation

public void writeInstallationInformation()
                                  throws java.io.IOException,
                                         java.lang.ClassNotFoundException
Writes information about the installed packs and the variables at installation time.

Throws:
java.io.IOException
java.lang.ClassNotFoundException