Sunday, December 5, 2010

Implementation of Connection Pooling for PostgreSQL in Tomcat6.0


  1. Copy the below Resource tag in between open tag <Context> and end tag          </Context> of context.xml available in META-INF directory of your Web Application
For Example
D:\SampleWeb\web\META-INF

<Context>
                                                                                                                         
<Resource name="jdbc/psql"
    auth="Container"
    type="javax.sql.DataSource"
    maxActive="100"
    maxIdle="30"
    maxWait="20000"
    removeAbandoned="true"
    removeAbandonedTimeout="120"
    username="postgres"
    password="postgres"
    driverClassName="org.postgresql.Driver"
    url="jdbc:postgresql://127.0.0.1:5432/testdb"/>

</Context>


2. Copy the same above Resource tag in between open tag <Context> and end tag        </Context> of context.xml available in Tomcat’s conf directory.

For example
           C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\
<Context>

<Resource name=" jdbc/psql"
    auth="Container"
    type="javax.sql.DataSource"
    maxActive="100"
    maxIdle="30"
    maxWait="20000"
    removeAbandoned="true"
    removeAbandonedTimeout="120"
    username="postgres"
    password="postgres"
    driverClassName="org.postgresql.Driver"
    url="jdbc:postgresql://10.1.14.38:5432/testnpermit"/>

</Context>

3. You can have any number of Resource tags as you wish but names must be different.
    

4. Copy the postgresql-8.4-701.jdbc3.jar in Tomcat’s lib directory
  C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib
 
 
 
5. Create a Java Class ConnectionPooling
 

import java.sql.Connection;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import nic.java.util.Debug;

public class ConnectionPooling {

    private static DataSource ds;

    public static Connection getDBConnection() throws NamingException, Exception {

        Connection con = null;
        try {
            if (ds != null) {
                con = ds.getConnection();
            } else {
                String dsString = "java:/comp/env/ jdbc/psql";
              ds = (DataSource) new InitialContext().lookup(dsString);
                con = ds.getConnection();
            }

        } catch (Exception e) {
            e.printStackTrace();
                  }
        return con;
    }
}

Sunday, November 28, 2010

Postgres Query to find difference between months

select ( date '2010-01-01', interval '4 months') overlaps 
 ( date '2010-04-30', date '2010-04-30') as flag
This Query  returns true if difference between months is 4 or less than 4 months 
in postgresql and returns false if difference is morethan 4 months

Tuesday, November 2, 2010

Remove Duplicate value from ArrayList

ArrayList arrayListSubin = new ArrayList();
  
 
arrayListSubin.add("A");
 
arrayListSubin.add("A");
 
arrayListSubin.add("B");
 
arrayListSubin.add("B");
 
arrayListSubin.add("B");
 
arrayListSubin.add("C");
  
  //Create a HashSet which allows no duplicates
  HashSet hashSet = new HashSet(
arrayListSubin);

  //Assign the HashSet to a new ArrayList
  ArrayList arrayList2 = new ArrayList(hashSet) ;
  
  //Ensure correct order, since HashSet doesn't
  Collections.sort(arrayList2);
  
  for (Object item : arrayList2)
    System.out.println(item);

Note that you will have to sort the ArrayList if you want to be sure that the items remain
in correct order by calling the sort method of the Collection class.

This will produce the following output:

A
B
C

Monday, November 1, 2010

Connection Pooling in Tomcat6.0

Connection Pooling: is a pool of pre-established connections. Connection Pooling is the art of an Application. A connection with the database is a heavy weight process and if it is not created properly it downs the performance of the Application.

Connection Pooling can be maintained either in Applications level or in Web or Application Server level. Struts and Hibernate frame works are providing Application level Connection Pooling

Connection Pooling is provided by Web Server and Applications Server vendors. Implementation of Connection Pooling is different from Server to Server.

Implementation of Connection Pooling for Oracle 8i, 9i & 10g in Tomcat6.0


1. Copy the below Resource tag in between open tag <Context> and end tag </Context> of context.xml available in Tomcat’s conf directory.
For example
   C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\
<Context>
           <Resource name="jdbc/myoracle" auth="Container"
              type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
              username="scott" password="tiger" maxActive="20" maxIdle="10"
              maxWait="-1"/>          
</Context>

2. You can have any number of Resource tags as you wish but names must be different.

3. Copy the below tag in web.xml in WEB-INF available in your Web Project
<web-app>
    <resource-ref>
    <description>Oracle Datasource example</description>
    <res-ref-name>jdbc/myoracle</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    </web-app>
 
  Copy the ojdbc14.jar in Tomcat’s lib directory say
  C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib
  
4. Create a Java Class ConnectionPooling
 
