Thursday, March 1, 2012

What is the need to Override Hashcode() and equals() method



Although there are lots of materials are available on internet and API document about the necessity of the overriding the hashcode() and equals() method in Java but lots of new developers still not able to understand the necessity of hashcode() method.
In this article, I will try to explain step by step the need of overriding hashcode() method in Java.
Few Thump rules:
If two objects are same then they must return same value in hashcode() and equals() method whenever invoked.
It is not necessary that two different object must have different hashcode values. it might be possible that they share common hash bucket.
JVM assigns unique hashcode value to each object when they are created in memory and if developers don’t override the hashcode method then there is no way the two object returns same hashcode value.
As the question comes in your mind that equals() method is used to compare objects that they are having same value or not but why should we override the hashcode method ?
The answer to the question is for the hash technique based data structures like HashMap and HashTable.

How Hashcode works in java
As you can see in above diagram that every object is placed in Hash bucket depending on the hashcode they have. It is not necessary that every different object must have different hashcode. hashcode is used to narrow the search result. When we try to insert any key in HashMap first it checks whether any other object present with same hashcode and if yes then it checks for the equals() method. If two objects are same then HashMap will not add that key instead it will replace the old value by new one.
What will happen if I don’t override the hashcode method?
Ans : If the object does not implement hashcode() method and used as key then we will not get the object back as shown in below code.
Code without implementation of equals() and hashcode()

class Movie {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getReleaseYr() {
        return releaseYr;
    }
    public void setReleaseYr(int releaseYr) {
        this.releaseYr = releaseYr;
    }
    private int releaseYr;
}
public class HashMapDemo {
    public static void main(String[] args) {
        Movie m = new Movie();
        m.setName("Thank You");
        m.setReleaseYr(2011);

        Movie m1 = new Movie();      
        m1.setName("Khiladi");
        m1.setReleaseYr(1993);

        Movie m2 = new Movie();      
        m2.setName("Taskvir");
        m2.setReleaseYr(2010);

        Movie m3 = new Movie();
        m3.setName("Taskvir");
        m3.setReleaseYr(2010);

        HashMap<Movie, String> map = new HashMap<Movie, String>();
        map.put(m, "ThankYou");
        map.put(m1, "Khiladi");
        map.put(m2, "Tasvir");
        map.put(m3, "Duplicate Tasvir");
        //Iterate over HashMap
        for (Movie mm : map.keySet()) {
            System.out.println(map.get(mm).toString());
        }

        Movie m4 = new Movie();
        m4.setActor("Akshay");
        m4.setName("Taskvir");
        m4.setReleaseYr(2010);
        if(map.get(m4) == null ){
            System.out.println("----------------");
            System.out.println("Object not found");
            System.out.println("----------------");
        }else{
            System.out.println(map.get(m4).toString());
        }
    }
}
Output:
Khiladi
Tasvir
ThankYou
Duplicate Tasvir
—————-
Object not found
—————-
As you can see in above program :
Duplicate objects are added in Hashmap as a key (Because we have not overided the hashcode and equals method)
We are not able to get back object from map (Because hashcode is not implemented)
Same program with equals and hashcode implementation:

class Movie {
    private String name, actor;
    public boolean equals(Object o) {
        Movie m = (Movie) o;
        return  m.name.equals(this.name) && m.releaseYr == this.releaseYr;
    }
    public int hashCode() {
       return name.hashCode() + releaseYr;
    }
    public String getName() {
        return name;
   }
    public void setName(String name) {
        this.name = name;
    }
    public int getReleaseYr() {
        return releaseYr;
    }
    public void setReleaseYr(int releaseYr) {
        this.releaseYr = releaseYr;
    }
   private int releaseYr;
}
public class HashMapDemo {
    public static void main(String[] args) {
        Movie m = new Movie();
        m.setName("Thank You");
        m.setReleaseYr(2011);

        Movie m1 = new Movie();
        m1.setName("Khiladi");
        m1.setReleaseYr(1993);

        Movie m2 = new Movie();
        m2.setName("Taskvir");
        m2.setReleaseYr(2010);

        Movie m3 = new Movie();
        m3.setName("Taskvir");
        m3.setReleaseYr(2010);

        HashMap<Movie, String> map = new HashMap<Movie, String>();
        map.put(m, "ThankYou");
        map.put(m1, "Khiladi");
        map.put(m2, "Tasvir");
        map.put(m3, "Duplicate Tasvir");
        // Iterate over HashMap
        for (Movie mm : map.keySet()) {
            System.out.println(map.get(mm).toString());
        }
        Movie m4 = new Movie();
        m4.setActor("Akshay");
        m4.setName("Taskvir");
        m4.setReleaseYr(2010);
        if (map.get(m4) == null) {
           System.out.println("----------------");
            System.out.println("Object not found");
            System.out.println("----------------");
        } else {
            System.out.println("----------------");
            System.out.println(map.get(m4).toString());
            System.out.println("----------------");
        }
    }
}
Output:
Khiladi
Duplicate Tasvir
ThankYou
—————-
Duplicate Tasvir
—————-
As you can see :
Duplicate Keys are not added instead there values are replaced.
Now the object is retrieved from the Map.
Ques : How to iterate over keyset of HashMap in JDK 4 and 5?
Ans : This is the common question asked in interview.
In JAVA 5 : we can use advance for loop as shown in above code, use map.keySet(). This will return theSet (As Keys must be unique)
In JAVA 4 : use map.keySet() and get the Iterator object using map.iterate() . then using while loop , get the value for each key.

