package holiday.com; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStreamReader; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Iterator; import java.util.TreeSet; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Program { static TreeSet<Holiday> tr = new TreeSet<>(); public static void main(String[] args) throws Exception { Program program =new Program(); program.readFile(); System.out.println("Is TreeSet empty?: "+tr.isEmpty()); System.out.println("Size of TreeSet: " +tr.size()); //Creating static date variable String staticD = "2013/6/15"; DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); Date staticDate = df.parse(staticD); // Get current date Date curDate = new Date(); SimpleDateFormat curDf = new SimpleDateFormat("yyyy/MM/dd"); String stringCurentDate = curDf.format(curDate); Date currentDate = curDf.parse(stringCurentDate); System.out.println("Today Date: "+stringCurentDate); System.out.println("Today holidays:"); program.getHoliday(currentDate); // Get tomorrow date Date tomDate=new Date(); Calendar c = Calendar.getInstance(); c.setTime(tomDate); c.add(Calendar.DATE, 1); tomDate = c.getTime(); SimpleDateFormat tomDf = new SimpleDateFormat("yyyy/MM/dd"); String stringTomorrowDate = tomDf.format(tomDate); Date tomorowDate = tomDf.parse(stringTomorrowDate); System.out.println("Tomorrow Date: "+stringTomorrowDate); System.out.println("Tomorrow holidays:"); program.getHoliday(tomorowDate); } public void readFile() throws Exception{ //Reading the inpur file FileInputStream fis = new FileInputStream(new File("c:/holidays.txt")); //red file with encoding "windows-1251" Windows Cyrilic InputStreamReader isr = new InputStreamReader(fis, "windows-1251"); BufferedReader br = new BufferedReader(isr); //Initialize variable line String line = null; //Until .txt document have lines do... while ((line = br.readLine()) != null) { //Use pattern to split in 3 arrays( date, string 1, string 2) Pattern p = Pattern.compile("(.*?) (.*?) (\\(.*\\))"); Matcher m = p.matcher(line); if (!m.matches()) throw new Exception("Invalid string"); //Read 1 array of line (it is Date) String s1 = m.group(1); // 2013/01/30 DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); //Format String into Date format Date date = df.parse(s1); //Format String into Date format String s2 = m.group(2); // name of holiday String s3 = m.group(3); // country of holiday //Use default constructor to keep info in object class Holiday Holiday h = new Holiday(date, s2, s3); //Add Holiday object to TreeSet tr.add(h); } br.close(); } public String getHoliday(Date date){ String a=null; //Create iterator Iterator<Holiday> itr = tr.iterator(); while (itr.hasNext()) { //while TreeSet have element do... Holiday s = itr.next();//Get next element of TreeSet Date d = s.date; //get date form [i] element of TreeSet String country = s.country;//get country form [i] element of TreeSet String name = s.name;//get name form [i] element of TreeSet if (d.compareTo(date) == 0) { System.out.println(" -" + name +""+ country); } } return a; } }