package be.xhibit.teletask.parser.handler;
import be.xhibit.teletask.parser.Consumer;
import java.text.DecimalFormat;
import java.util.ListIterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CentralUnitLineHandler extends LineHandlerSupport {
private static final DecimalFormat ID_FORMATTER = new DecimalFormat("00");
private static final CentralUnitLineHandler INSTANCE = new CentralUnitLineHandler();
private static final Pattern PROPERTY_PATTERN = Pattern.compile("([^:]*):\\s(.*)");
private static final Pattern START_PATTERN = Pattern.compile("\\s*CENTRAL\\sUNITS");
private CentralUnitLineHandler() {
}
public static CentralUnitLineHandler getInstance() {
return INSTANCE;
}
@Override
public Pattern getStartPattern() {
return START_PATTERN;
}
@Override
protected void handle(String startLine, Consumer consumer, ListIterator<String> iterator, String line, int counter) {
Matcher matcher = PROPERTY_PATTERN.matcher(line);
if (matcher.find()) {
String property = matcher.group(1);
String value = matcher.group(2);
switch (property) {
case "Type": consumer.type(value); break;
case "Name": consumer.name(value); break;
case "Serial Number": consumer.serialNumber(value); break;
case "IP Address": consumer.ipAddress(value); break;
case "Port Number": consumer.portNumber("55957"); break; //Cannot change port number, this is hardcoded
case "MAC Address": consumer.macAddress(value); break;
}
}
}
}