18 package org.turro.contacts.util;
20 import java.util.Arrays;
21 import java.util.Comparator;
22 import java.util.LinkedList;
23 import java.util.List;
24 import org.turro.contacts.Contact;
25 import org.turro.contacts.db.ContactsPU;
26 import org.turro.elephant.context.Application;
27 import org.turro.elephant.db.WhereClause;
28 import org.turro.jpa.Dao;
29 import org.zkoss.lang.Strings;
30 import org.zkoss.zul.AbstractListModel;
31 import org.zkoss.zul.ListModel;
32 import org.zkoss.zul.ListSubModel;
33 import org.zkoss.zul.event.ListDataEvent;
34 import org.zkoss.zul.ext.Sortable;
40 public class ContactComboModel extends AbstractListModel implements Sortable<Contact>, ListSubModel, java.io.Serializable {
42 private static final long serialVersionUID = 20081029L;
46 private boolean onlyUsers =
false;
47 private Object[] data;
48 private String roleIn;
49 private Object lastValue;
54 onlyUsers = !Strings.isEmpty(roleIn);
58 this.data = data.toArray(
new Object[data.size()]);
60 onlyUsers = !Strings.isEmpty(roleIn);
65 if(data ==
null || data.length <= index)
return null;
75 public void sort(Comparator cmpr,
boolean ascending) {
76 Arrays.sort(data, cmpr);
77 fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1);
87 if(value !=
null && value.equals(lastValue))
return this;
89 LinkedList lData =
new LinkedList();
92 wc.
addClause(
"select contact from Contact as contact");
95 wc.
addClause(
"and contact.login is not null");
100 wc.
addLikeFields(
new String[]{
"contact.name" }, value.toString());
102 if(nRows < 1) nRows = 10;
103 for(Object o : dao.getResultList(wc, nRows)) {
105 if(!onlyUsers || (onlyUsers && c.
isWebUser())) {
117 this.onlyUsers = onlyUsers;
static Application getApplication()
void addClause(String clause)
void addLikeFields(String[] fields, String value)