package com.tutego.insel.solutions.util;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;

public class Holidays
{
  public static void main( String[] args )
  {
    // Build Set of Saturdays and Sundays
    
    SortedSet set = new TreeSet();

    Calendar today = Calendar.getInstance();
    
    for ( int day = 1, maxDay = today.getActualMaximum( Calendar.DAY_OF_YEAR ); 
          day <= maxDay; 
          day++ ) 
    {
      today.set( Calendar.DAY_OF_YEAR, day );

      if (    today.get( Calendar.DAY_OF_WEEK ) == Calendar.SATURDAY
           || today.get( Calendar.DAY_OF_WEEK ) == Calendar.SUNDAY )
      {
        set.add( today.getTime() );
      }
    }

    // Find Saturdays and Sundays in holidays.

    Date start = new GregorianCalendar( 2007, Calendar.DECEMBER, 22 ).getTime();
    Date end   = new GregorianCalendar( 2008, Calendar.JANUARY,   1 ).getTime();
    SortedSet subSet = set.subSet( start, end );

    for ( Iterator iterator = subSet.iterator(); iterator.hasNext(); )
    {
      Date date = (Date) iterator.next();
      System.out.println( date );
    }

    System.out.println( subSet.size() );
  }
}
