/** * Grammar.java * * @author Charles Groves */ package edu.sc.seis.sod.validator.model; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; public class Grammar { public Grammar(String filename) { this.filename = filename.replace('\\', '/'); } public List<Definition> getDefs() { List<Definition> defList = new ArrayList<Definition>(); defList.addAll(defs.values()); return defList; } public void include(Grammar grammar) { Iterator it = grammar.defs.values().iterator(); while(it.hasNext()) { add((Definition)it.next()); } //TODO combine starts } public String getLoc() { return filename; } public Form getRoot() { return getDef("").getForm(); } public void add(Definition d) { defs.put(d.getName(), d); } public void add(String name, Definition d) { //TODO handle combines defs.put(name, d); } public boolean equals(Object o) { if(o == this) { return true; } else if(o instanceof Grammar) { return ((Grammar)o).filename.equals(filename); } return false; } public int hashCode() { return filename.hashCode(); } public Definition getDef(String name) { return defs.get(name); } public String toString() { return "Grammar " + filename; } private String filename; private Map<String, Definition> defs = new HashMap<String, Definition>(); }