Requirement Constraints

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg
Showing posts with label ZK MVC CRUD Examples. Show all posts
Showing posts with label ZK MVC CRUD Examples. Show all posts

Monday, 8 April 2013

ZK MVC CRUD With Spring 3 + JPA + Hibernate 4 Entity Manager

Posted on 11:45 by Unknown

A simple CRUD Application based on JPA.

Overview
This article will explain you step by step how to create simple CRUD application using ZK as Presentation layer with Spring 3 and JPA (Hibernate vendor).

What is JPA and why JPA
The Java Persistence API, referred as JPA is a object-relational mapping solution to enterprise Java applications.
JPA is a spec and not an implementation, so if you choose JPA, you still have to pick an implementation. You can pick Hibernate, Top link, and any other ORM that implements JPA.

Using JPA does not tie you to any particular ORM Like hibernate, toplink, etc. EntityManager provides vendor independent access to persistence. Portability across application servers and persistence products (avoids vendor lock-in).

Developers can choose the best ORM implementation according to the application requirement. For example, production can be started from the free versions of ORM implementation and when the needs arise it can be switched to the commercial version of the ORM framework. You can switch the persistence provides without changing the code. So, ORM framework independence is another another big benefit of JPA

Hibernate ORM
In this example, we are going to choose Hibernate as ORM vendor to build the simple CRUD Application.

Spring and Hibernate ORM Framework Integration.
There are lot of articles on the net about this topic. I recommend to the read following articles on this subject.

1. http://www.javabeat.net/2007/10/integrating-spring-framework-with-hibernate-orm-framework/
2. http://static.springsource.org/spring/docs/2.5.x/reference/orm.html
3. http://blog.springsource.org/2012/04/06/migrating-to-spring-3-1-and-hibernate-4-1/
4. http://javaprogrammingtips4u.blogspot.in/2010/04/spring-integration-with-hibernate_23.html

Technologies used in this example:

1. ZK 6.5.1 CE Version.
2. Hibernate-entitymanager 4.1.9 Final
3. Spring-orm 3.2.0 Release
4. Spring-web 3.2.0 Release
5. Java mysql connector 5.1.22

In mysql, create the following table

image
Part 1: First let us setup the development environment. Download this document and follow the step by step instruction to install the necessary software’s.

Part 2: This post explain how to create ZK Maven project in eclipse IDE as step by step.
Part 3: This post explain how to configure database, user name, password, etc using persistence.xml file
Part 4: This post explain how to integrate Spring and Hibernate.
Part 5: This post explain how to create DAO and service layer for the CRUD operation.
Part 6: This post explain how to create Presentation layer using ZK Framework.


Output before with ZK Default CSS Style

image

image

Output after defining our own CSS for each component.

image

image

Video demo:
http://screencast.com/t/DFRiwmpNHq

You can download the source code here

MVVM Version of this tutorial is available here

Read More
Posted in ZK Hibernate, ZK MVC CRUD Examples, ZK Spring | No comments

Sunday, 3 June 2012

MVC–CRUD Application with ZK 5 Data Binding

Posted on 15:50 by Unknown
Here is the summary of what we have completed in this subject.
  1. We created new ZK Project, set up the hibernate and created Modal-View- Controller files to display all the record from the DB. Please click here to go that post.
  2. Next, we added filter feature such that if the user type any value, then the list will be filtered accordingly. Please click here to go that post
  3. Next, we’ve seen how to add more search parameters and filter the list. Please click here to go that post
All these are completed without using any data binding concept. Now let us see how we can use ZK 5 Data binding concepts and makes our job easy. If you are new ZK 5 Data binding, then first go here and learn basic stuffs.



Here is the Project structure so far for the files created.
image
To convert this example into ZK 5 Data binding, there is no need to change any MODAL Files such as Practice and PracticeDAO. Similarly there is no change in the Hibernate utility class and mapping file
All we need to create two files : one is ZUL File and its composer file
PracticeList2.zul
<?page title="Practice List" contentType="text/html;charset=UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="./plstWin" ?>
<zk>