Sunday, February 19, 2012

sending sms code


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.URL;
//import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.*;
/**
 *
 * @author sreenath (https://github.com/tacticiankerala/Unofficial-Way2Sms-API-using-JAVA/blob/master/Way2SMS.java) modified by Abhimanyu singh rathore (http://ibm-tgmc.blogspot.com)
 */
public class Way2Sms {
   // private URLConnection sendSMSConnection;
    private String sessionCookie;
    private Proxy proxy;
    private String baseurl;
    private static Random svcRand = new Random();
    private int a;
    //Function to support connection through an HTTP Proxy
    public void setProxy(String proxyHost,int proxyPort)
    {
        proxy=new Proxy(Proxy.Type.HTTP,java.net.InetSocketAddress.createUnresolved(proxyHost, proxyPort));
    }
    //Logging in to Way2sms and returning the authentication cookie
    //No need to Give the cookie back to sendSMS() but cookie is returned for expanding the flexibility of the code
    public String loginWay2SMS(String userName,String password)
    {
        String cookie=null;
        URL urlLogin;
        String loginContent;
        HttpURLConnection loginConnection;
        if(userName==null || userName.isEmpty())
        {
            System.err.println("A Valid User Name must be present!");
            System.exit(0);
        }
        if(password==null || password.isEmpty())
        {
            System.err.println("A Valid Password must be present!");
            System.exit(0);
        }
        try {
            //UTF-8 encoding is the web standard so data must be encoded to UTF-8
            userName=URLEncoder.encode(userName, "UTF-8");
            password=URLEncoder.encode(password, "UTF-8");
            String   tologinurl=baseurl+"Login1.action";

         //   urlLogin=new URL("http://site5.way2sms.com/Login1.action");
            urlLogin=new URL(tologinurl);
            if(proxy==null)
            {
                loginConnection = (HttpURLConnection) urlLogin.openConnection();
            }
            else
            {
                loginConnection = (HttpURLConnection) urlLogin.openConnection(proxy);
            }
         
            loginContent="username=" + userName + "&password=" + password+"&button=Login";
            //Faking that we are from a valid client
            loginConnection.setDoOutput(true);
            loginConnection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5");
            loginConnection.setRequestProperty("Content-Length", String.valueOf(loginContent.length()));
            loginConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            loginConnection.setRequestProperty("Accept", "*/*");
            loginConnection.setRequestProperty("Referer", "http://site5.way2sms.com//entry.jsp");
            loginConnection.setRequestMethod("POST");
            loginConnection.setInstanceFollowRedirects(false);
            //Writing the Content to the site
            PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(loginConnection.getOutputStream()), true);
            printWriter.print(loginContent);
            printWriter.flush();
            printWriter.close();
            //Reading the cookie
            cookie = loginConnection.getHeaderField("Set-Cookie");
         
         
        } catch (MalformedURLException ex) {
           System.err.println("Login URL Error");
           System.exit(0);
        } catch (UnsupportedEncodingException ex) {
            System.err.println("Error in encoding Username or Password");
            System.exit(0);
        }catch (IOException ex) {
            System.err.println("Can not connect to Login URL");
            //retrying
       
          if(a==6)a=0;
            a++;
            baseurl="http://site"+a+".way2sms.com/";
            System.out.println(baseurl);
            loginWay2SMS(userName,password);
            // System.exit(0);
        }
        if(cookie==null || cookie.isEmpty())
        {
            System.err.println("Some error occured...Try again in a few seconds..If still problem exists check your username and password");
        }
        sessionCookie=cookie;
        return cookie;
             
     
     
    }
    public void sendSMS(String phoneNumber,String message,String action,String username,String password)
    {
     
            if(phoneNumber==null || phoneNumber.isEmpty())
            {
                System.err.println("Enter A Valid Phone Number");
                System.exit(0);
            }
            else
            {
                try
                {
                 
                //    long testLong=Long.valueOf(phoneNumber);
                }catch(NumberFormatException ex)
                {
                    System.err.println("Invalid Phone Number");
                    System.exit(0);
                }
                 
             
            }
         
            if(message==null|| message.length()==1|| message.isEmpty())
            {
                System.err.println("Enter A Valid Phone Number");
                System.exit(0);
            }
            else if(message.length()>140)
            {
                System.err.println("Message should be less than 140 characters");
            }
            if(action==null || action.isEmpty())
            {
                System.err.println("Enter Valid Action to send Message");
                System.exit(0);
            }
         
            URL sendURL;
            HttpURLConnection sendConnection;
            String sendContent;
            try {
                 message=URLEncoder.encode(message, "UTF-8");
                //sendURL=new URL("http://site5.way2sms.com/FirstServletsms?custid=");
                 String   tosendurl=baseurl+"quicksms.action?";
                //sendURL=new URL("http://site5.way2sms.com/quicksms.action?");
                 sendURL=new URL(tosendurl);
                 if(proxy==null)
                {
                    sendConnection = (HttpURLConnection) sendURL.openConnection();
                }
                else
                {
                    //sendConnection = (HttpURLConnection) sendURL.openConnection(proxy);
                sendConnection = (HttpURLConnection) sendURL.openConnection();
                }
               // sendContent="custid=undefined&HiddenAction=instantsms&Action="+action+"&login=&pass=&MobNo="+ phoneNumber+ "&textArea="+message;
              //  sendContent="custid=undefined&HiddenAction=instantsms&Action=sa65sdf656fdfd&login=&pass=&MobNo=9543246247&textArea=hello";
           
                // working url  for me   sendContent="HiddenAction=instantsms&catnamedis=Birthday&textfield2=+91&MobNo="+phoneNumber+"&txtLen=5&textArea="+message+"&Action=sa65sdf656fdfd&login=9543246247&pass=*********";
                sendContent="HiddenAction=instantsms&catnamedis=Birthday&textfield2=+91&MobNo="+phoneNumber+"&txtLen=5&textArea="+message+"&Action="+action+"&login="+username+"&pass="+password+"";
                sendConnection.setDoOutput(true);
                sendConnection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5");
                sendConnection.setRequestProperty("Content-Length", String.valueOf(sendContent.getBytes().length));
                sendConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
                sendConnection.setRequestProperty("Accept", "*/*");
                sendConnection.setRequestProperty("Cookie", sessionCookie);
                sendConnection.setRequestMethod("POST");
                sendConnection.setInstanceFollowRedirects(false);
             
                PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(sendConnection.getOutputStream()),true);
                printWriter.print(sendContent);
                printWriter.flush();
                printWriter.close();
                //Reading the returned web page to analyse whether the operation was sucessfull
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(sendConnection.getInputStream()));
                StringBuilder SendResult=new StringBuilder();
                String line;
                while ((line=bufferedReader.readLine()) != null)
                {
                    SendResult.append(line);
                    SendResult.append('\n');
                    //Message has been submitted successfully
                }
                if(SendResult.toString().contains("Message has been submitted successfully"))
                {
                    System.out.println("Message sent to "+phoneNumber+" successfully.");
                }
                else
                {
                    System.err.println("Message could not send to "+phoneNumber+". Also check login credentials");
                    System.out.print(SendResult.toString());
                }
                bufferedReader.close();
             
            }catch (UnsupportedEncodingException ex) {
                System.err.println("Message content encoding error");
                System.exit(0);
            }catch (MalformedURLException ex) {
                System.err.println("Sending URL Error");
              //retrying
                if(a==6)a=0;
                a++;
                baseurl="http://site"+a+".way2sms.com/";
                System.out.println(baseurl);
                loginWay2SMS(username,password);
       sendSMS(phoneNumber,message,action,username,password);

                // System.exit(0);
            }catch (IOException ex) {
               System.err.println("Sending URL Connection Error");
               System.exit(0);
            }
     
     
    }
    public void logoutWay2SMS()
    {
        try {
            HttpURLConnection logoutConnection;
            URL logoutURL;
            String logouturlmy=baseurl+"jsp/logout.jsp";
           // logoutURL = new URL("http://site3.way2sms.com/jsp/logout.jsp");
            logoutURL = new URL(logouturlmy);
            if(proxy==null)
            {
               logoutConnection = (HttpURLConnection) logoutURL.openConnection();
            }
            else
            {
               logoutConnection = (HttpURLConnection) logoutURL.openConnection(proxy);
            }
         
            logoutConnection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5");
            logoutConnection.setRequestProperty("Accept", "*/*");
            logoutConnection.setRequestProperty("Cookie", sessionCookie);
            logoutConnection.setRequestMethod("GET");
            logoutConnection.setInstanceFollowRedirects(true);
           BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(logoutConnection.getInputStream()));
            while ((bufferedReader.readLine()) != null);
            bufferedReader.close();
        } catch (MalformedURLException ex) {
            System.err.println("Logout URL Error");
            System.exit(0);
        }catch (IOException ex) {
            System.err.println("Logout URL Connection Error");
            System.exit(0);
        }
    }
    Way2Sms()
    {
        proxy=null;
        //sendSMSConnection=null;
        a=svcRand.nextInt(6);
        while(a==0)
        a=svcRand.nextInt(6);
        baseurl="http://site"+a+".way2sms.com/";
     
        System.out.print(baseurl);
    }
    public static void main(String args[])
    {
        final String USERNAME="";//REQUIRED
        final String PASSWORD="";//REQUIRED
        final String ACTION="sa65sdf656fdfd";//REQUIRED :e.g sa65sdf656fdfd  In order to understand ACTION value please read the blog
        Way2Sms sms=new Way2Sms();
        //HTTP PROXY
        //sms.setProxy("10.1.1.1",8080); //REQUIRED ONLY IF CONNECTING THROUGH A PROXY
     
        StringBuilder phoneNumber= new StringBuilder();
        StringBuilder message=new StringBuilder();
     /*   if(args.length>0)
        {
          if(args[0].toLowerCase().compareTo("phone")==0)
          {
            int i=1;
            while(args[i].toLowerCase().compareTo("message")!=0)
            {
                phoneNumber.append(args[i]);
                 phoneNumber.append(';');
                i++;
            }
            for(i=i+1;i<args.length;i++)
            {
                message.append(args[i]);
                message.append(' ');
            }
          }
          else
          {
          System.out.println("USAGE : Way2SMS phone <phonenumber1> <phonenumber2> ... message <message>");
            System.exit(0);
          }
        }
        else
        { */
        String msg2=" hi hru"; //msg to be sent
            phoneNumber.append("0124354555555"); /*want to use as bean ??? pass the parametrs for phone,message to send multiple number just insert ';' between them and pass as  a string */
            phoneNumber.append(';');
         
            if(msg2==null||msg2==""||msg2==" ")
           {System.out.print("please enter msg of length >0");
           System.exit(0);
           }
            message.append(msg2);
            message.append(' ');
         
        // System.out.println("USAGE : Way2SMS phone <phonenumber1> <phonenumber2> ... message <message>");
           // System.exit(0);
     
   /* }
 */        //baseurl 1:http://site4.way2sms.com/ 2:http://site4.way2sms.com/ 3.http://site1.way2sms.com/
     
     
        String cookie=sms.loginWay2SMS(USERNAME,PASSWORD);
        System.out.println(cookie);
        String textMessage=message.toString();
        String strPhoneNumber=phoneNumber.toString();
        String arrPhoneNUmber[]=strPhoneNumber.split(";");
        for(int i=0;i<arrPhoneNUmber.length;i++)
        {
       
         sms.sendSMS(arrPhoneNUmber[i], textMessage, ACTION,USERNAME,PASSWORD);
        }
     
        sms.logoutWay2SMS();
    }
}


