1 23 24 29 30 package com.sun.enterprise.tools.upgrade.transform.elements; 31 32 36 import org.w3c.dom.Document ; 37 import org.w3c.dom.Element ; 38 import org.w3c.dom.NodeList ; 39 import org.w3c.dom.Node ; 40 import org.w3c.dom.Attr ; 41 import org.w3c.dom.NamedNodeMap ; 42 import com.sun.enterprise.tools.upgrade.transform.ElementToObjectMapper; 43 import com.sun.enterprise.util.i18n.StringManager; 44 import com.sun.enterprise.tools.upgrade.logging.*; 45 import java.util.logging.*; 46 import java.io.File ; 47 import com.sun.enterprise.tools.upgrade.transform.AttributeExtracter; 48 49 import com.sun.enterprise.tools.upgrade.common.CommonInfoModel; 50 51 public class BaseElement { 52 53 protected StringManager stringManager = StringManager.getManager("com.sun.enterprise.tools.upgrade.transform"); 54 protected Logger logger = com.sun.enterprise.tools.upgrade.common.CommonInfoModel.getDefaultLogger(); 55 protected static CommonInfoModel commonInfoModel; 56 57 58 public BaseElement() { 59 } 60 61 public void transform(Element element, Element parentSource, Element parentResult){ 62 NodeList childNodes = element.getChildNodes(); 63 logger.log(Level.FINE, stringManager.getString("upgrade.transform.baseelemnt.transformingMSG"),element.getTagName()); 64 for(int index=0; index < childNodes.getLength(); index++){ 65 Node aNode = childNodes.item(index); 66 try{ 67 if(aNode.getNodeType() == Node.ELEMENT_NODE){ 68 BaseElement baseElement = ElementToObjectMapper.getMapper().getElementObject(aNode.getNodeName()); 69 baseElement.transform((Element )aNode, element, parentResult); 70 } 71 }catch(Exception ex){ 72 ex.printStackTrace(); 74 logger.log(Level.WARNING, stringManager.getString("upgrade.transform.baseelement.transformexception"),new String []{element.getTagName(),ex.getMessage()}); 75 logger.log(Level.WARNING, stringManager.getString("upgrade.transform.baseelement.transformexception"), ex); 76 } 77 } 78 } 79 protected void transferAttributes(Element source, Element result, java.util.List nonTransferList){ 80 boolean debug = false; 81 NamedNodeMap sourceAttrNodeMap = source.getAttributes(); 82 if(sourceAttrNodeMap == null) return; 83 84 NamedNodeMap resultAttrNodeMap = result.getAttributes(); 85 86 87 for(int index=0; index < sourceAttrNodeMap.getLength(); index++){ 88 Node sourceAttrNode = sourceAttrNodeMap.item(index); 89 if(!this.canTransferAttribute(sourceAttrNode.getNodeName(), nonTransferList)) continue; 90 if(!isValidAttributeToTransfer(sourceAttrNode.getNodeName(),getAttributeListForElement(result.getTagName()))) continue; 91 if(resultAttrNodeMap == null){ 92 Attr addAttr = result.getOwnerDocument().createAttribute(sourceAttrNode.getNodeName()); 93 addAttr.setValue(sourceAttrNode.getNodeValue()); 94 result.setAttributeNode(addAttr); 95 }else{ 96 Node resultAttrNode = resultAttrNodeMap.getNamedItem(sourceAttrNode.getNodeName()); 97 if(resultAttrNode != null){ 98 resultAttrNode.setNodeValue(sourceAttrNode.getNodeValue()); 99 }else { 101 Attr addAttr = result.getOwnerDocument().createAttribute(sourceAttrNode.getNodeName()); 102 addAttr.setValue(sourceAttrNode.getNodeValue()); 103 result.setAttributeNode(addAttr); 104 } 105 } 106 } 107 } 108 private boolean canTransferAttribute(String attr, java.util.List attrList){ 109 if(attrList == null || attrList.isEmpty()) 110 return true; 111 for(java.util.Iterator it = attrList.iterator(); it.hasNext(); ){ 112 if(it.next().equals(attr)) 113 return false; 114 } 115 return true; 116 } 117 public static void setCommonInfoModel(CommonInfoModel cim){ 118 commonInfoModel = cim; 119 } 120 125 protected String getKeyToCompare(String elementTagName){ 126 return ElementToObjectMapper.getMapper().getKeyForElement(elementTagName); 127 } 128 protected java.util.List getInsertElementStructure(Element element, Element parentEle){ 129 return ElementToObjectMapper.getMapper().getInsertElementStructure(element.getTagName()); 132 } 133 public void appendElementToParent(Element parentEle, Element element){ 134 java.util.List eleStructureList = this.getInsertElementStructure(element,parentEle); 135 if(eleStructureList == null){ 136 parentEle.appendChild(element); 138 return; 139 } 140 if(eleStructureList.isEmpty()){ 141 parentEle.insertBefore(element, parentEle.getFirstChild()); 143 return; 144 } 145 String insertBeforeElementName = null; 146 Node insertBeforeNode = null; 147 for(int eleIndex =0; eleIndex < eleStructureList.size(); eleIndex++){ 148 insertBeforeElementName = (String )eleStructureList.get(eleIndex); 149 Node lNode=parentEle.getFirstChild(); 150 while (lNode != null) { 151 if (lNode instanceof Element ) { 152 Element lElement=(Element )lNode; 153 if (lElement.getNodeName().equals(insertBeforeElementName)) { 154 insertBeforeNode = lNode; 156 break; 157 } 158 } 159 lNode=lNode.getNextSibling(); 161 } 162 if(insertBeforeNode != null){ 163 break; 164 } 165 } 166 parentEle.insertBefore(element,insertBeforeNode); 168 } 169 protected boolean isValidAttributeToTransfer(String attrName, java.util.List attrList){ 170 for(java.util.Iterator it = attrList.iterator(); it.hasNext();){ 171 if(((String )it.next()).equals(attrName)){ 172 return true; 173 } 174 } 175 return false; 176 } 177 protected java.util.List getAttributeListForElement(String elementName){ 178 String dtdFileName = this.commonInfoModel.getTargetInstallDir()+File.separator+"lib"+File.separator+"dtds"+File.separator+"sun-domain_1_2.dtd"; 181 return AttributeExtracter.getExtracter(dtdFileName).getAttributeList(elementName); 182 } 183 } 184 | Popular Tags |