<window title="Practice List" id="plstWin" border="normal"
sclass="listingwindow" apply="myproject.UI.PracticeListController2">

<div>
<button label="Add Practice" />
</div>
<separator />
<groupbox height="40px">
<label value="Practice Name" />
<space />
<space />
<textbox id="practicefilter" cols="50" />
<button id="gobutton" label="Go" />
<space spacing="20px" />
<checkbox id="activechk" label="Show only active"
checked="true" />
<space spacing="20px" />
</groupbox>
<separator />
<listbox id="PracticeList"
model="@{plstWin$PracticeListController2.pLists}">
<listhead sizable="true">
<listheader label="Practice Name" sort="auto" />
<listheader label="City" sort="auto" />
<listheader label="State" sort="auto" />
<listheader label="Zip Code" sort="auto" />
</listhead>
<listitem self="@{each=pr1}">
<listcell label="@{pr1.PracticeName}" />
<listcell label="@{pr1.City}" />
<listcell label="@{pr1.State}" />
<listcell label="@{pr1.ZipCode}" />
</listitem>
</listbox>
</window>
</zk>

PracticeListController2.Java
package myproject.UI;

import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.InputEvent;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;
import org.zkoss.zul.Checkbox;
import org.zkoss.zk.ui.event.Event;
import java.util.ArrayList;
import java.util.List;
import mydomain.*;

@SuppressWarnings("rawtypes")
public class PracticeListController2 extends GenericForwardComposer {
/**
*
*/
private static final long serialVersionUID = 1L;
private Listbox PracticeList;
private PracticeDAO practicedao;
private Checkbox activechk;
private List<practice> pLists;

@SuppressWarnings({ "unchecked" })
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
practicedao = new PracticeDAO();
pLists = practicedao.getAll();
}

@SuppressWarnings("unchecked")
public void onChanging$practicefilter(InputEvent event) {
practicedao.setFilter(event.getValue());
PracticeList.getItems().clear();
pLists = practicedao.getFilteredPractices();
PracticeList.setModel(new ListModelList(practicedao
.getFilteredPractices()));
}

@SuppressWarnings("unchecked")
public void onCheck$activechk(Event event) {
practicedao.setActiveFlag(activechk.isChecked());
PracticeList.getItems().clear();
PracticeList.setModel(new ListModelList(practicedao
.getFilteredPractices()));

}

public List<practice> getPLists() {
return pLists;
}

}

Read More
Posted in ZK MVC CRUD Examples | No comments

Tuesday, 29 May 2012

List Item Connected with Hibernate and Search Parameter

Posted on 10:22 by Unknown

 Summary

This example contains one list box with First name and Last Name as search Field. If the user do not give any values for first name and last name, then clicking Go Button will list all the records from the DB.
If the user enters either first name or last name or both, then using like operator, it will retrieve accordingly.

Environment

  1. Eclipse 3.7 Indigo IDE
  2. Hibernate 4.1.1
  3. JavaSE 1.6
  4. MySQL 5.1
image

Step 1:

Set up ZK Project with Hibernate. Follow this post for more information.

Step 2:

Create the Following table in mysql
image

Step 3:

Let us create the Java Bean for the above Table
image
Here is the Code
package myDomain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "person")
public class Person
{

private int ID;
private String FirstName;
private String LastName;
private String Email;

@Id
@GeneratedValue
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}

@Column(name = "FirstName")
public String getFirstName() {
return FirstName;
}
public void setFirstName(String firstName) {
FirstName = firstName;
}

@Column(name = "LastName")
public String getLastName() {
return LastName;
}
public void setLastName(String lastName) {
LastName = lastName;
}

@Column(name = "Email")
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}


}



Step 4:


Go Back to hibernate.cfg.xml and add the above class as follows

<!-- Mapping Classes -->
    <mapping class="myDomain.Person" />