Reference Links:

http://ibm-tgmc.blogspot.in/2011/12/sending-sms-via-way2sms-using-java.html
http://jtechbits.blogspot.in/2011/06/sending-sms-through-way2sms-in-java.html

Thursday, October 20, 2011

Change global_name of oracle

SQL> SELECT * FROM GLOBAL_NAME;

GLOBAL_NAME
--------------------------------------------------------------------------------
ORATEMP.REGRESS.RDBMS.DEV.US.ORACLE.COM

SQL> ALTER DATABASE RENAME GLOBAL_NAME TO oratemp ;

SQL> SELECT * FROM GLOBAL_NAME;

Sunday, October 16, 2011

configure glassfish in myeclipse

http://glassfishplugins.java.net/eclipse34/index.html

Tuesday, October 11, 2011

Java Database Connectivity (JDBC Tutorial)

Java Database Connectivity:
JDBC (Java Database Connectivity) is designed to allow users to use SQL(Structured Query Language) to query databases. It makes the tasks of the developers easy as it handles all low-level concerns about particular database types.

JDBC is similar to Microsoft’s ODBC with the plus point “Platform Independence”. To use JDBC, you need to have database driver to communicate with the database. Normally drivers are installed while installing the database. Like if you install MS SQL Server, Oracle or DB2, database drivers will be installed. If you are working with MySQL, PostgreSQL or some third party database, you need to put its driver (Jar fileI into the class path.

JDBC Drivers
            JDBC drivers can be broadly divided into four categories depending upon the driver implementation. The four categories/types are:

            1: JDBC-ODBC Bridge
            2:  Native-API/partly Java driver
            3: Net-protocol/all-Java driver
            4: Native-protocol/all-Java driver

I will briefly talk about each type:
            JDBC-OBC bridge driver is pure Java and is include in java.sql.*. The client needs ODBC driver manager and ODBC driver for data source. It is ideal in situations, when ODBC driver is available for the database and is already installed on the client machine.

            Type-2 is Native code driver. It implements native JDBC interfaces using language functions in the DBMS product’s API. Type 2 drivers need platform specific library, so client and server both may run on same host. Type 2 drivers offer better performance than Type 1 drivers.

Type 3 drivers are pure Java drivers and they use middleware network protocol. They need DBMS server to implement the standard protocol to be middleware specific. The advantage is that there is no nee for any vendor database library to be present on client machines. Interesting thing is, there is no JDBC standard network protocol yet.

Type 4 drivers are pure Java drivers and they use vendor specific network protocol. These use DBMS specific network protocol (Oracle SQL Net, etc).
For the beginners, Type 1 drivers are suitable. Users simply have to make a DSN and start interacting with the database.

Using JDBC-ODBC Bridge

The beginners should start with JDBC-ODBC Bridge since it is simple and easy to work with. Consider that you have a database with tables and data and you want to connect to it in order to carry out operations.
            First step is to create an ODBC dsn. It is done from Control panel > Data Sources (ODBC).
            Now you have to load the JDBC driver. This is done using static method forName(…) of class called Class. Static method forName(…) takes name of the driver as parameter.

Code:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

DriverManager.getConnection() is used to connect to the database. Its signature is as follows:

Code:
static Connection getConnection(String url, String user, String password)



Continue... 
31/01/2011


Connection time:

            Sometimes, it is interesting to know how much time it takes to connect to the database. The code sample below calculates the time it takes to connect to a database referred by dsn.

Code:
long connection_time;
Date start = new Date();  //get start time
String stUrl_= "jdbc:odbc:myDSN";
connection_ = DriverManager.getConnection(stUrl,"sa","sa");
Date end = new java.util.Date();  //get end time
connection_time = end.getTime()-start.getTime();
 
 
Getting the Warnings:

            Sometimes it is a wise decision to retrieve the first warning reported by calls on this Connection object. This can be done using getWarnings() method. The code sample below shows how to print all the warnings with their sates and messages.

Code:
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ) ;
Connection conn = DriverManager.getConnection( "jdbc:odbc:Database" ) ;

