1 19 package org.openharmonise.vfs.metadata.range; 20 21 import org.openharmonise.commons.xml.*; 22 import org.openharmonise.vfs.metadata.*; 23 import org.w3c.dom.Element ; 24 import org.w3c.dom.Node ; 25 import org.w3c.dom.NodeList ; 26 27 28 35 public class RangeFactory { 36 37 40 private RangeFactory() { 41 super(); 42 } 43 44 50 public static Range getRange(Element elRange) { 51 52 Range range = null; 53 54 Element elChild = null; 55 NodeList nl = elRange.getChildNodes(); 56 for(int i=0; i<nl.getLength(); i++) { 57 if(nl.item(i).getNodeType()==Node.ELEMENT_NODE) { 58 elChild = (Element )nl.item(i); 59 break; 60 } 61 } 62 63 64 if( elChild.getLocalName().equalsIgnoreCase("restriction")) { 65 Element elRestriction = elChild; 66 String sType = elRestriction.getAttributeNS("http://www.w3.org/2001/XMLSchema", "base"); 67 if( sType!=null && sType.equalsIgnoreCase( elRestriction.getPrefix() + ":string")) { 68 range = new StringRange(); 69 } else if( sType!=null && sType.equalsIgnoreCase( elRestriction.getPrefix() + ":date")) { 70 range = new DateRange(); 71 } else if( sType!=null && sType.equalsIgnoreCase( elRestriction.getPrefix() + ":dateTime")) { 72 range = new DateTimeRange(); 73 } else if( sType!=null && sType.equalsIgnoreCase( elRestriction.getPrefix() + ":integer")) { 74 range = new IntegerRange(); 75 } else if( sType!=null && sType.equalsIgnoreCase( elRestriction.getPrefix() + ":float")) { 76 range = new FloatRange(); 77 } else if( sType!=null && sType.equalsIgnoreCase( elRestriction.getPrefix() + ":boolean")) { 78 range = new BooleanRange(); 79 } else if( sType!=null && sType.equalsIgnoreCase( elRestriction.getPrefix() + ":anyURI")) { 80 range = new URIRange(); 81 } 82 } else { 83 Element elResourceType = XMLUtils.getFirstElementChild( XMLUtils.getFirstNamedChild(elRange, "resourcetype") ); 84 if( elResourceType.getLocalName().equalsIgnoreCase("resource")) { 85 range = new ResourceRange(); 86 } else if( elResourceType.getLocalName().equalsIgnoreCase("value")) { 87 range = new ValueRange(); 88 } else if( elResourceType.getLocalName().equalsIgnoreCase("property-resource")) { 89 range = new PropertyRange(); 90 } else if( elResourceType.getLocalName().equalsIgnoreCase("collection")) { 91 range = new CollectionRange(); 92 } 93 } 94 95 if(range!=null) { 96 range.instantiate(elRange); 97 } 98 99 return range; 100 } 101 102 } 103 | Popular Tags |