cnMessage m = new cnMessage();
m.setMsgTypeID(msgtypeid);
for (int j = 0; j < fields.getLength(); j++) {
Element f = (Element)fields.item(j);
int fieldid = Integer.parseInt(f.getAttribute("id"));
cnType datatype = cnType.valueOf(f.getAttribute("datatype"));
int length = 0;
if (f.getAttribute("length").length() > 0) {
length = Integer.parseInt(f.getAttribute("length"));
}
String init_filed_data = f.getChildNodes().item(0) == null ?
null : f.getChildNodes().item(0).getNodeValue();
m.setValue(fieldid, init_filed_data, datatype, length);
}
mfact.addMessageTemplate(m);
}
//Read the parsing guides
nodes = root.getElementsByTagName("parseinfo");
for (int i = 0; i < nodes.getLength(); i++) {
elem = (Element)nodes.item(i);
String msgtypeid = elem.getAttribute("msgtypeid");
if (msgtypeid.length()!= 4) {
throw new IOException("Invalid type for parse guide: " + msgtypeid);
}
NodeList fields = elem.getElementsByTagName("field");
HashMap<Integer, cnFieldParseInfo> parseMap = new HashMap<Integer, cnFieldParseInfo>();
for (int j = 0; j < fields.getLength(); j++) {
Element f = (Element)fields.item(j);
int fieldid = Integer.parseInt(f.getAttribute("id"));
cnType datatype = cnType.valueOf(f.getAttribute("datatype"));
int length = 0;
if (f.getAttribute("length").length() > 0) {
length = Integer.parseInt(f.getAttribute("length"));
}
parseMap.put(fieldid, new cnFieldParseInfo(datatype, length));