KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openharmonise > dav > server > property > ranges > DAVStringRange


1 /*
2  * The contents of this file are subject to the
3  * Mozilla Public License Version 1.1 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at http://www.mozilla.org/MPL/
6  *
7  * Software distributed under the License is distributed on an "AS IS"
8  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
9  * See the License for the specific language governing rights and
10  * limitations under the License.
11  *
12  * The Initial Developer of the Original Code is Simulacra Media Ltd.
13  * Portions created by Simulacra Media Ltd are Copyright (C) Simulacra Media Ltd, 2004.
14  *
15  * All Rights Reserved.
16  *
17  * Contributor(s):
18  */

19
20 package org.openharmonise.dav.server.property.ranges;
21
22 import org.openharmonise.commons.dsi.*;
23 import org.openharmonise.commons.xml.namespace.*;
24 import org.openharmonise.rm.resources.metadata.properties.ranges.*;
25 import org.w3c.dom.*;
26
27 import com.ibm.webdav.*;
28
29 /**
30  * A subclass of <code>DAVRange</code> which handles
31  * String property ranges.
32  *
33  * @author Michael Bell
34  * @version $Revision: 1.2 $
35  * @since November 20, 2003
36  */

37 public class DAVStringRange extends DAVRange {
38
39     /**
40      * @param dsi
41      * @param davPropEl
42      */

43     public DAVStringRange(AbstractDataStoreInterface dsi, Element davPropEl) throws WebDAVException {
44         super(dsi,new StringRange(),davPropEl);
45     }
46
47     /**
48      * @param dsi
49      */

50     public DAVStringRange(AbstractDataStoreInterface dsi) {
51         super(dsi);
52     }
53
54     /**
55      * @param dsi
56      * @param range
57      */

58     public DAVStringRange(AbstractDataStoreInterface dsi, Range range) {
59         super(dsi, range);
60     }
61     
62     
63     /**
64      * Adds range details for to the given range element for string ranges.
65      *
66      * @param rangeEl
67      * @param range
68      * @param doc
69      * @throws WebDAVException
70      */

71     protected void addRangeDetails(
72         Element rangeEl,
73         Range range,
74         Document doc) throws WebDAVException {
75             
76         StringRange strRange = (StringRange) range;
77
78         Element restrEl =
79             doc.createElementNS(
80             NamespaceType.XML_SCHEMA.getURI(),
81                 TAG_RESTRICTION);
82         restrEl.setPrefix(NamespaceType.XML_SCHEMA.getPrefix());
83         
84         restrEl.setAttributeNS(NamespaceType.XML_SCHEMA.getURI(), ATTRIB_PREFIXED_BASE, TYPE_STRING);
85         
86         restrEl.setAttribute("xmlns:" + NamespaceType.XML_SCHEMA.getPrefix(), NamespaceType.XML_SCHEMA.getURI());
87
88
89         int nMin = strRange.getMinLength();
90         if (nMin >= 0) {
91
92             Element minEl =
93                 doc.createElementNS(
94                     NamespaceType.XML_SCHEMA.getURI(),
95                     TAG_MINLENGTH);
96             minEl.setPrefix(NamespaceType.XML_SCHEMA.getPrefix());
97
98             minEl.appendChild(doc.createTextNode(String.valueOf(nMin)));
99             
100             restrEl.appendChild(minEl);
101         }
102
103         int nMax = strRange.getMaxLength();
104         if (nMax >= 0) {
105
106             Element maxEl =
107                 doc.createElementNS(
108                     NamespaceType.XML_SCHEMA.getURI(),
109                     TAG_MAXLENGTH);
110             maxEl.setPrefix(NamespaceType.XML_SCHEMA.getPrefix());
111
112             maxEl.appendChild(doc.createTextNode(String.valueOf(nMax)));
113             
114             restrEl.appendChild(maxEl);
115         }
116
117         rangeEl.appendChild(restrEl);
118     }
119
120     /* (non-Javadoc)
121      * @see org.openharmonise.dav.server.property.ranges.DAVRange#populate(org.w3c.dom.Element)
122      */

123     public void populate(Element propEl) throws WebDAVException {
124         StringRange range = (StringRange) m_range;
125         
126         try {
127             NodeList maxNodes = propEl.getElementsByTagNameNS(NamespaceType.XML_SCHEMA.getURI(),TAG_MAXLENGTH);
128             
129             if(maxNodes.getLength()>0) {
130                 String JavaDoc sVal = maxNodes.item(0).getChildNodes().item(0).getNodeValue();
131                 range.setMaxLength(Integer.parseInt(sVal));
132             }
133             
134             NodeList minNodes = propEl.getElementsByTagNameNS(NamespaceType.XML_SCHEMA.getURI(),TAG_MINLENGTH);
135             
136             if(minNodes.getLength()>0) {
137                 String JavaDoc sVal = minNodes.item(0).getChildNodes().item(0).getNodeValue();
138                 range.setMinLength(Integer.parseInt(sVal));
139             }
140         } catch (InvalidRangeRestrictionException e) {
141             throw new WebDAVException(WebDAVStatus.SC_BAD_REQUEST, "Invalid range restriction");
142         }
143     }
144 }
145
Popular Tags