import java.sql.Connection;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class ConnectionPooling {
    private static DataSource ds;
public static Connection getDBConnection() throws NamingException {
Connection con =null;
    try {
  
if( ds!=null)
{
con =ds.getConnection();
}else
{
 Context initContext = new InitialContext();
    Context envContext = (Context)       initContext.lookup("java:/comp/env");
    DataSource ds = (DataSource) envContext.lookup("jdbc/myoracle");
    con = ds.getConnection();
}   
} catch (Exception e) {
    e.printStackTrace();
    }
    return con;
    }
}


Now Connection pooling has been setup now  test your application using this connection pooling.

Thursday, October 28, 2010

Java program to reverse contents in a file

Below contains java program to read the contents of a file,reverse the contents of the file and write it back to the file.

1)create text.txt in D: drive of your system and type the contents say subin suresh
2)Create java class and type the below code
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package reverse;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

/**
*
* @author subin_s
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
Scanner scanner = new Scanner(new File("D:/test.txt")).useDelimiter("\\Z");
String contents = scanner.next();
System.out.println("Original String : " + contents);
contents = new StringBuffer(contents).reverse().toString();
System.out.println("Reversed String : " + contents);
FileWriter fstream = new FileWriter("D:/test.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(contents);
out.close();
}
}

3)Output
Original String : subin suresh
Reversed String : hserus nibus

Thursday, October 21, 2010

Problems if <h:form> is not used in JSF

I will be explainingpProblems if <h:form> is not used in JSF with a simple example.
1)I created a new project in JSF and added comman button to the jsp page  without using <h:form&gt tag
<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%--
    This file is an entry point for JavaServer Faces application.
--%>
<f:view>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
            <title>JSP Page</title>
        </head>
        <body>
            <h1><h:outputText value="JavaServer Faces"/></h1>
                <h:commandButton id="bt_SAVE"  value="Save" action="#{test.saveProcess}" />
        </body>
    </html>
</f:view>

2) Made necessary mapping in faces-config.xml.
<managed-bean>
        <managed-bean-name>test</managed-bean-name>
        <managed-bean-class>bean.test</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean> 


3) Created package bean and added test class to the bean package
 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bean;

/**
 *
 * @author subin_s
 */
public class test {

    public void saveProcess() {
        System.out.println("Debug inside saveProcess");
    }
}



Now if you run the project and click on save button  saveProcess method will not be executed you may think why button is not working ,problem is  you have not given <h:form> tag.

Tuesday, October 19, 2010

Adding Struts 2 plugin to NetBeans 6.8

Today we will see Struts 2 plugin for NetBeans 6.8 .First you need to download 2 files
org-netbeans-modules-web-frameworks-struts2.nbm
org-netbeans-modules-web-frameworks-struts2lib20011.nbm

 
Installing Module
1) Tools --> plugins --> --> Downloaded
  Click on AddPlugins

2)Select files from your system

3) Click open

4) Install
5) Follow the wizard one validation warning may come  then click continue button and then restart netbeans.
Now you can start developing Struts 2 Application in netbeans.

Monday, October 18, 2010

Submitting project into cvs in linux

Today we will see one of  important topic regarding CVS(Concurrent Versions System).  
How to Submit project into cvs in linux.
open the terminal
enter into the root
navigate to the project folder say /home/subin/Desktop/Projectname(Come inside project folder)
type below command
cvs import -m "new Projectname" -I ! -W "*.doc -kb" -W "*.gif -kb" -W "*.JPEG -kb" -W "*.jar -kb" -W "*.BMP -kb" -W "*.jpg -kb" -W "*.PNG -kb" Projectname nic v20

cvs commit;
Now project has been submitted to CVS successfully
To check out project from cvs type below command

cvs checkout Projectname

chmod -R 777 Projectname  --- this command will give permissions to access all sub folders and files (read, write, modify)

Friday, October 15, 2010

Multiple sign in feature of Google

Google recently rolled out with multiple sign in feature. It means you can login to multiple Google (including Gmail) accounts in the same browser.
To start with the service, go to Google.com and login with your Google credentials. Now click on Settings –> Google account settings.

On account settings page, under Multiple sign-in section, click on the “Edit” link.


A new page will appear along with the notification in yellow color. This facility is currently available on Gmail, Google Calendar, Google Sites, Google Reader and Google Code.
Click on the On option and check all the boxes under it (obviously read them carefully before checking). After checking, click on the “Save changes” button.

Now login to my Gmail account. On the top right, a drop-down appears next to my email address as shown below .
Click on the drop down and then click on “Sign in to another account”. A new tab will open, sign in with another Gmail account.


Thursday, October 14, 2010

Google’s new website “Google New”

Google’s new website named as “Google New” was launched by Google few days back. It represents all the latest updates in various sections of Google products through their blogs.
Google New is a service launched to help a Google fan to stay updated with all the updates and development happening in various Google products, all at one place.

