/*
* IzPack - Copyright 2001-2008 Julien Ponge, All Rights Reserved.
*
* http://izpack.org/
* http://izpack.codehaus.org/
*
* Copyright 2003 Jonathan Halliday
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.izforge.izpack.panels;
import com.izforge.izpack.installer.*;
import com.izforge.izpack.util.AbstractUIProgressHandler;
import com.izforge.izpack.adaptator.IXMLElement;
/**
* Functions to support automated usage of the InstallPanel
*
* @author Jonathan Halliday
*/
public class InstallPanelAutomationHelper extends PanelAutomationHelper implements PanelAutomation,
AbstractUIProgressHandler
{
private int noOfPacks = 0;
/**
* Null op - this panel type has no state to serialize.
*
* @param installData unused.
* @param panelRoot unused.
*/
public void makeXMLData(AutomatedInstallData installData, IXMLElement panelRoot)
{
// do nothing.
}
/**
* Perform the installation actions.
*
* @param panelRoot The panel XML tree root.
* @return true if the installation was successful.
*/
public boolean runAutomated(AutomatedInstallData idata, IXMLElement panelRoot)
{
/*
Unpacker unpacker = new Unpacker(idata, this);
unpacker.start();
*/
IUnpacker unpacker = UnpackerFactory.getUnpacker(idata.info.getUnpackerClassName(), idata, this);
Thread unpackerthread = new Thread(unpacker, "IzPack - Unpacker thread");
unpacker.setRules(idata.getRules());
unpackerthread.start();
boolean done = false;
while (!done && unpackerthread.isAlive())
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
// ignore it, we're waiting for the unpacker to finish...
}
}
return unpacker.getResult();
}
/**
* Reports progress on System.out
*
* @see AbstractUIProgressHandler#startAction(String, int)
*/
public void startAction(String name, int no_of_steps)
{
System.out.println("[ Starting to unpack ]");
this.noOfPacks = no_of_steps;
}
/**
* Sets state variable for thread sync.
*
* @see com.izforge.izpack.util.AbstractUIProgressHandler#stopAction()
*/
public void stopAction()
{
System.out.println("[ Unpacking finished ]");
boolean done = true;
}
/**
* Null op.
*
* @param val
* @param msg
* @see com.izforge.izpack.util.AbstractUIProgressHandler#progress(int, String)
*/
public void progress(int val, String msg)
{
// silent for now. should log individual files here, if we had a verbose
// mode?
}
/**
* Reports progress to System.out
*
* @param packName The currently installing pack.
* @param stepno The number of the pack
* @param stepsize unused
* @see com.izforge.izpack.util.AbstractUIProgressHandler#nextStep(String, int, int)
*/
public void nextStep(String packName, int stepno, int stepsize)
{
System.out.print("[ Processing package: " + packName + " (");
System.out.print(stepno);
System.out.print('/');
System.out.print(this.noOfPacks);
System.out.println(") ]");
}
/**
* {@inheritDoc}
*/
public void setSubStepNo(int no_of_substeps)
{
// not used here
}
}