Requirement Constraints

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

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();
    }
}
Email ThisBlogThis!Share to XShare to Facebook
Posted in ZK MVC CRUD Examples | No comments
Newer Post Older Post Home

0 comments:

Post a Comment

Subscribe to: Post Comments (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...
  • EDI 5010 Documentation 837 Professional - Loop 2010BB Payer Name
    2010BB Payer Name          In this loop, all the information will be taken from Insurance master screen. Take a look of our sample screen...
  • EDI 5010 Documentation–837 - BHT - Beginning of Hierarchical Transaction
    BHT – Beginning of Hierarchical Transaction Loop Seg ID Segment Name Format Length Ref# Req Value   BHT Beginning of Hier...
  • 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...
  • MVVM Command annotation and Notify change example
    Here is an example, how to pass parameter on a zul through MVVM Command binding annotation. ZK URL http://books.zkoss.org/wiki/ZK%20Develo...
  • 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...
  • Patient Demographics
    Patient browse (search) is the key element for any EMR / PMS Software. In my past 15 years experience, i involved more than 5 times in desig...
  • 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-...

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)
    • ►  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)
      • Input Form Validation window
      • ZK Executions.createComponents
      • List Item Connected with Hibernate and Search Para...
      • ZK Hibernate Setup
      • Window Title Change Color
      • List item Data Binding
      • ZK Data Binding
      • Message Box Customization
      • MVC CRUD Application–Filter records in the list ba...
      • ZK Check Event Handling Using MVC
      • MVC CRUD Application with Auto filter for List item
      • Text Box on change and on Changing Event
      • Hibernate Criteria Queries
      • MVC CRUD Application
      • Hibernate Query uniqueResult Method
      • Hibernate retrieve the first record always when we...
      • Hibernate Introduction Part 4
      • ZK Data Binding Part 1
      • Simple Sightseeing Application Part 2
      • Window CSS
      • ZK Simple Sightseeing Application Part 1
      • Button CSS
      • Group Box with Collapse and Expand Button in the R...
      • Tuning Eclipse Performance and Avoiding OutOfMemor...
      • Listitem Mold Paging - Add components in the pagin...
      • ZK Calling Another ZUL File
      • ZK Installation Guide
      • List Box CSS
      • Eclipse Tips and Tricks
      • Hibernate Introduction Part 3
    • ►  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