Link for Google New
Below shows screenshot of  home page of  “Google New”.

Find Technology Being Used by Other Site using Sitonomy

Sitonomy service shows following details:
Blogging platform, Widgets being used by the site, advertising network, Server software, Subscription method, Analytic method and few more details.
 Link for Sitonomy

Here is a screenshot of  Subin'sWorld Sitonomy:

Tuesday, October 12, 2010

Making RichCalender Editable

Few days back we i have posted  Server Side Date Validator Today we will discuss  topic how to manually enter date in  rich calender only you need to do is set enale ManualInput to true  in jsp file as shown below.
<rich:calendar id="dc_FROM_DATE" ajaxSingle="true" enableManualInput="true" binding="#{checkUserRequest.dc_FROM_DATE}" inputStyle="font-size:10pt;width:100px;height:25px" datePattern="dd-MM-yyyy">
</rich:calendar>



Sunday, October 3, 2010

Problems in using Value binding in JSF

Today we will see one of the major problem while using value binding in JSF and solution for it.Suppose if we have two fields subject1 and subject2 .In  focus lost of subject2 if we try to get value of subject1 using get method it will give you null value because values are not updated using valuebinding reason for this is while we use value biding  value will be updated in Update Model Value Phase  and value change listener is called  before Update Model Phase.

How to overcome this problem
        PhaseId phaseId = evt.getPhaseId();
        if (phaseId.equals(PhaseId.ANY_PHASE)) {
            evt.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
            evt.queue();
            return;
        }

Place the above code at the beginning of the method, So automatically updates all the values of the submitted form.

Sunday, September 26, 2010

Tags in JSF

Basically there are two kinds of  tags in JSF.
JSF Core & HTML Tags
Today we will see different  attributes in JSF HTML and Core Tags

JSF HTML Tags :

  • column                              creates column in a dataTable
  • commandButton                creates button
  • commandLink                   creates link that acts like a pushbutton
  • dataTable                         creates a  table control
  • form                                 creates a form
  • graphicImage                    displays an image
  • inputHidden                      creates hidden field
  • inputSecret                       creates input control for password
  • inputText                          creates  text input control (single line)
  • inputTextarea                    creates  text input control (multiline)
  • message                           displays the most recent message for a component
  • messages                          displays all messages
  • outputFormat                    creates  outputText, but formats compound messages
  • outputLabel                      creates label 
  • outputLink                        creates anchor
  • outputText                        creates single line text output
  • panelGrid                         creates html table with specified number of columns
  • panelGroup                      used to group other components where the specification requires one child element
  • selectBooleanCheckbox   creates checkbox
  • selectManyCheckbox       creates set of checkboxes
  • selectManyListbox           creates multiselect listbox
  • selectManyMenu              creates multiselect menu
  • selectOneListbox              creates single select listbox
  • selectOneMenu                creates single select menu
  • selectOneRadio                creates set of radio buttons 

JSF CORE Tags: 

  • f :view                                 Creates the top-level view
  • f:subview                             Creates a subview of a view
  • f:attribute           Adds an attribute  to a component
  • f:param                                Constructs a parameter component
  • f:converter            Adds an arbitrary converter to a component
  • f:converterDateTime      Adds a datetime converter to a component
  • f:converterNumber      Adds a number converter to a component
  • f:actionListener          Adds an action listener to a component
  • f:valueChangeListener     Adds a valuechange listener to a component
  • f:validator             Adds a validator to a component
  • f:validateDoubleRange    Validates a double range for a component’s value
  • f:validateLength         Validates the length of a component’s value
  • f:validateLongRange      Validates a long range for a component’s value
  • f:facet                 Adds a facet to a component
  • f:loadBundle            Loads a resource bundle, stores properties as a Map
  • f:selectitems            Specifies items for a select one or select many component
  • f:selectitem             Specifies an item for a select one or select many component 
  • f:verbatim              Adds markup to a JSF page

Saturday, September 25, 2010

Hibernate example to insert data into database

This is an simple hibernate example to insert records into database.In this i will be explaining you how to create a new project Eclipse IDE.
Steps for starting a new project in Eclipse IDE
1)File-->New-->Project

2) Select javaproject and click next
3) Click finish

4) Click No
5) Right click src folder and create package subin
6) Inside subin package create two java classes Insertion.java and InsertionDetails.java
Insertion.java
package subin;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;


public class Insertion {

/**
* @subinsuresh
*/
public static void main(String[] args) {
Session session = null;

try{
// This step will read hibernate.cfg.xml and prepare hibernate for use
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
session =sessionFactory.openSession();
org.hibernate.Transaction tx = session.beginTransaction();

//Create new instance of Contact and set values in it by reading them from form object
System.out.println("Inserting Record");
InsertionDetails details = new InsertionDetails();
details.setId(1);
details.setFirstName("Subin");
details.setLastName("Suresh");
details.setAddress("xyz");
session.save(details);
System.out.println("Done");
tx.commit();
}catch(Exception e){
System.out.println(e.getMessage());
}finally{
session.flush();
session.close();
}
}
}
InsertionDetails.java
package subin;