Step 5:



Demo. Zul File


image

<?page title="Person List" contentType="text/html;charset=UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
<zk>
<window id='myWin' title="Person List" border="normal"
apply="myUI.DemoComposer">
<groupbox height="40px">
<label value="First Name" />
<space />
<space />
<textbox id="FirstName" cols="50" />
<label value="Last Name" />
<space />
<space />
<textbox id="LastName" cols="50" />
<button id="gobutton" label="Go" />
<space spacing="20px" />
<space spacing="20px" />
</groupbox>
<separator />
<listbox id="PersonList" >
<listhead sizable=" true ">
<listheader label="First Name" sort="auto" />
<listheader label="Last Name" sort="auto" />
<listheader label="Email" sort="auto" />
</listhead>
<listitem self="@{each=person}">
<listcell label="@{person.firstName}" />
<listcell label="@{person.LastName}" />
<listcell label="@{person.Email}" />
</listitem>
</listbox>
</window>
</zk>



Step 6:


DemoComposer.Java

image

package myUI;

import java.util.ArrayList;
import java.util.List;


import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Textbox;
import myDomain.Person;
import myDomain.PersonDAO;

public class DemoComposer extends GenericForwardComposer {

private List<Person> persons = new ArrayList<Person>();
private Textbox FirstName;
private Textbox LastName;
private Listbox PersonList;
private PersonDAO p1DAO;

@SuppressWarnings("unchecked")
public void onClick$gobutton(Event event)
{

p1DAO = new PersonDAO();

p1DAO.setFirstName(FirstName.getValue());
p1DAO.setLastName(LastName.getValue());

persons = p1DAO.getAllPersons();
PersonList.getItems().clear();
PersonList.setModel(new ListModelList(persons));

}

public List<Person> getPersons() {
return persons;
}


}




Step 7:


PersonDAO. Java

image

Code

package myDomain;

import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Query;
import org.zkoss.zul.Messagebox;

import HibernateUtilities.HibernateUtil;

public class PersonDAO {

private String firstName;
private String lastName;

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

@SuppressWarnings("unchecked")
public List<Person> getAllPersons() {

List<Person> allrecords = null;
Transaction trns = null;
Session session = HibernateUtil.getSessionFactory().openSession();
try {
trns = session.beginTransaction();

if ((firstName == null || "".equals(firstName))
&& (lastName == null || "".equals(lastName))) {
Query q1 = session.createQuery("from Person ");
allrecords = q1.list();
}

if ((firstName != null && !firstName.equals(""))
&& (lastName == null || "".equals(lastName))) {
Query q1 = session.createQuery("from Person where firstname like :value ");
q1.setString("value", firstName +"%");
allrecords = q1.list();
}

if ((lastName != null && !lastName.equals(""))
&& (firstName == null || "".equals(firstName))) {
Query q1 = session.createQuery("from Person where lastname like :value ");
q1.setString("value", lastName +"%");
allrecords = q1.list();
}
if ((firstName != null && !firstName.equals(""))
&& (lastName != null && !lastName.equals(""))) {

Query q1 = session.createQuery("from Person where firstname like :value1 or lastname like :value2 ");
q1.setString("value1", firstName +"%");
q1.setString("value2", lastName +"%");
allrecords = q1.list();
}

session.getTransaction().commit();

} catch (RuntimeException e) {
if (trns != null) {
trns.rollback();
}
e.printStackTrace();
} finally {
session.flush();
session.close();
}
return allrecords;
}
}


 


Step 7:


Run the Demo.ZUL File
Read More
Posted in ZK MVC CRUD Examples | No comments

Friday, 25 May 2012

MVC CRUD Application–Filter records in the list based on user Conditions

Posted on 03:56 by Unknown

In the last post, We have seen how to display filter the data when user types the first few characters. Now if we remember the UI , we have a text box in the Top of the List and also there is check box to filter the active/inactive records .


