/* ** 2011 April 5 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. */ package info.ata4.bsplib.entity; import org.apache.commons.lang3.StringUtils; /** * Abstract class for entity I/O values. * * @author Nico Bergemann <barracuda415 at yahoo.de> */ public class EntityIO { public static final char SEP_CHR_OLD = ','; public static final char SEP_CHR_NEW = (char) 0x1b; public static final String SEP_STR_OLD = Character.toString(SEP_CHR_OLD); public static final String SEP_STR_NEW = Character.toString(SEP_CHR_NEW); public static boolean isEntityIO(KeyValue kv) { String value = kv.getValue(); // newer format, always 4 if (StringUtils.countMatches(value, SEP_STR_NEW) == 4) { return true; } // 6 seps for VTMB and Messiah, 4 otherwise int matches = StringUtils.countMatches(value, SEP_STR_OLD); if (matches == 4 || matches == 6) { return true; } return false; } private String targetEntity; private String input; private String param; private float delay; private int timesToFire; public EntityIO(String entityIO) { String[] elements = StringUtils.split(entityIO, SEP_CHR_NEW); if (elements.length < 4) { elements = StringUtils.split(entityIO, SEP_CHR_OLD); } if (elements.length < 4) { throw new IllegalArgumentException("Unsupported I/O format"); } targetEntity = elements[0]; input = elements[1]; param = elements[2]; delay = Float.parseFloat(elements[3]); timesToFire = Integer.parseInt(elements[3]); } public String getTargetEntity() { return targetEntity; } public void setTargetEntity(String targetEntity) { this.targetEntity = targetEntity; } public String getInput() { return input; } public void setInput(String input) { this.input = input; } public String getParam() { return param; } public void setParam(String param) { this.param = param; } public float getDelay() { return delay; } public void setDelay(float delay) { this.delay = delay; } public int getTimesToFire() { return timesToFire; } public void setTimesToFire(int timesToFire) { this.timesToFire = timesToFire; } }