package tmcsim.cadmodels; import java.util.Vector; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import tmcsim.common.ScriptException; import tmcsim.common.CADEnums.CADScreenNum; import tmcsim.common.CADEnums.CADScreenType; import tmcsim.common.CADProtocol.CAD_COMMANDS; /** * IncidentBoardModel is a CADScreenModel object containing data that is * displayed in the IncidentBoard CAD Screen. The addModelObject() method * is used to update the model data with new information.
*
* This element parses and creates the following XML schema in its toXML() and * fromXML() methods. The ROOT element is the parameter for those methods. * See the class description for the CADScreenModel and * IncidentBoardModel_obj Objects for their XML schema.
* * * * * ... * * * * * @see IncidentBoardModel_obj * @see CADScreenModel * @author Matthew Cechini * @version */ public class IncidentBoardModel extends CADScreenModel { /** * Enumeration with XML tag names. * @author Matthew Cechini */ private static enum XML_TAGS { MESSAGE ("MESSAGE"); public String tag; private XML_TAGS(String t) { tag = t; } } /** Model data. List of IncidentBoardModel_obj objects. */ private Vector messageList = null; /** * Constructor. * * @param num CADScreenNum for this model. */ public IncidentBoardModel(CADScreenNum num) { super(CADScreenType.IB_INCIDENT_BOARD, num); messageList = new Vector(); } /** * Constructor. Create model data from parsed parameter XML node. * * @param newNode XML node containing model data. * @throws ScriptException if there is an error in parsing the Node. */ public IncidentBoardModel(Node newNode) throws ScriptException { super(CADScreenType.IB_INCIDENT_BOARD, CADScreenNum.ONE); messageList = new Vector(); fromXML(newNode); } /** * Add a new model object to the list of messages. * * @param ismo IncidentBoardModel_obj * @throws ClassCastException if the parameter is not an * IncidentBoardModel_obj object. */ public void addModelObject(Object ibmo) throws ClassCastException { if(ibmo instanceof IncidentBoardModel_obj) messageList.add((IncidentBoardModel_obj)ibmo); else throw new ClassCastException(); } /** * Get the list of messages in this model. * * @return Vector of IncidentBoardModel_obj objects. */ public Vector getModelObjects() { return messageList; } public void toXML(Element currElem) { Document theDoc = currElem.getOwnerDocument(); Element modelElem = theDoc.createElement(CAD_COMMANDS.INCIDENT_BOARD.fullName); baseToXML(modelElem); Element ibmoElem = null; for(IncidentBoardModel_obj ibmo : messageList) { ibmoElem = theDoc.createElement(XML_TAGS.MESSAGE.tag); ibmo.toXML(ibmoElem); modelElem.appendChild(ibmoElem); } currElem.appendChild(modelElem); } public void fromXML(Node modelNode) throws ScriptException { messageList.clear(); modelNode = modelNode.getFirstChild(); baseFromXML(modelNode); NodeList messageNodes = ((Element)modelNode).getElementsByTagName(XML_TAGS.MESSAGE.tag); for(int i = 0; i < messageNodes.getLength(); i++) messageList.add(new IncidentBoardModel_obj(messageNodes.item(i))); } }