// Print all warnings
for( SQLWarning warn = conn.getWarnings(); warn != null; warn = warn.getNextWarning() )
{
System.out.println( "SQL Warning:" ) ;
System.out.println( "State  : " + warn.getSQLState()  ) ;
System.out.println( "Message: " + warn.getMessage()   ) ;
System.out.println( "Error  : " + warn.getErrorCode() ) ;
}

Adding records in the database tables:

            Statement object is used to add enteries into the tables. The method used is executeUpdate(…).


Code:
Statement st = conn.createStatement();
st.executeUpdate("INSERT INTO customers VALUES (100, 'Laiq', 'Mr.', 'Paris', 2008)");


Using Resultset:
            ResultSet is an interface found in java.sql package. It actually represents a table in the memory containing all the records fetched from the database in result of a query.

Code:
String name, brand ;
float price;

ResultSet rs = stmt.executeQuery("SELECT * FROM customers");
while ( rs.next() ) {
name = rs.getString("name");
brand = rs.getString("brand");
price = rs.getFloat("price");
}

Getting number of rows updated
            Statement’s executeUpdate(…) method return no of row modified. So you can easily know how many rows were modified by your update query.

Code:
int rows = stmt.executeUpdate( "UPDATE customer SET
cust_name = ‘Laiq’ WHERE cust_id = 100" ) ;
System.out.println( rows + " Rows modified" ) ;

Change( Screen) Windows display resolution.

'Using this code to change Screen Resolution......... or your computer
' this code is use for VB 6.0

'********************** Module*****************
Declarations
Public Const EWX_LOGOFF = 0
Public Const EWX_SHUTDOWN = 1
Public Const EWX_REBOOT = 2
Public Const EWX_FORCE = 4
Public Const CCDEVICENAME = 32
Public Const CCFORMNAME = 32
Public Const DM_BITSPERPEL = &H40000
Public Const DM_PELSWIDTH = &H80000
Public Const DM_PELSHEIGHT = &H100000
Public Const CDS_UPDATEREGISTRY = &H1
Public Const CDS_TEST = &H4
Public Const DISP_CHANGE_SUCCESSFUL = 0
Public Const DISP_CHANGE_RESTART = 1

Type typDevMODE
    dmDeviceName       As String * CCDEVICENAME
    dmSpecVersion      As Integer
    dmDriverVersion    As Integer
    dmSize             As Integer
    dmDriverExtra      As Integer
    dmFields           As Long
    dmOrientation      As Integer
    dmPaperSize        As Integer
    dmPaperLength      As Integer
    dmPaperWidth       As Integer
    dmScale            As Integer
    dmCopies           As Integer
    dmDefaultSource    As Integer
    dmPrintQuality     As Integer
    dmColor            As Integer
    dmDuplex           As Integer
    dmYResolution      As Integer
    dmTTOption         As Integer
    dmCollate          As Integer
    dmFormName         As String * CCFORMNAME
    dmUnusedPadding    As Integer
    dmBitsPerPel       As Integer
    dmPelsWidth        As Long
    dmPelsHeight       As Long
    dmDisplayFlags     As Long
    dmDisplayFrequency As Long
End Type

Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lptypDevMode As Any) As Boolean
Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" (lptypDevMode As Any, ByVal dwFlags As Long) As Long
Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

