package eu.bibl.cfide.engine.compiler.parser.cfideimpl.tokens.using; import eu.bibl.cfide.engine.compiler.parser.ParserException; import eu.bibl.cfide.engine.compiler.parser.ParserToken; import eu.bibl.cfide.engine.util.FilterCollection; import eu.bibl.cfide.engine.util.StringArrayReader; public abstract class UsingToken extends ParserToken { protected String val; UsingToken(String val) { this.val = val; } public String getValue() { return val; } public static UsingToken create(StringArrayReader reader) throws ParserException { String key = reader.read(FilterCollection.NON_NULL_NON_NEWLINE_FILTER); String val = reader.read(FilterCollection.NON_NULL_NON_NEWLINE_FILTER); return getByKey(key, val); } public static UsingToken getByKey(String key, String val) { key = key.toUpperCase(); switch (key) { case "ASM": return new UsingASMToken(val); case "VER": return new UsingVerToken(val); } throw new IllegalArgumentException("invalid key: " + key); // return null;// handle invalid keys in the builder } }