Before that, if you want familiar with Check box events, please refer this post
Here is the Modified ZUL File
<?page title="Practice List" contentType="text/html;charset=UTF-8"?>
<zk>
 
    <window title="Practice List" border="normal" sclass="listingwindow"
        apply="myproject.UI.PracticeListController">
 
        <div>
            <button label="Add Practice" />
        </div>
        <separator />
        <groupbox height="40px">
            <label value="Practice Name" />
            <space />
            <space />
            <textbox id="practicefilter" cols="50" />
            <button id="gobutton" label="Go" />
            <space spacing="20px" />
            <checkbox id="activechk" label="Show only active" checked="true"/>
            <space spacing="20px" />
        </groupbox>
        <separator />
        <listbox id="PracticeList">
            <listhead sizable="true">
                <listheader label="Practice Name" sort="auto" />
                <listheader label="City" sort="auto" />
                <listheader label="State" sort="auto" />
                <listheader label="Zip Code" sort="auto" />
            </listhead>
        </listbox>
    </window>
</zk>

Here is the Controller File


package myproject.UI;
 
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.InputEvent;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;
import org.zkoss.zul.Checkbox;
import org.zkoss.zk.ui.event.Event;
 
import mydomain.*;
 
@SuppressWarnings("rawtypes")
public class PracticeListController extends GenericForwardComposer {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private Listbox PracticeList;
    private PracticeDAO practicedao;
    private Checkbox activechk;
 
    @SuppressWarnings({ "unchecked" })
    public void doAfterCompose(Component comp) throws Exception {
        super.doAfterCompose(comp);
 
        PracticeList.setItemRenderer(new ListitemRenderer() {
            @Override
            public void render(Listitem item, Object arg1, int arg2)
                    throws Exception {
                practice value = (practice) arg1;
                item.appendChild(new Listcell(value.getPracticeName()));
                item.appendChild(new Listcell(value.getCity()));
                item.appendChild(new Listcell(value.getState()));
                item.appendChild(new Listcell(value.getZipCode()));
                item.setValue(value);
 
            }
        });
 
        practicedao = new PracticeDAO();
        PracticeList.setModel(new ListModelList(practicedao.getAll()));
        
    }
 
    @SuppressWarnings("unchecked")
    public void onChanging$practicefilter(InputEvent event) {
        practicedao.setFilter(event.getValue());
        PracticeList.getItems().clear();
        PracticeList.setModel(new ListModelList(practicedao.getFilteredPractices()));
    }
 
    @SuppressWarnings("unchecked")
    public void onCheck$activechk(Event event) {
        practicedao.setActiveFlag(activechk.isChecked());
        PracticeList.getItems().clear();
        PracticeList.setModel(new ListModelList(practicedao.getFilteredPractices()));
 
    }
}

Here is the Java POJO Class


package mydomain;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
 
@Entity
@Table(name = "practice")
public class practice {
 
    private String PRACTICE_NAME;
    private String CITY;
    private String STATE_PROVINCE_GEO;
    private String POSTAL_CODE;
    private int Practice_ID;
    private Integer IS_ACTIVE;
 
    @Id
    @GeneratedValue
    public int getPractice_ID() {
        return Practice_ID;
    }
 
    public void setPractice_ID(int practice_ID) {
        Practice_ID = practice_ID;
    }
 
    @Column(name = "PRACTICE_NAME")
    public String getPracticeName() {
        return PRACTICE_NAME;
    }
 
    @Column(name = "PRACTICE_NAME")
    public void setPracticeName(String pRACTICE_NAME) {
        PRACTICE_NAME = pRACTICE_NAME;
    }
 
    @Column(name = "CITY")
    public String getCity() {
        return CITY;
    }
 
    public void setCity(String cITY) {
        CITY = cITY;
    }
 
    @Column(name = "STATE_PROVINCE_GEO")
    public String getState() {
        return STATE_PROVINCE_GEO;
    }
 
