diff options
Diffstat (limited to 'sca-java-1.x/trunk/modules/domain-manager/src/main/resources/composite-gadget.html')
-rw-r--r-- | sca-java-1.x/trunk/modules/domain-manager/src/main/resources/composite-gadget.html | 278 |
1 files changed, 278 insertions, 0 deletions
diff --git a/sca-java-1.x/trunk/modules/domain-manager/src/main/resources/composite-gadget.html b/sca-java-1.x/trunk/modules/domain-manager/src/main/resources/composite-gadget.html new file mode 100644 index 0000000000..3af9c3f725 --- /dev/null +++ b/sca-java-1.x/trunk/modules/domain-manager/src/main/resources/composite-gadget.html @@ -0,0 +1,278 @@ +<!-- + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. +--> +<html> +<head> +<title>SCA Domain - Domain Composite</title> + +<script type="text/javascript" src="../composite-gadget/composite-gadget.js"></script> +<script type="text/javascript" src="utils.js"></script> + +<link rel="stylesheet" type="text/css" href="manager.css"> +</head> + +<body> + <div id="domainComposite"> + + <form id="domainCompositeForm"> + <div id="composites" ></div> + <br> + ><a href="" id="addCompositeLink">Add</a> + <a href="" id="deleteCompositeLink">Delete</a> + </form> + + <div id="newComposite" style="visibility: hidden;"> + <form id="newCompositeForm"> + <table width="100%"> + <tr><th>Add Composite</th></tr> + <tr><td>Add an SCA composite describing your SCA service components.</td></tr> + </table> + <br> + <table> + <tr><td>Composite namespace:</td><td><input type="text" name="compositeNamespace" size="50"/></td><td>e.g. http://your/namespace</td></tr> + <tr><td>Composite name:</td><td><input type="text" name="compositeName" size="50"/></td><td>e.g. yourcomposite</td></tr> + <tr><td>Contribution URI:</td><td><input type="text" name="contributionURI" size="50"/></td><td>e.g. yourcontrib, http://yourcontrib</td></tr> + </table> + <input id="addCompositeButton" type="button" value="Add" /> + </form> + </div> + + </div> +</body> + +<script type="text/javascript"> + //@Reference + var domainComposite = new tuscany.sca.Reference("domainComposite"); + + //@Reference + var workspace = new tuscany.sca.Reference("workspace"); + + var gadget = gadget(window, document); + if (gadget.showContributions == null) { + gadget.showContributions = true; + + } + + var domainCompositeForm = elementByID(gadget, 'domainCompositeForm'); + var compositesElement = elementByID(gadget, 'composites'); + var newCompositeElement = elementByID(gadget, 'newComposite'); + var newCompositeForm = elementByID(gadget, 'newCompositeForm'); + + var contributedComposites = new Array(); + + function getComposites() { + domainComposite.get("", getCompositesResponse); + } + + function contributionURI(id) { + var i = id.indexOf(';'); + return id.substring(10, i); + } + + function compositeName(id) { + var i = id.indexOf(';'); + return id.substring(i + 1); + } + + function getCompositesResponse(feed) { + if (feed != null) { + var entries = feed.getElementsByTagName("entry"); + var composites = ""; + composites += '<table width="100%">'; + composites += '<tr><th>Composite</th>'; + if (gadget.showContributions) { + composites += '<th>Contribution</th>'; + } + if (gadget.showComponents) { + composites += '<th>Components</th>'; + } + composites += '</tr>'; + //'<th>Composite Configuration</th>' + + + for (var i=0; i<entries.length; i++) { + var id = entries[i].getElementsByTagName("id")[0].firstChild.nodeValue; + var link = entries[i].getElementsByTagName("link")[0].getAttribute("href"); + var uri = contributionURI(id); + var qname = compositeName(id); + + var content = ""; + if (entries[i].getElementsByTagName("content")[0].firstChild != null) { + content = entries[i].getElementsByTagName("content")[0].firstChild.nodeValue; + } + var components = ''; + var bs = content.indexOf('<span id="components">'); + if (bs != -1) { + var es = content.indexOf('</span>', bs); + components = content.substring(bs, es + 7); + } else { + bs = content.indexOf('<span id="problem"'); + if (bs != -1) { + var es = content.indexOf('</span>', bs); + components = content.substring(bs, es + 7); + } + } + + composites += '<tr>' + composites += '<td><input name="composites" type="checkbox" value="' + id + '">'; + composites += '<a href=\"' + link + '\">' + qname + '</a></td>'; + if (gadget.showContributions) { + composites += '<td><a href="/contribution/' + uri + '">' + uri + '</a></td>'; + } + if (gadget.showComponents) { + composites += '<td class=tdw>' + components + '</td>'; + } + //composites += '<td><a href="/composite-config/?composite=' + id + '"><img src="icons/feed-icon.png" border="0"></a></td>'; + composites += '</tr>'; + } + composites += '</table>'; + compositesElement.innerHTML = composites; + } + } + + function deleteComposite() { + var composites = array(domainCompositeForm.composites); + for (var i = 0; i < composites.length; i++) { + if (composites[i].checked) { + var id = composites[i].value; + domainComposite.del(id, deleteCompositeResponse); + } + } + return false; + } + + function deleteCompositeResponse() { + getComposites(); + } + + function addComposite() { + var id = 'composite:' + + newCompositeForm.contributionURI.value + ';' + + newCompositeForm.compositeNamespace.value + ';' + + newCompositeForm.compositeName.value; + var entry = '<entry xmlns="http://www.w3.org/2005/Atom">' + + '<title>' + id +'</title>' + + '<id>' + id + '</id>' + + '</entry>'; + domainComposite.post(entry, addCompositeResponse); + } + + function addCompositeResponse() { + newCompositeForm.compositeNamespace.value = ""; + newCompositeForm.compositeName.value = ""; + newCompositeForm.contributionURI.value = ""; + getComposites(); + } + + function getContributions() { + workspace.get("", getContributionsResponse); + } + + function getContributionsResponse(feed) { + if (feed != null) { + contributedComposites = new Array(); + var entries = feed.getElementsByTagName("entry"); + for (var i=0; i<entries.length; i++) { + if (entries[i].getElementsByTagName("content")[0].firstChild != null) { + var content = entries[i].getElementsByTagName("content")[0].firstChild.nodeValue; + var bs = content.indexOf('<span id="deployables">'); + if (bs != -1) { + var es = content.indexOf('</span>', bs); + content = content.substring(bs, es + 7); + for (;;) { + var bc = content.indexOf('composite:'); + if (bc == -1) { + break; + } + var ec = content.indexOf('">', bc); + if (ec == -1) { + break; + } + var uri = content.substring(bc, ec); + contributedComposites[uri] = uri; + content = content.substring(ec +1); + } + } + } + } + } + } + + function suggestCompositeNamespaces() { + var namespaces = new Array(); + for (var uri in contributedComposites) { + var qname = compositeName(uri); + var ns = qname.substring(0, qname.indexOf(';')); + namespaces[ns] = ns; + } + return array(namespaces); + } + + function suggestCompositeNames() { + var inputns = newCompositeForm.compositeNamespace.value; + var names = new Array(); + for (var uri in contributedComposites) { + var qname = compositeName(uri); + var sc = qname.indexOf(';'); + var ns = qname.substring(0, sc); + var name = qname.substring(sc + 1); + if (ns == inputns || inputns == "") { + names[name] = name; + } + } + return array(names); + } + + function suggestContributionURIs() { + var inputns = newCompositeForm.compositeNamespace.value; + var inputname = newCompositeForm.compositeName.value; + var uris = new Array(); + for (var uri in contributedComposites) { + var qname = compositeName(uri); + var sc = qname.indexOf(';'); + var ns = qname.substring(0, sc); + var name = qname.substring(sc + 1); + if ((ns == inputns || inputns == "") && (name == inputname || inputname == "")) { + var curi = contributionURI(uri); + uris[curi] = curi; + } + } + return array(uris); + } + + function toggleNewComposite() { + var visibility = newCompositeElement.style.visibility; + if (visibility == 'hidden') { + newCompositeElement.style.visibility = 'visible'; + } else { + newCompositeElement.style.visibility = 'hidden'; + } + return false; + } + + elementByID(gadget, 'deleteCompositeLink').onclick = deleteComposite; + elementByID(gadget, 'addCompositeLink').onclick = toggleNewComposite; + elementByID(gadget, 'addCompositeButton').onclick = addComposite; + + getComposites(); + getContributions(); + suggest(newCompositeForm.compositeNamespace, suggestCompositeNamespaces); + suggest(newCompositeForm.compositeName, suggestCompositeNames); + suggest(newCompositeForm.contributionURI, suggestContributionURIs); + +</script> +</html> |