rebuilding head
[mir.git] / source / mir / util / XMLReaderTool.java
1 /*
2  * Copyright (C) 2001, 2002 The Mir-coders group
3  *
4  * This file is part of Mir.
5  *
6  * Mir is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * Mir is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Mir; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  * In addition, as a special exception, The Mir-coders gives permission to link
21  * the code of this program with  any library licensed under the Apache Software License, 
22  * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library 
23  * (or with modified versions of the above that use the same license as the above), 
24  * and distribute linked combinations including the two.  You must obey the 
25  * GNU General Public License in all respects for all of the code used other than 
26  * the above mentioned libraries.  If you modify this file, you may extend this 
27  * exception to your version of the file, but you are not obligated to do so.  
28  * If you do not wish to do so, delete this exception statement from your version.
29  */
30 package mir.util;
31
32 import java.util.Arrays;
33 import java.util.HashSet;
34 import java.util.Iterator;
35 import java.util.List;
36 import java.util.Map;
37 import java.util.Set;
38
39 public class XMLReaderTool {
40
41   public static void checkValidIdentifier(String anIdentifier) throws XMLReader.XMLReaderExc {
42   }
43
44   public static String getStringAttributeWithDefault(Map anAttributes, String aKey, String aDefault) {
45     if (anAttributes.containsKey(aKey))
46       return (String) anAttributes.get(aKey);
47     else
48       return aDefault;
49   }
50
51   public static void checkIntegerAttribute(Map anAttributes, String aKey) throws XMLReader.XMLReaderExc {
52     try {
53       Integer.parseInt((String) anAttributes.get(aKey));
54     }
55     catch (Throwable t) {
56       throw new XMLReader.XMLReaderExc("attribute '"+aKey+"' is not an integer" );
57     }
58   }
59
60   public static int getIntegerAttributeWithDefault(Map anAttributes, String aKey, int aDefault) throws XMLReader.XMLReaderExc  {
61     String value;
62
63     if (anAttributes.containsKey(aKey)) {
64       checkIntegerAttribute(anAttributes, aKey);
65       return Integer.parseInt((String) anAttributes.get(aKey));
66     }
67     else
68       return aDefault;
69   }
70
71   public static void checkAttributes(Map anAttributes, String[] aRequiredAttributes, String[] anOptionalAttributes)  throws XMLReader.XMLReaderExc {
72     checkAttributeSet(anAttributes.keySet(),
73        new HashSet(Arrays.asList(aRequiredAttributes)),
74        new HashSet(Arrays.asList(anOptionalAttributes)));
75   }
76
77   public static void checkAttributeSet(Set aSet, Set aRequiredElements, Set anOptionalElements) throws XMLReader.XMLReaderExc{
78     Iterator i;
79
80     i = aSet.iterator();
81     while (i.hasNext()) {
82       Object item = i.next();
83
84       if (!(aRequiredElements.contains(item) || anOptionalElements.contains(item)))
85         throw new XMLReader.XMLReaderExc("unknown attribute '" + item + "'" );
86     }
87
88     i = aRequiredElements.iterator();
89     while (i.hasNext()) {
90       Object item = i.next();
91
92       if (!(aSet.contains(item)))
93         throw new XMLReader.XMLReaderExc("missing required attribute '" + item + "'" );
94     }
95
96   }
97
98   /**
99    * Returns the namespace part of a qualified XML Tag name <br>
100    * Example:<br>
101    * <code>getNameSpaceFromQualifiedName("dc:creator");</code> <br>
102    * will return <code>"dc"</code>
103    *
104    * @param aQualifiedName
105    * @return
106    */
107
108   public static String getNameSpaceFromQualifiedName(String aQualifiedName) {
109     List parts = StringRoutines.splitString(aQualifiedName, ":");
110
111     if (parts.size()<=1)
112       return null;
113     else
114       return (String) parts.get(0);
115   }
116
117   /**
118    * Returns the localname part of a qualified XML Tag name <br>
119    * Example:<br>
120    * <code>getLocalNameFromQualifiedName("dc:creator");</code> <br>
121    * will return <code>"creator"</code>
122    *
123    * @param aQualifiedName
124    * @return
125    */
126
127   public static String getLocalNameFromQualifiedName(String aQualifiedName) {
128     List parts = StringRoutines.splitString(aQualifiedName, ":");
129
130     if (parts.size()<1)
131       return null;
132     if (parts.size()==1)
133       return (String) parts.get(0);
134     else
135       return (String) parts.get(1);
136   }
137
138 }