KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > xquark > schema > datatypes > PrimitiveListType


1 /*
2  * This file belongs to the XQuark distribution.
3  * Copyright (C) 2003 Universite de Versailles Saint-Quentin.
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307.
18  * You can also get it at http://www.gnu.org/licenses/lgpl.html
19  *
20  * For more information on this software, see http://www.xquark.org.
21  */

22
23 package org.xquark.schema.datatypes;
24
25 import java.util.ArrayList JavaDoc;
26 import java.util.List JavaDoc;
27 import java.util.StringTokenizer JavaDoc;
28
29 import org.xquark.schema.SchemaException;
30 import org.xquark.schema.validation.ValidationContextProvider;
31
32
33 class PrimitiveListType extends MesureableType {
34     private static final String JavaDoc RCSRevision = "$Revision: 1.2 $";
35     private static final String JavaDoc RCSName = "$Name: $";
36
37     PrimitiveType itemPrimitive;
38
39     PrimitiveListType(PrimitiveType itemPrimitive) {
40         super("list of " + itemPrimitive.getName(), PrimitiveType.LIST);
41         this.itemPrimitive = itemPrimitive;
42     }
43
44     protected Object JavaDoc toValidType(Object JavaDoc data) {
45         return (List JavaDoc) data;
46     }
47
48     private ArrayList JavaDoc checkPrimitiveList(String JavaDoc value, ValidationContextProvider context) throws SchemaException {
49         StringTokenizer JavaDoc tok = new StringTokenizer JavaDoc(value);
50         ArrayList JavaDoc result = new ArrayList JavaDoc();
51         while (tok.hasMoreTokens()) {
52             String JavaDoc token = tok.nextToken();
53             try {
54                 Object JavaDoc actual = itemPrimitive.convert(token, context);
55                 result.add(actual);
56             } catch (SchemaException se) {
57                 throw new SchemaException("cvc-datatype-valid.1.2.2", this, se);
58             }
59         }
60         return result;
61     }
62
63     public void checkFacets(Object JavaDoc valueSpace) throws SchemaException {
64         super.checkFacets(valueSpace);
65         super.checkLength(((ArrayList JavaDoc)valueSpace).size(), valueSpace);
66     }
67
68     protected Object JavaDoc toValueSpace(String JavaDoc value, ValidationContextProvider context) throws SchemaException {
69         return checkPrimitiveList(value, context);
70     }
71
72     public String JavaDoc toXMLString(Object JavaDoc data, ValidationContextProvider context) {
73         if (data == null) return null;
74         List JavaDoc list = (List JavaDoc)data;
75         StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
76         for (int i = 0; i < list.size(); i++) {
77             buf.append(itemPrimitive.toXMLString(list.get(i), context));
78             buf.append(' ');
79         }
80         int buflen = buf.length();
81         if (buflen > 0) buf.setLength(buflen-1);
82         return buf.toString();
83     }
84
85 }
86
Popular Tags