'********************************************************************************************************************************************************************
'**************************Form******************************

Dim ScreenWidth As Integer
Dim ScreenHeight As Integer



Private Sub Command1_Click()
'Code:
'Following Text Boxes is the parameters for the screen resulution
'eg. 800*600
Dim typDevM As typDevMODE
Dim lngResult As Long
Dim intAns    As Integer
ScreenWidth = Val(Text1.Text) '800
ScreenHeight = Val(Text2.Text) '600

' Retrieve info about the current graphics mode
' on the current display device.
lngResult = EnumDisplaySettings(0, 0, typDevM)

' Set the new resolution. Don't change the color
' depth so a restart is not necessary.
With typDevM
    .dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
    .dmPelsWidth = ScreenWidth  'ScreenWidth (640,800,1024, etc)
    .dmPelsHeight = ScreenHeight 'ScreenHeight (480,600,768, etc)
End With

' Change the display settings to the specified graphics mode.
lngResult = ChangeDisplaySettings(typDevM, CDS_TEST)
Select Case lngResult
    Case DISP_CHANGE_RESTART
        intAns = MsgBox("You must restart your computer to apply these changes." & _
            vbCrLf & vbCrLf & "Do you want to restart now?", _
            vbYesNo + vbSystemModal, "Screen Resolution")
        If intAns = vbYes Then Call ExitWindowsEx(EWX_REBOOT, 0)
    Case DISP_CHANGE_SUCCESSFUL
        Call ChangeDisplaySettings(typDevM, CDS_UPDATEREGISTRY)
        Message = MsgBox("Screen resolution changed", vbInformation, "Resolution Changed ")
    Case Else
        Message = MsgBox("Mode not supported", vbSystemModal, "Error")