    @Column(name = "STATE_PROVINCE_GEO")
    public void setState(String sTATE_PROVINCE_GEO) {
        STATE_PROVINCE_GEO = sTATE_PROVINCE_GEO;
    }
 
    @Column(name = "POSTAL_CODE")
    public String getZipCode() {
        return POSTAL_CODE;
    }
 
    @Column(name = "POSTAL_CODE")
    public void setZipCode(String pOSTAL_CODE) {
        POSTAL_CODE = pOSTAL_CODE;
    }
 
    @Column(name = "IS_ACTIVE")
    public Integer getisActive() {
        if (IS_ACTIVE == null)
            return 1;
        else
            return IS_ACTIVE;
    }
 
    public void setisActive(Integer isActive) {
        this.IS_ACTIVE = isActive;
    }
 
}

Here is the DAO Class


package mydomain;
 
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Query;
import java.util.ArrayList;
 
import HibernateUtilities.HibernateUtil;
 
public class PracticeDAO {
 
    private String filter;
    private boolean activeFlag;
 
    List<practice> allrecords = null;
 
    public void setFilter(String filter) {
        this.filter = filter;
    }
 
    public void setActiveFlag(boolean flg) {
        this.activeFlag = flg;
    }
 
    public List<practice> getFilteredPractices() {
 
        List<practice> filteredPractices = new ArrayList<practice>();
 
        /* if no filter characters and check box is un checked. Then get all */
        /* 0 and 0 */
        
        if ((filter == null || "".equals(filter)) && (activeFlag == false)) 
        {
            filteredPractices.addAll(allrecords);
        }
 
        /* if there are filter characters and check box is un checked. Then get filtered by filter text */
        /* 1 and 0 */
        
        if ((filter != null && !filter.equals("")) && (activeFlag == false)) 
        {
            for (practice item : allrecords) 
            {
                if (item.getPracticeName().toLowerCase().indexOf(filter.toLowerCase()) == 0)
                    filteredPractices.add(item);
            }
        }
 
        /* if no filter characters and check box is  checked. Then get only active practices */
        /* 0 and 1 */
        
        if ((filter == null || "".equals(filter)) && (activeFlag == true)) 
        {
            for (practice item : allrecords) 
            {
                if (item.getisActive() == 1)
                    filteredPractices.add(item);
            }
        }
 
        /* Both Contains values i.e filter contains some text and check box is checked  */
        /* 1 and 1 */
        
        if ((filter != null && !filter.equals("")) && (activeFlag == true))
        {
 
            for (practice item : allrecords) 
            {
                if (item.getPracticeName().toLowerCase().indexOf(filter.toLowerCase()) == 0) 
                    if (item.getisActive() == 1) 
                        filteredPractices.add(item);
            }
 
        }
        
        return filteredPractices;
    }
 
    @SuppressWarnings("rawtypes")
    public List getAll() {
 
        Transaction trns = null;
        Session session = HibernateUtil.getSessionFactory().openSession();
        try {
            trns = session.beginTransaction();
            Query q1 = session.createQuery("from practice");
            allrecords = q1.list();
 
            /*
            for (int i = 0; i < allrecords.size(); i++) {
                practice pt = (practice) allrecords.get(i);
                System.out.println(pt.getisActive().toString());
            }
            */
            
            session.getTransaction().commit();
 
        } catch (RuntimeException e) {
            if (trns != null) {
                trns.rollback();
            }
            e.printStackTrace();
        } finally {
            session.flush();
            session.close();
        }
        this.activeFlag = true;
        return getFilteredPractices();
    }
}
Read More
Posted in ZK MVC CRUD Examples | No comments
Older Posts Home
Subscribe to: Posts (Atom)

