1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package com.ontotext.wsmo4j.parser.xml;
19
20
21
22
23
24
25
26
27
28
29
30 import java.util.*;
31
32 import org.omwg.ontology.*;
33 import org.w3c.dom.*;
34 import org.wsmo.common.*;
35 import org.wsmo.common.Entity;
36 import org.wsmo.common.exception.*;
37
38 import com.ontotext.wsmo4j.serializer.xml.*;
39
40
41
42
43
44
45 class NodeInstance {
46 static Instance deserialize(Node xmlNode, WsmlXmlParser parser) throws InvalidModelException {
47 if (xmlNode == null || parser == null || xmlNode.getNodeName() != "instance"
48 || xmlNode.getNodeType() != Node.ELEMENT_NODE) {
49 throw new IllegalArgumentException();
50 }
51
52 IRI instanceIri = parser.getFactory()
53 .createIRI(WsmlXmlHelper.getAttrValue(xmlNode, "name"));
54 Instance instance = parser.getFactory().createInstance(instanceIri);
55
56 NodeList nodes = xmlNode.getChildNodes();
57 for (int i = 0; i < nodes.getLength(); i++) {
58 Node node = nodes.item(i);
59 if (node.getNodeName() == "memberOf" && node.getNodeType() == Node.ELEMENT_NODE) {
60 IRI conceptIri = parser.getFactory().createIRI(WsmlXmlHelper.getElementText(node));
61 instance.addConcept(parser.getFactory().getConcept(conceptIri));
62 }
63 else if (node.getNodeName() == "nonFunctionalProperties"
64 && node.getNodeType() == Node.ELEMENT_NODE) {
65 NodeNFP.deserialize(instance, node, parser);
66 }
67 else if (node.getNodeName() == "attributeValue"
68 && node.getNodeType() == Node.ELEMENT_NODE) {
69 IRI attrIri = parser.getFactory().createIRI(
70 WsmlXmlHelper.getAttrValue(node, "name"));
71 Value value = NodeValue.deserialize(WsmlXmlHelper.getFirstChildElement(node),
72 parser);
73 instance.addAttributeValue(attrIri, value);
74 }
75 }
76
77 return instance;
78 }
79
80 static Element serialize(Instance instance, WsmlXmlSerializer serializer) {
81 Element instanceElement = serializer.createElement("instance");
82 instanceElement.setAttribute("name", instance.getIdentifier().toString());
83
84 if (!instance.listConcepts().isEmpty()) {
85 Object[] entities = instance.listConcepts().toArray();
86 for (int i = 0; i < entities.length; i++) {
87 Element memberOf = serializer.createElement("memberOf");
88 instanceElement.appendChild(memberOf);
89 memberOf.appendChild(serializer.createTextNode(((Entity) entities[i])
90 .getIdentifier().toString()));
91 }
92 }
93 if (!instance.listNFPValues().isEmpty()) {
94 NodeNFP.serialize(instanceElement, instance, serializer);
95 }
96 if (!instance.listAttributeValues().isEmpty()) {
97 for (Iterator i = instance.listAttributeValues().keySet().iterator(); i.hasNext();) {
98 Identifier attrId = (Identifier) i.next();
99 Element attributeValElement = serializer.createElement("attributeValue");
100 attributeValElement.setAttribute("name", attrId.toString());
101 instanceElement.appendChild(attributeValElement);
102
103 Set datavalues = instance.listAttributeValues(attrId);
104 for (Iterator j = datavalues.iterator(); j.hasNext();) {
105 attributeValElement.appendChild(NodeValue.serialize(j.next(), serializer));
106 }
107 }
108 }
109
110 return instanceElement;
111 }
112 }
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129