End Select

End Sub

Digital clock by using timer (swing) in Java

Here is a piece of code to build a Java clock, using swing,


        Timer t = new Timer(1000, updateClockAction);
        t.start();



ActionListener updateClockAction = new ActionListener() {
  public void actionPerformed(ActionEvent e) {
      // Assumes clock is a custom component
     lblTime.setText(System.currentTimeMillis()+"");
      // OR
    
      // Assumes clock is a JLabel
      lblTime.setText(new Date().toString());
    }
};




Digital clock by using Java

Here is a piece of code to build a Java clock, that uses threads, gets the data for time automatically and is not interrupted if you click something else on the window. There are some comments around the code to help you understand what's happening.

import java.awt.*;
import javax.swing.*;      
import java.util.*;

class Clock extends JFrame implements Runnable
{
  Thread runner; //declare global objects
  Font clockFont;

     public Clock()
     {
       super("Java clock");
       setSize( 350, 100);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setVisible(true);
       setResizable(false);                             //create window
  
       clockFont = new Font("Serif", Font.BOLD, 40);    //create font instance
      
       Container contentArea = getContentPane();
       ClockPanel timeDisplay = new ClockPanel();


       contentArea.add(timeDisplay);                    //add components
       setContentPane(contentArea);
       start();                                         //start thread running
    
     }
        
     class ClockPanel extends JPanel
     {
      public void paintComponent(Graphics painter )
        {
        Image pic =
          Toolkit.getDefaultToolkit().getImage("background.jpg");
        
         if(pic != null)
          
            painter.drawImage(pic, 0, 0, this);     //create image
                     
//if I didn't use a background image I would have used the setColor and fillRect methods to set background
    
          painter.setFont(clockFont);                   //create clock components
          painter.setColor(Color.black);
          painter.drawString( timeNow(), 60, 40);
        }
     }
    
     //get current time
     public String timeNow()
     {
       Calendar now = Calendar.getInstance();
       int hrs = now.get(Calendar.HOUR_OF_DAY);
       int min = now.get(Calendar.MINUTE);
       int sec = now.get(Calendar.SECOND);
      
       String time = zero(hrs)+":"+zero(min)+":"+zero(sec);
      
       return time;
     }
   
     public String zero(int num)
     {
       String number=( num < 10) ? ("0"+num) : (""+num);
       return number;                                    //Add leading zero if needed
      
     }
         
     public void start()
     {
       if(runner == null) runner = new Thread(this);
       runner.start();                                  //method to start thread
     }


     public void run()
     {
       while (runner == Thread.currentThread() )
       {
        repaint();
                                                         //define thread task
           try
             {
               Thread.sleep(1000);
             }
              catch(InterruptedException e)
                  {
                    System.out.println("Thread failed");
                  }                
       }
     }
    
     //create main method
     public static void main(String [] args)
     {
       Clock eg = new Clock();
     }
}


Convert Number to String

Convert Number to String in Java using Swing..... (Editor use: Net Bean)





firstly create new project. in this project add one Java class file and name this file "EnglishNumberToWords.Java"
 and copy following line of code in this file.....

*************************Code********************************



package number;
import java.text.DecimalFormat;

public class EnglishNumberToWords {

  private static final String[] tensNames = {
    "",
    " ten",
    " twenty",
    " thirty",
    " forty",
    " fifty",
    " sixty",
    " seventy",
    " eighty",
    " ninety"
  };

  private static final String[] numNames = {
    "",
    " one",
    " two",
    " three",
    " four",
    " five",
    " six",
    " seven",
    " eight",
    " nine",
    " ten",
    " eleven",
    " twelve",
    " thirteen",
    " fourteen",
    " fifteen",
    " sixteen",
    " seventeen",
    " eighteen",
    " nineteen"
  };

