Processing MySQL Dates in Java & Groovy according to requirement.

This program gets start and end date from MySQL database, List the dates inbetween two dates and match with the current date. If date matches, it will pick Dept_id and Person_id from the table in Mysql. Side by side, it counts no. of persons of each department whose Leave date matches with the current date and make a fresh table telling no. of persons which are on leave in each department.

Java Program:
(Place in mysql-connector-java-bin folder while compiling or give its path in class path( javac  -cp ~/mysql-connector-java-bin  filename.java)

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.*;
import java.text.SimpleDateFormat;
import java.text.ParseException;

/*
author= Priyanka Kapoor
version=0.4 (Final)
date=29/07/2012
*/
public class dataprocessing{
public static int [] Dept=new int[100];
public static int j=0;
public static Connection getConnection() throws Exception {
    String url = "jdbc:mysql://localhost:3306/bonita_journal";
    String username = "bonita";
    String password = "bpm";
    Connection conn = DriverManager.getConnection(url, username, password);
    return conn;
}
public static void main(String[] args) {
    int n;
    
    Connection conn = null;
    Statement stmt = null;
    Statement stmt1=null;
    ResultSet rs = null;
    ResultSet rs1=null;  
    try {
        conn = getConnection();
        System.out.println("conn=" + conn);
        // prepare query
        String query = "select Dept_id,Start_Date, End_Date from sanction1";
        String query1="SELECT COUNT(*) FROM sanction1";
        // create a statement
        stmt = conn.createStatement();
        stmt1=conn.createStatement();
        // execute query and return result as a ResultSet
        rs = stmt.executeQuery(query);
        rs1=stmt1.executeQuery(query1);
        while(rs1.next()){
            n=rs1.getInt("Count(*)");
            System.out.println(n);
            int i=0;     
             // extract data from the ResultSet
             String [] start=new String[n];
             int [] id=new int[n];
            String [] end_d=new String[n];
            while (rs.next()) {
       
                id[i] = rs.getInt(1);
                       start[i] = rs.getString(2);
                       end_d[i] = rs.getString(3);
                i++;
                }
        
            date_intervals(start,end_d,n,id);
            table_creation(conn);
            calc_absent(Dept,conn);
        }//end while loop

    } //end try
    catch (Exception e)
    {
        e.printStackTrace();
        System.exit(1);
    }
    finally
    {
        // release database resources
        try 
        {
            rs.close();
            rs1.close();
            stmt1.close();
            stmt.close();
            conn.close();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }//end finally
}//end main
public static void func_comp(String [] currentDate1, int n,int [] id,int i)
    {
        
        for(int h=0;h<currentDate1.length;h++)
        {        
                try
                {if(currentDate1[h]!=null){
                    SimpleDateFormat Format = new SimpleDateFormat("yyyy-MM-dd");
                    Date date = new Date();
                    
                    String dat1=Format.format(date);
                    String dat2=currentDate1[h];
                    System.out.println("dat1="+dat1);
                    System.out.println("dat2="+dat2);
                    Date date2 = Format.parse(dat2);
                    Date date1 = Format.parse(dat1);
                    //date2=Format.format(date2);    
                    System.out.println("current date="+date1);
                    System.out.println("Date to be compared"+date2);
                    if(date1.before(date2))
                    {
                        System.out.println("Date1 is before Date2. Valid entry");
                    }
                    
                    if(date1.equals(date2))
                    {
                        System.out.println("Date1 is equal Date2");
                    Dept[j]=id[i];
                    System.out.println("Dept_id selected="+Dept[j]);
                    j++;
            
                    }
 
                        }//end if
                }//end try
                catch(ParseException ex)
                {
                        ex.printStackTrace();
                    }
            
        }//end for loop
    }//end function
public static void date_intervals(String [] start,String [] end_d, int n,int [] id)
    {
    try{    for(int i=0;i<n;i++)
        {if((start[i]!=null) && (end_d!=null)){
                String date1 = start[i];
                String date2 = end_d[i];
                System.out.println("2 date"+date1);
                System.out.println(date2);
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                Calendar calendar1 = Calendar.getInstance();
                calendar1.setTime(format.parse(date1));
                Calendar calendar2 = Calendar.getInstance();
                calendar2.setTime(format.parse(date2));
                int k=0;
                String [] currentDate1 = new String[15];
                java.util.Date currentDate=calendar1.getTime();
                    
                while(!currentDate.equals(calendar2.getTime()))
                {    SimpleDateFormat ft =new SimpleDateFormat ("yyyy-MM-dd");
                    currentDate1[k]= ft.format(currentDate);
                           k=k+1;
                    calendar1.add(Calendar.DAY_OF_MONTH, 1);
                    currentDate = calendar1.getTime();
                    currentDate1[k]= ft.format(currentDate);
                       }
            
                for( k=0;k<currentDate1.length;k++)
                {
                    System.out.println(currentDate1[k]);
                }    
                func_comp(currentDate1,n,id,i);    
        
            }//enf if
        }//end for loop
    }//end try
    catch (Exception ex)
    {
        ex.printStackTrace();
    }//end catch
    }//end function
public static void calc_absent(int [] Dept,Connection conn){
    for(int j=0;j<Dept.length;j++)
    {    int b=Dept[j];
        int inc=0;
        if(Dept[j]!=0)
        {
            for(int a=0;a<Dept.length;a++)
            {
        
                if(Dept[a]==b)
                {inc=inc+1;
                }
            }
            System.out.println("Dept id "+b+"has"+ inc +"employees absent");
            table_insertion(b,inc,conn);
        }//end of if
        
    }//end of loop


}//end of calc_absent function
public static void table_insertion(int Department,int Leaves,Connection conn)
{    Statement stmt = null;

    try
    {
        conn = getConnection();    
        System.out.println("Table insertion connection"+conn);
        String query= "insert into Today_Record values("+Department+","+Leaves+")";
        System.out.println("Insertion query= "+query);
        stmt = conn.createStatement();
        stmt.executeUpdate(query);
        
            
    }
    catch (Exception e)
    {
        e.printStackTrace();
        System.exit(1);
    }
    finally
    {
        // release database resources
        try 
        {
            
            stmt.close();
            conn.close();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }

}//end of table_insertion function




public static void table_creation(Connection conn)
{    Statement stmt = null;

    try
    {
        conn = getConnection();    
        System.out.println("Creation table connection = "+conn);
        String query = "create table Today_Record(Department int(4),Leaves int(4))";
        stmt = conn.createStatement();
        stmt.executeUpdate(query);
        
            
    }
    catch (Exception e)
    {
        e.printStackTrace();
        System.exit(1);
    }
    finally
    {
        // release database resources
        try 
        {
            
            stmt.close();
            conn.close();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }


}//end of table_creation function
}//end class

Groovy version of it is same but without class. (Will update with classes also)

import groovy.sql.Sql;
import java.text.SimpleDateFormat;
String [] start=new String[7];
int [] id=new int[7];
String [] end_d=new String[7];
def host = "localhost:3306";
def user = "bonita";
def pass = "bpm";
def schema = "bonita_journal";
def n;
int [] Dept=new int[100];
int j=0;
sql = Sql.newInstance("jdbc:mysql://$host/$schema","$user","$pass", "com.mysql.jdbc.Driver")
query="select count(*) from sanction1";
sql.eachRow(query){
n =it."count(*)";
println n}
def i=0;
sql = Sql.newInstance("jdbc:mysql://$host/$schema","$user","$pass", "com.mysql.jdbc.Driver")
query="select Dept_id,Start_Date,End_Date from sanction1";
sql.eachRow(query)
    {id[i]=it.Dept_id;
    start[i]=it.Start_Date;
    end_d[i]=it.End_Date;
    //println "0="+start[i];
    i++}
sql.close();

for(i=0;i<n;i++)
{
    if((start[i]!=null) && (end_d!=null))
    {
        String date1 = start[i];
        String date2 = end_d[i];
        System.out.println("2 date"+date1);
        System.out.println(date2);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar1 = Calendar.getInstance();
        calendar1.setTime(format.parse(date1));
        Calendar calendar2 = Calendar.getInstance();
        calendar2.setTime(format.parse(date2));
        int k=0;
        String [] currentDate1 = new String[15];
        java.util.Date currentDate=calendar1.getTime();
                
        while(!currentDate.equals(calendar2.getTime()))
        {    SimpleDateFormat ft =new SimpleDateFormat ("yyyy-MM-dd");
            currentDate1[k]= ft.format(currentDate);
            k=k+1;
            calendar1.add(Calendar.DAY_OF_MONTH, 1);
            currentDate = calendar1.getTime();
            currentDate1[k]= ft.format(currentDate);
        }
        for( k=0;k<currentDate1.length;k++)
        {
            System.out.println(currentDate1[k]);
        }    
    
        
        for(int h=0;h<currentDate1.length;h++)
        {
            if(currentDate1[h]!=null)
            {
                SimpleDateFormat Format = new SimpleDateFormat("yyyy-MM-dd");
                Date date = new Date();
            
                String dat1=Format.format(date);
                String dat2=currentDate1[h];
                System.out.println("dat1="+dat1);
                System.out.println("dat2="+dat2);
                Date dates2 = Format.parse(dat2);
                Date dates1 = Format.parse(dat1);
                //date2=Format.format(date2);    
                System.out.println("current date="+dates1);
                System.out.println("Date to be compared"+dates2);
                /*if(date1.before(date2))
                {
                    System.out.println("Dates1 is before Dates2. Valid entry");
                }
                */
                if(dates1.equals(dates2))
                {
                    System.out.println("Dates1 is equal Dates2");
                    Dept[j]=id[i];
                    System.out.println("Dept_id selected="+Dept[j]);
                    j++            
                }
 
                }//end if
        }
    }
}

for(int p=0;p<Dept.length;p++)
    {    int b=Dept[p];
        int inc=0;
        if(Dept[p]!=0)
        {
            for(int a=0;a<Dept.length;a++)
            {
        
                if(Dept[a]==b)
                {inc=inc+1;
                }
            }
            System.out.println("Dept id "+b+"has"+ inc +"employees absent");
            sql = Sql.newInstance("jdbc:mysql://$host/$schema","$user","$pass", "com.mysql.jdbc.Driver")
            query2="select Name_Of_Department from depart where Dept_id=$b";
            def c=sql.execute(query2);    
            println "c="+c;
            sql = Sql.newInstance("jdbc:mysql://$host/$schema","$user","$pass", "com.mysql.jdbc.Driver")
            query3="insert into Table_Record1 values($c,$inc)";
            sql.execute(query3)    
        }
    }

Thats all 🙂

Advertisements

About Priyanka Kapoor

Simple, Hardworking & friendly.....
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s