Program: 184149
Project: 184149
Buggy source:
/** 
 * Note that the passed   {@link HourFilter} is substantially different thanthe year, month, or day filters. The year, month, or day filters set a start and end range, which filters everything not in that range. The hour filter, on the other hand, determines the hours that are allowed for each day within the y/m/d range. For example, you cannot define 1PM on May 1st 2011 to 7PM on May 7th 2011, as that is not how the start and end hours work. You can specify the date range May 1 to May 7, and for every day in that range the hours 1PM to 7PM will be allowed through the filters
 * @param sliceSlize Defines the length that each slice of time should be divided into. Uses even divisions, e.g. 0, 15, 30, 45, etc minutes. Additionally, starts at the first even division occurring before the first reading. For days, this is the start of the day that the first reading was entered on
 * @param yf
 * @param mf
 * @param df
 * @param hf
 */
@SuppressWarnings("String_Node_Str") public DataLoader(TimeSlice sliceSlize,YearFilter yf,MonthFilter mf,DayFilter df,HourFilter hf){
  mSliceSize=sliceSlize;
  try {
    mInputFile=new BufferedReader(new FileReader(dataFileName));
  }
 catch (  FileNotFoundException e) {
    e.printStackTrace();
    return;
  }
catch (  IOException e) {
    System.err.println("String_Node_Str");
    e.printStackTrace();
    return;
  }
  GregorianCalendar temp=new GregorianCalendar();
  YearFilter yearFilter=null;
  if (yf != null)   yearFilter=yf;
 else {
    yearFilter=new YearFilter();
    yearFilter.startYear=temp.getMinimum(Calendar.YEAR);
    yearFilter.endYear=temp.getMaximum(Calendar.YEAR);
  }
  MonthFilter monthFilter=null;
  if (mf != null)   monthFilter=mf;
 else {
    monthFilter=new MonthFilter();
    monthFilter.startMonth=temp.getMinimum(Calendar.MONTH);
    monthFilter.endMonth=temp.getMaximum(Calendar.MONTH);
  }
  DayFilter dayFilter=null;
  if (df != null)   dayFilter=df;
 else {
    dayFilter=new DayFilter();
    dayFilter.startDay=temp.getMinimum(Calendar.DAY_OF_MONTH);
    dayFilter.endDay=temp.getMaximum(Calendar.DAY_OF_MONTH);
  }
  mRangeStart=new GregorianCalendar(0,0,0,0,0,0);
  mRangeStart.set(Calendar.YEAR,yearFilter.startYear);
  mRangeStart.set(Calendar.MONTH,monthFilter.startMonth);
  mRangeStart.set(Calendar.DAY_OF_MONTH,dayFilter.startDay);
  mRangeEnd=new GregorianCalendar(0,0,0,0,0,0);
  mRangeEnd.set(Calendar.YEAR,yearFilter.endYear);
  mRangeEnd.set(Calendar.MONTH,monthFilter.endMonth);
  mRangeEnd.set(Calendar.DAY_OF_MONTH,dayFilter.endDay);
  if (hf != null)   mHourFilter=hf;
 else {
    mHourFilter=new HourFilter();
    mHourFilter.startHour=temp.getMinimum(Calendar.HOUR_OF_DAY);
    mHourFilter.endHour=temp.getMaximum(Calendar.HOUR_OF_DAY);
  }
  advanceInputFileToFirstLine();
}

Fixed version (ground truth):
/** 
 * Note that the passed   {@link HourFilter} is substantially different thanthe year, month, or day filters. The year, month, or day filters set a start and end range, which filters everything not in that range. The hour filter, on the other hand, determines the hours that are allowed for each day within the y/m/d range. For example, you cannot define 1PM on May 1st 2011 to 7PM on May 7th 2011, as that is not how the start and end hours work. You can specify the date range May 1 to May 7, and for every day in that range the hours 1PM to 7PM will be allowed through the filters
 * @param sliceSlize Defines the length that each slice of time should be divided into. Uses even divisions, e.g. 0, 15, 30, 45, etc minutes. Additionally, starts at the first even division occurring before the first reading. For days, this is the start of the day that the first reading was entered on
 * @param yf
 * @param mf
 * @param df
 * @param hf
 */
@SuppressWarnings("String_Node_Str") public DataLoader(TimeSlice sliceSlize,YearFilter yf,MonthFilter mf,DayFilter df,HourFilter hf,int desiredWidth,int desiredHeight){
  mSliceSize=sliceSlize;
  yScaleFactor=yRange / desiredHeight;
  xScaleFactor=xRange / desiredWidth;
  try {
    mInputFile=new BufferedReader(new FileReader(dataFileName));
  }
 catch (  FileNotFoundException e) {
    e.printStackTrace();
    return;
  }
catch (  IOException e) {
    System.err.println("String_Node_Str");
    e.printStackTrace();
    return;
  }
  GregorianCalendar temp=new GregorianCalendar();
  YearFilter yearFilter=null;
  if (yf != null)   yearFilter=yf;
 else {
    yearFilter=new YearFilter();
    yearFilter.startYear=temp.getMinimum(Calendar.YEAR);
    yearFilter.endYear=temp.getMaximum(Calendar.YEAR);
  }
  MonthFilter monthFilter=null;
  if (mf != null)   monthFilter=mf;
 else {
    monthFilter=new MonthFilter();
    monthFilter.startMonth=temp.getMinimum(Calendar.MONTH);
    monthFilter.endMonth=temp.getMaximum(Calendar.MONTH);
  }
  DayFilter dayFilter=null;
  if (df != null)   dayFilter=df;
 else {
    dayFilter=new DayFilter();
    dayFilter.startDay=temp.getMinimum(Calendar.DAY_OF_MONTH);
    dayFilter.endDay=temp.getMaximum(Calendar.DAY_OF_MONTH);
  }
  mRangeStart=new GregorianCalendar(0,0,0,0,0,0);
  mRangeStart.set(Calendar.YEAR,yearFilter.startYear);
  mRangeStart.set(Calendar.MONTH,monthFilter.startMonth);
  mRangeStart.set(Calendar.DAY_OF_MONTH,dayFilter.startDay);
  mRangeEnd=new GregorianCalendar(0,0,0,0,0,0);
  mRangeEnd.set(Calendar.YEAR,yearFilter.endYear);
  mRangeEnd.set(Calendar.MONTH,monthFilter.endMonth);
  mRangeEnd.set(Calendar.DAY_OF_MONTH,dayFilter.endDay);
  if (hf != null)   mHourFilter=hf;
 else {
    mHourFilter=new HourFilter();
    mHourFilter.startHour=temp.getMinimum(Calendar.HOUR_OF_DAY);
    mHourFilter.endHour=temp.getMaximum(Calendar.HOUR_OF_DAY);
  }
  advanceInputFileToFirstLine();
}