package tmcsim.cadmodels;
import java.util.Vector;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import tmcsim.common.ScriptException;
import tmcsim.common.CADEnums.CADScreenNum;
import tmcsim.common.CADEnums.CADScreenType;
import tmcsim.common.CADProtocol.CAD_COMMANDS;
/**
* IncidentSummaryModel is a CADScreenModel object containing data that is
* displayed in the IncidentSummary 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
* IncidentSummaryModel_obj Objects for their XML schema.
*
*
*
*
* ...
*
*
*
*
* @see IncidentSummaryModel_obj
* @see CADScreenModel
* @author Matthew Cechini
* @version
*/
public class IncidentSummaryModel extends CADScreenModel {
/**
* Enumeration with XML tag names.
* @author Matthew Cechini
*/
private static enum XML_TAGS {
/** Incident information. */
INCIDENT ("INCIDENT");
public String tag;
private XML_TAGS(String t) {
tag = t;
}
}
/** String containing an string of areas, used in the CAD Client IncidentSummary screen. */
public static final String areas = "3 5 9 14 18 29 51 "; //do we read this in?
/** Model data. List of IncidentsSummaryModel_obj objects. */
private Vector incidentsList;
/**
* Constructor.
*
* @param num CADScreenNum for this model.
*/
public IncidentSummaryModel(CADScreenNum num) {
super(CADScreenType.SA_INCIDENT_SUMMARY, num);
incidentsList = 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 IncidentSummaryModel(Node newNode) throws ScriptException {
super(CADScreenType.SA_INCIDENT_SUMMARY, CADScreenNum.ONE);
incidentsList = new Vector();
fromXML(newNode);
}
/**
* Add a new model object to the list of incidents.
*
* @param ismo IncidentSummaryModel_obj
* @throws ClassCastException if the parameter is not an
* IncidentSummaryModel_obj object.
*/
public void addModelObject(Object ismo) throws ClassCastException {
if(ismo instanceof IncidentSummaryModel_obj) {
incidentsList.add((IncidentSummaryModel_obj)ismo);
}
else {
throw new ClassCastException();
}
}
/**
* Get the list of incidents in this model.
*
* @return Vector of IncidentSummaryModel_obj objects.
*/
public Vector getModelObjects() {
return incidentsList;
}
public void toXML(Element currElem) {
Document theDoc = currElem.getOwnerDocument();
Element modelElem = theDoc.createElement(CAD_COMMANDS.INCIDENT_SUMMARY.fullName);
baseToXML(modelElem);
Element ismoElem = null;
for(IncidentSummaryModel_obj ismo : incidentsList) {
ismoElem = theDoc.createElement(XML_TAGS.INCIDENT.tag);
ismo.toXML(ismoElem);
modelElem.appendChild(ismoElem);
}
currElem.appendChild(modelElem);
}
public void fromXML(Node modelNode) throws ScriptException {
incidentsList.clear();
modelNode = modelNode.getFirstChild();
baseFromXML(modelNode);
modelNode = modelNode.getNextSibling();
while(modelNode != null) {
incidentsList.add(new IncidentSummaryModel_obj(modelNode));
modelNode = modelNode.getNextSibling();
}
}
}