SessionContext context = this.getContext(true);
Map configuration = this.getConfiguration();
DocumentFragment copletsFragment = (DocumentFragment)context.getAttribute(ATTRIBUTE_ADMIN_COPLETS);
String command = this.request.getParameter(PortalManager.REQ_PARAMETER_ADMIN_COPLETS);
if (command != null && copletsFragment != null) {
try {
this.getSessionManager().startWritingTransaction(context);
// save : save coplets base
// new : new coplet
// delete : use id to delete coplet
// change : change the coplet
// cache : cleans the cache
if (command.equals("delete") == true && copletID != null) {
Node coplet = DOMUtil.getSingleNode(copletsFragment, "coplets-profile/coplets/coplet[@id='"+copletID+"']");
if (coplet != null) {
coplet.getParentNode().removeChild(coplet);
}
} else if (command.equals("change") == true && copletID != null) {
Node coplet = DOMUtil.getSingleNode(copletsFragment, "coplets-profile/coplets/coplet[@id='"+copletID+"']");
if (coplet != null) {
// now get the information
String value;
value = this.request.getParameter("portaladmin_title");
if (value != null) DOMUtil.setValueOfNode(DOMUtil.getSingleNode(coplet, "title"), value);
value = this.request.getParameter("portaladmin_mand");
if (value != null) DOMUtil.setValueOfNode(DOMUtil.getSingleNode(coplet, "configuration/mandatory"), value);
value = this.request.getParameter("portaladmin_sizable");
if (value != null) DOMUtil.setValueOfNode(DOMUtil.getSingleNode(coplet, "configuration/sizable"), value);
value = this.request.getParameter("portaladmin_active");
if (value != null) DOMUtil.setValueOfNode(DOMUtil.getSingleNode(coplet, "configuration/active"), value);
value = this.request.getParameter("portaladmin_handsize");
if (value != null) DOMUtil.setValueOfNode(DOMUtil.selectSingleNode(coplet, "configuration/handlesSizable"), value);
value = this.request.getParameter("portaladmin_handpar");
if (value != null) DOMUtil.setValueOfNode(DOMUtil.selectSingleNode(coplet, "configuration/handlesParameters"), value);
value = this.request.getParameter("portaladmin_timeout");
if (value != null) DOMUtil.setValueOfNode(DOMUtil.selectSingleNode(coplet, "configuration/timeout"), value);
value = this.request.getParameter("portaladmin_customizable");
if (value != null) DOMUtil.setValueOfNode(DOMUtil.selectSingleNode(coplet, "configuration/customizable"), value);
value = this.request.getParameter("portaladmin_persistent");
if (value != null) DOMUtil.setValueOfNode(DOMUtil.selectSingleNode(coplet, "configuration/persistent"), value);
String resource = this.request.getParameter("portaladmin_resource");
if (resource != null) {
Element resourceNode = (Element)DOMUtil.getSingleNode(coplet, "resource");
resourceNode.getParentNode().removeChild(resourceNode);
resourceNode = coplet.getOwnerDocument().createElementNS(null, "resource");
resourceNode.setAttributeNS(null, "uri", resource);
coplet.appendChild(resourceNode);
}
resource = this.request.getParameter("portaladmin_cust");
boolean isCustom = DOMUtil.getValueAsBooleanOf(coplet, "configuration/customizable", false);
if (resource != null && isCustom == true) {
Element resourceNode = (Element)DOMUtil.getSingleNode(coplet, "customization");
if (resourceNode != null) resourceNode.getParentNode().removeChild(resourceNode);
resourceNode = coplet.getOwnerDocument().createElementNS(null, "customization");
resourceNode.setAttributeNS(null, "uri", resource);
coplet.appendChild(resourceNode);
}
if (isCustom == false) {
Element resourceNode = (Element)DOMUtil.getSingleNode(coplet, "customization");
if (resourceNode != null) resourceNode.getParentNode().removeChild(resourceNode);
}
// transformations
value = this.request.getParameter("portaladmin_newxsl");
if (value != null) {
Element tNode = (Element)DOMUtil.selectSingleNode(coplet, "transformation");
Element sNode = tNode.getOwnerDocument().createElementNS(null, "stylesheet");
tNode.appendChild(sNode);
sNode.appendChild(sNode.getOwnerDocument().createTextNode(value));
}
// now get all transformation stylesheets, mark
// all stylesheets which should be deleted with
// an attribute delete
Enumeration keys = this.request.getParameterNames();
Element sNode;
String key;
while (keys.hasMoreElements() == true) {
key = (String)keys.nextElement();
if (key.startsWith("portaladmin_xsl_") == true) {
value = key.substring(key.lastIndexOf('_')+ 1);
sNode = (Element)DOMUtil.getSingleNode(coplet, "transformation/stylesheet[position()="+value+"]");
if (sNode != null) {
String xslName = this.request.getParameter(key);
if (xslName.equals("true") == true) xslName = "**STYLESHEET**";
DOMUtil.setValueOfNode(sNode, xslName);
}
} else if (key.startsWith("portaladmin_delxsl_") == true) {
value = key.substring(key.lastIndexOf('_')+ 1);
sNode = (Element)DOMUtil.getSingleNode(coplet, "transformation/stylesheet[position()="+value+"]");
if (sNode != null) {
sNode.setAttributeNS(null, "delete", "true");
}
}
}
NodeList delete = DOMUtil.selectNodeList(coplet, "transformation/stylesheet[@delete]");
if (delete != null) {
for(int i=0; i < delete.getLength(); i++) {
delete.item(i).getParentNode().removeChild(delete.item(i));
}
}
}
} else if (command.equals("new") == true) {
// first we have to invent a new coplet id!
int index = 0;
boolean found = false;
Element coplet;
Element subNode;
while (found == false) {
copletID = "S"+index;
coplet = (Element)DOMUtil.getSingleNode(copletsFragment, "coplets-profile/coplets/coplet[@id='"+copletID+"']");
if (coplet == null) {
found = true;
} else {
index++;
}
}
coplet = copletsFragment.getOwnerDocument().createElementNS(null, "coplet");
coplet.setAttributeNS(null, "id", copletID);
subNode = coplet.getOwnerDocument().createElementNS(null, "resource");
coplet.appendChild(subNode);
subNode.setAttributeNS(null, "uri", "uri_in_sitemap");