  private static String convertLessThanOneThousand(int number) {
    String soFar;

    if (number % 100 < 20){
      soFar = numNames[number % 100];
      number /= 100;
    }
    else {
      soFar = numNames[number % 10];
      number /= 10;

      soFar = tensNames[number % 10] + soFar;
      number /= 10;
    }
    if (number == 0) return soFar;
    return numNames[number] + " hundred" + soFar;
  }


  public static String convert(long number) {
    // 0 to 999 999 999 999
    if (number == 0) { return "zero"; }

    String snumber = Long.toString(number);
   String snumber1 = Long.toString(number);
    // pad with "0"
    String mask = "000000000000";
    String mask1 =  "000000000";
    DecimalFormat df = new DecimalFormat(mask);
    DecimalFormat df1 = new DecimalFormat(mask1);

    snumber = df.format(number);
    snumber1 = df1.format(number);
  
    // XXXnnnnnnnnn
    int billions = Integer.parseInt(snumber.substring(0,3));
    int coror = Integer.parseInt(snumber1.substring(0, 2));

    // nnnXXXnnnnnn
    int millions  = Integer.parseInt(snumber.substring(3,6));
    int lakh = Integer.parseInt(snumber1.substring(2,4));
    int thousand = Integer.parseInt(snumber1.substring(4,6));
    int hundred = Integer.parseInt(snumber1.substring(6,9));
    //System.out.println("---1---"+coror+"-------2--------"+lakh+"-----3--------"+thousand+"-------4-------"+hundred);
    String corors;
    switch(coror){
         case 0:
             corors = "";
             break;
        case 1:
            corors = convertLessThanOneThousand(coror)+" corror";
            break;
         default:
            corors = convertLessThanOneThousand(coror)+" corror";
      
    }
    String result1 =  corors;
    String lakhs;
    switch(lakh){
        case 0 :
            lakhs = "";
            break;
        case 1  :
            lakhs = convertLessThanOneThousand(lakh)+" lakh";
            break;
            default:
                lakhs = convertLessThanOneThousand(lakh)+" lakh";
              
    }
    result1 = result1+lakhs;
    String thou;
    switch(thousand){
        case 0 :
            thou = "";
            break;
        case 1:
            thou =lakhs = convertLessThanOneThousand(thousand)+" thausands";
            break;
            default:
                thou =lakhs = convertLessThanOneThousand(thousand)+" thausands";
    }
    result1 = result1+thou;
    result1 = result1+convertLessThanOneThousand(hundred);

    // nnnnnnXXXnnn
    int hundredThousands = Integer.parseInt(snumber.substring(6,9));
    // nnnnnnnnnXXX
    int thousands = Integer.parseInt(snumber.substring(9,12));  

    String tradBillions;
    switch (billions) {
    case 0:
      tradBillions = "";
      break;
    case 1 :
      tradBillions = convertLessThanOneThousand(billions)
      + " billlions ";
      break;
    default :
      tradBillions = convertLessThanOneThousand(billions)
      + " Billions ";
    }
    String result =  tradBillions;

    String tradMillions;
    switch (millions) {
    case 0:
      tradMillions = "";
      break;
    case 1 :
      tradMillions = convertLessThanOneThousand(millions)
      + " million ";
      break;
    default :
      tradMillions = convertLessThanOneThousand(millions)
      + " million ";
    }
    result =  result + tradMillions;

    String tradHundredThousands;
    switch (hundredThousands) {
    case 0:
      tradHundredThousands = "";
      break;
    case 1 :
      tradHundredThousands = "one thousand ";
      break;
    default :
      tradHundredThousands = convertLessThanOneThousand(hundredThousands)
      + " thousand ";
    }
    result =  result + tradHundredThousands;

    String tradThousand;
    tradThousand = convertLessThanOneThousand(thousands);
    result =  result + tradThousand;

    // remove extra spaces!
    return result1.replaceAll("^\\s+", "").replaceAll("\\b\\s{2,}\\b", " ");
  }

  /**
   * testing
   * @param args
   */
  public static void main(String[] args) {
      System.out.println("my one"+EnglishNumberToWords.convert(237898555));
    System.out.println("*** " + EnglishNumberToWords.convert(0));
    System.out.println("*** " + EnglishNumberToWords.convert(1));
    System.out.println("*** " + EnglishNumberToWords.convert(16));
    System.out.println("*** " + EnglishNumberToWords.convert(100));
    System.out.println("*** " + EnglishNumberToWords.convert(118));
    System.out.println("*** " + EnglishNumberToWords.convert(200));
    System.out.println("***219 " + EnglishNumberToWords.convert(219));
    System.out.println("*** " + EnglishNumberToWords.convert(800));
    System.out.println("*** " + EnglishNumberToWords.convert(801));
    System.out.println("*** " + EnglishNumberToWords.convert(1316));
    System.out.println("*** " + EnglishNumberToWords.convert(1000000));
    System.out.println("*** " + EnglishNumberToWords.convert(2000000));
    System.out.println("*** " + EnglishNumberToWords.convert(3000200));
    System.out.println("*** " + EnglishNumberToWords.convert(700000));
    System.out.println("*** " + EnglishNumberToWords.convert(9000000));
    System.out.println("*** " + EnglishNumberToWords.convert(9001000));
    System.out.println("*** " + EnglishNumberToWords.convert(123456789));
    System.out.println("*** " + EnglishNumberToWords.convert(2147483647));
    System.out.println("*** " + EnglishNumberToWords.convert(3000000010L));
}
}


