Author: bbrossaud Date: 2010-08-04 18:27:57 +0200 (Wed, 04 Aug 2010) New Revision: 121 Url: http://chorem.org/repositories/revision/bonzoms/121 Log: removed *data and change paging mold Added: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractModel.java Removed: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyData.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsData.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsModel.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeData.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonData.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceData.java Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/AddressFormController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/BonzomsConfig.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyFormController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyModel.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractFormController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsFormController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeFormController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeModel.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/MainController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/Model.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonFormController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonModel.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ResultController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceFormController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceModel.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/WikittyModel.java trunk/bonzoms-ui-zk/src/main/resources/wikitty-jdbc-config.properties trunk/bonzoms-ui-zk/src/main/webapp/companyFormPage.zul trunk/bonzoms-ui-zk/src/main/webapp/companyPage.zul trunk/bonzoms-ui-zk/src/main/webapp/contractFormPage.zul trunk/bonzoms-ui-zk/src/main/webapp/contractPage.zul trunk/bonzoms-ui-zk/src/main/webapp/contractsFormPage.zul trunk/bonzoms-ui-zk/src/main/webapp/employeeFormPage.zul trunk/bonzoms-ui-zk/src/main/webapp/employeePage.zul trunk/bonzoms-ui-zk/src/main/webapp/index.zul trunk/bonzoms-ui-zk/src/main/webapp/personFormPage.zul trunk/bonzoms-ui-zk/src/main/webapp/personPage.zul trunk/bonzoms-ui-zk/src/main/webapp/resultPage.zul trunk/bonzoms-ui-zk/src/main/webapp/serviceFormPage.zul trunk/bonzoms-ui-zk/src/main/webapp/servicePage.zul Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/AddressFormController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/AddressFormController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/AddressFormController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -3,10 +3,12 @@ import org.chorem.data.bonzoms.Address; import org.chorem.data.bonzoms.AddressImpl; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zkplus.databind.DataBinder; +import org.zkoss.zul.Window; /** * @@ -18,15 +20,22 @@ protected Address address = new AddressImpl(); - public final static String EVENT_ON_SAVE_ADDRESS = "onSaveAddress"; + public static final String EVENT_ON_SAVE_ADDRESS = "onSaveAddress"; + public static final String EVENT_ON_CLOSE_ADDRESS = "onCloseAddress"; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - Address data = (Address) arg.get("address"); - if (data != null) { - this.address = data; + Window win = (Window) self; + win.doModal(); + win.setPosition("center"); + String addressId = Executions.getCurrent().getParameter("addressId"); + if (addressId == null) { + addressId = (String) arg.get("addressId"); } + if (addressId != null) { + address = model.retrieveAddressById(addressId); + } DataBinder binder = new AnnotateDataBinder(comp); binder.bindBean("composer", this); binder.loadAll(); @@ -35,6 +44,10 @@ /* * Events */ + public void onClose() { + Events.postEvent(EVENT_ON_CLOSE_ADDRESS, this.self, null); + } + public void onClick$saveAddress() { address = model.createAddress(address); Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/BonzomsConfig.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/BonzomsConfig.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/BonzomsConfig.java 2010-08-04 16:27:57 UTC (rev 121) @@ -108,7 +108,7 @@ APPLICATION_VERSION("application.version", _("bonzoms.config.application.version.description"), null, String.class, true, true), DATA_DIR("solr.data.dir", _("bonzoms.config.data.dir.description"), - System.getProperty("user.home") + "/.bonzoms/solr", String.class, false, false); + System.getProperty("user.home") + "/.chorem-data/solr", String.class, false, false); public final String key; public final String description; public final String defaultValue; Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -27,16 +27,21 @@ import java.util.HashMap; import java.util.List; import java.util.Map; + import org.chorem.data.bonzoms.Address; import org.chorem.data.bonzoms.Company; import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.Element; +import org.nuiton.wikitty.search.Search; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.SuspendNotAllowedException; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.GenericForwardComposer; -import org.zkoss.zul.Button; import org.zkoss.zul.Label; import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; @@ -48,59 +53,30 @@ * @author sherkhan */ public class CompanyController extends GenericForwardComposer { - protected Model model = new Model(); - protected CompanyModel companyDataModel = new CompanyModel(); + protected WikittyProxy proxy = BonzomsProxy.getInstance(); + protected CompanyModel companyModel = new CompanyModel(20); @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - String search = (String) arg.get("search"); - List<Company> companies; - if (search != null && !search.isEmpty()) { - companies = model.retrieveCompaniesBySearch(search); - } else { - companies = model.retrieveAllCompanies(); - } - createCompaniesData(companies); + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Company.EXT_COMPANY).criteria(); + companyModel.setCriteria(criteria); } - public void createCompaniesData(List<Company> companies) { - for (Company company: companies) { - List<Address> addresses = model.retrieveAddressesByIds(new ArrayList<String>(company.getAddress())); - CompanyData data = new CompanyData(company, addresses); - companyDataModel.addData(data); - } - } - - public void createWindowCompanyForm(CompanyData companyData) throws SuspendNotAllowedException, InterruptedException { - Map<String, Object> map = new HashMap<String, Object>(); - if (companyData != null) { - map.put("companyData", companyData); - } - Window win = (Window) Executions.createComponents("companyFormPage.zul", null, map); - + public void createWindowCompanyForm(String id) throws SuspendNotAllowedException, InterruptedException { + Map<String, Object> map = new HashMap<String, Object>(); + if (id != null) { + map.put("companyId", id); + } + Window win = (Window) Executions.createComponents("companyFormPage.zul", null, map); win.addEventListener(CompanyFormController.EVENT_ON_SAVE_COMPANY, new EventListener() { @Override public void onEvent(Event event) throws Exception { - CompanyData data = (CompanyData) event.getData(); - if (data != null) { - int rowIndex = companyDataModel.indexOf(data); - if (rowIndex == -1) { - companyDataModel.addData(data); - } else { - companyDataModel.reloadContent(rowIndex); - } - } + companyModel.reload(); } }); - - win.setPage(page); -// win.doHighlighted(); - win.setPosition("center"); -// win.doOverlapped(); - win.doModal(); } /* @@ -109,12 +85,13 @@ public void onClick$newCompany() throws SuspendNotAllowedException, InterruptedException { createWindowCompanyForm(null); } + /* * Renderers */ - protected Listcell phonesFaxRenderer(CompanyData company) { - String render = "Fax: " + company.getCompany().getFax() + "\n"; - String str = company.getCompany().getPhones(); + protected Listcell phonesFaxRenderer(Company company) { + String render = "Fax: " + company.getFax() + "\n"; + String str = company.getPhones(); String[] phones = StringUtil.split(str, ";"); for (String phone : phones) { String[] values = StringUtil.split(phone, ":"); @@ -131,9 +108,9 @@ return listcell; } - protected Listcell emailsRenderer(CompanyData company) { + protected Listcell emailsRenderer(Company company) { String render = ""; - String str = company.getCompany().getEmails(); + String str = company.getEmails(); String[] emails = StringUtil.split(str, ";"); for (String email : emails) { String[] values = StringUtil.split(email, ":"); @@ -150,8 +127,9 @@ return listcell; } - protected Listcell addressesRenderer(CompanyData company) { - List<Address> addresses = company.getAddresses(); + protected Listcell addressesRenderer(Company company) { + List<String> ids = new ArrayList<String>(company.getAddress()); + List<Address> addresses = proxy.restore(Address.class, ids); String render = ""; for (Address address : addresses) { render += address.getName() + " (" + address.getCountry() + ") :\n"; @@ -165,28 +143,25 @@ return listcell; } - public ListitemRenderer getCompanyDataRenderer() { + public ListitemRenderer getCompanyRenderer() { return new ListitemRenderer() { @Override public void render(Listitem item, Object data) throws Exception { item.setValue(data); - final CompanyData companyData = (CompanyData) data; + final Company company = (Company) data; - Listcell nameCell = new Listcell(companyData.getCompany().getName()); - Listcell webSiteCell = new Listcell(companyData.getCompany().getWebSite()); - Listcell phoneFaxCell = phonesFaxRenderer(companyData); - Listcell emailCell = emailsRenderer(companyData); - Listcell addressCell = addressesRenderer(companyData); - Listcell typeCell = new Listcell(companyData.getCompany().getType()); - Listcell detailsCell = new Listcell(); - Button details = new Button("details"); - detailsCell.appendChild(details); - details.addEventListener("onClick", new EventListener() { + Listcell nameCell = new Listcell(company.getName()); + Listcell webSiteCell = new Listcell(company.getWebSite()); + Listcell phoneFaxCell = phonesFaxRenderer(company); + Listcell emailCell = emailsRenderer(company); + Listcell addressCell = addressesRenderer(company); + Listcell typeCell = new Listcell(company.getType()); + item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() { @Override public void onEvent(Event event) throws Exception { - createWindowCompanyForm(companyData); + createWindowCompanyForm(company.getWikittyId()); } }); @@ -196,7 +171,6 @@ item.appendChild(emailCell); item.appendChild(addressCell); item.appendChild(typeCell); - item.appendChild(detailsCell); } }; } @@ -209,6 +183,6 @@ * Getters */ public CompanyModel getCompanyModel() { - return companyDataModel; + return companyModel; } } Deleted: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyData.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyData.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyData.java 2010-08-04 16:27:57 UTC (rev 121) @@ -1,144 +0,0 @@ -/* - * #%L - * Bonzoms : bonzoms-zk - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2010 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package org.chorem.bonzoms.ui; - -import java.util.ArrayList; -import java.util.List; -import org.chorem.data.bonzoms.Address; -import org.chorem.data.bonzoms.Company; -import org.chorem.data.bonzoms.CompanyImpl; - -/** - * - * @author sherkhan - */ -public class CompanyData { - - protected Company company = new CompanyImpl(); - - protected PhonesModel phonesModel = new PhonesModel(); - protected EmailsModel emailsModel = new EmailsModel(); - - protected AddressesModel addressesModel = new AddressesModel(); - protected List<String> removedAddresses = new ArrayList<String>(); - - public CompanyData() {} - - public CompanyData(Company obj, List<Address> addr) { - setCompany(obj); - setAddresses(addr); - } - - /* - * Getters - */ - public Company getCompany() { - return company; - } - - public List<Address> getAddresses() { - return addressesModel.getAddresses(); - } - - public List<String> getRemovedAddresses() { - return removedAddresses; - } - - public AddressesModel getAddressesModel() { - return addressesModel; - } - - public EmailsModel getEmailsModel() { - return emailsModel; - } - - public List<Email> getEmails() { - return emailsModel.getEmails(); - } - - public PhonesModel getPhonesModel() { - return phonesModel; - } - - public List<Phone> getPhones() { - return phonesModel.getPhones(); - } - - public String getEmailsModelAsString() { - return emailsModel.getEmailsAsString(); - } - - public String getPhonesModelAsString() { - return phonesModel.getPhonesAsString(); - } - - /* - * Setters - */ - public void setCompany(Company obj) { - if (obj != null) { - company = obj; - } - } - - public void setAddresses(List<Address> list) { - if (list != null) { - addressesModel.setAddresses(list); - } - } - - public void setRemovedAddresses(List<String> list) { - if (list != null) { - removedAddresses = list; - } - } - - public void setAddressesModel(AddressesModel addr) { - addressesModel = addr; - } - - public void setEmailsModel(EmailsModel emailsModel) { - this.emailsModel = emailsModel; - } - - public void setPhonesModel(PhonesModel phonesModel) { - this.phonesModel = phonesModel; - } - - public void setPhones(List<Phone> phones) { - phonesModel.setPhones(phones); - } - - public void setEmails(List<Email> emails) { - emailsModel.setEmails(emails); - } - - public void setEmailsModelList(String str) { - emailsModel.setEmails(str); - } - - public void setPhonesModelList(String str) { - phonesModel.setPhones(str); - } -} Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyFormController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyFormController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyFormController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -25,15 +25,19 @@ import java.util.ArrayList; import java.util.List; + import org.chorem.data.bonzoms.Address; import org.chorem.data.bonzoms.AddressImpl; import org.chorem.data.bonzoms.Company; +import org.chorem.data.bonzoms.CompanyImpl; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zkplus.databind.DataBinder; import org.zkoss.zul.Listbox; +import org.zkoss.zul.Window; +import org.zkoss.zk.ui.Executions; /** * @@ -43,122 +47,137 @@ protected Model model = new Model(); - protected CompanyData companyData = new CompanyData(); + protected Company company = new CompanyImpl(); + protected AddressesModel addressesModel = new AddressesModel(); + protected PhonesModel phonesModel = new PhonesModel(); + protected EmailsModel emailsModel = new EmailsModel(); + + protected List<String> removedAddresses = new ArrayList<String>(); protected Listbox addressListbox; protected Listbox phoneListbox; protected Listbox emailListbox; - public final static String EVENT_ON_SAVE_COMPANY = "onSaveCompany"; + public static final String EVENT_ON_SAVE_COMPANY = "onSaveCompany"; + public static final String EVENT_ON_CLOSE_COMPANY = "onCloseCompany"; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - CompanyData company = (CompanyData) arg.get("companyData"); - init(company); + Window win = (Window) self; + win.doModal(); + win.setPosition("center"); + String companyId = Executions.getCurrent().getParameter("companyId"); + if (companyId == null) { + companyId = (String) arg.get("companyId"); + } + init(companyId); DataBinder binder = new AnnotateDataBinder(comp); binder.bindBean("composer", this); binder.loadAll(); } - protected void init(CompanyData company) { - if (company == null) { + protected void init(String companyId) { + if (companyId == null || companyId.isEmpty()) { initDefaultCompany(); } else { - initCompany(company); + initCompany(companyId); } } protected void initDefaultCompany() { Address address = new AddressImpl(); - companyData.getAddressesModel().addData(address); + addressesModel.addData(address); Phone phone = new Phone(); - companyData.getPhonesModel().addData(phone); + phonesModel.addData(phone); Email email = new Email(); - companyData.getEmailsModel().addData(email); + emailsModel.addData(email); } - protected void initCompany(CompanyData companyData) { - this.companyData = companyData; - List<Address> addresses = model.retrieveAddressesByIds(new ArrayList<String>(companyData.getCompany().getAddress())); - companyData.setAddresses(addresses); - companyData.setEmailsModelList(companyData.getCompany().getEmails()); - companyData.setPhonesModelList(companyData.getCompany().getPhones()); + protected void initCompany(String companyId) { + this.company = model.retrieveCompanyById(companyId); + List<Address> addresses = model.retrieveAddressesByIds(new ArrayList<String>(company.getAddress())); + addressesModel.setAddresses(addresses); + emailsModel.setEmails(company.getEmails()); + phonesModel.setPhones(company.getPhones()); } protected void removeCompanyAddresses() { - List<String> ids = companyData.getRemovedAddresses(); - for (String id : ids) { - companyData.getCompany().removeAddress(id); + for (String id : removedAddresses) { + company.removeAddress(id); } } protected void saveAddresses() { - List<Address> addresses = model.createAddresses(companyData.getAddressesModel().getAddresses()); - if (!companyData.getRemovedAddresses().isEmpty()) { - model.deleteAddressesByIds(companyData.getRemovedAddresses()); + List<Address> addresses = model.createAddresses(addressesModel.getAddresses()); + if (!removedAddresses.isEmpty()) { + model.deleteAddressesByIds(removedAddresses); removeCompanyAddresses(); } for (Address address : addresses) { - companyData.getCompany().addAddress(address.getWikittyId()); + company.addAddress(address.getWikittyId()); } } protected void saveEmails() { - String emails = companyData.getEmailsModelAsString(); - companyData.getCompany().setEmails(emails); + String emails = emailsModel.getEmailsAsString(); + company.setEmails(emails); } protected void savePhones() { - String phones = companyData.getPhonesModelAsString(); - companyData.getCompany().setPhones(phones); + String phones = phonesModel.getPhonesAsString(); + company.setPhones(phones); } /* * Events */ + public void onClose() { + Events.postEvent(EVENT_ON_CLOSE_COMPANY, this.self, null); + } + public void onClick$addAddress() { Address address = new AddressImpl(); - companyData.getAddressesModel().addData(address); + addressesModel.addData(address); } public void onClick$deleteAddress() { int size = addressListbox.getItemCount(); if (size > 1) { - Address address = (Address) companyData.getAddressesModel().getElementAt(size -1); - companyData.getAddressesModel().removeData(address); + Address address = (Address) addressesModel.getElementAt(size -1); + addressesModel.removeData(address); String id = address.getWikittyId(); if (!id.isEmpty()) { - companyData.getRemovedAddresses().add(id); + removedAddresses.add(id); } } } public void onClick$addPhone() { Phone phone = new Phone(); - companyData.getPhonesModel().addData(phone); + phonesModel.addData(phone); } public void onClick$deletePhone() { int size = phoneListbox.getItemCount(); if (size > 1) { - Phone phone = (Phone) companyData.getPhonesModel().getElementAt(size -1); - companyData.getPhonesModel().removeData(phone); + Phone phone = (Phone) phonesModel.getElementAt(size -1); + phonesModel.removeData(phone); } } public void onClick$addEmail() { Email email = new Email(); - companyData.getEmailsModel().addData(email); + emailsModel.addData(email); } public void onClick$deleteEmail() { int size = emailListbox.getItemCount(); if (size > 1) { - Email email = (Email) companyData.getEmailsModel().getElementAt(size - 1); - companyData.getEmailsModel().removeData(email); + Email email = (Email) emailsModel.getElementAt(size - 1); + emailsModel.removeData(email); } } @@ -167,11 +186,9 @@ saveEmails(); saveAddresses(); - Company company = model.updateCompany(companyData.getCompany()); - - companyData.setCompany(company); + company = model.updateCompany(company); - Events.postEvent(EVENT_ON_SAVE_COMPANY, this.self, companyData); + Events.postEvent(EVENT_ON_SAVE_COMPANY, this.self, company); this.self.detach(); } @@ -179,7 +196,19 @@ /* * Getters */ - public CompanyData getCompanyData() { - return companyData; + public Company getCompany() { + return company; } + + public AddressesModel getAddressesModel() { + return addressesModel; + } + + public PhonesModel getPhonesModel() { + return phonesModel; + } + + public EmailsModel getEmailsModel() { + return emailsModel; + } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyModel.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyModel.java 2010-08-04 16:27:57 UTC (rev 121) @@ -25,57 +25,117 @@ import java.util.ArrayList; import java.util.List; + +import org.chorem.data.bonzoms.Company; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.WikittyProxy; import org.zkoss.zkplus.databind.BindingListModel; import org.zkoss.zul.AbstractListModel; import org.zkoss.zul.event.ListDataEvent; /** * - * @author sherkhan + * @author bbrossaud */ public class CompanyModel extends AbstractListModel implements BindingListModel { - protected List<CompanyData> companies = new ArrayList<CompanyData>(); - + + protected WikittyProxy proxy = BonzomsProxy.getInstance(); + protected Criteria criteria = null; + protected int itemsByPage = 1; + protected int size = 0; + protected int currentPage = 0; + protected List<Company> companies = new ArrayList<Company>(); + + public CompanyModel(int itemsByPage) { + this.itemsByPage = itemsByPage; + size = getSize(); + createList(); + } + @Override public Object getElementAt(int index) { - return companies.get(index); + pageChange(index); + int indexList = index % itemsByPage; + Company Company = companies.get(indexList); + return Company; } @Override public int getSize() { - return companies.size(); + if (criteria == null) { + return 0; + } + Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); + PagedResult<Company> result = proxy.findAllByCriteria(Company.class, criteria); + return result.getNumFound(); } - - @Override - public int indexOf(Object obj) { - return companies.indexOf(obj); + + @Override + public int indexOf(Object obj) { + int index = 0; + String id = ((Company) obj).getWikittyId(); + for (Company data : companies) { + String dataId = data.getWikittyId(); + if (id.equals(dataId)) { + index = companies.indexOf(data) + (itemsByPage * currentPage); + break; + } + } + return index; + } + + public void addData(Company newData) { + size = getSize(); + fireEvent(ListDataEvent.INTERVAL_ADDED, size - 1, size - 1); } - public void setCompanies(List<CompanyData> companies) { - this.companies = companies; - fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); - } - - public void addData(CompanyData newData) { - companies.add(newData); - fireEvent(ListDataEvent.INTERVAL_ADDED, companies.size() - 1, companies.size() - 1); - } - - public void removeData(CompanyData data) { - int interval = companies.indexOf(data); - companies.remove(data); + public void removeData(Company data) { + int interval = companies.indexOf(data) + (itemsByPage * currentPage); + proxy.delete(data.getWikittyId()); fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); } public void reloadContent(int rowIndex) { + int indexList = rowIndex % itemsByPage; + Company Company = companies.get(indexList); + Company = proxy.restore(Company.class, Company.getWikittyId()); fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); } public void reload() { + createList(); + size = getSize(); fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } - - public List<CompanyData> getCompanies() { - return companies; + + public Criteria getCriteria() { + return criteria; } + + public void setCriteria(Criteria criteria) { + if (criteria != null) { + this.criteria = criteria; + reload(); + } + } + + public void pageChange(int index) { + int item = index; + int page = item / itemsByPage; + if (page != currentPage ) { + currentPage = page; + createList(); + } + } + + protected void createList() { + if (criteria != null) { + int first = currentPage * itemsByPage; + int end = first + (itemsByPage - 1); + Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); + List<Company> Companies = proxy.findAllByCriteria(Company.class, criteria).getAll(); + this.companies = new ArrayList<Company>(Companies); + } + } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -1,16 +1,19 @@ package org.chorem.bonzoms.ui; import java.util.HashMap; -import java.util.List; import java.util.Map; import org.chorem.data.bonzoms.EmploymentContract; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.Element; +import org.nuiton.wikitty.search.Search; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.SuspendNotAllowedException; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.GenericForwardComposer; -import org.zkoss.zul.Button; import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; @@ -22,44 +25,29 @@ */ public class ContractController extends GenericForwardComposer { - protected Model model = new Model(); - protected ContractsModel contractsModel = new ContractsModel(); + protected WikittyProxy proxy = BonzomsProxy.getInstance(); + protected ContractModel contractModel = new ContractModel(20); @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - List<EmploymentContract> contracts = model.retrieveAllContracts(); - if (contracts != null) { - contractsModel.setContracts(contracts); - } + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, EmploymentContract.EXT_EMPLOYMENTCONTRACT).criteria(); + contractModel.setCriteria(criteria); } - protected void createWindowContractForm(EmploymentContract contract) throws InterruptedException { - Map<String, Object> map = new HashMap<String, Object>(); - if (contract != null) { - map.put("contract", contract); - } - Window win = (Window) Executions.createComponents("contractFormPage.zul", null, map); - + protected void createWindowContractForm(String id) throws InterruptedException { + Map<String, Object> map = new HashMap<String, Object>(); + if (id != null) { + map.put("contractId", id); + } + Window win = (Window) Executions.createComponents("contractFormPage.zul", null, map); win.addEventListener(ContractFormController.EVENT_ON_SAVE_CONTRACT, new EventListener() { @Override public void onEvent(Event event) throws Exception { - EmploymentContract data = (EmploymentContract) event.getData(); - if (data != null) { - int rowIndex = contractsModel.indexOf(data); - if (rowIndex == -1) { - contractsModel.addData(data); - } else { - contractsModel.reloadContent(rowIndex); - } - } + contractModel.reload(); } }); - - win.setPage(page); - win.setPosition("center"); - win.doModal(); } /* @@ -79,14 +67,11 @@ Listcell advantages = new Listcell(contract.getAdvantages()); Listcell description = new Listcell(contract.getDescription()); - Listcell details = new Listcell(); - Button button = new Button("details"); - details.appendChild(button); - button.addEventListener("onClick", new EventListener() { + item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() { @Override public void onEvent(Event event) throws Exception { - createWindowContractForm(contract); + createWindowContractForm(contract.getWikittyId()); } }); @@ -95,7 +80,6 @@ item.appendChild(workingTime); item.appendChild(advantages); item.appendChild(description); - item.appendChild(details); } }; } @@ -114,8 +98,8 @@ /* * Getters */ - public ContractsModel getContractsModel() { - return contractsModel; + public ContractModel getContractModel() { + return contractModel; } /* Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractFormController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractFormController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractFormController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -3,10 +3,12 @@ import org.chorem.data.bonzoms.EmploymentContract; import org.chorem.data.bonzoms.EmploymentContractImpl; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zkplus.databind.DataBinder; +import org.zkoss.zul.Window; /** * @@ -16,15 +18,23 @@ protected Model model = new Model(); protected EmploymentContract contract = new EmploymentContractImpl(); - public final static String EVENT_ON_SAVE_CONTRACT = "onSaveContract"; + + public static final String EVENT_ON_SAVE_CONTRACT = "onSaveContract"; + public static final String EVENT_ON_CLOSE_CONTRACT = "onCloseContract"; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - EmploymentContract data = (EmploymentContract) arg.get("contract"); - if (data != null) { - this.contract = data; + Window win = (Window) self; + win.doModal(); + win.setPosition("center"); + String contractId = Executions.getCurrent().getParameter("contractId"); + if (contractId == null) { + contractId = (String) arg.get("contractId"); } + if (contractId != null) { + contract = model.retrieveContractById(contractId); + } DataBinder binder = new AnnotateDataBinder(comp); binder.bindBean("composer", this); binder.loadAll(); @@ -33,6 +43,10 @@ /* * Events */ + public void onClose() { + Events.postEvent(EVENT_ON_CLOSE_CONTRACT, this.self, null); + } + public void onClick$saveContract() { contract = model.createContract(contract); Added: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractModel.java (rev 0) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractModel.java 2010-08-04 16:27:57 UTC (rev 121) @@ -0,0 +1,147 @@ +/* + * #%L + * Bonzoms : bonzoms-zk + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2010 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package org.chorem.bonzoms.ui; + +import java.util.ArrayList; +import java.util.List; + +import org.chorem.data.bonzoms.EmploymentContract; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.WikittyProxy; +import org.zkoss.zkplus.databind.BindingListModel; +import org.zkoss.zul.AbstractListModel; +import org.zkoss.zul.event.ListDataEvent; + +/** + * + * @author sherkhan + */ +public class ContractModel extends AbstractListModel implements BindingListModel { + + protected WikittyProxy proxy = BonzomsProxy.getInstance(); + protected Criteria criteria = null; + protected int itemsByPage = 1; + protected int size = 0; + protected int currentPage = 0; + protected List<EmploymentContract> contracts = new ArrayList<EmploymentContract>(); + + public ContractModel(int itemsByPage) { + this.itemsByPage = itemsByPage; + size = getSize(); + createList(); + } + + @Override + public Object getElementAt(int index) { + pageChange(index); + int indexList = index % itemsByPage; + EmploymentContract contract = contracts.get(indexList); + return contract; + } + + @Override + public int getSize() { + if (criteria == null) { + return 0; + } + Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); + PagedResult<EmploymentContract> result = proxy.findAllByCriteria(EmploymentContract.class, criteria); + return result.getNumFound(); + } + + @Override + public int indexOf(Object obj) { + int index = 0; + String id = ((EmploymentContract) obj).getWikittyId(); + for (EmploymentContract data : contracts) { + String dataId = data.getWikittyId(); + if (id.equals(dataId)) { + index = contracts.indexOf(data) + (itemsByPage * currentPage); + break; + } + } + return index; + } + + public void addData(EmploymentContract newData, boolean store) { + if (store == true) { + proxy.store(newData); + } + size = getSize(); + fireEvent(ListDataEvent.INTERVAL_ADDED, size - 1, size - 1); + } + + public void removeData(EmploymentContract data, boolean delete) { + int interval = contracts.indexOf(data) + (itemsByPage * currentPage); + if (delete == true) { + proxy.delete(data.getWikittyId()); + } + createList(); + fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); + } + + public void reloadContent(int rowIndex) { + int indexList = rowIndex % itemsByPage; + EmploymentContract contract = contracts.get(indexList); + contract = proxy.restore(EmploymentContract.class, contract.getWikittyId()); + fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); + } + + public void reload() { + createList(); + size = getSize(); + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); + } + + public Criteria getCriteria() { + return criteria; + } + + public void setCriteria(Criteria criteria) { + if (criteria != null) { + this.criteria = criteria; + reload(); + } + } + + public void pageChange(int index) { + int item = index; + int page = item / itemsByPage; + if (page != currentPage ) { + currentPage = page; + createList(); + } + } + + protected void createList() { + if (criteria != null) { + int first = currentPage * itemsByPage; + int end = first + (itemsByPage - 1); + Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); + List<EmploymentContract> contracts = proxy.findAllByCriteria(EmploymentContract.class, criteria).getAll(); + this.contracts = new ArrayList<EmploymentContract>(contracts); + } + } +} Deleted: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsData.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsData.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsData.java 2010-08-04 16:27:57 UTC (rev 121) @@ -1,47 +0,0 @@ -package org.chorem.bonzoms.ui; - -import java.util.ArrayList; -import java.util.List; -import org.chorem.data.bonzoms.EmploymentContract; - -/** - * - * @author sherkhan - */ -public class ContractsData { - - protected ContractsModel contractsModel = new ContractsModel(); - protected List<String> removedContracts = new ArrayList<String>(); - - public ContractsData() {} - - public ContractsData(List<EmploymentContract> contracts) { - if (contracts != null) { - contractsModel.setContracts(contracts); - } - } - - /* - * Setters - */ - - public void setContractsList(List<EmploymentContract> contracts) { - contractsModel.setContracts(contracts); - } - - /* - * Getters - */ - - public ContractsModel getContractsModel() { - return contractsModel; - } - - public List<EmploymentContract> getContractsList() { - return contractsModel.getContracts(); - } - - public List<String> getRemovedContracts() { - return removedContracts; - } -} Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsFormController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsFormController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsFormController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -4,12 +4,17 @@ import java.util.List; import org.chorem.data.bonzoms.EmploymentContract; import org.chorem.data.bonzoms.EmploymentContractImpl; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.Search; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zkplus.databind.DataBinder; import org.zkoss.zul.Listbox; +import org.zkoss.zul.Window; /** * @@ -17,69 +22,84 @@ */ public class ContractsFormController extends GenericForwardComposer { - protected ContractsData contractsData = new ContractsData(); - protected List<EmploymentContract> save = new ArrayList<EmploymentContract>(); + protected WikittyProxy proxy = BonzomsProxy.getInstance(); + + protected ContractModel contractModel = new ContractModel(20); + protected List<String> removedContracts = new ArrayList<String>(); + protected String employeeId = null; + protected Listbox contractListbox; - public final static String EVENT_ON_SAVE_CONTRACTS = "onSaveContracts"; + public final static String EVENT_ON_SAVE_CONTRACTS = "onSaveContracts"; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - ContractsData data = (ContractsData) arg.get("contractsData"); - if (data != null) { - initContracts(data); - } else { - initDefaultContracts(); + Window win = (Window) self; + win.doModal(); + win.setPosition("center"); + String employeeId = Executions.getCurrent().getParameter("employeeId"); + if (employeeId == null) { + employeeId = (String) arg.get("employeeId"); } + this.employeeId = employeeId; DataBinder binder = new AnnotateDataBinder(comp); binder.bindBean("composer", this); binder.loadAll(); } + protected void init() { + if (employeeId != null) { + initContracts(); + } else { + initDefaultContracts(); + } + } + protected void initDefaultContracts() { EmploymentContract contract = new EmploymentContractImpl(); - contractsData.getContractsModel().addData(contract); + contract.setEmployee(employeeId); + contractModel.addData(contract, false); } - protected void initContracts(ContractsData data) { - contractsData = data; - save = new ArrayList<EmploymentContract>(contractsData.getContractsList()); + protected void initContracts() { + if (employeeId != null) { + Criteria criteria = Search.query().eq(EmploymentContract.FQ_FIELD_EMPLOYEE, employeeId).criteria(); + contractModel.setCriteria(criteria); + } } - + /* * Events */ public void onClick$addContract() { EmploymentContract contract = new EmploymentContractImpl(); - contractsData.getContractsModel().addData(contract); + contract.setEmployee(employeeId); + contractModel.addData(contract, false); } public void onClick$deleteContract() { - int size = contractListbox.getItemCount(); - if (size > 1) { - EmploymentContract contract = (EmploymentContract) contractsData.getContractsModel().getElementAt(size -1); - contractsData.getContractsModel().removeData(contract); - String id = contract.getWikittyId(); - if (!id.isEmpty()) { - contractsData.getRemovedContracts().add(id); - } - } +// int size = contractListbox.getItemCount(); +// if (size > 1) { +// EmploymentContract contract = (EmploymentContract) contractModel.getElementAt(size -1); +// contractModel.removeData(contract); +// String id = contract.getWikittyId(); +// if (!id.isEmpty()) { +// removedContracts.add(id); +// } +// } } public void onClick$saveContracts() { - Events.postEvent(EVENT_ON_SAVE_CONTRACTS, this.self, contractsData); + proxy.delete(removedContracts); + Events.postEvent(EVENT_ON_SAVE_CONTRACTS, this.self, null); self.detach(); } - public void onClose() { - contractsData.setContractsList(save); - } - /* * Getters */ - public ContractsModel getContractsModel() { - return contractsData.getContractsModel(); + public ContractModel getContractModel() { + return contractModel; } } Deleted: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsModel.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsModel.java 2010-08-04 16:27:57 UTC (rev 121) @@ -1,83 +0,0 @@ -/* - * #%L - * Bonzoms : bonzoms-zk - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2010 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package org.chorem.bonzoms.ui; - -import java.util.ArrayList; -import java.util.List; -import org.chorem.data.bonzoms.EmploymentContract; -import org.zkoss.zkplus.databind.BindingListModel; -import org.zkoss.zul.AbstractListModel; -import org.zkoss.zul.event.ListDataEvent; - -/** - * - * @author sherkhan - */ -public class ContractsModel extends AbstractListModel implements BindingListModel { - - List<EmploymentContract> contracts = new ArrayList<EmploymentContract>(); - - @Override - public Object getElementAt(int index) { - return contracts.get(index); - } - - @Override - public int getSize() { - return contracts.size(); - } - - @Override - public int indexOf(Object obj) { - return contracts.indexOf(obj); - } - - public void setContracts(List<EmploymentContract> contracts) { - this.contracts = contracts; - fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); - } - - public void addData(EmploymentContract newData) { - contracts.add(newData); - fireEvent(ListDataEvent.INTERVAL_ADDED, contracts.size() - 1, contracts.size() - 1); - } - - public void removeData(EmploymentContract data) { - int interval = contracts.indexOf(data); - contracts.remove(data); - fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); - } - - public void reloadContent(int rowIndex) { - fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); - } - - public void reload() { - fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); - } - - public List<EmploymentContract> getContracts() { - return contracts; - } -} Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -24,20 +24,21 @@ package org.chorem.bonzoms.ui; import java.util.HashMap; -import java.util.List; import java.util.Map; -import org.chorem.data.bonzoms.Address; + import org.chorem.data.bonzoms.Employee; import org.chorem.data.bonzoms.Person; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.Element; +import org.nuiton.wikitty.search.Search; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.SuspendNotAllowedException; -import org.zkoss.zk.ui.event.CreateEvent; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; -import org.zkoss.zk.ui.event.ForwardEvent; +import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.GenericForwardComposer; -import org.zkoss.zul.Button; import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; @@ -45,61 +46,33 @@ /** * - * @author sherkhan + * @author bbrossaud */ public class EmployeeController extends GenericForwardComposer { - protected Model model = new Model(); - protected EmployeeModel employeeModel = new EmployeeModel(); + protected WikittyProxy proxy = BonzomsProxy.getInstance(); + protected EmployeeModel employeeModel = new EmployeeModel(20); @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - List<Employee> employees = model.retrieveAllEmployees(); - createEmployeeDataList(employees); + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Employee.EXT_EMPLOYEE).criteria(); + employeeModel.setCriteria(criteria); } - public void createEmployeeDataList(List<Employee> employees) { - for (Employee employee : employees) { - Address address = model.retrieveAddressById(employee.getAddress()); - EmployeeData data = new EmployeeData(employee, address); - - Person person = model.retrievePersonById(employee.getPerson()); - if (person != null) { - PersonData personData = new PersonData(person, null); - data.setPersonData(personData); - } - employeeModel.addData(data); - } - } - - public void createWindowEmployeeForm(final EmployeeData employeeData) throws SuspendNotAllowedException, InterruptedException { - Map<String, Object> map = new HashMap<String, Object>(); - if (employeeData != null) { - map.put("employeeData", employeeData); - } - Window win = (Window) Executions.createComponents("employeeFormPage.zul", null, map); - + public void createWindowEmployeeForm(String id) throws SuspendNotAllowedException, InterruptedException { + Map<String, Object> map = new HashMap<String, Object>(); + if (id != null) { + map.put("employeeId", id); + } + Window win = (Window) Executions.createComponents("employeeFormPage.zul", null, map); win.addEventListener(EmployeeFormController.EVENT_ON_SAVE_EMPLOYEE, new EventListener() { @Override public void onEvent(Event event) throws Exception { - EmployeeData data = (EmployeeData) event.getData(); - if (data != null) { - int rowIndex = employeeModel.indexOf(data); - if (rowIndex == -1) { - employeeModel.addData(data); - } else { - employeeModel.reloadContent(rowIndex); - } - } + employeeModel.reload(); } }); - - win.setPage(page); - win.setPosition("center"); -// win.doOverlapped(); - win.doModal(); } /* @@ -111,27 +84,28 @@ @Override public void render(Listitem item, Object data) throws Exception { item.setValue(data); - final EmployeeData employeeData = (EmployeeData) data; + final Employee employee = (Employee) data; String firstName = ""; String lastName = ""; - if (employeeData.getPersonData() != null) { - firstName = employeeData.getPerson().getFirstName(); - lastName = employeeData.getPerson().getLastName(); + String personId = employee.getPerson(); + if (personId != null) { + Person person = proxy.restore(Person.class, employee.getPerson()); + if (person != null) { + firstName = person.getFirstName(); + lastName = person.getLastName(); + } } Listcell firstNameCell = new Listcell(firstName); Listcell lastNameCell = new Listcell(lastName); - Listcell emailCell = new Listcell(employeeData.getEmployee().getWorkingEmail()); - Listcell phoneCell = new Listcell(employeeData.getEmployee().getWorkingPhone()); + Listcell emailCell = new Listcell(employee.getWorkingEmail()); + Listcell phoneCell = new Listcell(employee.getWorkingPhone()); - Listcell detailsCell = new Listcell(); - Button details = new Button("details"); - detailsCell.appendChild(details); - details.addEventListener("onClick", new EventListener() { + item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() { @Override public void onEvent(Event event) throws Exception { - createWindowEmployeeForm(employeeData); + createWindowEmployeeForm(employee.getWikittyId()); } }); @@ -139,7 +113,6 @@ item.appendChild(lastNameCell); item.appendChild(emailCell); item.appendChild(phoneCell); - item.appendChild(detailsCell); } }; } Deleted: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeData.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeData.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeData.java 2010-08-04 16:27:57 UTC (rev 121) @@ -1,199 +0,0 @@ -/* - * #%L - * Bonzoms : bonzoms-zk - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2010 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package org.chorem.bonzoms.ui; - -import java.util.List; -import org.chorem.data.bonzoms.Address; -import org.chorem.data.bonzoms.AddressImpl; -import org.chorem.data.bonzoms.Employee; -import org.chorem.data.bonzoms.EmployeeImpl; -import org.chorem.data.bonzoms.EmploymentContract; -import org.chorem.data.bonzoms.Person; -import org.chorem.data.bonzoms.Service; - -/** - * - * @author sherkhan - */ -public class EmployeeData { - - protected Employee employee = new EmployeeImpl(); - protected Address workingAddress = new AddressImpl(); - - protected PersonData personData = null; - protected ServiceData serviceData = null; - - protected CompanyData companyData = null; - - protected ContractsData contractsData = null; - public EmployeeData() { - } - - public EmployeeData(Employee employee, Address address) { - this.employee = employee; - this.workingAddress = address; - } - - /* - * Setters - */ - public void setEmployee(Employee employee) { - this.employee = employee; - } - - public void setPersonData(PersonData personData) { - this.personData = personData; - } - - public void setWorkingAddress(Address address) { - this.workingAddress = address; - } - - public void setContractsList(List<EmploymentContract> contracts) { - contractsData.getContractsModel().setContracts(contracts); - } - - public void setPersonPhonesModelList(String phones) { - personData.setPhones(phones); - } - - public void setPersonEmailsModelList(String emails) { - personData.setEmails(emails); - } - - public void setPerson(Person person) { - personData.setPerson(person); - } - - public void setPersonAddresses(List<Address> addresses) { - personData.setAddresses(addresses); - } - - public void setService(Service service) { - serviceData.setService(service); - } - - public void setServiceAddress(Address address) { - serviceData.setAddress(address); - } - - public void setContractsData(ContractsData contractsData) { - this.contractsData = contractsData; - } - - public void setServiceData(ServiceData serviceData) { - this.serviceData = serviceData; - } - - public void setCompanyData(CompanyData companyData) { - this.companyData = companyData; - } - - /* - * Getters - */ - public Employee getEmployee() { - return employee; - } - - public PersonData getPersonData() { - return personData; - } - - public Address getWorkingAddress() { - return workingAddress; - } - - public ContractsModel getContractsModel() { - return contractsData.getContractsModel(); - } - - public List<EmploymentContract> getContractsList() { - return contractsData.getContractsList(); - } - - public List<String> getRemovedContracts() { - return contractsData.getRemovedContracts(); - } - - public Person getPerson() { - return personData.getPerson(); - } - - public AddressesModel getPersonAddressesModel() { - return personData.getAddressesModel(); - } - - public List<Address> getPersonAddresses() { - return personData.getAddresses(); - } - - public PhonesModel getPersonPhonesModel() { - return personData.getPhonesModel(); - } - - public List<Phone> getPersonPhones() { - return personData.getPhones(); - } - - public EmailsModel getPersonEmailsModel() { - return personData.getEmailsModel(); - } - - public List<Email> getPersonEmails() { - return personData.getEmails(); - } - - public List<String> getPersonRemovedAddresses() { - return personData.getRemovedAddresses(); - } - - public ServiceData getServiceData() { - return serviceData; - } - - public Service getService() { - return serviceData.getService(); - } - - public Address getServiceAddress() { - return serviceData.getAddress(); - } - - public ContractsData getContractsData() { - return contractsData; - } - - public String getPersonPhonesModelAsString() { - return personData.getPhonesAsString(); - } - - public String getPersonEmailsModelAsString() { - return personData.getEmailsAsString(); - } - - public CompanyData getCompanyData() { - return companyData; - } -} Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeFormController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeFormController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeFormController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -23,19 +23,20 @@ */ package org.chorem.bonzoms.ui; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; -import java.util.Set; + import org.chorem.data.bonzoms.Address; +import org.chorem.data.bonzoms.AddressImpl; import org.chorem.data.bonzoms.Company; -import org.chorem.data.bonzoms.CompanyImpl; import org.chorem.data.bonzoms.Employee; -import org.chorem.data.bonzoms.EmploymentContract; +import org.chorem.data.bonzoms.EmployeeImpl; import org.chorem.data.bonzoms.Person; import org.chorem.data.bonzoms.Service; -import org.chorem.data.bonzoms.ServiceImpl; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.Element; +import org.nuiton.wikitty.search.Search; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.SuspendNotAllowedException; @@ -45,7 +46,9 @@ import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zkplus.databind.DataBinder; +import org.zkoss.zul.Bandbox; import org.zkoss.zul.Listbox; +import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; import org.zkoss.zul.Window; @@ -56,313 +59,297 @@ */ public class EmployeeFormController extends GenericForwardComposer { - protected Model model = new Model(); + protected WikittyProxy proxy = BonzomsProxy.getInstance(); - protected EmployeeData employeeData = new EmployeeData(); + protected Employee employee = new EmployeeImpl(); + protected Address workingAddress = new AddressImpl(); + + protected CompanyModel companyModel = new CompanyModel(5); + protected ServiceModel serviceModel = new ServiceModel(5); + protected PersonModel personModel = new PersonModel(5); - protected CompanyModel companyModel = new CompanyModel(); - protected ServiceModel serviceModel = new ServiceModel(); - + protected Bandbox companyBandbox; + protected Bandbox serviceBandbox; + protected Bandbox personBandbox; + protected Listbox companyListbox; protected Listbox serviceListbox; + protected Listbox personListbox; - public final static String EVENT_ON_SAVE_EMPLOYEE = "onSaveEmployee"; + public static final String EVENT_ON_SAVE_EMPLOYEE = "onSaveEmployee"; + public static final String EVENT_ON_CLOSE_EMPLOYEE = "onCloseEmployee"; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - EmployeeData data = (EmployeeData) arg.get("employeeData"); - initCompanyModel(); - initServiceModel(); - if (data != null) { - initEmployee(data); + Window win = (Window) self; + win.doModal(); + win.setPosition("center"); + String employeeId = Executions.getCurrent().getParameter("employeeId"); + if (employeeId == null) { + employeeId = (String) arg.get("employeeId"); } + init(employeeId); DataBinder binder = new AnnotateDataBinder(comp); binder.bindBean("composer", this); binder.loadAll(); } - protected void initCompanyModel() { - Company newCompany = new CompanyImpl(); - newCompany.setName("New company"); - companyModel.addData(new CompanyData(newCompany, null)); - List<Company> companies = model.retrieveAllCompanies(); - for (Company company : companies) { - CompanyData data = new CompanyData(company, null); - companyModel.addData(data); + protected void init(String employeeId) { + if (employeeId != null && !employeeId.isEmpty()) { + initEmployee(employeeId); } + if (employeeId == null || employeeId.isEmpty()) { + Component comp = self.getFellowIfAny("editContracts", false); + comp.setVisible(false); + } + initServiceModel(); + initCompanyModel(); + initPersonModel(); } + + protected void initEmployee(String employeeId) { + employee = proxy.restore(Employee.class, employeeId); + workingAddress = proxy.restore(Address.class, employee.getAddress()); + } protected void initServiceModel() { - Service newService = new ServiceImpl(); - newService.setType("New service"); - serviceModel.addData(new ServiceData(newService, null)); - List<Service> services = model.retrieveAllServices(); - for (Service service : services) { - ServiceData data = new ServiceData(service, null); - serviceModel.addData(data); - } + onOK$serviceBandbox(); + String serviceId = employee.getService(); + if (serviceId != null && !serviceId.isEmpty()) { + Service service = proxy.restore(Service.class, serviceId); + serviceBandbox.setValue(service.getType()); + } } - - protected void initPerson() { - Person person = model.retrievePersonById(employeeData.getEmployee().getPerson()); - if (person != null) { - PersonData personData = new PersonData(person, null); - employeeData.setPersonData(personData); - } + + protected void initCompanyModel() { + onOK$companyBandbox(); + String companyId = employee.getCompany(); + if (companyId != null && !companyId.isEmpty()) { + Company company = proxy.restore(Company.class, companyId); + companyBandbox.setValue(company.getName()); + } } - - protected void initService() { - Service service = model.retrieveServiceById(employeeData.getEmployee().getService()); - if (service != null) { - ServiceData serviceData = new ServiceData(service, null); - employeeData.setServiceData(serviceData); - } + + protected void initPersonModel() { + onOK$personBandbox(); + String personId = employee.getPerson(); + if (personId != null && !personId.isEmpty()) { + Person person = proxy.restore(Person.class, personId); + String name = person.getFirstName() + " " + person.getLastName(); + personBandbox.setValue(name); + } } - - protected void initContracts() { - Set<String> contractIds = employeeData.getEmployee().getEmploymentContract(); - if (contractIds != null && !contractIds.isEmpty()) { - List<String> ids = new ArrayList<String>(contractIds); - List<EmploymentContract> contracts = model.retrieveContractsByIds(ids); - ContractsData contractsData = new ContractsData(contracts); - employeeData.setContractsData(contractsData); - } - } - - protected void initEmployee(EmployeeData employee) { - employeeData = employee; - Address workingAddress = model.retrieveAddressById(employee.getEmployee().getAddress()); - employeeData.setWorkingAddress(workingAddress); - - initPerson(); - - initService(); - - initContracts(); - - } - - protected void removePersonAddresses() { - List<String> ids = employeeData.getPersonRemovedAddresses(); - for (String id : ids) { - employeeData.getPerson().removeAddress(id); - } - } - - protected void removeEmployeeContracts() { - List<String> ids = employeeData.getRemovedContracts(); - for (String id : ids) { - employeeData.getEmployee().removeEmploymentContract(id); - } - } - - protected void saveEmployeeContracts() { - if (employeeData.getContractsData() != null) { - List<EmploymentContract> contracts = model.createContracts(employeeData.getContractsList()); - if (!employeeData.getRemovedContracts().isEmpty()) { - model.deleteContractsByIds(employeeData.getRemovedContracts()); - removeEmployeeContracts(); - } - for (EmploymentContract contract : contracts) { - employeeData.getEmployee().addEmploymentContract(contract.getWikittyId()); - } - } - } - + /* * Renderers */ - - public ListitemRenderer getCompanyDataRenderer() { + public ListitemRenderer getCompanyRenderer() { return new ListitemRenderer() { @Override public void render(Listitem item, Object data) throws Exception { item.setValue(data); - CompanyData companyData = (CompanyData) data; - String id = employeeData.getEmployee().getCompany(); - String companyId = companyData.getCompany().getWikittyId(); - item.setLabel(companyData.getCompany().getName()); - if (id != null && id.equals(companyId)) { - companyListbox.setSelectedItem(item); - employeeData.setCompanyData(companyData); - } + final Company company = (Company) data; + Listcell name = new Listcell(company.getName()); + Listcell type = new Listcell(company.getType()); + item.appendChild(name); + item.appendChild(type); + item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + employee.setCompany(company.getWikittyId()); + companyBandbox.setValue(company.getName()); + companyBandbox.close(); + } + }); } }; } - public ListitemRenderer getServiceDataRenderer() { + public ListitemRenderer getServiceRenderer() { return new ListitemRenderer() { @Override public void render(Listitem item, Object data) throws Exception { item.setValue(data); - ServiceData serviceData = (ServiceData) data; - String id = employeeData.getEmployee().getService(); - String serviceId = serviceData.getService().getWikittyId(); - item.setLabel(serviceData.getService().getType()); - if (id != null && id.equals(serviceId)) { - serviceListbox.setSelectedItem(item); - employeeData.setServiceData(serviceData); - } + final Service service = (Service) data; + Listcell name = new Listcell(service.getType()); + item.appendChild(name); + item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + employee.setService(service.getWikittyId()); + serviceBandbox.setValue(service.getType()); + serviceBandbox.close(); + } + }); } }; } + public ListitemRenderer getPersonRenderer() { + return new ListitemRenderer() { + + @Override + public void render(Listitem item, Object data) throws Exception { + item.setValue(data); + final Person person = (Person) data; + Listcell firstName = new Listcell(person.getFirstName()); + Listcell lastName = new Listcell(person.getLastName()); + item.appendChild(firstName); + item.appendChild(lastName); + item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + employee.setPerson(person.getWikittyId()); + String name = person.getFirstName() + " " + person.getLastName(); + personBandbox.setValue(name); + personBandbox.close(); + } + }); + } + }; + } + /* * Events */ + public void onOK$companyBandbox() { + String search = companyBandbox.getValue(); + Search query = Search.query().eq(Element.ELT_EXTENSION, Company.EXT_COMPANY); + if (search != null && !search.isEmpty()) { + query = query.keyword(search); + } + Criteria criteria = query.criteria(); + companyModel.setCriteria(criteria); + companyBandbox.open(); + } + + public void onOK$serviceBandbox() { + String search = serviceBandbox.getValue(); + Search query = Search.query().eq(Element.ELT_EXTENSION, Service.EXT_SERVICE); + if (search != null && !search.isEmpty()) { + query = query.keyword(search); + } + Criteria criteria = query.criteria(); + serviceModel.setCriteria(criteria); + serviceBandbox.open(); + } + + public void onOK$personBandbox() { + String search = personBandbox.getValue(); + Search query = Search.query().eq(Element.ELT_EXTENSION, Person.EXT_PERSON); + if (search != null && !search.isEmpty()) { + query = query.keyword(search); + } + Criteria criteria = query.criteria(); + personModel.setCriteria(criteria); + personBandbox.open(); + } + + public void onClose() { + Events.postEvent(EVENT_ON_CLOSE_EMPLOYEE, this.self, null); + } + public void onClick$saveEmployee() { - Address workingAddress = model.updateAddress(employeeData.getWorkingAddress()); - employeeData.getEmployee().setAddress(workingAddress.getWikittyId()); + workingAddress = proxy.store(workingAddress); + employee.setAddress(workingAddress.getWikittyId()); - saveEmployeeContracts(); + employee = proxy.store(employee); - Employee employee = model.createEmployee(employeeData.getEmployee()); - employeeData.setEmployee(employee); - - Events.postEvent(EVENT_ON_SAVE_EMPLOYEE, this.self, employeeData); + Events.postEvent(EVENT_ON_SAVE_EMPLOYEE, this.self, null); this.self.detach(); } - public void onSelect$companyListbox() { - int index = companyListbox.getSelectedIndex(); - if (index != -1) { - if (index == 0) { - employeeData.setCompanyData(null); - } else { - CompanyData data = (CompanyData) companyModel.getElementAt(index); - employeeData.setCompanyData(data); - employeeData.getEmployee().setCompany(data.getCompany().getWikittyId()); - } - } - } - - - public void onSelect$serviceListbox() { - int index = serviceListbox.getSelectedIndex(); - if (index != -1) { - if (index == 0) { - employeeData.setServiceData(null); - } else { - ServiceData data = (ServiceData) serviceModel.getElementAt(index); - employeeData.setServiceData(data); - employeeData.getEmployee().setService(data.getService().getWikittyId()); - } - } - } - public void onClick$editPerson() throws SuspendNotAllowedException, InterruptedException { - Map<String, Object> map = new HashMap<String, Object>(); - if (employeeData.getPersonData() != null) { - map.put("personData", employeeData.getPersonData()); - } - Window win = (Window) Executions.createComponents("personFormPage.zul", null, map); - + Map<String, Object> map = new HashMap<String, Object>(); + String id = employee.getPerson(); + if (id != null && !id.isEmpty()) { + map.put("personId", id); + } + Window win = (Window) Executions.createComponents("personFormPage.zul", null, map); win.addEventListener(PersonFormController.EVENT_ON_SAVE_PERSON, new EventListener() { @Override public void onEvent(Event event) throws Exception { - PersonData data = (PersonData) event.getData(); - if (data != null) { - employeeData.setPersonData(data); - employeeData.getEmployee().setPerson(data.getPerson().getWikittyId()); + Person person = (Person) event.getData(); + if (person != null) { + employee.setPerson(person.getWikittyId()); + String name = person.getFirstName() + " " + person.getLastName(); + personBandbox.setValue(name); } + personModel.reload(); } }); - - win.setPage(page); - win.setPosition("center"); - win.doModal(); } public void onClick$editCompany() throws InterruptedException { - Map<String, Object> map = new HashMap<String, Object>(); - if (employeeData.getCompanyData() != null){ - map.put("companyData", employeeData.getCompanyData()); - } - Window win = (Window) Executions.createComponents("companyFormPage.zul", null, map); - + if (companyBandbox.getValue().isEmpty()) { + employee.setCompany(null); + } + Map<String, Object> map = new HashMap<String, Object>(); + String id = employee.getCompany(); + if (id != null && !id.isEmpty()) { + map.put("companyId", id); + } + Window win = (Window) Executions.createComponents("companyFormPage.zul", null, map); win.addEventListener(CompanyFormController.EVENT_ON_SAVE_COMPANY, new EventListener() { @Override public void onEvent(Event event) throws Exception { - CompanyData data = (CompanyData) event.getData(); - if (data != null) { - if (employeeData.getCompanyData() == null) { - companyModel.addData(data); - int index = companyModel.indexOf(data); - companyListbox.setSelectedIndex(index); - } - employeeData.setCompanyData(data); - employeeData.getEmployee().setCompany(data.getCompany().getWikittyId()); - } + Company company = (Company) event.getData(); + if (company != null) { + employee.setCompany(company.getWikittyId()); + companyBandbox.setValue(company.getName()); + } + companyModel.reload(); } }); - - win.setPage(page); - win.setPosition("center"); - win.doModal(); } - public void onClick$editContracts() throws SuspendNotAllowedException, InterruptedException { - Map<String, Object> map = new HashMap<String, Object>(); - if (employeeData.getContractsData() != null) { - map.put("contractsData", employeeData.getContractsData()); - } - Window win = (Window) Executions.createComponents("contractsFormPage.zul", null, map); - - win.addEventListener(ContractsFormController.EVENT_ON_SAVE_CONTRACTS, new EventListener() { - - @Override - public void onEvent(Event event) throws Exception { - ContractsData data = (ContractsData) event.getData(); - if (data != null) { - employeeData.setContractsData(data); - } - } - }); - - win.setPage(page); - win.setPosition("center"); - win.doModal(); - } - public void onClick$editService() throws SuspendNotAllowedException, InterruptedException { - Map<String, Object> map = new HashMap<String, Object>(); - if (employeeData.getServiceData() != null){ - map.put("serviceData", employeeData.getServiceData()); - } - Window win = (Window) Executions.createComponents("serviceFormPage.zul", null, map); - + if (serviceBandbox.getValue().isEmpty()) { + employee.setService(null); + } + Map<String, Object> map = new HashMap<String, Object>(); + String id = employee.getService(); + if (id != null && !id.isEmpty()) { + map.put("serviceId", id); + } + Window win = (Window) Executions.createComponents("serviceFormPage.zul", null, map); win.addEventListener(ServiceFormController.EVENT_ON_SAVE_SERVICE, new EventListener() { @Override public void onEvent(Event event) throws Exception { - ServiceData data = (ServiceData) event.getData(); - if (data != null) { - if (employeeData.getServiceData() == null) { - serviceModel.addData(data); - int index = serviceModel.indexOf(data); - serviceListbox.setSelectedIndex(index); - } - employeeData.setServiceData(data); - employeeData.getEmployee().setService(data.getService().getWikittyId()); + Service service = (Service) event.getData(); + if (service != null) { + employee.setService(service.getWikittyId()); + serviceBandbox.setValue(service.getType()); } + serviceModel.reload(); } }); - win.setPage(page); - win.setPosition("center"); - win.doModal(); } + public void onClick$editContracts() throws SuspendNotAllowedException, InterruptedException { + Map<String, Object> map = new HashMap<String, Object>(); + String id = employee.getWikittyId(); + if (id != null && !id.isEmpty()) { + map.put("employeeId", id); + } + Executions.createComponents("contractsFormPage.zul", null, map); + } + /* * Getters */ - public EmployeeData getEmployeeData() { - return employeeData; + public Employee getEmployee() { + return employee; } public CompanyModel getCompanyModel() { @@ -372,4 +359,8 @@ public ServiceModel getServiceModel() { return serviceModel; } + + public Address getWorkingAddress() { + return workingAddress; + } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeModel.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeModel.java 2010-08-04 16:27:57 UTC (rev 121) @@ -25,6 +25,11 @@ import java.util.ArrayList; import java.util.List; + +import org.chorem.data.bonzoms.Employee; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.WikittyProxy; import org.zkoss.zkplus.databind.BindingListModel; import org.zkoss.zul.AbstractListModel; import org.zkoss.zul.event.ListDataEvent; @@ -34,44 +39,104 @@ * @author sherkhan */ public class EmployeeModel extends AbstractListModel implements BindingListModel { - protected List<EmployeeData> employees = new ArrayList<EmployeeData>(); - + + protected WikittyProxy proxy = BonzomsProxy.getInstance(); + protected Criteria criteria = null; + protected int itemsByPage = 1; + protected int size = 0; + protected int currentPage = 0; + protected List<Employee> employees = new ArrayList<Employee>(); + + public EmployeeModel(int itemsByPage) { + this.itemsByPage = itemsByPage; + size = getSize(); + createList(); + } + @Override public Object getElementAt(int index) { - return employees.get(index); + pageChange(index); + int indexList = index % itemsByPage; + Employee employee = employees.get(indexList); + return employee; } @Override public int getSize() { - return employees.size(); + if (criteria == null) { + return 0; + } + Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); + PagedResult<Employee> result = proxy.findAllByCriteria(Employee.class, criteria); + return result.getNumFound(); } - - @Override - public int indexOf(Object obj) { - return employees.indexOf(obj); + + @Override + public int indexOf(Object obj) { + int index = 0; + Employee employee = (Employee) obj; + String id = employee.getWikittyId(); + for (Employee data : employees) { + String dataId = data.getWikittyId(); + if (id.equals(dataId)) { + index = employees.indexOf(data) + (itemsByPage * currentPage); + break; + } + } + return index; + } + + public void addData(Employee newData) { + size = getSize(); + fireEvent(ListDataEvent.INTERVAL_ADDED, size - 1, size - 1); } - public void setEmployees(List<EmployeeData> employees) { - this.employees = employees; - fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); - } - - public void addData(EmployeeData newData) { - employees.add(newData); - fireEvent(ListDataEvent.INTERVAL_ADDED, employees.size() - 1, employees.size() - 1); - } - - public void removeData(EmployeeData data) { - int interval = employees.indexOf(data); - employees.remove(data); + public void removeData(Employee data) { + int interval = employees.indexOf(data) + (itemsByPage * currentPage); + proxy.delete(data.getWikittyId()); fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); } public void reloadContent(int rowIndex) { + int indexList = rowIndex % itemsByPage; + Employee employee = employees.get(indexList); + employee = proxy.restore(Employee.class, employee.getWikittyId()); fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); } public void reload() { + createList(); + size = getSize(); fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } + + public Criteria getCriteria() { + return criteria; + } + + public void setCriteria(Criteria criteria) { + if (criteria != null) { + this.criteria = criteria; + reload(); + } + } + + public void pageChange(int index) { + int item = index; + int page = item / itemsByPage; + if (page != currentPage ) { + currentPage = page; + createList(); + } + } + + protected void createList() { + if (criteria != null) { + int first = currentPage * itemsByPage; + int end = first + (itemsByPage - 1); + Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); + List<Employee> employees = proxy.findAllByCriteria(Employee.class, criteria).getAll(); + this.employees = new ArrayList<Employee>(employees); + } + } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/MainController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/MainController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/MainController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -23,13 +23,9 @@ */ package org.chorem.bonzoms.ui; -import java.util.HashMap; -import java.util.Map; -import org.zkoss.zk.ui.Component; -import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Textbox; -import org.zkoss.zul.Vbox; +import org.zkoss.zul.Include; /** * @@ -37,82 +33,14 @@ */ public class MainController extends GenericForwardComposer { - protected Vbox content; protected Textbox searchBox; - - public final static String COMPANY_WINDOW_ID = "company"; - public final static String EMPLOYEE_WINDOW_ID ="employee"; - public final static String PERSON_WINDOW_ID = "person"; - public final static String SERVICE_WINDOW_ID = "service"; - - @Override - public void doAfterCompose(Component comp) throws Exception { - super.doAfterCompose(comp); -// createEmployeesPage(); - } - - protected void createEmployeesPage() { - removeAllContentPage(); - Component newContent = Executions.createComponents("employeePage.zul", null, null); - content.appendChild(newContent); - } - - protected void createPersonsPage() { - removeAllContentPage(); - Component newContent = Executions.createComponents("personPage.zul", null, null); - content.appendChild(newContent); - } - - protected void createCompaniesPage() { - removeAllContentPage(); - Component newContent = Executions.createComponents("companyPage.zul", null, null); - content.appendChild(newContent); - } - - protected void createServicesPage() { - removeAllContentPage(); - Component newContent = Executions.createComponents("servicePage.zul", null, null); - content.appendChild(newContent); - } - - protected void createContractsPage() { - removeAllContentPage(); - Component newContent = Executions.createComponents("contractPage.zul", null, null); - content.appendChild(newContent); - } - - protected void removeAllContentPage() { - content.getLastChild().detach(); - } - - protected Map<String, Object> initMap() { - String search = searchBox.getValue(); - Map<String, Object> map = new HashMap<String, Object>(); - if (search != null && !search.isEmpty()) { - map.put("search", searchBox.getValue()); - } - return map; - } - + protected Include include; /* * Events */ public void onOK$searchBox() { -// Component win = content.getLastChild(); -// String id = win.getId(); -// Map<String, Object> map = initMap(); -// if (id.equals(EMPLOYEE_WINDOW_ID)) { -// createEmployeesPage(map); -// } else if (id.equals(COMPANY_WINDOW_ID)) { -// createCompaniesPage(map); -// } else if (id.equals(PERSON_WINDOW_ID)) { -// createPersonsPage(map); -// } else if (id.equals(SERVICE_WINDOW_ID)) { -// createServicesPage(map); -// } - removeAllContentPage(); - Component newContent = Executions.createComponents("resultPage.zul", null, initMap()); - content.appendChild(newContent); + String search = searchBox.getValue(); + include.setSrc("resultPage.zul?search=" + search); } public void onClick$searchButton() { @@ -120,22 +48,22 @@ } public void onClick$employees() { - createEmployeesPage(); + include.setSrc("employeePage.zul"); } public void onClick$persons() { - createPersonsPage(); + include.setSrc("personPage.zul"); } public void onClick$companies() { - createCompaniesPage(); + include.setSrc("companyPage.zul"); } public void onClick$services() { - createServicesPage(); + include.setSrc("servicePage.zul"); } public void onClick$contracts() { - createContractsPage(); + include.setSrc("contractPage.zul"); } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/Model.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/Model.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/Model.java 2010-08-04 16:27:57 UTC (rev 121) @@ -115,6 +115,13 @@ return services; } + public List<EmploymentContract> retrieveContractsByEmployeeId(String id) { + Criteria criteria = Search.query().eq(EmploymentContract.FQ_FIELD_EMPLOYEE, id).criteria(); + List<EmploymentContract> contracts = proxy.findAllByCriteria(EmploymentContract.class, criteria).getAll(); + contracts = new ArrayList<EmploymentContract>(contracts); + return contracts; + } + public Person retrievePersonById(String id) { if (id == null) { return null; @@ -202,10 +209,12 @@ } Criteria criteria = search.criteria(); + WikittyService service = proxy.getWikittyService(); - PagedResult result = service.findAllByCriteria(null, criteria); + String securityToken = proxy.getSecurityToken(); + PagedResult<?> result = service.findAllByCriteria(securityToken, criteria); if (result != null) { - wikitties = result.cast(null, proxy.getWikittyService()).getAll(); + wikitties = result.cast(securityToken, service).getAll(); wikitties = new ArrayList<Wikitty>(wikitties); } return wikitties; Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -25,20 +25,21 @@ package org.chorem.bonzoms.ui; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.Map; -import org.chorem.data.bonzoms.Address; + import org.chorem.data.bonzoms.Person; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.search.Element; +import org.nuiton.wikitty.search.Search; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.SuspendNotAllowedException; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.GenericForwardComposer; -import org.zkoss.zul.Button; import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; @@ -52,51 +53,28 @@ protected Model model = new Model(); - protected PersonModel personModel = new PersonModel(); + protected PersonModel personModel = new PersonModel(20); @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - List<Person> persons = model.retrieveAllPersons(); - createPersonsData(persons); + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Person.EXT_PERSON).criteria(); + personModel.setCriteria(criteria); } - - public void createPersonsData(List<Person> persons) { - for (Person person : persons) { - List<Address> addresses = model.retrieveAddressesByIds(new ArrayList<String>(person.getAddress())); - PersonData data = new PersonData(person, addresses); - personModel.addData(data); - } - } - - public void createWindowPersonForm(PersonData personData) throws SuspendNotAllowedException, InterruptedException { - Map<String, Object> map = new HashMap<String, Object>(); - if (personData != null) { - map.put("personData", personData); - } - Window win = (Window) Executions.createComponents("personFormPage.zul", null, map); - + + public void createWindowPersonForm(String id) throws SuspendNotAllowedException, InterruptedException { + Map<String, Object> map = new HashMap<String, Object>(); + if (id != null) { + map.put("personId", id); + } + Window win = (Window) Executions.createComponents("personFormPage.zul", null, map); win.addEventListener(PersonFormController.EVENT_ON_SAVE_PERSON, new EventListener() { @Override public void onEvent(Event event) throws Exception { - PersonData data = (PersonData) event.getData(); - if (data != null) { - int rowIndex = personModel.indexOf(data); - if (rowIndex == -1) { - personModel.addData(data); - } else { - personModel.reloadContent(rowIndex); - } - } + personModel.reload(); } }); - - win.setPage(page); -// win.doHighlighted(); - win.setPosition("center"); -// win.doOverlapped(); - win.doModal(); } /* @@ -115,32 +93,28 @@ @Override public void render(Listitem item, Object data) throws Exception { item.setValue(data); - final PersonData personData = (PersonData) data; + final Person person = (Person) data; SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - Listcell firstNameCell = new Listcell(personData.getPerson().getFirstName()); - Listcell lastNameCell = new Listcell(personData.getPerson().getLastName()); + Listcell firstNameCell = new Listcell(person.getFirstName()); + Listcell lastNameCell = new Listcell(person.getLastName()); String birthday = ""; - Date date = personData.getPerson().getBirthDay(); + Date date = person.getBirthDay(); if (date != null) { birthday = sdf.format(date); } Listcell dateCell = new Listcell(birthday); - Listcell detailsCell = new Listcell(); - Button details = new Button("details"); - detailsCell.appendChild(details); - details.addEventListener("onClick", new EventListener() { + item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() { @Override public void onEvent(Event event) throws Exception { - createWindowPersonForm(personData); + createWindowPersonForm(person.getWikittyId()); } }); item.appendChild(firstNameCell); item.appendChild(lastNameCell); item.appendChild(dateCell); - item.appendChild(detailsCell); } }; } Deleted: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonData.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonData.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonData.java 2010-08-04 16:27:57 UTC (rev 121) @@ -1,143 +0,0 @@ -/* - * #%L - * Bonzoms : bonzoms-zk - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2010 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package org.chorem.bonzoms.ui; - -import java.util.ArrayList; -import java.util.List; -import org.chorem.data.bonzoms.Address; -import org.chorem.data.bonzoms.Person; -import org.chorem.data.bonzoms.PersonImpl; - -/** - * - * @author sherkhan - */ -public class PersonData { - - protected Person person = new PersonImpl(); - protected PhonesModel phonesModel = new PhonesModel(); - protected EmailsModel emailsModel = new EmailsModel(); - protected AddressesModel addressesModel = new AddressesModel(); - protected List<String> removedAddresses = new ArrayList<String>(); - - public PersonData() { - } - - public PersonData(Person person, List<Address> addresses) { - setPerson(person); - setAddresses(addresses); - } - - /* - * Getters - */ - public Person getPerson() { - return person; - } - - public List<Address> getAddresses() { - return addressesModel.getAddresses(); - } - - public List<Phone> getPhones() { - return phonesModel.getPhones(); - } - - public List<Email> getEmails() { - return emailsModel.getEmails(); - } - - public EmailsModel getEmailsModel() { - return emailsModel; - } - - public PhonesModel getPhonesModel() { - return phonesModel; - } - - public List<String> getRemovedAddresses() { - return removedAddresses; - } - - public AddressesModel getAddressesModel() { - return addressesModel; - } - - public String getEmailsAsString() { - return emailsModel.getEmailsAsString(); - } - - public String getPhonesAsString() { - return phonesModel.getPhonesAsString(); - } - - /* - * Setters - */ - public void setPerson(Person obj) { - if (obj != null) { - person = obj; - } - } - - public void setAddresses(List<Address> list) { - if (list != null) { - addressesModel.setAddresses(list); - } - } - - public void setEmails(String str) { - if (str != null) { - emailsModel.setEmails(str); - } - } - - public void setEmails(List<Email> emails) { - if (emails != null) { - emailsModel.setEmails(emails); - } - } - - public void setPhones(List<Phone> phones) { - if (phones != null) { - phonesModel.setPhones(phones); - } - } - - public void setPhones(String str) { - if (str != null) { - phonesModel.setPhones(str); - } - } - - public void setRemovedAddresses(List<String> list) { - if (list != null) { - removedAddresses = list; - } - } - - public void setAddressesModel(AddressesModel addr) { - addressesModel = addr; - } -} Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonFormController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonFormController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonFormController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -5,12 +5,15 @@ import org.chorem.data.bonzoms.Address; import org.chorem.data.bonzoms.AddressImpl; import org.chorem.data.bonzoms.Person; +import org.chorem.data.bonzoms.PersonImpl; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zkplus.databind.DataBinder; import org.zkoss.zul.Listbox; +import org.zkoss.zul.Window; /** * @@ -20,139 +23,164 @@ protected Model model = new Model(); - protected PersonData personData = new PersonData(); + protected Person person = new PersonImpl(); + protected AddressesModel addressesModel = new AddressesModel(); + protected EmailsModel emailsModel = new EmailsModel(); + protected PhonesModel phonesModel = new PhonesModel(); + List<String> removedAddresses = new ArrayList<String>(); protected Listbox addressListbox; protected Listbox phoneListbox; protected Listbox emailListbox; - public final static String EVENT_ON_SAVE_PERSON = "onSavePerson"; + public static final String EVENT_ON_SAVE_PERSON = "onSavePerson"; + public static final String EVENT_ON_CLOSE_PERSON = "onClosePerson"; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - PersonData person = (PersonData) arg.get("personData"); - init(person); + Window win = (Window) self; + win.doModal(); + win.setPosition("center"); + String personId = Executions.getCurrent().getParameter("personId"); + if (personId == null) { + personId = (String) arg.get("personId"); + } + init(personId); DataBinder binder = new AnnotateDataBinder(comp); binder.bindBean("composer", this); binder.loadAll(); } - protected void init(PersonData personData) { - if (personData == null) { + protected void init(String personId) { + if (personId == null) { initDefaultPerson(); } else { - initPerson(personData); + initPerson(personId); } } protected void initDefaultPerson() { Address address = new AddressImpl(); - personData.getAddressesModel().addData(address); + addressesModel.addData(address); Phone phone = new Phone(); - personData.getPhonesModel().addData(phone); + phonesModel.addData(phone); Email email = new Email(); - personData.getEmailsModel().addData(email); + emailsModel.addData(email); } - protected void initPerson(PersonData personData) { - this.personData = personData; - List<Address> addresses = model.retrieveAddressesByIds(new ArrayList<String>(personData.getPerson().getAddress())); - this.personData.setAddresses(addresses); - this.personData.setEmails(personData.getPerson().getEmails()); - this.personData.setPhones(personData.getPerson().getPhones()); + protected void initPerson(String personId) { + person = model.retrievePersonById(personId); + List<Address> addresses = model.retrieveAddressesByIds(new ArrayList<String>(person.getAddress())); + addressesModel.setAddresses(addresses); + emailsModel.setEmails(person.getEmails()); + phonesModel.setPhones(person.getPhones()); } protected void removeAddresses() { - List<String> ids = personData.getRemovedAddresses(); - for (String id : ids) { - personData.getPerson().removeAddress(id); + for (String id : removedAddresses) { + person.removeAddress(id); } } protected void saveAddresses() { - List<Address> addresses = model.createAddresses(personData.getAddresses()); - if (!personData.getRemovedAddresses().isEmpty()) { - model.deleteAddressesByIds(personData.getRemovedAddresses()); + List<Address> addresses = model.createAddresses(addressesModel.getAddresses()); + if (!removedAddresses.isEmpty()) { + model.deleteAddressesByIds(removedAddresses); removeAddresses(); } for (Address address : addresses) { - personData.getPerson().addAddress(address.getWikittyId()); + person.addAddress(address.getWikittyId()); } } protected void saveEmails() { - String emails = personData.getEmailsAsString(); - personData.getPerson().setEmails(emails); + String emails = emailsModel.getEmailsAsString(); + person.setEmails(emails); } protected void savePhones() { - String phones = personData.getPhonesAsString(); - personData.getPerson().setPhones(phones); + String phones = phonesModel.getPhonesAsString(); + person.setPhones(phones); } /* * Events */ + public void onClose() { + Events.postEvent(EVENT_ON_CLOSE_PERSON, this.self, null); + } + public void onClick$savePerson() { saveAddresses(); savePhones(); saveEmails(); - Person person = model.createPerson(personData.getPerson()); - personData.setPerson(person); - Events.postEvent(EVENT_ON_SAVE_PERSON, this.self, personData); + person = model.createPerson(person); + Events.postEvent(EVENT_ON_SAVE_PERSON, this.self, person); self.detach(); } public void onClick$addAddress() { Address address = new AddressImpl(); - personData.getAddressesModel().addData(address); + addressesModel.addData(address); } public void onClick$deleteAddress() { int size = addressListbox.getItemCount(); if (size > 1) { - Address address = (Address) personData.getAddressesModel().getElementAt(size -1); - personData.getAddressesModel().removeData(address); + Address address = (Address) addressesModel.getElementAt(size -1); + addressesModel.removeData(address); String id = address.getWikittyId(); if (!id.isEmpty()) { - personData.getRemovedAddresses().add(id); + removedAddresses.add(id); } } } public void onClick$addPhone() { Phone phone = new Phone(); - personData.getPhonesModel().addData(phone); + phonesModel.addData(phone); } public void onClick$deletePhone() { int size = phoneListbox.getItemCount(); if (size > 1) { - Phone phone = (Phone) personData.getPhonesModel().getElementAt(size -1); - personData.getPhonesModel().removeData(phone); + Phone phone = (Phone) phonesModel.getElementAt(size -1); + phonesModel.removeData(phone); } } public void onClick$addEmail() { Email email = new Email(); - personData.getEmailsModel().addData(email); + emailsModel.addData(email); } public void onClick$deleteEmail() { int size = emailListbox.getItemCount(); if (size > 1) { - Email email = (Email) personData.getEmailsModel().getElementAt(size -1); - personData.getEmailsModel().removeData(email); + Email email = (Email) emailsModel.getElementAt(size -1); + emailsModel.removeData(email); } } /* * Getters */ - public PersonData getPersonData() { - return personData; + public Person getPerson() { + return person; } + + public AddressesModel getAddressesModel() { + return addressesModel; + } + + public PhonesModel getPhonesModel() { + return phonesModel; + } + + public EmailsModel getEmailsModel() { + return emailsModel; + } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonModel.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonModel.java 2010-08-04 16:27:57 UTC (rev 121) @@ -2,6 +2,11 @@ import java.util.ArrayList; import java.util.List; + +import org.chorem.data.bonzoms.Person; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.WikittyProxy; import org.zkoss.zkplus.databind.BindingListModel; import org.zkoss.zul.AbstractListModel; import org.zkoss.zul.event.ListDataEvent; @@ -12,42 +17,102 @@ */ public class PersonModel extends AbstractListModel implements BindingListModel { - protected List<PersonData> persons = new ArrayList<PersonData>(); + protected WikittyProxy proxy = BonzomsProxy.getInstance(); + protected Criteria criteria = null; + protected int itemsByPage = 1; + protected int size = 0; + protected int currentPage = 0; + protected List<Person> persons = new ArrayList<Person>(); + + public PersonModel(int itemsByPage) { + this.itemsByPage = itemsByPage; + size = getSize(); + createList(); + } + @Override public Object getElementAt(int index) { - return persons.get(index); + pageChange(index); + int indexList = index % itemsByPage; + Person Person = persons.get(indexList); + return Person; } @Override public int getSize() { - return persons.size(); + if (criteria == null) { + return 0; + } + Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); + PagedResult<Person> result = proxy.findAllByCriteria(Person.class, criteria); + return result.getNumFound(); } - - @Override - public int indexOf(Object obj) { - return persons.indexOf(obj); + + @Override + public int indexOf(Object obj) { + int index = 0; + String id = ((Person) obj).getWikittyId(); + for (Person data : persons) { + String dataId = data.getWikittyId(); + if (id.equals(dataId)) { + index = persons.indexOf(data) + (itemsByPage * currentPage); + break; + } + } + return index; + } + + public void addData(Person newData) { + size = getSize(); + fireEvent(ListDataEvent.INTERVAL_ADDED, size - 1, size - 1); } - public void setPersons(List<PersonData> persons) { - this.persons = persons; - fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); - } - - public void addData(PersonData newData) { - persons.add(newData); - } - - public void removeData(PersonData data) { - int interval = persons.indexOf(data); - persons.remove(data); + public void removeData(Person data) { + int interval = persons.indexOf(data) + (itemsByPage * currentPage); + proxy.delete(data.getWikittyId()); fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); } public void reloadContent(int rowIndex) { + int indexList = rowIndex % itemsByPage; + Person Person = persons.get(indexList); + Person = proxy.restore(Person.class, Person.getWikittyId()); fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); } public void reload() { + createList(); + size = getSize(); fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } + + public Criteria getCriteria() { + return criteria; + } + + public void setCriteria(Criteria criteria) { + if (criteria != null) { + this.criteria = criteria; + reload(); + } + } + + public void pageChange(int index) { + int item = index; + int page = item / itemsByPage; + if (page != currentPage ) { + currentPage = page; + createList(); + } + } + + protected void createList() { + if (criteria != null) { + int first = currentPage * itemsByPage; + int end = first + (itemsByPage - 1); + Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); + List<Person> persons = proxy.findAllByCriteria(Person.class, criteria).getAll(); + this.persons = new ArrayList<Person>(persons); + } + } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ResultController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ResultController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ResultController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -27,6 +27,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; + import org.chorem.data.bonzoms.Address; import org.chorem.data.bonzoms.Company; import org.chorem.data.bonzoms.Employee; @@ -35,8 +36,13 @@ import org.chorem.data.bonzoms.Service; import org.nuiton.util.StringUtil; import org.nuiton.wikitty.FieldType.TYPE; +import org.nuiton.wikitty.search.Element; +import org.nuiton.wikitty.search.Search; +import org.nuiton.wikitty.Criteria; import org.nuiton.wikitty.Wikitty; import org.nuiton.wikitty.WikittyExtension; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.WikittyService; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.SuspendNotAllowedException; @@ -49,7 +55,6 @@ import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; import org.zkoss.zul.Toolbarbutton; -import org.zkoss.zul.Window; /** * @@ -57,73 +62,78 @@ */ public class ResultController extends GenericForwardComposer { - protected Model model = new Model(); - protected WikittyModel wikittyModel = new WikittyModel(); + protected WikittyProxy proxy = BonzomsProxy.getInstance(); + protected WikittyModel wikittyModel = new WikittyModel(10); @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - String search = (String) arg.get("search"); - if (search == null) { - search = ""; - } - List<Wikitty> wikitties = model.retrieveAllBySearch(search); - wikittyModel.setWikitties(wikitties); + String str = Executions.getCurrent().getParameter("search"); + + Criteria criteria = getCriteriaBySearch(str); + wikittyModel.setCriteria(criteria); } - protected void createPage(Map<String, Object> map, String zulFile) - throws SuspendNotAllowedException, InterruptedException { - Window win = (Window) Executions.createComponents(zulFile, null, map); - win.setPage(page); - win.setPosition("center"); - win.doModal(); + protected Criteria getCriteriaBySearch(String str) { + Search search = Search.query().eq(Element.ELT_EXTENSION, Person.EXT_PERSON); + search = search.or().eq(Element.ELT_EXTENSION, Company.EXT_COMPANY); + search = search.eq(Element.ELT_EXTENSION, Employee.EXT_EMPLOYEE); + search = search.eq(Element.ELT_EXTENSION, Service.EXT_SERVICE); + search = search.eq(Element.ELT_EXTENSION, EmploymentContract.EXT_EMPLOYMENTCONTRACT); + search = search.eq(Element.ELT_EXTENSION, Address.EXT_ADDRESS); + if (str != null && !str.isEmpty()) { + search = search.and().keyword(str); + } + Criteria criteria = search.criteria(); + return criteria; } - - - protected void createEmploymentContractPage(String id) throws SuspendNotAllowedException, InterruptedException { - EmploymentContract contract = model.retrieveContractById(id); - Map<String, Object> map = new HashMap<String, Object>(); - map.put("contract", contract); - createPage(map, "contractFormPage.zul"); + + protected void createEmploymentContractPage(String id) throws SuspendNotAllowedException, InterruptedException { + Map<String, Object> map = new HashMap<String, Object>(); + if (id != null) { + map.put("contractId", id); + } + Executions.createComponents("contractFormPage.zul", null, map); } protected void createPersonPage(String id) throws SuspendNotAllowedException, InterruptedException { - Person person = model.retrievePersonById(id); - PersonData data = new PersonData(person, null); - Map<String, Object> map = new HashMap<String, Object>(); - map.put("personData", data); - createPage(map, "personFormPage.zul"); + Map<String, Object> map = new HashMap<String, Object>(); + if (id != null) { + map.put("personId", id); + } + Executions.createComponents("personFormPage.zul", null, map); } protected void createEmployeePage(String id) throws SuspendNotAllowedException, InterruptedException { - Employee employee = model.retrieveEmployeeById(id); - EmployeeData data = new EmployeeData(employee, null); - Map<String, Object> map = new HashMap<String, Object>(); - map.put("employeeData", data); - createPage(map, "employeeFormPage.zul"); + Map<String, Object> map = new HashMap<String, Object>(); + if (id != null) { + map.put("employeeId", id); + } + Executions.createComponents("employeeFormPage.zul", null, map); } protected void createAddressPage(String id) throws SuspendNotAllowedException, InterruptedException { - Address address = model.retrieveAddressById(id); - Map<String, Object> map = new HashMap<String, Object>(); - map.put("address", address); - createPage(map, "addressFormPage.zul"); + Map<String, Object> map = new HashMap<String, Object>(); + if (id != null) { + map.put("addressId", id); + } + Executions.createComponents("addressFormPage.zul", null, map); } protected void createServicePage(String id) throws SuspendNotAllowedException, InterruptedException { - Service service = model.retrieveServiceById(id); - ServiceData data = new ServiceData(service, null); - Map<String, Object> map = new HashMap<String, Object>(); - map.put("serviceData", data); - createPage(map, "serviceFormPage.zul"); + Map<String, Object> map = new HashMap<String, Object>(); + if (id != null) { + map.put("serviceId", id); + } + Executions.createComponents("serviceFormPage.zul", null, map); } protected void createCompanyPage(String id) throws SuspendNotAllowedException, InterruptedException { - Company company = model.retrieveCompanyById(id); - CompanyData data = new CompanyData(company, null); - Map<String, Object> map = new HashMap<String, Object>(); - map.put("companyData", data); - createPage(map, "companyFormPage.zul"); + Map<String, Object> map = new HashMap<String, Object>(); + if (id != null) { + map.put("companyId", id); + } + Executions.createComponents("companyFormPage.zul", null, map); } protected void createPageByWikitty(Wikitty wikitty) throws SuspendNotAllowedException, InterruptedException { @@ -169,7 +179,9 @@ @Override public void onEvent(Event event) throws Exception { - Wikitty wikitty = model.retrieveWikittyById(id); + WikittyService service = proxy.getWikittyService(); + String securityToken = proxy.getSecurityToken(); + Wikitty wikitty = service.restore(securityToken, id); createPageByWikitty(wikitty); } }); @@ -190,7 +202,9 @@ @Override public void onEvent(Event event) throws Exception { - Wikitty wikitty = model.retrieveWikittyById(id); + WikittyService service = proxy.getWikittyService(); + String securityToken = proxy.getSecurityToken(); + Wikitty wikitty = service.restore(securityToken, id); createPageByWikitty(wikitty); } }); @@ -240,7 +254,10 @@ protected Listcell dependanciesRenderer(String id) { Listcell cell = new Listcell(); - List<Wikitty> wikitties = model.retrieveAllBySearch(id); + WikittyService service = proxy.getWikittyService(); + String securityToken = proxy.getSecurityToken(); + Criteria criteria = getCriteriaBySearch(id); + List<Wikitty> wikitties = service.findAllByCriteria(securityToken, criteria).cast(securityToken, service).getAll(); for (final Wikitty wikitty : wikitties) { Collection<String> extensions = wikitty.getExtensionNames(); String str = StringUtil.join(extensions, ", ", false); Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -1,17 +1,19 @@ package org.chorem.bonzoms.ui; import java.util.HashMap; -import java.util.List; import java.util.Map; import org.chorem.data.bonzoms.Address; import org.chorem.data.bonzoms.Service; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.search.Element; +import org.nuiton.wikitty.search.Search; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.SuspendNotAllowedException; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.GenericForwardComposer; -import org.zkoss.zul.Button; import org.zkoss.zul.Label; import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; @@ -26,61 +28,32 @@ protected Model model = new Model(); - protected ServiceModel serviceModel = new ServiceModel(); + protected ServiceModel serviceModel = new ServiceModel(20); @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - String search = (String) arg.get("search"); - List<Service> services; - if (search != null && !search.isEmpty()) { - services = model.retrieveServicesBySearch(search); - } else { - services = model.retrieveAllServices(); - } - createServicesData(services); + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Service.EXT_SERVICE).criteria(); + serviceModel.setCriteria(criteria); } - public void createServicesData(List<Service> services) { - for (Service service : services) { - Address address = model.retrieveAddressById(service.getAddress()); - ServiceData data = new ServiceData(service, address); - serviceModel.addData(data); - } - } - - public void createWindowServiceForm(ServiceData serviceData) throws SuspendNotAllowedException, InterruptedException { - Map<String, Object> map = new HashMap<String, Object>(); - if (serviceData != null) { - map.put("serviceData", serviceData); - } - Window win = (Window) Executions.createComponents("serviceFormPage.zul", null, map); - + public void createWindowServiceForm(String id) throws SuspendNotAllowedException, InterruptedException { + Map<String, Object> map = new HashMap<String, Object>(); + if (id != null) { + map.put("serviceId", id); + } + Window win = (Window) Executions.createComponents("serviceFormPage.zul", null, map); win.addEventListener(ServiceFormController.EVENT_ON_SAVE_SERVICE, new EventListener() { @Override public void onEvent(Event event) throws Exception { - ServiceData data = (ServiceData) event.getData(); - if (data != null) { - int rowIndex = serviceModel.indexOf(data); - if (rowIndex == -1) { - serviceModel.addData(data); - } else { - serviceModel.reloadContent(rowIndex); - } - } + serviceModel.reload(); } }); - - win.setPage(page); -// win.doHighlighted(); - win.setPosition("center"); -// win.doOverlapped(); - win.doModal(); } - protected Listcell addressesRenderer(ServiceData serviceData) { - Address address = serviceData.getAddress(); + protected Listcell addressesRenderer(Service service) { + Address address = model.retrieveAddressById(service.getAddress()); String render = address.getName() + " (" + address.getCountry() + ") :\n"; render += address.getAddress1() + " " + address.getAddress2() + "\n"; render += address.getZipCode() + " " + address.getCity() + "\n"; @@ -107,27 +80,22 @@ @Override public void render(Listitem item, Object data) throws Exception { item.setValue(data); - final ServiceData serviceData = (ServiceData) data; + final Service service = (Service) data; - Listcell typeCell = new Listcell(serviceData.getService().getType()); + Listcell typeCell = new Listcell(service.getType()); - Listcell addressCell = addressesRenderer(serviceData); + Listcell addressCell = addressesRenderer(service); - Listcell detailsCell = new Listcell(); + item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() { - Button details = new Button("details"); - detailsCell.appendChild(details); - details.addEventListener("onClick", new EventListener() { - @Override public void onEvent(Event event) throws Exception { - createWindowServiceForm(serviceData); + createWindowServiceForm(service.getWikittyId()); } }); item.appendChild(typeCell); item.appendChild(addressCell); - item.appendChild(detailsCell); } }; } Deleted: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceData.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceData.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceData.java 2010-08-04 16:27:57 UTC (rev 121) @@ -1,72 +0,0 @@ -/* - * #%L - * Bonzoms : bonzoms-zk - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2010 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ -package org.chorem.bonzoms.ui; - -import org.chorem.data.bonzoms.Address; -import org.chorem.data.bonzoms.AddressImpl; -import org.chorem.data.bonzoms.Service; -import org.chorem.data.bonzoms.ServiceImpl; - -/** - * - * @author sherkhan - */ -public class ServiceData { - - protected Service service = new ServiceImpl(); - protected Address address = new AddressImpl(); - - public ServiceData() {} - - public ServiceData(Service service, Address address) { - if (service != null) { - this.service = service; - } - if (address != null) { - this.address = address; - } - } - - /* - * Setters - */ - public void setService(Service service) { - this.service = service; - } - - public void setAddress(Address address) { - this.address = address; - } - - /* - * Getters - */ - public Service getService() { - return service; - } - - public Address getAddress() { - return address; - } -} Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceFormController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceFormController.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceFormController.java 2010-08-04 16:27:57 UTC (rev 121) @@ -1,12 +1,16 @@ package org.chorem.bonzoms.ui; import org.chorem.data.bonzoms.Address; +import org.chorem.data.bonzoms.AddressImpl; import org.chorem.data.bonzoms.Service; +import org.chorem.data.bonzoms.ServiceImpl; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zkplus.databind.DataBinder; +import org.zkoss.zul.Window; /** * @@ -16,51 +20,62 @@ protected Model model = new Model(); - protected ServiceData serviceData = new ServiceData(); + protected Service service = new ServiceImpl(); + protected Address address = new AddressImpl(); - public final static String EVENT_ON_SAVE_SERVICE = "onSaveService"; + public static final String EVENT_ON_SAVE_SERVICE = "onSaveService"; + public static final String EVENT_ON_CLOSE_SERVICE = "onCloseService"; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - ServiceData data = (ServiceData) arg.get("serviceData"); - if (data != null) { - initService(data); + Window win = (Window) self; + win.doModal(); + win.setPosition("center"); + String serviceId = Executions.getCurrent().getParameter("serviceId"); + if (serviceId == null) { + serviceId = (String) arg.get("serviceId"); } + if (serviceId != null) { + initService(serviceId); + } DataBinder binder = new AnnotateDataBinder(comp); binder.bindBean("composer", this); binder.loadAll(); } - protected void initService(ServiceData data) { - String id = data.getService().getAddress(); - Address address = model.retrieveAddressById(id); - if (address != null) { - data.setAddress(address); - } - serviceData = data; + protected void initService(String id) { + service = model.retrieveServiceById(id); + address = model.retrieveAddressById(service.getAddress()); } /* * Events */ + public void onClose() { + System.out.println("CLOSE"); + Events.postEvent(EVENT_ON_CLOSE_SERVICE, this.self, null); + } + public void onClick$saveService() { - Address address = model.createAddress(serviceData.getAddress()); - serviceData.getService().setAddress(address.getWikittyId()); - serviceData.setAddress(address); + address = model.createAddress(address); + service.setAddress(address.getWikittyId()); - Service service = model.updateService(serviceData.getService()); - serviceData.setService(service); + service = model.updateService(service); - Events.postEvent(EVENT_ON_SAVE_SERVICE, this.self, serviceData); - + Events.postEvent(EVENT_ON_SAVE_SERVICE, this.self, service); + System.out.println(this.self.getParent()); self.detach(); } /* * Getters */ - public ServiceData getServiceData() { - return serviceData; + public Service getService() { + return service; } + + public Address getAddress() { + return address; + } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceModel.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceModel.java 2010-08-04 16:27:57 UTC (rev 121) @@ -2,6 +2,11 @@ import java.util.ArrayList; import java.util.List; + +import org.chorem.data.bonzoms.Service; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.WikittyProxy; import org.zkoss.zkplus.databind.BindingListModel; import org.zkoss.zul.AbstractListModel; import org.zkoss.zul.event.ListDataEvent; @@ -12,42 +17,102 @@ */ public class ServiceModel extends AbstractListModel implements BindingListModel { - protected List<ServiceData> services = new ArrayList<ServiceData>(); + protected WikittyProxy proxy = BonzomsProxy.getInstance(); + protected Criteria criteria = null; + protected int itemsByPage = 1; + protected int size = 0; + protected int currentPage = 0; + protected List<Service> services = new ArrayList<Service>(); + + public ServiceModel(int itemsByPage) { + this.itemsByPage = itemsByPage; + size = getSize(); + createList(); + } + @Override public Object getElementAt(int index) { - return services.get(index); + pageChange(index); + int indexList = index % itemsByPage; + Service Service = services.get(indexList); + return Service; } @Override public int getSize() { - return services.size(); + if (criteria == null) { + return 0; + } + Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); + PagedResult<Service> result = proxy.findAllByCriteria(Service.class, criteria); + return result.getNumFound(); } - - @Override - public int indexOf(Object obj) { - return services.indexOf(obj); + + @Override + public int indexOf(Object obj) { + int index = 0; + String id = ((Service) obj).getWikittyId(); + for (Service data : services) { + String dataId = data.getWikittyId(); + if (id.equals(dataId)) { + index = services.indexOf(data) + (itemsByPage * currentPage); + break; + } + } + return index; + } + + public void addData(Service newData) { + size = getSize(); + fireEvent(ListDataEvent.INTERVAL_ADDED, size - 1, size - 1); } - public void setServices(List<ServiceData> services) { - this.services = services; - fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); - } - - public void addData(ServiceData newData) { - services.add(newData); - } - - public void removeData(ServiceData data) { - int interval = services.indexOf(data); - services.remove(data); + public void removeData(Service data) { + int interval = services.indexOf(data) + (itemsByPage * currentPage); + proxy.delete(data.getWikittyId()); fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); } public void reloadContent(int rowIndex) { + int indexList = rowIndex % itemsByPage; + Service Service = services.get(indexList); + Service = proxy.restore(Service.class, Service.getWikittyId()); fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); } public void reload() { + createList(); + size = getSize(); fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } + + public Criteria getCriteria() { + return criteria; + } + + public void setCriteria(Criteria criteria) { + if (criteria != null) { + this.criteria = criteria; + reload(); + } + } + + public void pageChange(int index) { + int item = index; + int page = item / itemsByPage; + if (page != currentPage ) { + currentPage = page; + createList(); + } + } + + protected void createList() { + if (criteria != null) { + int first = currentPage * itemsByPage; + int end = first + (itemsByPage - 1); + Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); + List<Service> Services = proxy.findAllByCriteria(Service.class, criteria).getAll(); + this.services = new ArrayList<Service>(Services); + } + } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/WikittyModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/WikittyModel.java 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/WikittyModel.java 2010-08-04 16:27:57 UTC (rev 121) @@ -2,7 +2,12 @@ import java.util.ArrayList; import java.util.List; + +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.PagedResult; import org.nuiton.wikitty.Wikitty; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.WikittyService; import org.zkoss.zkplus.databind.BindingListModel; import org.zkoss.zul.AbstractListModel; import org.zkoss.zul.event.ListDataEvent; @@ -13,44 +18,108 @@ */ public class WikittyModel extends AbstractListModel implements BindingListModel { - protected List<Wikitty> wikitties = new ArrayList<Wikitty>(); - + protected WikittyProxy proxy = BonzomsProxy.getInstance(); + protected Criteria criteria = null; + protected int itemsByPage = 1; + protected int size = 0; + protected int currentPage = 0; + protected List<Wikitty> wikitties = new ArrayList<Wikitty>(); + + public WikittyModel(int itemsByPage) { + this.itemsByPage = itemsByPage; + size = getSize(); + createList(); + } + @Override public Object getElementAt(int index) { - return wikitties.get(index); + pageChange(index); + int indexList = index % itemsByPage; + Wikitty Wikitty = wikitties.get(indexList); + return Wikitty; } @Override public int getSize() { - return wikitties.size(); + if (criteria == null) { + return 0; + } + Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); + WikittyService service = proxy.getWikittyService(); + String securityToken = proxy.getSecurityToken(); + PagedResult<?> result = service.findAllByCriteria(securityToken, criteria); + return result.getNumFound(); } - - @Override - public int indexOf(Object obj) { - return wikitties.indexOf(obj); - } - - public void setWikitties(List<Wikitty> companies) { - wikitties = companies; - fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); - } - + + @Override + public int indexOf(Object obj) { + int index = 0; + String id = ((Wikitty) obj).getId(); + for (Wikitty data : wikitties) { + String dataId = data.getId(); + if (id.equals(dataId)) { + index = wikitties.indexOf(data) + (itemsByPage * currentPage); + break; + } + } + return index; + } + public void addData(Wikitty newData) { - wikitties.add(newData); - fireEvent(ListDataEvent.INTERVAL_ADDED, wikitties.size() - 1, wikitties.size() - 1); + size = getSize(); + fireEvent(ListDataEvent.INTERVAL_ADDED, size - 1, size - 1); } public void removeData(Wikitty data) { - int interval = wikitties.indexOf(data); - wikitties.remove(data); + int interval = wikitties.indexOf(data) + (itemsByPage * currentPage); + proxy.delete(data.getId()); fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); } public void reloadContent(int rowIndex) { + int indexList = rowIndex % itemsByPage; + Wikitty wikitty = wikitties.get(indexList); + WikittyService service = proxy.getWikittyService(); + String securityToken = proxy.getSecurityToken(); + wikitty = service.restore(securityToken, wikitty.getId()); fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); } public void reload() { + createList(); + size = getSize(); fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } + + public Criteria getCriteria() { + return criteria; + } + + public void setCriteria(Criteria criteria) { + if (criteria != null) { + this.criteria = criteria; + reload(); + } + } + + public void pageChange(int index) { + int item = index; + int page = item / itemsByPage; + if (page != currentPage ) { + currentPage = page; + createList(); + } + } + + protected void createList() { + if (criteria != null) { + int first = currentPage * itemsByPage; + int end = first + (itemsByPage - 1); + Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); + WikittyService service = proxy.getWikittyService(); + String securityToken = proxy.getSecurityToken(); + PagedResult<?> result = service.findAllByCriteria(securityToken, criteria); + this.wikitties = new ArrayList<Wikitty>(result.cast(securityToken, service).getAll()); + } + } } Modified: trunk/bonzoms-ui-zk/src/main/resources/wikitty-jdbc-config.properties =================================================================== --- trunk/bonzoms-ui-zk/src/main/resources/wikitty-jdbc-config.properties 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/resources/wikitty-jdbc-config.properties 2010-08-04 16:27:57 UTC (rev 121) @@ -1,5 +1,5 @@ #Connection parameters jdbc.con.driver=org.h2.Driver -jdbc.con.host=jdbc:h2:file:~/.bonzoms/localdb/localdb +jdbc.con.host=jdbc:h2:file:~/.chorem-data/localdb/localdb jdbc.con.userName=sa jdbc.con.password= Modified: trunk/bonzoms-ui-zk/src/main/webapp/companyFormPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/companyFormPage.zul 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/webapp/companyFormPage.zul 2010-08-04 16:27:57 UTC (rev 121) @@ -11,23 +11,23 @@ <vbox> <label value="Name" /> - <textbox value="@{composer.companyData.company.name, save-when='saveCompany.onClick'}" /> + <textbox value="@{composer.company.name, save-when='saveCompany.onClick'}" /> <label value="Type" /> - <textbox value="@{composer.companyData.company.type, save-when='saveCompany.onClick'}" /> + <textbox value="@{composer.company.type, save-when='saveCompany.onClick'}" /> <label value="Fax" /> - <textbox value="@{composer.companyData.company.fax, save-when='saveCompany.onClick'}" /> + <textbox value="@{composer.company.fax, save-when='saveCompany.onClick'}" /> <label value="Web site" /> - <textbox value="@{composer.companyData.company.webSite, save-when='saveCompany.onClick'}" /> + <textbox value="@{composer.company.webSite, save-when='saveCompany.onClick'}" /> </vbox> <space /> <vbox> - <listbox id="addressListbox" model="@{composer.companyData.addressesModel}" width="200px"> + <listbox id="addressListbox" model="@{composer.addressesModel}" width="200px"> <listitem self="@{each='address'}"> <listcell> <groupbox> @@ -69,7 +69,7 @@ <groupbox> <caption label="Phones" /> - <listbox id="phoneListbox" model="@{composer.companyData.phonesModel}" width="310px"> + <listbox id="phoneListbox" model="@{composer.phonesModel}" width="310px"> <listhead sizable="true"> <listheader label="Name" /> <listheader label="Phone Number" /> @@ -96,7 +96,7 @@ <groupbox> <caption label="Emails" /> - <listbox id="emailListbox" model="@{composer.companyData.emailsModel}" width="310px"> + <listbox id="emailListbox" model="@{composer.emailsModel}" width="310px"> <listhead sizable="true"> <listheader label="Name" /> <listheader label="Email" /> Modified: trunk/bonzoms-ui-zk/src/main/webapp/companyPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/companyPage.zul 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/webapp/companyPage.zul 2010-08-04 16:27:57 UTC (rev 121) @@ -1,11 +1,11 @@ <?page id="company" title="Company" cacheable="false" language="xul/html" zscriptLanguage="Java"?> <?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?> -<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="company"?> +<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./company"?> <window id="company" apply="org.chorem.bonzoms.ui.CompanyController"> Companies: <toolbarbutton id="newCompany" label="Add new company" /> <listbox autopaging="true" mold="paging" id="companyListBox" rows="20" model="@{company$composer.companyModel}" - itemRenderer="@{company$composer.companyDataRenderer}"> + itemRenderer="@{company$composer.companyRenderer}"> <listhead> <listheader label="Name" /> <listheader label="Web site" /> @@ -13,7 +13,6 @@ <listheader label="Emails" /> <listheader label="Address" /> <listheader label="Type" /> - <listheader label="details" /> </listhead> </listbox> </window> \ No newline at end of file Modified: trunk/bonzoms-ui-zk/src/main/webapp/contractFormPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/contractFormPage.zul 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/webapp/contractFormPage.zul 2010-08-04 16:27:57 UTC (rev 121) @@ -27,8 +27,6 @@ <space /> <vbox> - <label value="Name" /> - <textbox value="@{composer.contract.name, save-when='saveContract.onClick'}" /> <label value="Start" /> <datebox format="yyyy/MM/dd" value="@{composer.contract.start, save-when='saveContract.onClick'}" /> Modified: trunk/bonzoms-ui-zk/src/main/webapp/contractPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/contractPage.zul 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/webapp/contractPage.zul 2010-08-04 16:27:57 UTC (rev 121) @@ -1,9 +1,9 @@ <?page id="contract" title="Contract" cacheable="false" language="xul/html" zscriptLanguage="Java"?> <?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?> -<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="contract"?> +<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./contract"?> <window id="contract" apply="org.chorem.bonzoms.ui.ContractController"> - Employees: <toolbarbutton id="newContract" label="Add new contract" /> + Contracts: <toolbarbutton id="newContract" label="Add new contract" /> <listbox autopaging="true" mold="paging" id="contractListBox" rows="20" model="@{contract$composer.contractsModel}" itemRenderer="@{contract$composer.contractRenderer}"> <listhead> @@ -12,7 +12,6 @@ <listheader label="Working time" /> <listheader label="Advantages" /> <listheader label="Description" /> - <listheader label="Details" /> </listhead> </listbox> </window> \ No newline at end of file Modified: trunk/bonzoms-ui-zk/src/main/webapp/contractsFormPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/contractsFormPage.zul 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/webapp/contractsFormPage.zul 2010-08-04 16:27:57 UTC (rev 121) @@ -38,8 +38,6 @@ <space /> <vbox> - <label value="Name" /> - <textbox value="@{contract.name, save-when='save.onClick'}" /> <label value="Start" /> <datebox format="yyyy/MM/dd" value="@{contract.start, save-when='save.onClick'}" /> @@ -67,5 +65,5 @@ </hbox> </groupbox> <button id="save" label="Save" /> - + <include id="openContract" /> </window> \ No newline at end of file Modified: trunk/bonzoms-ui-zk/src/main/webapp/employeeFormPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/employeeFormPage.zul 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/webapp/employeeFormPage.zul 2010-08-04 16:27:57 UTC (rev 121) @@ -14,20 +14,50 @@ <separator /> <label value="email" /> - <textbox value="@{composer.employeeData.employee.workingEmail, save-when='saveEmployee.onClick'}" constraint="/.+@.+\.[a-z]+/" /> + <textbox value="@{composer.employee.workingEmail, save-when='saveEmployee.onClick'}" constraint="/.+@.+\.[a-z]+/" /> <label value="Phone number" /> - <textbox value="@{composer.employeeData.employee.workingPhone, save-when='saveEmployee.onClick'}" /> + <textbox value="@{composer.employee.workingPhone, save-when='saveEmployee.onClick'}" /> <toolbarbutton id="editService" label="Edit service :" /> - <listbox id="serviceListbox" width="100px" model="@{composer.serviceModel}" mold="select" itemRenderer="@{composer.serviceDataRenderer}"> - </listbox> + <bandbox id="serviceBandbox" mold="rounded"> + <bandpopup> + <vbox> + <listbox width="200px" id="serviceListbox" model="@{composer.serviceModel}" itemRenderer="@{composer.serviceRenderer}"> + + </listbox> + </vbox> + </bandpopup> + </bandbox> + <toolbarbutton id="editCompany" label="Edit company :" /> - <listbox id="companyListbox" width="100px" model="@{composer.companyModel}" mold="select" itemRenderer="@{composer.companyDataRenderer}"> - </listbox> - + <bandbox id="companyBandbox" mold="rounded"> + <bandpopup> + <vbox> + <listbox id="companyListbox" width="200px" model="@{composer.companyModel}" itemRenderer="@{composer.companyRenderer}"> + <listhead> + <listheader label="Name" /> + <listheader label="Type" /> + </listhead> + </listbox> + </vbox> + </bandpopup> + </bandbox> + <toolbarbutton id="editPerson" label="Edit person" /> + <bandbox id="personBandbox" mold="rounded"> + <bandpopup> + <vbox> + <listbox id="personListbox" width="200px" model="@{composer.personModel}" itemRenderer="@{composer.personRenderer}"> + <listhead> + <listheader label="First name" /> + <listheader label="Last name" /> + </listhead> + </listbox> + </vbox> + </bandpopup> + </bandbox> <toolbarbutton id="editContracts" label="Edit contracts" /> @@ -40,19 +70,19 @@ <caption label="Working address" /> <vbox> <label value="Adress1" /> - <textbox value="@{composer.employeeData.workingAddress.address1, save-when='saveEmployee.onClick'}" /> + <textbox value="@{composer.workingAddress.address1, save-when='saveEmployee.onClick'}" /> <label value="Adress2" /> - <textbox value="@{composer.employeeData.workingAddress.address2, save-when='saveEmployee.onClick'}" /> + <textbox value="@{composer.workingAddress.address2, save-when='saveEmployee.onClick'}" /> <label value="Zip code" /> - <textbox value="@{composer.employeeData.workingAddress.zipCode, save-when='saveEmployee.onClick'}" /> + <textbox value="@{composer.workingAddress.zipCode, save-when='saveEmployee.onClick'}" /> <label value="City" /> - <textbox value="@{composer.employeeData.workingAddress.city, save-when='saveEmployee.onClick'}" /> + <textbox value="@{composer.workingAddress.city, save-when='saveEmployee.onClick'}" /> <label value="Country" /> - <textbox value="@{composer.employeeData.workingAddress.country, save-when='saveEmployee.onClick'}" /> + <textbox value="@{composer.workingAddress.country, save-when='saveEmployee.onClick'}" /> </vbox> </groupbox> Modified: trunk/bonzoms-ui-zk/src/main/webapp/employeePage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/employeePage.zul 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/webapp/employeePage.zul 2010-08-04 16:27:57 UTC (rev 121) @@ -1,17 +1,16 @@ <?page id="employee" title="Employee" cacheable="false" language="xul/html" zscriptLanguage="Java"?> <?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?> -<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="employee"?> +<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./employee"?> <window id="employee" apply="org.chorem.bonzoms.ui.EmployeeController"> Employees: <toolbarbutton id="newEmployee" label="Add new employee" /> - <listbox autopaging="true" mold="paging" id="employeeListBox" rows="20" model="@{employee$composer.employeeModel}" + <listbox autopaging="true" mold="paging" id="employeeListbox" rows="20" model="@{employee$composer.employeeModel}" itemRenderer="@{employee$composer.employeeRenderer}"> <listhead> <listheader label="First name" /> <listheader label="Last name" /> <listheader label="email" /> <listheader label="Working phone" /> - <listheader label="Details" /> </listhead> </listbox> </window> \ No newline at end of file Modified: trunk/bonzoms-ui-zk/src/main/webapp/index.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/index.zul 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/webapp/index.zul 2010-08-04 16:27:57 UTC (rev 121) @@ -17,9 +17,9 @@ <vbox id="content" > <hbox> Search: <textbox id="searchBox" /> <button label="Search" id="searchButton" /> - <include src="employeePage.zul" /> </hbox> <separator bar="true" /> + <include id="include" src="employeePage.zul" /> </vbox> </hbox> </window> \ No newline at end of file Modified: trunk/bonzoms-ui-zk/src/main/webapp/personFormPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/personFormPage.zul 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/webapp/personFormPage.zul 2010-08-04 16:27:57 UTC (rev 121) @@ -5,17 +5,17 @@ <hbox> <vbox> <label value="First name" /> - <textbox value="@{composer.personData.person.firstName, save-when='savePerson.onClick'}" /> + <textbox value="@{composer.person.firstName, save-when='savePerson.onClick'}" /> <label value="Last name" /> - <textbox value="@{composer.personData.person.lastName, save-when='savePerson.onClick'}" /> + <textbox value="@{composer.person.lastName, save-when='savePerson.onClick'}" /> <label value="Birthday" /> - <datebox format="yyyy/MM/dd" value="@{composer.personData.person.birthDay, save-when='savePerson.onClick'}" /> + <datebox format="yyyy/MM/dd" value="@{composer.person.birthDay, save-when='savePerson.onClick'}" /> </vbox> <space /> <vbox> - <listbox id="addressListbox" model="@{composer.personData.addressesModel}" width="200px"> + <listbox id="addressListbox" model="@{composer.addressesModel}" width="200px"> <listitem self="@{each='address'}"> <listcell> <groupbox> @@ -60,7 +60,7 @@ <caption label="Phones" /> - <listbox id="phoneListbox" model="@{composer.personData.phonesModel}" width="310px"> + <listbox id="phoneListbox" model="@{composer.phonesModel}" width="310px"> <listhead sizable="true"> <listheader label="Name" /> <listheader label="Phone Number" /> @@ -87,7 +87,7 @@ <caption label="Emails" /> - <listbox id="emailListbox" model="@{composer.personData.emailsModel}" width="310px"> + <listbox id="emailListbox" model="@{composer.emailsModel}" width="310px"> <listhead sizable="true"> <listheader label="Name" /> <listheader label="Email" /> Modified: trunk/bonzoms-ui-zk/src/main/webapp/personPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/personPage.zul 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/webapp/personPage.zul 2010-08-04 16:27:57 UTC (rev 121) @@ -1,16 +1,15 @@ <?page id="person" title="Person" cacheable="false" language="xul/html" zscriptLanguage="Java"?> <?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?> -<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="person"?> +<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./person"?> <window id="person" apply="org.chorem.bonzoms.ui.PersonController"> - Companies: <toolbarbutton id="newPerson" label="Add new person" /> + Persons: <toolbarbutton id="newPerson" label="Add new person" /> <listbox autopaging="true" mold="paging" id="personListBox" rows="20" model="@{person$composer.personModel}" itemRenderer="@{person$composer.personDataRenderer}"> <listhead> <listheader label="First name" /> <listheader label="Last name" /> <listheader label="Birthday" /> - <listheader label="details" /> </listhead> </listbox> </window> \ No newline at end of file Modified: trunk/bonzoms-ui-zk/src/main/webapp/resultPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/resultPage.zul 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/webapp/resultPage.zul 2010-08-04 16:27:57 UTC (rev 121) @@ -1,6 +1,6 @@ <?page id="result" title="Result" cacheable="false" language="xul/html" zscriptLanguage="Java"?> <?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?> -<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="result"?> +<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./result"?> <window id="result" apply="org.chorem.bonzoms.ui.ResultController"> <listbox autopaging="true" mold="paging" id="wikittyListBox" rows="10" model="@{result$composer.wikittyModel}" Modified: trunk/bonzoms-ui-zk/src/main/webapp/serviceFormPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/serviceFormPage.zul 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/webapp/serviceFormPage.zul 2010-08-04 16:27:57 UTC (rev 121) @@ -10,25 +10,25 @@ <vbox> <label value="Type" /> - <textbox value="@{composer.serviceData.service.type, save-when='saveService.onClick'}" /> + <textbox value="@{composer.service.type, save-when='saveService.onClick'}" /> <label value="Name" /> - <textbox value="@{composer.serviceData.address.name, save-when='saveService.onClick'}" /> + <textbox value="@{composer.address.name, save-when='saveService.onClick'}" /> <label value="Address 1" /> - <textbox value="@{composer.serviceData.address.address1, save-when='saveService.onClick'}" /> + <textbox value="@{composer.address.address1, save-when='saveService.onClick'}" /> <label value="Address 2" /> - <textbox value="@{composer.serviceData.address.address2, save-when='saveService.onClick'}" /> + <textbox value="@{composer.address.address2, save-when='saveService.onClick'}" /> <label value="Zip code" /> - <textbox value="@{composer.serviceData.address.zipCode, save-when='saveService.onClick'}" /> + <textbox value="@{composer.address.zipCode, save-when='saveService.onClick'}" /> <label value="City" /> - <textbox value="@{composer.serviceData.address.city, save-when='saveService.onClick'}" /> + <textbox value="@{composer.address.city, save-when='saveService.onClick'}" /> <label value="Country" /> - <textbox value="@{composer.serviceData.address.country, save-when='saveService.onClick'}" /> + <textbox value="@{composer.address.country, save-when='saveService.onClick'}" /> </vbox> Modified: trunk/bonzoms-ui-zk/src/main/webapp/servicePage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/servicePage.zul 2010-07-27 12:55:07 UTC (rev 120) +++ trunk/bonzoms-ui-zk/src/main/webapp/servicePage.zul 2010-08-04 16:27:57 UTC (rev 121) @@ -1,15 +1,14 @@ <?page id="service" title="service" cacheable="false" language="xul/html" zscriptLanguage="Java"?> <?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?> -<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="service"?> +<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./service"?> <window id="service" apply="org.chorem.bonzoms.ui.ServiceController"> - Employees: <toolbarbutton id="newService" label="Add new service" /> + Services: <toolbarbutton id="newService" label="Add new service" /> <listbox autopaging="true" mold="paging" id="serviceListBox" rows="20" model="@{service$composer.serviceModel}" itemRenderer="@{service$composer.serviceDataRenderer}"> <listhead> <listheader label="Type" /> <listheader label="Address" /> - <listheader label="Details" /> </listhead> </listbox> </window> \ No newline at end of file