import java.io.*;
import java.util.*;

class log{
  private static String strLFN;
  private static String myLogFileName = "RMI_";
  private static String myLogFileLoc = "C:" + File.separator + "temp" + File.separator;
  private static File out;
  private static FileWriter logFile;
  private static boolean logFileOpen = false;
  

  private static String formDate(int Number) {
    if ( Number < 10 ) {
      return "0" + Number;
    }
    return Number + "";
  } // End of formDate

  private static String getDateTime() {
    Calendar myDateTime = new GregorianCalendar();
    return myDateTime.get(Calendar.YEAR) + "/" 
	    + formDate(myDateTime.get(Calendar.MONTH)+1) + "/" 
	    + formDate(myDateTime.get(Calendar.DAY_OF_MONTH)) + " " 
	    + formDate(myDateTime.get(Calendar.HOUR_OF_DAY)) + ":" 
	    + formDate(myDateTime.get(Calendar.MINUTE)) + ":" 
	    + formDate(myDateTime.get(Calendar.SECOND)) + " ";
  } // End of getDateTime

  public static boolean openLog() {
    Calendar myDateTime = new GregorianCalendar();
    String strDate = formDate(myDateTime.get(Calendar.MONTH)+1) +
	             formDate(myDateTime.get(Calendar.DAY_OF_MONTH)) + 
	             myDateTime.get(Calendar.YEAR);

    strLFN = myLogFileLoc + myLogFileName + strDate + ".log";

    try { 
      out = new File(strLFN);
      logFile = new FileWriter(out);
      String text = getDateTime() + "Openning Log File: " + strLFN + "\n"; 
      logFile.write(text); 
      logFile.flush();
      logFileOpen = true;
    } catch (IOException e) { System.out.println("ERROR " + e ); }

    return logFileOpen;

  }// End of openLog
  
  public static boolean openLog(String Dir,String Name) {
	  
	  myLogFileLoc = Dir;
	  myLogFileName = Name + "_";
	  return log.openLog();

  }// End of openLog(Dir,Name)

  public static boolean writeLog(String msg) {
    boolean returnVal = false;
    if ( logFileOpen ) {
      String text = getDateTime() + msg + "\n";
      try {
        logFile.write(text);
	logFile.flush();
	returnVal=true;
      } catch ( Exception e ) { System.out.println("ERROR " + e ); }
    } else {
	    System.out.println("ERROR Log File Not Open");
    }
    return returnVal;
  }// End of writeLog

  public static boolean closeLog() {
    boolean returnVal = false;
    try {
      String text = getDateTime() + "Closing Log File.\n";
      logFile.write(text);
      logFile.flush();
      logFile.close();
      returnVal=true;
    } catch (IOException e) { System.out.println("ERROR " + e ); }
    return returnVal;
  } // End of closeLog

}// End of Log Class