1 19 20 package org.openharmonise.dav.server.property.ranges; 21 22 import org.openharmonise.commons.dsi.*; 23 import org.openharmonise.commons.xml.*; 24 import org.openharmonise.commons.xml.namespace.*; 25 import org.openharmonise.dav.server.managers.*; 26 import org.openharmonise.dav.server.utils.*; 27 import org.openharmonise.rm.resources.metadata.properties.*; 28 import org.openharmonise.rm.resources.metadata.properties.ranges.*; 29 import org.openharmonise.rm.resources.workflow.properties.*; 30 import org.openharmonise.rm.resources.workflow.properties.ranges.*; 31 import org.w3c.dom.*; 32 33 import com.ibm.webdav.*; 34 35 43 public class DAVRangeFactory { 44 45 46 49 private DAVRangeFactory() { 50 super(); 51 52 } 53 54 static public DAVRange getDAVRange(AbstractDataStoreInterface dsi, Range range) { 55 DAVRange davRange = null; 56 57 if(range instanceof StringRange) { 58 davRange = new DAVStringRange(dsi,range); 59 } else if(range instanceof IntegerRange) { 60 davRange = new DAVIntegerRange(dsi,range); 61 } else if(range instanceof BooleanRange) { 62 davRange = new DAVBooleanRange(dsi,range); 63 } else if(range instanceof AbsoluteChildObjectRange) { 64 davRange = new DAVResourceRange(dsi,range); 65 } else if(range instanceof FloatRange) { 66 davRange = new DAVFloatRange(dsi,range); 67 } else if(range instanceof DateRange) { 68 davRange = new DAVDateRange(dsi,range); 69 } else if(range instanceof URIRange) { 70 davRange = new DAVURIRange(dsi,range); 71 } else if(range instanceof ProfileRange) { 72 davRange = new DAVPropertyRange(dsi,range); 73 } else if(range instanceof RelativeChildObjectRange) { 74 davRange = new DAVRelativeObjectRange(dsi,range); 75 } 76 77 return davRange; 78 } 79 80 static public DAVRange getDAVRange(AbstractDataStoreInterface dsi, Property prop, Element davPropEl) throws WebDAVException { 81 DAVRange davRange = null; 82 83 if(prop instanceof WorkflowProperty) { 84 davRange = new DAVResourceRange(dsi,new WorkflowRange(),davPropEl); 85 } else { 86 87 NodeList restrNodes = davPropEl.getElementsByTagNameNS(NamespaceType.XML_SCHEMA.getURI(), DAVRange.TAG_RESTRICTION); 88 NodeList resourceTypeNodes = davPropEl.getElementsByTagNameNS(NamespaceType.DAV.getURI(),HarmonisePropertiesManager.TAG_RESOURCETYPE); 89 90 if(restrNodes.getLength() > 0) { 91 Element restrEl = (Element) restrNodes.item(0); 92 93 String sBase = restrEl.getAttributeNS(NamespaceType.XML_SCHEMA.getURI(),"base"); 94 95 if(sBase.equals(DAVRange.TYPE_STRING)) { 96 davRange = new DAVStringRange(dsi,davPropEl); 97 } else if(sBase.equals(DAVRange.TYPE_INTEGER)) { 98 davRange = new DAVIntegerRange(dsi,davPropEl); 99 } else if(sBase.equals(DAVRange.TYPE_BOOLEAN)) { 100 davRange = new DAVBooleanRange(dsi,davPropEl); 101 } else if(sBase.equals(DAVRange.TYPE_FLOAT)) { 102 davRange = new DAVFloatRange(dsi,davPropEl); 103 } else if(sBase.equals(DAVRange.TYPE_DATE)) { 104 davRange = new DAVDateRange(dsi,davPropEl); 105 } else if(sBase.equals(DAVRange.TYPE_DATETIME)) { 106 davRange = new DAVDateRange(dsi,davPropEl); 107 } else if(sBase.equals(DAVRange.TYPE_URI)) { 108 davRange = new DAVURIRange(dsi,davPropEl); 109 } 110 111 } else if(resourceTypeNodes.getLength() > 0) { 112 113 Element resourceEl = XMLUtils.getFirstElementChild((Element) resourceTypeNodes.item(0)); 114 String sLocalName = resourceEl.getLocalName(); 115 if(sLocalName.equals(HarmonisePropertiesManager.TAG_PROPERTY_RESOURCE)) { 116 davRange = new DAVPropertyRange(dsi,davPropEl); 117 } else if(sLocalName.equals(DAVRange.TAG_VALUE) 118 || sLocalName.equals(HarmonisePropertiesManager.TAG_RESOURCE) 119 || sLocalName.equals(HarmonisePropertiesManager.TAG_COLLECTION)) { 120 121 NodeList nl = davPropEl.getElementsByTagNameNS(NamespaceType.DAV.getURI(),HarmonisePropertiesManager.TAG_HREF); 122 123 if(nl.getLength() > 0) { 125 Element hrefEl = (Element) nl.item(0); 126 String hrefVal = hrefEl.getChildNodes().item(0).getNodeValue(); 127 128 if(hrefVal.indexOf(HarmoniseNameResolver.WEBDAV_ROOT_MARKER) > 0) { 132 davRange = new DAVResourceRange(dsi,davPropEl); 133 } else { 134 davRange = new DAVRelativeObjectRange(dsi,davPropEl); 135 } 136 137 } else { 138 davRange = new DAVResourceRange(dsi,davPropEl); 139 } 140 141 142 } 143 } 144 } 145 146 return davRange; 147 } 148 149 } 150 | Popular Tags |