public class InsertionDetails {
private String firstName;
private String lastName;
private String address;
private long id;



/**
* @return First Name
*/
public String getFirstName() {
return firstName;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

/**
* @return Last name
*/
public String getLastName() {
return lastName;
}


/**
* @param string Sets the First Name
*/
public void setFirstName(String string) {
firstName = string;
}

/**
* @param string sets the Last Name
*/
public void setLastName(String string) {
lastName = string;
}

/**
* @return ID Returns ID
*/
public long getId() {
return id;
}

/**
* @param l Sets the ID
*/
public void setId(long l) {
id = l;
}
}
7) Code for  hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
<property name="hibernate.connection.username">web_test1</property>
<property name="hibernate.connection.password">web_test1</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.connection.pool_size">10</property>
<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="hibernate.hbm.xml" />
</session-factory>
</hibernate-configuration>
8) Code for  hibernate.hbm.xml 
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="subin.InsertionDetails" table="INSERTIONTABLE">
<id name="id" type="long" column="ID">
<generator class="assigned"/>
</id>
<property name="firstName">
<column name="FIRSTNAME"/>
</property>
<property name="lastName">
<column name="LASTNAME"/>
</property>
<property name="address">
<column name="Address"/>
</property>
</class>
</hibernate-mapping>

Note: we dont have to create table manually it will be created  automatically in the database.In hibernate.hbm.xml we have specified class name and table name so it maps elements in InsertionDetails.java with column name in database. In this  example we have given
<id name="id" type="long" column="ID">
<generator class="assigned"/>
</id>
to make  id is the primary key.so we cannot insert more than one record with same id value
to prevent that we use class="increment".
9) We need to add necessary jar file otherwise it will give reference problem.To solve this right click project--> properties Add External Jar as shown in the figure below and click Ok.


9 ) Run the project as shown below


 10) You will get following result in console and one row will be inserted to INSERTIONTABLE.

Thursday, September 23, 2010

Server Side Numeric Validator

Few days back i discussed JavaScript function to restrict input to numeric.
Today we will see Server Side Numeric Validator for JSF you can also see AlphaNumeric Validator in JSF  and Server Side Date Validator 
Steps for creating Numeric Validator
1) Create numeric.jsp file
numeric.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@taglib prefix="jc" uri="http://jsf-components" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%--
This file is an entry point for JavaServer Faces application.
--%>
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>JSP Page</title>
</head>
<body>
<h:form >
<jc:AlertMessage />
<h:panelGroup>
<h:outputText id="lb_No"value="Label.:" />
<h:inputText id="tf_NO" autocomplete="off" binding="#{numeric.tf_NO}" >
<f:validator validatorId="onlyNum"/>
<f:validateLength minimum="1" maximum="6"/>
</h:inputText>
<h:commandButton id="cb_save" value="Save" action="#{numeric.bt_SAVEActionPerformed}" > </h:commandButton>
</h:panelGroup>
</h:form>
</body>
</html>
</f:view>
------------------------------------------------------------------------------------------------------------------------------
2) Create a package subin and inside subin package create two javaclass files (Numeric.java and OnlyNumericValidator.java)
Numeric.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package subin;

import javax.faces.component.html.HtmlInputText;

/**
*
* @author SubinSuresh
*/
public class Numeric {

public void bt_SAVEActionPerformed() {
System.out.println("Debug bt_SAVEActionPerformed");
}
private HtmlInputText tf_NO =new HtmlInputText();

/**
* @return the tf_NO
*/
public HtmlInputText getTf_NO() {
return tf_NO;
}

/**
* @param tf_NO the tf_NO to set
*/
public void setTf_NO(HtmlInputText tf_NO) {
this.tf_NO = tf_NO;
}
}
--------------------------------------------------------------------------------------------------------------------------
OnlyNumericValidator.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package subin;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.html.HtmlInputText;
import javax.faces.component.html.HtmlInputTextarea;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

