Clover coverage report - Ledge Components - SNAPSHOT
Coverage timestamp: Fri Nov 17 2006 05:13:20 CET
file stats: LOC: 753   Methods: 35
NCLOC: 700   Classes: 3
 
 Source file Conditionals Statements Methods TOTAL
CronParser.java 28.7% 36.5% 62.9% 36%
coverage coverage
<
 1    /* Generated By:JavaCC: Do not edit this line. CronParser.java */
 2    package org.objectledge.scheduler.cron;
 3   
 4    import java.io.StringReader;
 5    import java.io.FileInputStream;
 6    import java.io.InputStreamReader;
 7    import java.io.PrintWriter;
 8    import java.io.Reader;
 9   
 10    import java.util.ArrayList;
 11    import java.util.List;
 12    import java.util.Iterator;
 13    import java.util.Collections;
 14   
 15    public class CronParser implements CronParserConstants {
 16    // constants /////////////////////////////////////////////////////////////
 17   
 18    private static final String[] monthName = new String[] {
 19    "",
 20    "jan" , "feb" , "mar" , "apr" , "may" , "jun" ,
 21    "jul" , "aug" , "sep" , "oct" , "nov" , "dec" };
 22   
 23    private static final String[] weekdayName = new String[] {
 24    "sun", "mon" , "tue" , "wed" , "thu" , "fri" , "sat" };
 25   
 26    private static final int[][] spec_reboot = new int[][] {};
 27   
 28    private static final int[][] spec_yearly = new int[][]
 29    { { 0 }, { 0 }, { 1 }, { 1 }, { } };
 30   
 31    private static final int[][] spec_monthly = new int[][]
 32    { { 0 }, { 0 }, { 1 }, { }, { } };
 33   
 34    private static final int[][] spec_weekly = new int[][]
 35    { { 0 }, { 0 }, { }, { }, { 0 } };
 36   
 37    private static final int[][] spec_daily = new int[][]
 38    { { 0 }, { 0 }, { }, { }, { } };
 39   
 40    private static final int[][] spec_hourly = new int[][]
 41    { { 0 }, { }, { }, { }, { } };
 42   
 43  736 public int[][] parse(String config)
 44    throws ParseException,
 45    ValueOutOfRangeException
 46    {
 47  736 StringReader sr = new StringReader(config);
 48  736 ReInit(sr);
 49  644 return cron_config();
 50    }
 51   
 52    // unit test /////////////////////////////////////////////////////////////
 53   
 54  0 public static void main(String[] args)
 55    throws Exception
 56    {
 57  0 FileInputStream fis = new FileInputStream(args[0]);
 58  0 Reader reader = new InputStreamReader(fis, "ISO-8859-2");
 59  0 CronParser parser = new CronParser(reader);
 60  0 parser.test();
 61    }
 62   
 63  0 public static void dump(int[][] config)
 64    {
 65  0 if(config.length == 0)
 66    {
 67  0 System.out.print("@reboot");
 68    }
 69    else
 70    {
 71  0 for(int i=0; i<config.length; i++)
 72    {
 73  0 if(config[i].length == 0)
 74    {
 75  0 System.out.print("*");
 76    }
 77    else
 78    {
 79  0 for(int j=0; j<config[i].length; j++)
 80    {
 81  0 System.out.print(config[i][j]);
 82  0 if(j < config[i].length - 1)
 83    {
 84  0 System.out.print(",");
 85    }
 86    }
 87    }
 88  0 if(i < config.length - 1)
 89    {
 90  0 System.out.print(" ");
 91    }
 92    }
 93    }
 94  0 System.out.println();
 95    }
 96   
 97    // productions ///////////////////////////////////////////////////////////////
 98  138 final public int number(int min, int max) throws ParseException {
 99  138 Token t;
 100  138 t = jj_consume_token(NUMBER);
 101  138 int v = Integer.parseInt(t.image);
 102  138 if(min > 0 && max > 0 && (v < min || v > max))
 103    {
 104  0 {if (true) throw new ValueOutOfRangeException(t, v, min, max);}
 105    }
 106  138 {if (true) return v;}
 107  0 throw new Error("Missing return statement in function");
 108    }
 109   
 110  46 final public List range(int min, int max) throws ParseException {
 111  46 int start, end;
 112  46 int step = -1;
 113  46 start = number(min,max);
 114  46 jj_consume_token(5);
 115  46 end = number(min,max);
 116  46 switch (jj_nt.kind) {
 117  46 case 6:
 118  46 jj_consume_token(6);
 119  46 step = number(-1,-1);
 120  46 break;
 121  0 default:
 122  0 jj_la1[0] = jj_gen;
 123    ;
 124    }
 125  46 List result = new ArrayList();
 126  46 if(step < 0)
 127    {
 128  0 step = 1;
 129    }
 130  46 for(int i=start; i<=end; i+=step)
 131    {
 132  46 result.add(new Integer(i));
 133    }
 134  46 {if (true) return result;}
 135  0 throw new Error("Missing return statement in function");
 136    }
 137   
 138  46 final public List value_or_range(int min, int max) throws ParseException {
 139  46 Token value = null;
 140  46 List range = null;
 141  46 if (jj_2_1(2)) {
 142  46 range = range(min, max);
 143    } else {
 144  0 switch (jj_nt.kind) {
 145  0 case NUMBER:
 146  0 value = jj_consume_token(NUMBER);
 147  0 break;
 148  0 default:
 149  0 jj_la1[1] = jj_gen;
 150  0 jj_consume_token(-1);
 151  0 throw new ParseException();
 152    }
 153    }
 154  46 if(value != null)
 155    {
 156  0 List result = new ArrayList();
 157  0 result.add(new Integer(value.image));
 158  0 {if (true) return result;}
 159    }
 160    else
 161    {
 162  46 {if (true) return range;}
 163    }
 164  0 throw new Error("Missing return statement in function");
 165    }
 166   
 167  46 final public List list_of_values(int min, int max) throws ParseException {
 168  46 List temp = new ArrayList();
 169  46 List var;
 170  46 var = value_or_range(min, max);
 171  46 temp.add(var);
 172  46 label_1:
 173    while (true) {
 174  46 switch (jj_nt.kind) {
 175  0 case 7:
 176    ;
 177  0 break;
 178  46 default:
 179  46 jj_la1[2] = jj_gen;
 180  46 break label_1;
 181    }
 182  0 jj_consume_token(7);
 183  0 var = value_or_range(min, max);
 184  0 temp.add(var);
 185    }
 186  46 List result = new ArrayList();
 187  46 Iterator i = temp.iterator();
 188  46 while(i.hasNext())
 189    {
 190  46 result.addAll((List)i.next());
 191    }
 192  46 Collections.sort(result);
 193  46 {if (true) return result;}
 194  0 throw new Error("Missing return statement in function");
 195    }
 196   
 197  2806 final public int[] value_spec(int min, int max) throws ParseException {
 198  2806 List list=null;
 199  2806 switch (jj_nt.kind) {
 200  2760 case 8:
 201  2760 jj_consume_token(8);
 202  2760 break;
 203  46 case NUMBER:
 204  46 list = list_of_values(min, max);
 205  46 break;
 206  0 default:
 207  0 jj_la1[3] = jj_gen;
 208  0 jj_consume_token(-1);
 209  0 throw new ParseException();
 210    }
 211  2806 if(list == null)
 212    {
 213  2760 {if (true) return new int[0];}
 214    }
 215    else
 216    {
 217  46 int[] result = new int[list.size()];
 218  46 for(int i=0; i < list.size(); i++)
 219    {
 220  46 result[i] = ((Integer)list.get(i)).intValue();
 221    }
 222  46 {if (true) return result;}
 223    }
 224  0 throw new Error("Missing return statement in function");
 225    }
 226   
 227  92 final public int[] month_name() throws ParseException {
 228  92 switch (jj_nt.kind) {
 229  92 case 9:
 230  92 jj_consume_token(9);
 231  92 break;
 232  0 case 10:
 233  0 jj_consume_token(10);
 234  0 break;
 235  0 case 11:
 236  0 jj_consume_token(11);
 237  0 break;
 238  0 case 12:
 239  0 jj_consume_token(12);
 240  0 break;
 241  0 case 13:
 242  0 jj_consume_token(13);
 243  0 break;
 244  0 case 14:
 245  0 jj_consume_token(14);
 246  0 break;
 247  0 case 15:
 248  0 jj_consume_token(15);
 249  0 break;
 250  0 case 16:
 251  0 jj_consume_token(16);
 252  0 break;
 253  0 case 17:
 254  0 jj_consume_token(17);
 255  0 break;
 256  0 case 18:
 257  0 jj_consume_token(18);
 258  0 break;
 259  0 case 19:
 260  0 jj_consume_token(19);
 261  0 break;
 262  0 case 20:
 263  0 jj_consume_token(20);
 264  0 break;
 265  0 default:
 266  0 jj_la1[4] = jj_gen;
 267  0 jj_consume_token(-1);
 268  0 throw new ParseException();
 269    }
 270  92 String t = getToken(0).image;
 271  184 for(int i=0; i<12; i++)
 272  184 if(monthName[i].equals(t))
 273    {
 274  92 {if (true) return new int[] { i };}
 275    }
 276  0 {if (true) throw new InternalError();}
 277  0 throw new Error("Missing return statement in function");
 278    }
 279   
 280  92 final public int[] weekday_name() throws ParseException {
 281  92 switch (jj_nt.kind) {
 282  92 case 21:
 283  92 jj_consume_token(21);
 284  92 break;
 285  0 case 22:
 286  0 jj_consume_token(22);
 287  0 break;
 288  0 case 23:
 289  0 jj_consume_token(23);
 290  0 break;
 291  0 case 24:
 292  0 jj_consume_token(24);
 293  0 break;
 294  0 case 25:
 295  0 jj_consume_token(25);
 296  0 break;
 297  0 case 26:
 298  0 jj_consume_token(26);
 299  0 break;
 300  0 case 27:
 301  0 jj_consume_token(27);
 302  0 break;
 303  0 default:
 304  0 jj_la1[5] = jj_gen;
 305  0 jj_consume_token(-1);
 306  0 throw new ParseException();
 307    }
 308  92 String t = getToken(0).image;
 309  184 for(int i=0; i<7; i++)
 310  184 if(weekdayName[i].equals(t))
 311    {
 312  92 {if (true) return new int[] { i };}
 313    }
 314  0 {if (true) throw new InternalError();}
 315  0 throw new Error("Missing return statement in function");
 316    }
 317   
 318  46 final public int[][] special_config() throws ParseException {
 319  46 switch (jj_nt.kind) {
 320  0 case 28:
 321  0 jj_consume_token(28);
 322  0 {if (true) return spec_reboot;}
 323  0 break;
 324  46 case 29:
 325  46 jj_consume_token(29);
 326  46 {if (true) return spec_yearly;}
 327  0 break;
 328  0 case 30:
 329  0 jj_consume_token(30);
 330  0 {if (true) return spec_yearly;}
 331  0 break;
 332  0 case 31:
 333  0 jj_consume_token(31);
 334  0 {if (true) return spec_monthly;}
 335  0 break;
 336  0 case 32:
 337  0 jj_consume_token(32);
 338  0 {if (true) return spec_daily;}
 339  0 break;
 340  0 case 33:
 341  0 jj_consume_token(33);
 342  0 {if (true) return spec_daily;}
 343  0 break;
 344  0 case 34:
 345  0 jj_consume_token(34);
 346  0 {if (true) return spec_hourly;}
 347  0 break;
 348  0 default:
 349  0 jj_la1[6] = jj_gen;
 350  0 jj_consume_token(-1);
 351  0 throw new ParseException();
 352    }
 353  0 throw new Error("Missing return statement in function");
 354    }
 355   
 356  644 final public int[][] cron_config() throws ParseException {
 357  644 int[] minute = null;
 358  644 int[] hour = null;
 359  644 int[] day = null;
 360  644 int[] month = null;
 361  644 int[] weekday = null;
 362  644 int[][] special = null;
 363  644 switch (jj_nt.kind) {
 364  0 case 28:
 365  46 case 29:
 366  0 case 30:
 367  0 case 31:
 368  0 case 32:
 369  0 case 33:
 370  0 case 34:
 371  46 special = special_config();
 372  46 break;
 373  46 case NUMBER:
 374  552 case 8:
 375  598 minute = value_spec(0,59);
 376  598 hour = value_spec(0,23);
 377  598 day = value_spec(1,31);
 378  598 switch (jj_nt.kind) {
 379  92 case 9:
 380  0 case 10:
 381  0 case 11:
 382  0 case 12:
 383  0 case 13:
 384  0 case 14:
 385  0 case 15:
 386  0 case 16:
 387  0 case 17:
 388  0 case 18:
 389  0 case 19:
 390  0 case 20:
 391  92 month = month_name();
 392  92 break;
 393  0 case NUMBER:
 394  506 case 8:
 395  506 month = value_spec(1,12);
 396  506 break;
 397  0 default:
 398  0 jj_la1[7] = jj_gen;
 399  0 jj_consume_token(-1);
 400  0 throw new ParseException();
 401    }
 402  598 switch (jj_nt.kind) {
 403  92 case 21:
 404  0 case 22:
 405  0 case 23:
 406  0 case 24:
 407  0 case 25:
 408  0 case 26:
 409  0 case 27:
 410  92 weekday = weekday_name();