-
FEATURED COMPONENTS
First time here? Check out the FAQ!
<zk>
<!-- Due to the security constraint, ZK demo site doesn't allow
zscript to declare a class. Instead we use a pre-compiled Java class.
You can uncomment the following and try it in your local server.
<zscript>
class Comp implements Comparator {
private boolean _asc;
public Comp(boolean asc) {
_asc = asc;
}
public int compare(Object o1, Object o2) {
String s1 = o1.getChildren().get(0).getValue(),
s2 = o2.getChildren().get(0).getValue();
int v = s1.compareTo(s2);
return _asc ? v: -v;
}
}
Comp asc = new Comp(true), dsc = new Comp(false);
</zscript>
-->
<zscript>
import org.zkoss.zkdemo.userguide.*;
Comparator asc = new RowLabelComparator(true),
dsc = new RowLabelComparator(false);
</zscript>
<grid>
<columns menupopup="auto">
<column label="Author" sortAscending="${asc}" sortDescending="${dsc}"/>
<column label="Title"/>
<column label="Publisher"/>
<column label="Hardcover"/>
</columns>
<rows>
<row>
<label value="Philip Hensher"/>
<label value="The Northern Clemency"/>
<label value="Knopf (October 30, 2008)"/>
<label value="608 pages"/>
</row>
<row>
<label value="Philip Hensher"/>
<label value="The Fit"/>
<label value="HarperPerennial (April 4, 2005)"/>
<label value="240 pages"/>
</row>
<row>
<label value="Philip Hensher"/>
<label value="Kitchen Venom"/>
<label value="Flamingo (May 19, 2003)"/>
<label value="336 pages"/>
</row>
<row>
<label value="Michael Greenberg"/>
<label value="Hurry Down Sunshine"/>
<label value="Other Press (September 9, 2008)"/>
<label value="240 pages"/>
</row>
<row>
<label value="Michael Greenberg"/>
<label value="Painless Vocabulary (Painless)"/>
<label value="Barron's Educational Series (September 1, 2001)"/>
<label value="292 pages"/>
</row>
<row>
<label value="Rick Perlstein"/>
<label value="Nixonland: The Rise of a President and the Fracturing of America"/>
<label value="Scribner; 1st Scribner Hardcover Ed edition (May 13, 2008)"/>
<label value="896 pages"/>
</row>
<row>
<label value="Rick Perlstein"/>
<label value="Nixonland"/>
<label value="Simon & Schuster (May 13, 2008)"/>
<label value="0 pages"/>
</row>
</rows>
</grid>
</zk>
I din't get that above commented statement (class declaration is not possible in zscript)....plz help me and explain me in steps...
plz help me....its urgent...
<zk>
<!-- Due to the security constraint, ZK demo site doesn't allow
zscript to declare a class. Instead we use a pre-compiled Java class.
You can uncomment the following and try it in your local server.
<zscript>
class Comp implements Comparator {
private boolean _asc;
public Comp(boolean asc) {
_asc = asc;
}
public int compare(Object o1, Object o2) {
String s1 = o1.getChildren().get(0).getValue(),
s2 = o2.getChildren().get(0).getValue();
int v = s1.compareTo(s2);
return _asc ? v: -v;
}
}
Comp asc = new Comp(true), dsc = new Comp(false);
</zscript>
-->
<zscript>
import org.zkoss.zkdemo.userguide.*;
Comparator asc = new RowLabelComparator(true),
dsc = new RowLabelComparator(false);
</zscript>
<grid>
<columns menupopup="auto">
<column label="Author" sortAscending="${asc}" sortDescending="${dsc}"/>
<column label="Title"/>
<column label="Publisher"/>
<column label="Hardcover"/>
</columns>
<rows>
<row>
<label value="Philip Hensher"/>
<label value="The Northern Clemency"/>
<label value="Knopf (October 30, 2008)"/>
<label value="608 pages"/>
</row>
<row>
<label value="Philip Hensher"/>
<label value="The Fit"/>
<label value="HarperPerennial (April 4, 2005)"/>
<label value="240 pages"/>
</row>
<row>
<label value="Philip Hensher"/>
<label value="Kitchen Venom"/>
<label value="Flamingo (May 19, 2003)"/>
<label value="336 pages"/>
</row>
<row>
<label value="Michael Greenberg"/>
<label value="Hurry Down Sunshine"/>
<label value="Other Press (September 9, 2008)"/>
<label value="240 pages"/>
</row>
<row>
<label value="Michael Greenberg"/>
<label value="Painless Vocabulary (Painless)"/>
<label value="Barron's Educational Series (September 1, 2001)"/>
<label value="292 pages"/>
</row>
<row>
<label value="Rick Perlstein"/>
<label value="Nixonland: The Rise of a President and the Fracturing of America"/>
<label value="Scribner; 1st Scribner Hardcover Ed edition (May 13, 2008)"/>
<label value="896 pages"/>
</row>
<row>
<label value="Rick Perlstein"/>
<label value="Nixonland"/>
<label value="Simon & Schuster (May 13, 2008)"/>
<label value="0 pages"/>
</row>
</rows>
</grid>
</zk>
Hi
I have modify the code, it work fine
<zk> <zscript><![CDATA[ class Comp implements Comparator { private boolean _asc; public Comp(boolean asc) { _asc = asc; } public int compare(Object o1, Object o2) { String s1 = o1.getChildren().get(0).getValue(), s2 = o2.getChildren().get(0).getValue(); int v = s1.compareTo(s2); return _asc ? v: -v; } } Comp asc = new Comp(true), dsc = new Comp(false); ]]></zscript> <grid> <columns menupopup="auto"> <column label="Author" sortAscending="${asc}" sortDescending="${dsc}" /> <column label="Title" /> <column label="Publisher" /> <column label="Hardcover" /> </columns> <rows> <row> <label value="Philip Hensher" /> <label value="The Northern Clemency" /> <label value="Knopf (October 30, 2008)" /> <label value="608 pages" /> </row> <row> <label value="Philip Hensher" /> <label value="The Fit" /> <label value="HarperPerennial (April 4, 2005)" /> <label value="240 pages" /> </row> <row> <label value="Philip Hensher" /> <label value="Kitchen Venom" /> <label value="Flamingo (May 19, 2003)" /> <label value="336 pages" /> </row> <row> <label value="Michael Greenberg" /> <label value="Hurry Down Sunshine" /> <label value="Other Press (September 9, 2008)" /> <label value="240 pages" /> </row> <row> <label value="Michael Greenberg" /> <label value="Painless Vocabulary (Painless)" /> <label value="Barron's Educational Series (September 1, 2001)" /> <label value="292 pages" /> </row> <row> <label value="Rick Perlstein" /> <label value="Nixonland: The Rise of a President and the Fracturing of America" /> <label value="Scribner; 1st Scribner Hardcover Ed edition (May 13, 2008)" /> <label value="896 pages" /> </row> <row> <label value="Rick Perlstein" /> <label value="Nixonland" /> <label value="Simon and Schuster (May 13, 2008)" /> <label value="0 pages" /> </row> </rows> </grid> </zk>
@samchuang
Hope you may help me to solve my sorting problem.
Actually I had a sellerList.zul page in that values come from the database which contains SQL QUERY TO be executed and then I get the values in my sellerList.zul listbox.
my sellerList.zul page is
<?xml version="1.0" encoding="UTF-8"?> <zk xmlns="http://www.zkoss.org/2005/zul"> <style src="/css/style.css" /> <?page id="seller" title="Certilogo ECC" ?> <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?> <?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?> <window border="normal" id="sellerWindow" class="main_bg" apply="${internetSeller}" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd"> <h:form id="form" name="form" method="POST"> <div style="width:1000px;margin: 0 auto" > <include src="page_header.zul" /> <div style="clear:both;" align="center"> <div class="left"> <include src="left_menu.zul" /> </div> <div class="right"> <!-- FIRST HEADING STARTS HERE --> <div align="left"> <div><label value="FRAUD DETECTION"></label> / <label value="TRADITIONAL RETAILES"></label></div> </div> <!-- Filter Bar will be included here --> <!-- SECOND HEADING STARTS HERE --> <include src="filter_bar2.zul" /> <div id="update_section" > <div id="index_area"> <div id="product_table" align="left" width="100%" > <listbox id="sellerList" multiple="false" width="100%" height="100%"> <listhead> <listheader visible="false"/> <listheader label="Seller Name" width="18%" align="left" sort="auto" /> <listheader label="Auctions" width="14%" align="left" sort="auto"/> <listheader label="Active Actions" width="14%" align="left" sort="auto"/> <listheader label="Sold" width="10%" align="center"/> <listheader label="Auth. OK" width="10%" align="center"/> <listheader label="Auth. KO" width="10%" align="center"/> <listheader label="Info. OK" width="10%" align="center"/> <listheader label="Info. KO" width="10%" align="center"/> <listheader label="Invalid" width="10%" align="center"/> <listheader label="Fakes" width="10%" align="center"/> <listheader label="Pre. Auth" width="10%" align="center"/> </listhead> </listbox> <separator height="10px"></separator> </div> <button id="exportExcel" label="Export Excel" onClick="sellerWindow$composer.generate();"/> </div> </div> </div> </div> <div style="clear:both;" align="center"> <include src="page_footer.zul" /> </div> </div> </h:form> </window> </zk>
and my InternetSeller Controller is
public class InternetSeller extends BaseController2 implements ListitemRenderer{ /** * */ private static final long serialVersionUID = 1L; protected InternetHibernateDao internetServiceDao = new InternetHibernateDao(); /** * @return the internetServiceDao */ public InternetHibernateDao getInternetServiceDao() { return internetServiceDao; } /** * @param internetServiceDao the internetServiceDao to set */ public void setInternetServiceDao(InternetHibernateDao internetServiceDao) { this.internetServiceDao = internetServiceDao; } private String Dateto =""; private String Datefrom = ""; //Listbox for displaying Seller list protected Listbox sellerList; //ListModelList to modelList of Seler available protected ListModelList listModelList = new ListModelList(); //Listheader value for seller name protected Listheader seller_name; private List internetSellerList = new ArrayList(); /** * @return the internetSellerList */ public List getInternetSellerList() { return internetSellerList; } /** * @param internetSellerList the internetSellerList to set */ public void setInternetSellerList(List internetSellerList) { this.internetSellerList = internetSellerList; } private long totalRecords = 0; /** * @return the dateto */ public String getDateto() { return Dateto; } /** * @return the datefrom */ public String getDatefrom() { return Datefrom; } /** * @param dateto the dateto to set */ public void setDateto(String dateto) { Dateto = dateto; } /** * @param datefrom the datefrom to set */ public void setDatefrom(String datefrom) { Datefrom = datefrom; } @Override public void doAfterCompose(Component comp) throws Exception { // TODO Auto-generated method stub super.doAfterCompose(comp); /*book = report.getBook(); reportSheet = book.getWorksheet("ReportSheet"); final Worksheet templateSheet = book.getWorksheet("TemplateSheet"); templateRange = Ranges.range(templateSheet,"template"); offset = ((Number)Ranges.range(templateSheet,"offset").getValue()).intValue();*/ if(this.getFilterChanged().equals("true")) { logger.info("FILTER CHANGED"); logger.info("date entered :"+ this.getyFrom() + "/"+this.getmFrom()+"/"+this.getyTo()+"/"+this.getmTo()); Datefrom = this.getyFrom() + "-" + this.getmFrom() + "-1"; int month = Integer.parseInt(this.getmTo() +1); if(month > 12) { int year = Integer.parseInt(this.getyTo() +1); Dateto = year + "-1-1"; } else { Dateto = this.getyTo() + "-" + (month) + "-1"; } } else { logger.info("FILTER not CHANGED"); Calendar now = Calendar.getInstance(); Dateto = now.get(Calendar.YEAR) + "-" + (now.get(Calendar.MONTH) +1) + "-" + now.get(Calendar.DATE); now.add(Calendar.YEAR, -1); Datefrom = now.get(Calendar.YEAR) + "-" + (now.get(Calendar.MONTH) +1) + "-" +now.get(Calendar.DATE); this.setyFrom(String.valueOf(now.get(Calendar.YEAR))); this.setmFrom(String.valueOf(now.get(Calendar.MONTH) +1)); } this.setPeriod_value(""); this.setInternetSellerList(); } private void setInternetSellerList() { // TODO Auto-generated method stub logger.info("service id before"+this.getService_id()); if(this.getService_id().equals("0")) { this.setService_id(this.getService_id()); } logger.info("service id after"+this.getService_id()); //this.totalRecords = this.internetServiceDao.getSellerList(this.getService_id(),this.getSeason(),Datefrom,Dateto).size(); this.setInternetSellerList(this.internetServiceDao.getSellerList(this.getService_id(),this.getSeason(),this.getDateFrom(),this.getDateTo())); listModelList.addAll(getInternetSellerList()); sellerList.setModel(listModelList); sellerList.setItemRenderer(this); //sellerList.addEventListener("onSelect", arg1) //seller_name.setSortAscending(new FieldComparator("me_seller_name",true)); //seller_name.setSortAscending(new FieldComparator("me_seller_name",false)); //seller_name.setSortAscending(new FieldComparator("clg_seller_id", true)); } /** * @return the sellerList */ public Listbox getSellerList() { return sellerList; } /** * @param sellerList the sellerList to set */ public void setSellerList(Listbox sellerList) { this.sellerList = sellerList; } public void render(Listitem listItem, Object data) throws Exception { // TODO Auto-generated method stub Map map = (Map) data; new Listcell(map.get("clg_seller_id").toString()).setParent(listItem); new Listcell(map.get("me_seller_name").toString()).setParent(listItem); new Listcell(map.get("auctions").toString()).setParent(listItem); new Listcell(map.get("active_auctions").toString()).setParent(listItem); new Listcell(map.get("sold").toString()).setParent(listItem); new Listcell(map.get("auth_ok").toString()).setParent(listItem); new Listcell(map.get("auth_ko").toString()).setParent(listItem); new Listcell(map.get("info_ok").toString()).setParent(listItem); new Listcell(map.get("info_ko").toString()).setParent(listItem); new Listcell(map.get("invalid").toString()).setParent(listItem); new Listcell(map.get("perc_fakes").toString()).setParent(listItem); new Listcell(map.get("pre_auth").toString()).setParent(listItem); }
this.setInternetSellerList(this.internetServiceDao.getSellerList(this.getService_id(),this.getSeason(),this.getDateFrom(),this.getDateTo()));
Query Code given below
SQL_QUERY = "select eo.me_id as clg_seller_id, eo.me_seller_name, " + "(select count(distinct eo1.offer_id) " + "from ecc_offer eo1 " + "where eo1.me_id = eo.me_id " + "and eo1.me_seller_name = eo.me_seller_name) as auctions, " + "(select sum(case when end_date>sysdate then 1 else 0 end) " + "from ecc_offer eo1 " + "where eo1.me_id = eo.me_id " + "and eo1.me_seller_name = eo.me_seller_name) as active_auctions, " + "(select sum(eo2.sold) " + "from ecc_offer eo2 " + "where eo2.me_id = eo.me_id " + "and eo2.me_seller_name = eo.me_seller_name) as sold, " + "sum(case when (va.answer = 1 or va.answer = 3) and (v.code_check_result = 1 or v.code_check_result = 2) then 1 else 0 end) as auth_ok, " + "sum(case when (va.answer = 1 or va.answer = 3) and v.code_check_result = 3 then 1 else 0 end) as auth_ko, " + "sum(case when(va.answer = 2 or v.interrogation_type = 3 or v.interrogation_type = 4) and (v.code_check_result = 1 or v.code_check_result = 2) then 1 else 0 end) as info_ok, " + "sum(case when (va.answer = 2 or v.interrogation_type = 3 or v.interrogation_type = 4) and v.code_check_result = 3 then 1 else 0 end) as info_ko, " + "sum(case when v.serial_number is null and v.interrogation_type is null and v.verification_id is not null then 1 else 0 end) as invalid, " + " decode (sum(case when (va.answer = '1' or va.answer = '3') and v.code_check_result>0 then 1 else 0 end),0,0,round(((sum(case when v.code_check_result = 3 and (va.answer = '1' or va.answer = '3') then 1 else 0 end) + (sum(case when v.serial_number is null and v.interrogation_type = 0 then 1 else 0 end))) " + " / sum(case when (va.answer = '1' or va.answer = '3') and v.code_check_result>0 then 1 else 0 end))*100)) as auth_fakes, " + "sum(case when v.interrogation_type = 1 or v.interrogation_type = 2 then 1 else 0 end) as pre_auth " + "from ecc_offer eo " + // "inner join ecc_seller_identities esi on eo.me_id = esi.me_id and eo.me_seller_name = esi.me_seller_name " + "left join verification v on eo.me_id = v.me_id and eo.offer_id = v.offer_id " + "left join verification_answer va on v.verification_id = va.verification_id and question_id = 1 " + "left join verification_code_details vcd on vcd.serial_number = v.serial_number "; //"and v.service_id in("+service_Id+") " + if(!service_Id.equals("") && !service_Id.equals("0")) { SQL_QUERY += "and v.service_id in (" +service_Id+ ")"; } else { SQL_QUERY += " and v.service_id in(10,14,15,16,17,21,22,23,26) "; } SQL_QUERY += "and eo.me_id = 2 "; /*"group by eo.me_id, eo.me_seller_name " + "having count(v.verification_id) > 0 " + "order by 3 desc ";*/ if(!season_id.equals("") && !season_id.equals("0")){ SQL_QUERY +=" and vcd.season_id = '"+season_id+"'"; } if(DateFrom != "" && Dateto != ""){ SQL_QUERY +=" and eo.end_date between TO_DATE('"+DateFrom+"','YYYY-MM-DD') and" + " TO_DATE('"+Dateto+"','YYYY-MM-DD') " ; } SQL_QUERY +="group by eo.me_id, eo.me_seller_name " + "having count(v.verification_id) > 0 "; SQL_QUERY +=" order by " + 2 + " "; //javax.persistence.Query query = entityManager.createQuery(SQL_QUERY); System.out.println(SQL_QUERY); Query query = entityManager.createNativeQuery(SQL_QUERY); //System.out.println(query); List imSellers = new ArrayList<HashMap>(); List tempList = query.getResultList(); if(tempList.size() > 0) { for(int i1 = 0; i1 < tempList.size(); i1++) { HashMap objHashMap = new HashMap(); Object[] row = (Object [] ) tempList.get(i1); objHashMap.put("clg_seller_id", row[0]); objHashMap.put("me_seller_name", row[1]); objHashMap.put("auctions", row[2]); objHashMap.put("active_auctions", row[3]); objHashMap.put("sold", row[4]); objHashMap.put("auth_ok", row[5]); objHashMap.put("auth_ko", row[6]); objHashMap.put("info_ok", row[7]); objHashMap.put("info_ko", row[8]); objHashMap.put("invalid", row[9]); objHashMap.put("perc_fakes", row[10]); objHashMap.put("pre_auth", row[11]); imSellers.add(objHashMap); } }
just help me that the value I get in my listbox to be get sorted when I click to their header.
I am using Spring with JPA so, I know that we can make use of FieldComparator as per Terrytornado view.
Help me to solve my problem.
Best Regards
Yogendra
@samchuang..
thanx for your support, I am able to do sorting with the database by just passing the orderby value as a parameter on the listhearder onClick event and then calling the method declared in the controller class..
So now I am able to run my query based on the passed parameter orderby value..
Best Regards
Yogendra
Asked: 2009-06-04 05:00:49 +0800
Seen: 2,131 times
Last updated: Mar 13 '11