15 package cz.vutbr.fit.knot.annotations.comet;
17 import java.text.SimpleDateFormat;
18 import java.util.ArrayList;
19 import java.util.Arrays;
20 import java.util.Date;
21 import java.util.Iterator;
70 public static final ArrayList<ArrayList<String>>
RESERVED_HTML_CHARS =
new ArrayList<ArrayList<String>>();
75 RESERVED_HTML_CHARS.add(
GT_LIST);
76 RESERVED_HTML_CHARS.add(
LT_LIST);
86 public static java.util.Date
parseRFC3339Date(String datestring)
throws java.text.ParseException, IndexOutOfBoundsException {
90 if (datestring.endsWith(
"Z")) {
92 SimpleDateFormat s =
new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss'Z'");
93 d = s.parse(datestring);
94 }
catch (java.text.ParseException pe) {
95 SimpleDateFormat s =
new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'");
97 d = s.parse(datestring);
104 if (datestring.contains(
"+")) {
107 String firstpart = datestring.substring(0, datestring.lastIndexOf(sign));
108 String secondpart = datestring.substring(datestring.lastIndexOf(sign));
111 secondpart = secondpart.substring(0, secondpart.indexOf(
':')) + secondpart.substring(secondpart.indexOf(
':') + 1);
112 datestring = firstpart + secondpart;
113 SimpleDateFormat s =
new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ssZ");
115 d = s.parse(datestring);
116 }
catch (java.text.ParseException pe) {
117 s =
new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ");
119 d = s.parse(datestring);
131 public static java.util.Date
parseDate(String datestring)
throws java.text.ParseException, IndexOutOfBoundsException {
135 if (datestring.endsWith(
"Z")) {
136 SimpleDateFormat s =
new SimpleDateFormat(
"yyyy-MM-dd'Z'");
137 d = s.parse(datestring);
143 if (datestring.contains(
"+")) {
146 String firstpart = datestring.substring(0, datestring.lastIndexOf(sign));
147 String secondpart = datestring.substring(datestring.lastIndexOf(sign));
150 secondpart = secondpart.substring(0, secondpart.indexOf(
':')) + secondpart.substring(secondpart.indexOf(
':') + 1);
151 datestring = firstpart + secondpart;
152 SimpleDateFormat s =
new SimpleDateFormat(
"yyyy-MM-ddZ");
153 d = s.parse(datestring);
164 public static java.util.Date
parseTime(String datestring)
throws java.text.ParseException, IndexOutOfBoundsException {
168 if (datestring.endsWith(
"Z")) {
170 SimpleDateFormat s =
new SimpleDateFormat(
"HH:mm:ss'Z'");
171 d = s.parse(datestring);
172 }
catch (java.text.ParseException pe) {
173 SimpleDateFormat s =
new SimpleDateFormat(
"HH:mm:ss.SSSSSS'Z'");
175 d = s.parse(datestring);
182 if (datestring.contains(
"+")) {
185 String firstpart = datestring.substring(0, datestring.lastIndexOf(sign));
186 String secondpart = datestring.substring(datestring.lastIndexOf(sign));
189 secondpart = secondpart.substring(0, secondpart.indexOf(
':')) + secondpart.substring(secondpart.indexOf(
':') + 1);
190 datestring = firstpart + secondpart;
191 SimpleDateFormat s =
new SimpleDateFormat(
"HH:mm:ssZ");
193 d = s.parse(datestring);
194 }
catch (java.text.ParseException pe) {
195 s =
new SimpleDateFormat(
"HH:mm:ss.SSSSSSZ");
197 d = s.parse(datestring);
209 if(date == null)
return "";
210 SimpleDateFormat sdf =
new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ssZ");
211 String formatted = sdf.format(date);
212 if (!formatted.endsWith(
"Z")) {
213 formatted = formatted.substring(0,formatted.length() - 2) +
":"
214 + formatted.substring(formatted.length() - 2,formatted.length());
226 if(date == null)
return "";
227 SimpleDateFormat sdf =
new SimpleDateFormat(
"yyyy-MM-ddZ");
230 formatted = sdf.format(date);
234 System.out.print(e.getMessage());
238 if (!formatted.endsWith(
"Z")) {
239 formatted = formatted.substring(0,formatted.length() - 2) +
":"
240 + formatted.substring(formatted.length() - 2,formatted.length());
253 if(date == null)
return "";
254 SimpleDateFormat sdf =
new SimpleDateFormat(
"yyyy-MM-dd");
257 formatted = sdf.format(date);
261 System.out.print(e.getMessage());
275 if(date == null)
return "";
276 SimpleDateFormat sdf =
new SimpleDateFormat(
"HH:mm:ssZ");
277 String formatted = sdf.format(date);
278 if (!formatted.endsWith(
"Z")) {
279 formatted = formatted.substring(0,formatted.length() - 2) +
":"
280 + formatted.substring(formatted.length() - 2,formatted.length());
294 public static int minimum (
int a,
int b,
int c) {
295 return Math.min(a, Math.min(b, c));
327 d =
new int[n + 1][m + 1];
331 for (i = 0; i <= n; i++) {
335 for (j = 0; j <= m; j++) {
341 for (i = 1; i <= n; i++) {
343 s_i = s.charAt(i - 1);
347 for (j = 1; j <= m; j++) {
349 t_j = t.charAt(j - 1);
361 d[i][j] =
minimum(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);
381 String escaped = str.replace(
"&",
"&");
382 escaped = escaped.replace(
"<",
"<");
383 escaped = escaped.replace(
">",
">");
384 escaped = escaped.replace(
"\"",
""");
385 escaped = escaped.replace(
"'",
"'");
395 if(date == null || date.length()-5 < 0){
398 String offset = date.substring(date.length()-6, date.length());
399 if(offset.matches(
"(\\+|-)(0[0-9]|1[0-5]):[0-5][0-9]")){
416 boolean isTextOnly =
false;
417 boolean isNumberOnly =
false;
419 if(source.charAt(0) !=
'&'){
425 if(source.charAt(1) ==
'#'){
430 for(
int i = startIndex; i < source.length(); i++){
431 char actualChar = source.charAt(i);
433 if(actualChar ==
';' && (isTextOnly || isNumberOnly) && i > 0){
437 if(isTextOnly && !isNumberOnly){
439 if(!Character.isLetter(actualChar)){
442 }
else if(!isTextOnly && isNumberOnly){
461 if (source == null) {
464 StringBuilder result =
new StringBuilder();
467 for(
int i = 0; i < source.length(); i++){
469 Iterator <ArrayList<String>> reservedCharsIt = RESERVED_HTML_CHARS.iterator();
470 while(reservedCharsIt.hasNext()){
471 ArrayList<String> currentReservedChar = reservedCharsIt.next();
472 if(source.charAt(i) == currentReservedChar.get(
RESERVED_CHARS).charAt(0)){
473 if(source.charAt(i) !=
'&'){
481 length = index - source.length();
486 result.append(source.substring(i, index));
498 result.append(source.charAt(i));
502 return result.toString();
static String parseTimeZoneID(String date)
static final String START_OF_NUMERAL
static String toRFC3339DateOnlyWTZ(Date date)
static final int TEXTUAL_MAX_SIZE
static boolean isSpecial(String source)
static int levenshtein(String s, String t)
static String escapeForXml(String str)
static final ArrayList< String > AMP_LIST
static final String START_OF_TEXTUAL
static int minimum(int a, int b, int c)
static final int TEXTUAL_CHARS
static final ArrayList< String > APOS_LIST
static final ArrayList< String > LT_LIST
static String toRFC3339Time(Date date)
static final int NUMERAL_MAX_SIZE
static final String END_OF_MARK
static String toRFC3339DateOnly(Date date)
static final ArrayList< String > GT_LIST
static final int RESERVED_CHARS
static String toHTMLString(String source)
static java.util.Date parseTime(String datestring)
static java.util.Date parseDate(String datestring)
static final ArrayList< ArrayList< String > > RESERVED_HTML_CHARS
Utility class (manipulates RFC 3339 dates)
static final ArrayList< String > QUOT_LIST
static String toRFC3339Date(Date date)
static java.util.Date parseRFC3339Date(String datestring)
static final int NUMERAL_CHARS