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.w3c.dom.*;
33 import org.wsmo.common.*;
34 import org.wsmo.common.exception.*;
35 import org.wsmo.mediator.*;
36
37 import com.ontotext.wsmo4j.serializer.xml.*;
38
39
40
41
42
43
44 class NodeMediator {
45 static TopEntity processMediatorNode(Node xmlNode, WsmlXmlParser parser)
46 throws InvalidModelException {
47 if (xmlNode == null || parser == null || !xmlNode.getNodeName().endsWith("Mediator")
48 || xmlNode.getNodeType() != Element.ELEMENT_NODE) {
49 throw new IllegalArgumentException();
50 }
51
52 Mediator mediator = null;
53 IRI mediatorIri = parser.getFactory()
54 .createIRI(WsmlXmlHelper.getAttrValue(xmlNode, "name"));
55 if (xmlNode.getNodeName().startsWith("oo")) {
56 mediator = parser.getFactory().createOOMediator(mediatorIri);
57 }
58 else if (xmlNode.getNodeName().startsWith("gg")) {
59 mediator = parser.getFactory().createGGMediator(mediatorIri);
60 }
61 else if (xmlNode.getNodeName().startsWith("wg")) {
62 mediator = parser.getFactory().createWGMediator(mediatorIri);
63 }
64 else if (xmlNode.getNodeName().startsWith("ww")) {
65 mediator = parser.getFactory().createWWMediator(mediatorIri);
66 }
67 else {
68 throw new IllegalArgumentException();
69
70 }
71
72 NodeTopEntity.processTopEntityNode(mediator, xmlNode, parser);
73 NodeList nodes = xmlNode.getChildNodes();
74 for (int i = 0; i < nodes.getLength(); i++) {
75 Node node = nodes.item(i);
76 if (node.getNodeName() == "nonFunctionalProperties") {
77 NodeNFP.deserialize(mediator, node, parser);
78 }
79 else if (node.getNodeName() == "source") {
80 mediator.addSource(parser.getFactory().createIRI(WsmlXmlHelper.getElementText(node)));
81 }
82 else if (node.getNodeName() == "target") {
83 mediator.setTarget(parser.getFactory().createIRI(WsmlXmlHelper.getElementText(node)));
84 }
85 else if (node.getNodeName() == "usesService") {
86 mediator.setMediationService(parser.getFactory().createIRI(WsmlXmlHelper.getElementText(node)));
87 }
88 }
89
90 return mediator;
91 }
92
93 static void serializeMediator(Element parent, Mediator mediator, WsmlXmlSerializer serializer) {
94 Element mediatorElement = null;
95 if (mediator instanceof OOMediator)
96 mediatorElement = serializer.createElement("ooMediator");
97 else if (mediator instanceof GGMediator)
98 mediatorElement = serializer.createElement("ggMediator");
99 else if (mediator instanceof WGMediator)
100 mediatorElement = serializer.createElement("wgMediator");
101 else if (mediator instanceof WWMediator)
102 mediatorElement = serializer.createElement("wwMediator");
103 else
104 throw new IllegalArgumentException("Invalid mediator type!");
105 mediatorElement.setAttribute("name", mediator.getIdentifier().toString());
106 parent.appendChild(mediatorElement);
107 NodeTopEntity.serializeTopEntity(mediatorElement, mediator, serializer);
108
109 if (!mediator.listNFPValues().isEmpty()) {
110 NodeNFP.serialize(mediatorElement, mediator, serializer);
111 }
112
113 if (mediator.getTarget() != null) {
114 Element target = serializer.createElement("target");
115 mediatorElement.appendChild(target);
116 target.appendChild(serializer.createTextNode(mediator.getIdentifier().toString()));
117 }
118
119 if (mediator.listSources().size() > 0) {
120 for (Iterator i = mediator.listSources().iterator(); i.hasNext();) {
121 Element source = serializer.createElement("source");
122 mediatorElement.appendChild(source);
123 source.appendChild(serializer.createTextNode(((IRI) i.next()).toString()));
124 }
125 }
126 }
127 }
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143