package org.appwork.app.launcher.parameterparser;
import java.util.ArrayList;
import org.appwork.utils.event.Eventsender;
/**
* This class is used to parse and evaluate Startparameters
*
* @author $Author: unknown $
*
*/
public class ParameterParser {
/**
* Stores the Applications startParameters
*/
private String[] startArguments;
/**
* The eventsenderobjekt is used to add Listenersupport to this class.
*/
private Eventsender<CommandSwitchListener, SwitchEvent> eventSender;
public ParameterParser(String[] args) {
this.startArguments = args;
this.eventSender = new Eventsender<CommandSwitchListener, SwitchEvent>() {
@Override
protected void fireEvent(CommandSwitchListener listener, SwitchEvent event) {
listener.executeCommandSwitch(event);
}
};
}
/**
* @return the {@link ParameterParser#eventSender}
* @see ParameterParser#eventSender
*/
public Eventsender<CommandSwitchListener, SwitchEvent> getEventSender() {
return eventSender;
}
/**
* parses the command row. and fires {@link SwitchEvent} for each switch command
*/
public void parse() {
ArrayList<String> params = new ArrayList<String>();
String switchCommand = null;
for (String var : startArguments) {
if (var.startsWith("-")) {
while (var.length() > 0 && var.startsWith("-")) {
var = var.substring(1);
}
if (switchCommand != null) {
getEventSender().fireEvent(new SwitchEvent(switchCommand, params.toArray(new String[] {})));
}
switchCommand = var;
params.clear();
} else {
params.add(var);
}
}
if (switchCommand != null) {
getEventSender().fireEvent(new SwitchEvent(switchCommand, params.toArray(new String[] {})));
}
}
}