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