/**
*
* @author SubinSuresh
*/
public class OnlyNumericValidator implements Validator {

public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
String compValue = null;
boolean flag = false;
if (component != null && component instanceof HtmlInputText) {
compValue = (String) ((HtmlInputText) component).getSubmittedValue();
} else if (component != null && component instanceof HtmlInputTextarea) {
compValue = (String) ((HtmlInputTextarea) component).getSubmittedValue();
}
if (compValue != null && !compValue.equalsIgnoreCase("")) {
flag = compValue.matches("[0-9]*");
if (!flag) {
if (component instanceof HtmlInputText) {
((HtmlInputText) component).setTitle("Only numbers are allowed here");
((HtmlInputText) component).setSubmittedValue("");
} else if (component instanceof HtmlInputTextarea) {
((HtmlInputTextarea) component).setTitle("Only numbers are allowed here");
} else if (component instanceof HtmlSelectOneMenu) {
((HtmlSelectOneMenu) component).setTitle("Page got some un-conditional Data");
}
throw new ValidatorException(new FacesMessage("Only numbers are allowed here"));
}
}
}
}
-------------------------------------------------------------------------------------------------------------------------
3)Mapping in faces-config.xml file
<managed-bean>
<managed-bean-name>numeric</managed-bean-name>
<managed-bean-class>subin.Numeric</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<validator>
<validator-id>onlyNum</validator-id>
<validator-class>subin.OnlyNumericValidator</validator-class>
</validator>


JSF Related topics: JCaptcha in JSF, Integrating Richfaces with JSF,Getting client and server sessionId in JSF and more.....

Wednesday, September 22, 2010

Make buttons sexier in your site

Sexy Buttons is a very good framework for creating some awesome buttons. These buttons can surely grab attention.


The data points/features these buttons offer  are as follows:

  • The underlying HTML can use either <button> or <a> elements.
  • They are dynamic and shrink/expand to fit their text labels.
  • There are four states: normal, hover/focus, active, and disabled.
  • The labels can include icons. Use one of the 1000+ included Silk icons or use your own. Icons are specified via HTML class attribute.
  • They use the sliding doors CSS technique for increased performance.
  • They support different skins by simply changing an HTML class attribute.
  • A layered Photoshop template is provided to assist in creating new skins.
  • Easy to implement.
  • No Javascript required.
