1 2 58 59 package org.enhydra.apache.xerces.validators.datatype; 60 61 import java.util.Hashtable ; 62 63 69 70 public class MonthDayDatatypeValidator extends DateTimeValidator { 71 72 private final static int MONTHDAY_SIZE = 7; 74 75 public MonthDayDatatypeValidator() throws InvalidDatatypeFacetException{ 76 super(); 77 } 78 79 public MonthDayDatatypeValidator ( DatatypeValidator base, Hashtable facets, 80 boolean derivedByList ) throws InvalidDatatypeFacetException { 81 super(base, facets, derivedByList); 82 } 83 84 93 protected int[] parse(String str, int[] date) throws SchemaDateTimeException{ 94 95 resetBuffer(str); 96 97 if ( date== null ) { 99 date=new int[TOTAL_SIZE]; 100 } 101 resetDateObj(date); 102 103 date[CY]=YEAR; 105 106 if (fBuffer.charAt(0)!='-' || fBuffer.charAt(1)!='-') { 107 throw new SchemaDateTimeException("Invalid format for gMonthDay: "+str); 108 } 109 date[M]=parseInt(fStart+2,fStart+4); 110 fStart+=4; 111 112 if (fBuffer.charAt(fStart++)!='-') { 113 throw new SchemaDateTimeException("Invalid format for gMonthDay: " + str); 114 } 115 116 date[D]=parseInt(fStart, fStart+2); 117 118 if ( MONTHDAY_SIZE<fEnd ) { 119 int sign = findUTCSign(MONTHDAY_SIZE, fEnd); 120 if ( sign<0 ) { 121 throw new SchemaDateTimeException ("Error in month parsing:" +str); 122 } 123 else { 124 getTimeZone(date, sign); 125 } 126 } 127 129 validateDateTime(date); 131 132 if ( date[utc]!=0 && date[utc]!='Z' ) { 133 normalize(date); 134 } 135 return date; 136 } 137 138 139 145 protected String dateToString(int[] date) { 146 message.setLength(0); 147 message.append('-'); 148 message.append('-'); 149 message.append(date[M]); 150 message.append('-'); 151 message.append(date[D]); 152 message.append((char)date[utc]); 153 return message.toString(); 154 } 155 156 } 157 158 | Popular Tags |