import java.awt.Container; import java.awt.GridLayout; import java.awt.TextArea; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.*; import javax.swing.JFrame; import javax.swing.JOptionPane; import java.text.*; import java.awt.BorderLayout; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class Project2 { static TextFileInput inFile; static JFrame myFrame; static JTextArea textAreaOriginal; static JTextArea textAreaSorted; static JTextField messageField; public Project2() { } public static void main ( String[] args ) { myFrame = new JFrame(); myFrame.setSize ( 450, 300 ); myFrame.setLocation ( 100, 100 ); myFrame.setTitle ( "Read file of Dates" ); Container contentPane = myFrame.getContentPane(); JPanel panel = new JPanel(); panel.setLayout ( new GridLayout ( 1, 2 ) ); contentPane.add ( panel, BorderLayout.CENTER ); textAreaOriginal = new JTextArea(); textAreaOriginal.setEditable ( false ); panel.add ( new JScrollPane ( textAreaOriginal ) ); textAreaSorted = new JTextArea(); textAreaSorted.setEditable ( false ); panel.add ( new JScrollPane ( textAreaSorted ) ); messageField = new JTextField(); messageField.setEditable ( false ); contentPane.add ( messageField, BorderLayout.SOUTH ); myFrame.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE ); myFrame.setVisible ( true ); int arrcount = 0; String filename = args[0]; DateCS212[] dateList = new DateCS212[1000] ; arrcount = readFile ( filename, dateList ); displayResults ( textAreaOriginal, dateList, arrcount ); } public static void displayResults ( JTextArea area,DateCS212[] dates,int length ) { for ( int i = 0; i < length; i++ ) { area.append ( dates[i].toString() + "\n" ); } } private static int readFile ( String filename, DateCS212[] dates ) { try { String lineDate = ""; inFile = new TextFileInput ( filename ); int linecount = 0; lineDate = inFile.readLine(); while ( lineDate != null ) { if ( dates[linecount].isValidDate ( lineDate ) ) { dates[linecount] = lineDate; linecount++; } lineDate = inFile.readLine(); } return linecount; } catch ( Exception anyException ) { return 0; } finally { inFile.close(); } } }
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateCS212 { static int month; static int day; static int year; public DateCS212 ( int month1, int day1, int year1 ) { month = month1; day = day1; year = year1; } public void setDate ( String date1 ) { month = Integer.parseInt ( date1.substring ( 0, 2 ) ); day = Integer.parseInt ( date1.substring ( 3, 5 ) ); year = Integer.parseInt ( date1.substring ( 6 ) ); } public void setMonth ( int month1 ) { month = month1; } public void setDay ( int day1 ) { day = day1; } public void setYear ( int year1 ) { year = year1; } public int getMonth() { return month; } public int getDay() { return day; } public int getYear() { return year; } public int compareTo ( DateCS212 other ) { Calendar cal = Calendar.getInstance(); cal.set ( year, month - 1, day ); int month2 = other.month; int day2 = other.day; int year2 = other.year; Calendar cal2 = Calendar.getInstance(); cal2.set ( year2, month2 - 1, day2 ); if ( cal.before ( cal2 ) ) return -1; else if ( cal.equals ( cal2 ) ) return 0; else return 1; } public boolean equals ( Object other ) { return ( other != null && getClass() == other.getClass() ); } public String toString() { String datestr = String.valueOf ( month ) + "\\" + String.valueOf ( day ) + "\\" + String.valueOf ( year ); return datestr; } public static boolean isValidDate ( String text ) { int test = 0; String format = "MM/dd/yyyy"; SimpleDateFormat df = new SimpleDateFormat ( format ); String format2 = "MM-dd-yyyy"; SimpleDateFormat df2 = new SimpleDateFormat ( format2 ); Date result = null; df.setLenient ( false ); df2.setLenient ( false ); try { result = df.parse ( text ); test = 1; } catch ( Throwable t ) { test = 0; } try { if ( test == 0 ) { result = df2.parse ( text ); test = 1; } } catch ( Throwable t ) { test = 0; } if ( test == 1 ) return true; return false; } private static boolean isValidDate ( int month, int day, int year ) { if ( month > 12 || month < 1 ) { return false; } if ( ( month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12 ) && ( day > 31 || day < 1 ) ) { return false; } if ( ( month == 4 || month == 6 || month == 9 || month == 11 ) && ( day > 30 || day < 1 ) ) { return false; } if ( month == 2 ) { if ( day < 1 ) { return false; } if ( isLeapYear ( year ) == true ) { if ( day > 29 ) { return false; } } else { if ( day > 28 ) { return false; } } } return true; } private static boolean isLeapYear ( int year ) { if ( year % 100 == 0 ) { if ( year % 400 == 0 ) { return true; } } else { if ( ( year % 4 ) == 0 ) { return true; } } return false; } }
| DaniWeb Message | |
| Cancel Changes | |