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();}
}
0 comments:
Post a Comment