Popular Posts

  • ZK Example for inline Editing with Add New and Delete
    I am quite impressed on this demo from ZK . But adding new record and delete existing record is missing as part of typical CRUD. So i thoug...
  • Hibernate Validator Example 2
    In this example, we will see some more validation constraints such as @email, @past, @length, etc. And also we will also define custom error...
  • ZK Passing Parameter between two files using MVVM–Part 1
    Overview This is the first series of articles about Passing parameter between two zul files using MVVM Design pattern .This article will fo...
  • ViewModel Class Java Annotation @Init, @NotifyChange, @Command
    In following sections we'll list all syntaxes that can be used in implementing a ViewModel and applying ZK bind annotation. The ZK binde...
  • Good Website Design Links
    Form Design Label Placement in Forms International Address Fields in Web Forms 40 Eye-Catching Registration Pages blog-comment-form-...
  • ZK Border Layout–Another example
    This examples show how you can use ZK Border Layout to show the product information on clicking image. ZK Version 6 Project Name : BorderL...
  • History of Present Illness
    HPI - One of the main component of Clinical History. What is an HPI ? The history of present illness (HPI) is a chronological description...
  • ZK MVVM Form Binding CRUD with Spring and Hibernate - Part 4
    Presentation Layer using ZK Framework          In part 3 , We have completed Spring integration with hibernate. In this post, we will des...
  • How to refer CSS File in ZK Style tag
    In this example, we will see how to create CSS file as separate file and include in zul file to change the look and feel Project structure a...
  • MVVM Modal window–Pass Parameter and Return values
    In this post, we will see how we can pass some values to the modal window when calling from the parent window and also vice versa (i.e) retu...

Categories

  • Billing Process
  • C Workbook
  • C++ Workbook
  • Eclipse Tips
  • EDI 5010
  • EMR Appointment Features
  • EMR Labs Stuff
  • EMR PMS Links
  • EMR Use cases
  • EMR Vital Sign
  • Good Website Design
  • Hibernate Criteria Queries
  • Hibernate Introduction
  • Hibernate Introduction Setup
  • Hibernate Mapping
  • Hibernate POC
  • Hibernate Validator
  • Hibernate–Java Environment setup
  • HPI
  • Java
  • Maven
  • MU Certification
  • NPI
  • PQRS
  • Practice Management System
  • Spring Security
  • Tech Links
  • Today Tech Stuff
  • zk
  • ZK Hibernate
  • ZK 5 Databinding
  • ZK Application
  • ZK Calling Another ZUL
  • ZK CheckBox
  • ZK CreateComponents
  • ZK CSS
  • ZK extended Components
  • ZK Foreach
  • ZK Forum Posts
  • ZK Framework
  • ZK Hibernate Setup
  • ZK ID Space
  • ZK Include
  • ZK Installation
  • ZK iReport
  • ZK Layout
  • ZK Listitem Pagination
  • ZK Message Box
  • ZK MVC
  • ZK MVC Combox Box
  • ZK MVC CRUD Examples
  • ZK MVC Listbox
  • ZK MVVM
  • ZK MVVM Combo
  • ZK MVVM CRUD
  • ZK MVVM ListBox
  • ZK Spring
  • ZK TextBox

Blog Archive

  • ▼  2013 (105)
    • ▼  December (3)
      • EDI Instructions
      • Understanding EDI Structure
      • What is an EDI ?
    • ►  September (7)
    • ►  August (13)
    • ►  July (1)
    • ►  June (11)
    • ►  May (3)
    • ►  April (14)
    • ►  March (19)
    • ►  February (21)
    • ►  January (13)
  • ►  2012 (177)
    • ►  December (1)
    • ►  November (13)
    • ►  October (19)
    • ►  September (24)
    • ►  August (26)
    • ►  July (6)
    • ►  June (37)
    • ►  May (30)
    • ►  April (16)
    • ►  March (1)
    • ►  January (4)
  • ►  2011 (5)
    • ►  December (1)
    • ►  November (1)
    • ►  July (1)
    • ►  June (1)
    • ►  April (1)
  • ►  2010 (1)
    • ►  September (1)
Powered by Blogger.

About Me

Unknown
View my complete profile