Usage
  1. Download sexy button from here and upload it to your server.
  2. Add link to the style sheet  SexyButtons/sexybuttons.css” type=”text/css” />
  3. Now just admire the buttons.

    Creating System Recovery Disk in Windows 7

    Windows 7 comes with an inbuilt tool to  create a system repair disc. By using system repair disc you can recover your computer from any major issue. To create the disc you need a blank CD/DVD.
    If you have Windows installation disc then you might not need this disc because you can use the installation disc as a repair disc but it is advisable that you should make one disc as a backup copy. It will help you in case you lose your installation disc. Here are the steps to create a disc.
    1. Insert a blank CD/DVD inside the DVD drive.
    2. Click on “Start” button and type system repair disc inside the search box.
    3. Click on the result.

    4. It will open the “Create a system repair disc” window. Select the drive from the drop down and click on “Create disc” button.

    5. It will start the disc creation process. You can see the progress on the progress bar. It will take some time to create the disc.

    That’s it. Your disc is ready. Now you can use it anytime when any major issue occur inside your Windows 7 computer or your computer fails to start.

    First Look at the New Indian Coin

    Tuesday, September 21, 2010

    Server Side Address Validator

    In my last post i wrote  Server Side Date Validator today we will see Server Side Address Validator
    Steps for creating Server Side Address Validator
    1) Create address.jsp file
    address.jsp

    <%@page contentType="text/html"%>
    <%@page pageEncoding="UTF-8"%>
    <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
    <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
    <%@taglib prefix="jc" uri="http://jsf-components" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <%--
    This file is an entry point for JavaServer Faces application.
    --%>
    <f:view>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>JSP Page</title>
    </head>
    <body>
    <h:form >
    <jc:AlertMessage />
    <h:panelGroup>
    <h:outputText id="lb_No"value="Address.:" />
    <h:inputText id="tf_NO" autocomplete="off" binding="#{address.tf_NO}" >
    <f:validator validatorId="addressValidator"/>
    <f:validateLength minimum="10" maximum="30"/>
    </h:inputText>
    <h:commandButton id="cb_save" value="Save" action="#{address.bt_SAVEActionPerformed}" > </h:commandButton>
    </h:panelGroup>
    </h:form>
    </body>
    </html>
    </f:view>
    -------------------------------------------------------------------------------------------------------
    2) Create a package subin and inside subin package create two javaclass files (Address.java and AddressValidator.java)
    Address.java
     /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package subin;

    import javax.faces.component.html.HtmlInputText;

    /**
     *
     * @author SubinSuresh
     */
    public class Address {

        public void bt_SAVEActionPerformed() {
            System.out.println("Debug bt_SAVEActionPerformed");
        }
        private HtmlInputText tf_NO = new HtmlInputText();

        /**
         * @return the tf_NO
         */
        public HtmlInputText getTf_NO() {
            return tf_NO;
        }
        /**
         * @param tf_NO the tf_NO to set
         */
        public void setTf_NO(HtmlInputText tf_NO) {
            this.tf_NO = tf_NO;
        }
    }
    -------------------------------------------------------------------------------------------------------
    AddressValidator.java
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package subin;

    import javax.faces.application.FacesMessage;
    import javax.faces.component.UIComponent;
    import javax.faces.component.html.HtmlInputText;
    import javax.faces.component.html.HtmlInputTextarea;
    import javax.faces.component.html.HtmlSelectOneMenu;
    import javax.faces.context.FacesContext;
    import javax.faces.validator.Validator;
    import javax.faces.validator.ValidatorException;

    /**
     *
     * @author subin_s
     */
    public class AddressValidator implements Validator {

        public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
            String compValue = null;
            boolean flag = false;
            if (component != null && component instanceof HtmlInputText) {
                compValue = (String) ((HtmlInputText) component).getSubmittedValue();
            } else if (component != null && component instanceof HtmlInputTextarea) {
                compValue = (String) ((HtmlInputTextarea) component).getSubmittedValue();
            }
            if (compValue != null && !compValue.equalsIgnoreCase("")) {
                flag = compValue.matches("[a-zA-Z 0-9/.&-,]*");
            }
            if (!flag) {
                if (component instanceof HtmlInputText) {
                    ((HtmlInputText) component).setTitle("No special symbols are allowed here");
                } else if (component instanceof HtmlInputTextarea) {
                    ((HtmlInputTextarea) component).setTitle("No special symbols are allowed here");
                } else if (component instanceof HtmlSelectOneMenu) {
                    ((HtmlSelectOneMenu) component).setTitle("Page got some un-conditional Data");
                }
                throw new ValidatorException(new FacesMessage("Characters you have entered are not allowed here"));
            }
        }
    }
    -----------------------------------------------------------------------------------------------------------
    3)Mapping in faces-config.xml file
    <managed-bean>
    <managed-bean-name>address</managed-bean-name>
    <managed-bean-class>subin.Address</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <validator>
    <validator-id>addressValidator</validator-id>
    <validator-class>subin.AddressValidator</validator-class>
    </validator>

     Note: In  AddressValidator.java we can allow any number character by keeping in regular expression compValue.matches("[a-zA-Z 0-9/.&-,]*")
     

    Monday, September 20, 2010

    Server Side Date Validator

    Steps for creating ServerSide Date Validator
    1) Create datevalidate.jsp file
    datevalidate.jsp
    <%@page contentType="text/html"%>
    <%@page pageEncoding="UTF-8"%>
    <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
    <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
    <%@taglib prefix="jc" uri="http://jsf-components" %>
    <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
    <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

    <%--
    This file is an entry point for JavaServer Faces application.
    --%>
    <f:view>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>JSP Page</title>
    </head>
    <body>
    <h:form >
    <jc:AlertMessage />
    <h:panelGroup>
    <h:outputText id="lb_No"value="EnterDate.:" />
    <rich:calendar id="dc_SOLD_ON" binding="#{validate.dc_SOLD_ON}" inputStyle="font-size:10pt;width:55px;height:20px"datePattern="dd-MM-yyyy" >
    <f:validator validatorId="dateValidator"/>
    </rich:calendar>
    <h:commandButton id="cb_save" value="Save" action="#{validate.bt_SAVEActionPerformed}" > </h:commandButton>
    </h:panelGroup>
    </h:form>
    </body>
    </html>
    </f:view>
    ---------------------------------------------------------------------------------------------------------
    2) Create a package subin and inside subin package create two javaclass files (DateValidate.java and DateValidator.java)
    DateValidate.java

    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package subin;

    import org.richfaces.component.html.HtmlCalendar;
    /**
    *
    * @author SubinSuresh
    */
    public class DateValidate {
    public void bt_SAVEActionPerformed() {
    System.out.println("Debug bt_SAVEActionPerformed");
    }
    private HtmlCalendar dc_SOLD_ON= new HtmlCalendar();
    /**
    * @return the dc_SOLD_ON
    */
    public HtmlCalendar getDc_SOLD_ON() {
    return dc_SOLD_ON;
    }
    /**
    * @param dc_SOLD_ON the dc_SOLD_ON to set
    */
    public void setDc_SOLD_ON(HtmlCalendar dc_SOLD_ON) {
    this.dc_SOLD_ON = dc_SOLD_ON;
    }
    }
    --------------------------------------------------------------------------------------------------------------------------
    DateValidator.java

    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package subin;

    import java.util.Date;
    import javax.faces.application.FacesMessage;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.validator.Validator;
    import javax.faces.validator.ValidatorException;
    import org.richfaces.component.html.HtmlCalendar;

    /**
    *
    * @author SubinSuresh
    */
    public class DateValidator implements Validator {

    public String DATE_FORMAT = "dd-MM-yyyy";
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
    System.out.println("Debug Inside DateValidator" + ((HtmlCalendar) component).getSubmittedValue());
    String date = (String) ((HtmlCalendar) component).getSubmittedValue();
    try {
    Date dt = converStringToDate(date);
    System.out.println("Debug Inside dt " + dt);
    } catch (Exception ex) {
    ex.printStackTrace();
    ((HtmlCalendar) component).setSubmittedValue("");
    throw new ValidatorException(new FacesMessage("Invalid Date"));
    }
    }
    /**
    * Convert String to Date
    * @param dateString
    * @return
    */
    public Date converStringToDate(String dateString) {
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);
    java.util.Date dt = null;
    try {
    dt = sdf.parse(dateString);
    } catch (java.text.ParseException p) {
    System.out.println(p.toString());
    }
    return dt;
    }
    }
    ------------------------------------------------------------------------------------------------------------------
    3)Mapping in faces-config.xml file
    <managed-bean>
    <managed-bean-name>validate</managed-bean-name>
    <managed-bean-class>subin.DateValidate</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <validator>
    <validator-id>dateValidator</validator-id>
    <validator-class>subin.DateValidator</validator-class>
    </validator>


    Sunday, September 19, 2010

    Scrollable datatable in JSF

    Today we will see one of  the important and useful features of  JSF Framework Scrollable datatable.
    This is very useful to improve look of you web page.When we click on DisplayDetails button table will be populated.
    Steps for creating Scrollable datatable.
    1)Create datatable.jsp file
    datatable.jsp
    <%@page contentType="text/html"%>
    <%@page pageEncoding="UTF-8"%>
    <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
    <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <%--
    This file is an entry point for JavaServer Faces application.
    --%>
    <f:view>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>JSP Page</title>
    </head>
    <body>
    <h:form >
    <jc:AlertMessage />
    <h:panelGroup>
    <h:commandButton id="cb_save" value="Display Details" style="position:absolute;left:490px;" action="#{scroll.bt_SAVEActionPerformed}" > </h:commandButton>
    </h:panelGroup>
    <h:panelGroup id="pn_DETAILS_GRP" style="overflow:auto;position:absolute;top:70px;left:400px;width:300px;height:150px;solid black">
    <h:dataTable id="tb_USER_DETAILS" border="1" var="userDtls" value="#{scroll.userTable}" style="width:300px;height:150px">
    <h:column id="SlNo">
    <f:facet name="header">
    <h:outputText value="Sl No" style="font-size:10pt" ></h:outputText>
    </f:facet>
    <h:outputText value="#{userDtls.userSlNo}" style="font-size:8pt"/>
    </h:column>
    <h:column id="firstName">
    <f:facet name="header">
    <h:outputText value="First Name" style="font-size:10pt"/>
    </f:facet>
    <h:outputText value="#{userDtls.userFirst_Name}" style="font-size:8pt"/>
    </h:column>
    <h:column id="lastName">
    <f:facet name="header">
    <h:outputText value="Last Name" style="font-size:10pt"/>
    </f:facet>
    <h:outputText value="#{userDtls.userLast_Name}" style="font-size:8pt"/>
    </h:column>
    </h:dataTable>
    </h:panelGroup>
    </h:form>
    </body>
    </html>
    </f:view>
    ----------------------------------------------------------------------------------------------------------------------------
    2) Create a package subin and inside subin package create javaclass file DataTable.java
    DataTable.java
    /*
    * To change this template, choose Tools
    Templates
    * and open the template in the editor.
    */
    package subin;

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    /**
    *
    * @author SubinSuresh
    */
    public class DataTable {

    private HashMap userDtlsMap = new HashMap();
    private List userTable = new ArrayList();

    public void bt_SAVEActionPerformed() {
    System.out.println("Debug bt_SAVEActionPerformed");
    for (int i = 0; i < 15; i++) {
    userDtlsMap = new HashMap();
    System.out.println("Debug i"+i);
    userDtlsMap.put("userSlNo", "" + (i + 1));
    userDtlsMap.put("userFirst_Name", "subin");
    userDtlsMap.put("userLast_Name", "suresh");
    userTable.add(userDtlsMap);
    }
    }

    /**
    * @return the userDtlsMap
    */
    public HashMap getUserDtlsMap() {
    return userDtlsMap;
    }

    /**
    * @param userDtlsMap the userDtlsMap to set
    */
    public void setUserDtlsMap(HashMap userDtlsMap) {
    this.userDtlsMap = userDtlsMap;
    }
    /**
    * @return the userTable
    */

    public List getUserTable() {
    return userTable;
    }

    /**
    * @param userTable the userTable to set
    */

    public void setUserTable(List userTable) {
    this.userTable = userTable;
    }
    }

    -------------------------------------------------------------------------------------------------------------------
    3)Mapping in faces-config.xml file
    <managed-bean>
    <managed-bean-name>scroll</managed-bean-name>
    <managed-bean-class>subin.DataTable</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>



    JSF Related topics: JCaptcha in JSF, Integrating Richfaces with JSF,Getting client and server sessionId in JSF and more.....

    Saturday, September 18, 2010

    AlphaNumeric Validator in JSF

    Few days back i discussed Javascript function to restrict special characters,
    Today we will see serverside alphanumeric validator for Jsf.
    This serverside validator is used to validate and restrict special character entering into database.

    Steps for creating AlphaNumeric Validator
    1) Create AlphaNumeric.jsp file
    AlphaNumeric.jsp
    <%@page contentType="text/html"%>
    <%@page pageEncoding="UTF-8"%>
    <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
    <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
    <%@taglib prefix="jc" uri="http://jsf-components" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <%--
    This file is an entry point for JavaServer Faces application.
    --%>
    <f:view>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>JSP Page</title>
    </head>
    <body>
    <h:form >
    <jc:AlertMessage />
    <h:panelGroup>
    <h:outputText id="lb_No"value="Label.:" />
    <h:inputText id="tf_NO" autocomplete="off" binding="#{alphanumeric.tf_NO}" >
    <f:validateLength maximum="6" minimum="1"/>
    <f:validator validatorId="alphaNumeric"/>
    </h:inputText>
    <h:commandButton id="cb_save" value="Save" action="#{alphanumeric.bt_SAVEActionPerformed}" > </h:commandButton>
    </h:panelGroup>
    </h:form>
    </body>
    </html>
    </f:view>
    ------------------------------------------------------------------------------------------------------------------------------
    2) Create a package subin and inside subin package create two javaclass files (AlphaNumeric.java and AlphaNumericValidator.java)
    AlphaNumeric.java
    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package subin;
    import javax.faces.component.html.HtmlInputText;
    /**
    *
    * @author SubinSuresh
    */
    public class AlphaNumeric {

    public void bt_SAVEActionPerformed() {
    System.out.println("Debug bt_SAVEActionPerformed");
    }
    private HtmlInputText tf_NO =new HtmlInputText();

    /**
    * @return the tf_NO
    */
    public HtmlInputText getTf_NO() {
    return tf_NO;
    }

    /**
    * @param tf_NO the tf_NO to set
    */
    public void setTf_NO(HtmlInputText tf_NO) {
    this.tf_NO = tf_NO;
    }
    }
    --------------------------------------------------------------------------------------------------------------------------
    AlphaNumericValidator.java

    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package subin;
    import javax.faces.application.FacesMessage;
    import javax.faces.component.UIComponent;
    import javax.faces.component.html.HtmlInputText;
    import javax.faces.component.html.HtmlInputTextarea;
    import javax.faces.component.html.HtmlSelectOneMenu;
    import javax.faces.context.FacesContext;
    import javax.faces.validator.Validator;
    import javax.faces.validator.ValidatorException;

    /**
    *
    * @author subin
    */
    public class AlphaNumericValidator implements Validator {

    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
    String compValue = null;
    boolean flag = false;
    if (component != null && component instanceof HtmlInputText) {
    compValue = (String) ((HtmlInputText) component).getSubmittedValue();
    } else if (component != null && component instanceof HtmlInputTextarea) {
    compValue = (String) ((HtmlInputTextarea) component).getSubmittedValue();
    }
    if (compValue != null && !compValue.equalsIgnoreCase("")) {
    flag = compValue.matches("[a-zA-Z0-9]*");
    }
    if (!flag) {
    if (component instanceof HtmlInputText) {
    ((HtmlInputText) component).setTitle("No special symbols are allowed here");
    } else if (component instanceof HtmlInputTextarea) {
    ((HtmlInputTextarea) component).setTitle("No special symbols are allowed here");
    } else if (component instanceof HtmlSelectOneMenu) {
    ((HtmlSelectOneMenu) component).setTitle("Page got some un-conditional Data");
    }
    throw new ValidatorException(new FacesMessage("No special symbols are allowed"));
    }
    }
    }
    -------------------------------------------------------------------------------------------------------------------------
    3)Mapping in faces-config.xml file

    <managed-bean>
    <managed-bean-name>alphanumeric</managed-bean-name>
    <managed-bean-class>subin.AlphaNumeric</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <validator>
    <validator-id>alphaNumeric</validator-id>
    <validator-class>subin.AlphaNumericValidator</validator-class>
    </validator>

    When we enter some specialcharacter in textbox and click on save button it shows a popup alert No special symbols are allowed.
    Note:This validation occur before entering action method of save button i.e why "Debug bt_SAVEActionPerformed" is not printed in the output console.


    JSF Related topics: JCaptcha in JSF, Integrating Richfaces with JSF,Getting client and server sessionId in JSF and more.....