package edu.sc.seis.sod.tools;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.martiansoftware.jsap.ParseException;
import com.martiansoftware.jsap.StringParser;
public class SetSACParser extends StringParser {
public SetSACParser(){
for(int i = 0; i < 10; i++) {
availableHeaders.add("" + i);
}
availableHeaders.add("a");
}
public Object parse(String arg) throws ParseException {
Matcher m = re.matcher(arg);
if(!m.matches()) {
throw new ParseException("A SAC phase header specifier requires a phase name followed by an optional dash, '-', and header name like 'a-ttp', not '"
+ arg + "'");
}
Map results = new HashMap();
results.put("phase", m.group(1));
if(m.group(2) != null){
results.put("header", m.group(2));
availableHeaders.remove(m.group(2));
}else{
results.put("header", availableHeaders.remove(0));
}
return results;
}
private Pattern re = Pattern.compile("(\\w+)-?([a0-9])?");
private List availableHeaders = new ArrayList();
}