OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [gnu/] [xml/] [validation/] [datatype/] [GDayType.java] - Blame information for rev 769

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 769 jeremybenn
/* GDayType.java --
2
   Copyright (C) 2006  Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath 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, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
package gnu.xml.validation.datatype;
39
 
40
import javax.xml.XMLConstants;
41
import javax.xml.namespace.QName;
42
import org.relaxng.datatype.DatatypeException;
43
import org.relaxng.datatype.ValidationContext;
44
 
45
/**
46
 * The XML Schema gDay type.
47
 *
48
 * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
49
 */
50
final class GDayType
51
  extends AtomicSimpleType
52
{
53
 
54
  static class GDay
55
    implements Comparable
56
  {
57
 
58
    int day;
59
 
60
    public int hashCode()
61
    {
62
      return day;
63
    }
64
 
65
    public boolean equals(Object other)
66
    {
67
      if (other instanceof GDay)
68
        return ((GDay) other).day == day;
69
      return false;
70
    }
71
 
72
    public int compareTo(Object other)
73
    {
74
      if (other instanceof GDay)
75
        {
76
          GDay gd = (GDay) other;
77
          if (gd.day == day)
78
            return 0;
79
          return (day < gd.day) ? -1 : 1;
80
        }
81
      return 0;
82
    }
83
 
84
  }
85
 
86
  static final int[] CONSTRAINING_FACETS = {
87
    Facet.PATTERN,
88
    Facet.ENUMERATION,
89
    Facet.WHITESPACE,
90
    Facet.MAX_INCLUSIVE,
91
    Facet.MAX_EXCLUSIVE,
92
    Facet.MIN_INCLUSIVE,
93
    Facet.MIN_EXCLUSIVE
94
  };
95
 
96
  GDayType()
97
  {
98
    super(new QName(XMLConstants.W3C_XML_SCHEMA_NS_URI, "gDay"),
99
          TypeLibrary.ANY_SIMPLE_TYPE);
100
  }
101
 
102
  public int[] getConstrainingFacets()
103
  {
104
    return CONSTRAINING_FACETS;
105
  }
106
 
107
  public void checkValid(String value, ValidationContext context)
108
    throws DatatypeException
109
  {
110
    super.checkValid(value, context);
111
    int len = value.length();
112
    int state = 0;
113
    int start = 0;
114
    for (int i = 0; i < len; i++)
115
      {
116
        char c = value.charAt(i);
117
        if (c >= 0x30 && c <= 0x39)
118
          continue;
119
        switch (state)
120
          {
121
          case 0: // year
122
            if (c == '-')
123
              {
124
                switch (i)
125
                  {
126
                  case 0:
127
                    continue;
128
                  case 1:
129
                    state = 1;
130
                    start = i + 1;
131
                    continue;
132
                  default:
133
                    throw new DatatypeException(i, "invalid GDay value");
134
                  }
135
              }
136
            break;
137
          case 1: // month
138
            if (c == '-')
139
              {
140
                if (i - start != 0)
141
                  throw new DatatypeException(i, "invalid GDay value");
142
                state = 2;
143
                start = i + 1;
144
                continue;
145
              }
146
            break;
147
          }
148
        throw new DatatypeException(i, "invalid GDay value");
149
      }
150
    switch (state)
151
      {
152
      case 2: // day
153
        if (len - start != 2)
154
          throw new DatatypeException("invalid GDay value");
155
        break;
156
      default:
157
        throw new DatatypeException("invalid GDay value");
158
      }
159
  }
160
 
161
  public Object createValue(String literal, ValidationContext context) {
162
    try
163
      {
164
        GDay ret = new GDay();
165
        ret.day = Integer.parseInt(literal.substring(3));
166
        return ret;
167
      }
168
    catch (Exception e)
169
      {
170
        return null;
171
      }
172
  }
173
 
174
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.