****************************************************************


after that create one Java Frame with one Text Box, one Button and labels, design same like as above image

after that at Button Click Event (ActionPerformed event) add following code.....


*************************Code***********************************

 int Number = Integer.parseInt(txtNumber.getText());
        String No2String = EnglishNumberToWords.convert(Number)+"";
        txtString.setText(No2String);

in this code assign text box value to a "Number" variable and pass this value to the Function in above code "EnglishNumberToWords.Convert(Number)" and after that print the value

***************************Thanks************************************
Note : this project is available at  http://www.planet-source-code.com site

Upload and Retrieve image using JSP.

Upload and Retrieve image using JSP.
          
  Hello friends,  I am write this blog for those programmer are required a code for “how to upload and retrieve images (photos) from server using JSP.”

There is two jsp files are used in this project, and this project following libraries are required.   
     commons-fileupload.jar
        commons-fileupload-1.2.1.jar
        commons-io-1.4

this project done using NetBeans IDE 6.9.1 IDE. and jdk1.6.0_23

Screen:





Code:
upload_file_multipale.jsp

<%@ page contentType="text/html; charset=iso-8859-1" language="java" errorPage="" %> 
<%@ page import="java.util.List"%> 
<%@ page import="java.util.Iterator"%> 
<%@ page import="java.io.File"%> 
<%@ page import="org.apache.commons.fileupload.*"%> 
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%> 
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@ page import="org.apache.commons.io.FilenameUtils"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="java.lang.Exception"%>


<center>
            <table border="2">
            <tr><td><h1>Your files are uploading.....</h1></td></tr>
            <%
       
                 String itemName="";
                boolean isMultipart = ServletFileUpload.isMultipartContent(request);
                       
                 if (!isMultipart){
                         out.println("The Form is not Multipart!!!!!");
                 }
                else
                {
                         FileItemFactory  factory = new DiskFileItemFactory();
                         ServletFileUpload upload = new ServletFileUpload(factory);
                         List items = null;
                         try {
                                        items = upload.parseRequest(request);
                         } catch (FileUploadException  e) {
                                        out.println(e.toString());
                         }
                                                Iterator itr = items.iterator();
                                   
                                                while (itr.hasNext()) {
                                                            FileItem item = (FileItem) itr.next();
                                                            if (item.isFormField()){
                                                                         String name = item.getFieldName();
                                                                         String value = item.getString();
                                                            }
                                                            else {
                                                                        try {
                                                                                     itemName = item.getName();
                                                                                    itemName = FilenameUtils.getName(itemName);
                                                                                    //out.println(itemName);

    File savedFile = new File(config.getServletContext().getRealPath("/")+"uploadedFiles/"+itemName);
                       item.write(savedFile);
                       session.setAttribute("FileName",itemName);
                                                                                   
                                                                       } catch (Exception e) {
                                                                                                out.println(e.toString());
                                                                        }
                                                            }
                                                }
                                    }
                        
            response.sendRedirect("/FileUpload/upload_file_multipale_html.jsp");
   %>
    </table>
   </center>




upload_file_multipale_html.jsp

<%@page import="java.io.File"%>
<html>

 <head>
     <title>Multipale file upload by using apache.commons.fileupload</title>
</head>
<body>
 <form action="upload_file_multipale.jsp" method="post" enctype="multipart/form-data" name="form1" id="form1">
   <center>
   <table border="2">
       <tr>
                   <td align="center"><b> Upload and Retrieve Image (Photo)by using apache.commons.fileupload in JSP &nbsp;</td>
       </tr>
       <tr>
           <td>&nbsp;</td>
       </tr>
       <tr>
           <td align="center">
                               Specify file:  <input name="file" type="file" id="file">
            </td>
        </tr>
         <tr>
                 <td>&nbsp;</td>
         </tr>
          <tr>
                <td align="center">
                <input type="submit" name="Submit" value="Submit files"/>
            </td>
             </tr>
         <tr>
             <td>&nbsp;</td>
         </tr>
          <tr>
             <td align="center">By Ajay Shilwant <br> Email: xijay.ss@gmail.com <br> My blog: ajayshilwant.blogspot.com</td>
          </tr>
    </table>
       <br><br><br>
    <table align="center" border="1">
           <td>
               <%
                   
                     String FileName = (String)session.getAttribute("FileName");
                     File savedFile = new File(config.getServletContext().getContextPath() +"/uploadedFiles/"+FileName  );
                   
                %>
                <img src="<%=savedFile %>" width="100" height="100">

           </td>
       </table>
   <center>
 </form>
 </body>
 </html>


This project is available at following links…
any problem, suggestion please send me, my email id  balaram36@gmail.com