001: package com.calipso.xmleditor;
002:
003: import org.exolab.castor.xml.schema.AttributeDecl;
004: import org.exolab.castor.xml.schema.SimpleTypesFactory;
005:
006: import java.util.*;
007:
008: /**
009: *
010: * User: soliveri
011: * Date: 25-sep-2003
012: * Time: 14:19:12
013: *
014: */
015:
016: public class XmlEditorTreeDefinitionNode {
017:
018: private Map subNodes;
019: private String value;
020: private boolean mustHaveChilds;
021: private Vector itemsKeys;
022: private HashMap items;
023:
024: public XmlEditorTreeDefinitionNode(String value) {
025: this .value = value;
026: }
027:
028: /**
029: * Agrega un nodo a los hijos del nodo.
030: * @param value
031: * @return
032: */
033: public XmlEditorTreeDefinitionNode addNodeFrom(String value) {
034: XmlEditorTreeDefinitionNode node = null;
035: node = new XmlEditorTreeDefinitionNode(value);
036: getSubnodes().put(value, node);
037: return node;
038: }
039:
040: /**
041: * Agrega los atributos al nodo.
042: * @param enumeration
043: * @throws XmlEditorException
044: */
045: public void addNodeAttributes(Enumeration enumeration)
046: throws XmlEditorException {
047: while (enumeration.hasMoreElements()) {
048: AttributeDecl attributeDecl = (AttributeDecl) enumeration
049: .nextElement();
050: int type = attributeDecl.getSimpleType()
051: .getBuiltInBaseType().getTypeCode();
052: switch (type) {
053: case SimpleTypesFactory.STRING_TYPE:
054: getItems().put(
055: attributeDecl.getName(),
056: new XmlEditorTreeNodeItemDefinition(
057: attributeDecl.getName().toUpperCase(),
058: attributeDecl.isOptional(),
059: XmlEditorDataType.STRING, attributeDecl
060: .getName()));
061: break;
062: case SimpleTypesFactory.NMTOKEN_TYPE:
063: Enumeration facets = attributeDecl.getSimpleType()
064: .getLocalFacets();
065: getItems().put(
066: attributeDecl.getName(),
067: new XmlEditorTreeNodeItemDefinition(
068: attributeDecl.getName().toUpperCase(),
069: attributeDecl.isOptional(),
070: XmlEditorDataType.TOKENS, facets));
071: break;
072: case SimpleTypesFactory.BOOLEAN_TYPE:
073: getItems().put(
074: attributeDecl.getName(),
075: new XmlEditorTreeNodeItemDefinition(
076: attributeDecl.getName().toUpperCase(),
077: attributeDecl.isOptional(),
078: XmlEditorDataType.BOOLEAN,
079: attributeDecl.getName()));
080: break;
081: case SimpleTypesFactory.INTEGER_TYPE:
082: case SimpleTypesFactory.INT_TYPE:
083: case SimpleTypesFactory.DECIMAL_TYPE: //Todo: Mejorar el tratamiento de este tipo en particular
084: getItems().put(
085: attributeDecl.getName(),
086: new XmlEditorTreeNodeItemDefinition(
087: attributeDecl.getName().toUpperCase(),
088: attributeDecl.isOptional(),
089: XmlEditorDataType.INTEGER,
090: attributeDecl.getName()));
091: break;
092: default:
093: throw new XmlEditorException(
094: "No existe el tipo de dato solicitado");
095: }
096: /* if(attributeDecl.getSimpleType().getBuiltInBaseType().getTypeCode() == SimpleTypesFactory.STRING_TYPE) {
097: getItems().put(attributeDecl.getName(), new XmlEditorTreeNodeItemDefinition(attributeDecl.getName().toUpperCase(), attributeDecl.isOptional(), XmlEditorDataType.STRING, attributeDecl.getName()));
098: } else if (attributeDecl.getSimpleType().getBuiltInBaseType().getTypeCode() == SimpleTypesFactory.NMTOKEN_TYPE) {
099: Enumeration facets = attributeDecl.getSimpleType().getLocalFacets();
100: getItems().put(attributeDecl.getName(), new XmlEditorTreeNodeItemDefinition(attributeDecl.getName().toUpperCase(), attributeDecl.isOptional(), XmlEditorDataType.TOKENS, facets));
101: } else if (attributeDecl.getSimpleType().getBuiltInBaseType().getTypeCode() == SimpleTypesFactory.BOOLEAN_TYPE) {
102: getItems().put(attributeDecl.getName(), new XmlEditorTreeNodeItemDefinition(attributeDecl.getName().toUpperCase(), attributeDecl.isOptional(), XmlEditorDataType.BOOLEAN, attributeDecl.getName()));
103: }*/
104: getItemsKeys().add(attributeDecl.getName());
105: }
106: }
107:
108: public String getValue() {
109: return value;
110: }
111:
112: public void setMustHaveChilds(int childs) {
113: if (childs >= 1) {
114: this .mustHaveChilds = true;
115: } else {
116: this .mustHaveChilds = false;
117: }
118: }
119:
120: public Map getSubnodes() {
121: if (subNodes == null) {
122: subNodes = new HashMap();
123: }
124: return subNodes;
125: }
126:
127: public Vector getItemsKeys() {
128: if (itemsKeys == null) {
129: itemsKeys = new Vector();
130: }
131: return itemsKeys;
132: }
133:
134: public HashMap getItems() {
135: if (items == null) {
136: items = new HashMap();
137: }
138: return items;
139: }
140: }
|