diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/TemplateFinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/TemplateFinder.java new file mode 100644 index 000000000..b61c2c79c --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/TemplateFinder.java @@ -0,0 +1,104 @@ +/* + * This file is part of ###PROJECT_NAME### + * + * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e + * Desenvolvemento Tecnolóxico de Galicia + * + * 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 Affero 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 . + */ +package org.navalplanner.web.common.components.finders; + +import static org.navalplanner.business.i18n.I18nHelper._; + +import java.util.List; + +import org.navalplanner.business.templates.entities.OrderElementTemplate; +import org.springframework.transaction.annotation.Transactional; +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +/** + * @author Óscar González Fernández + */ +public abstract class TemplateFinder extends + BandboxFinder { + + private final Class type; + + protected TemplateFinder(Class type) { + this.type = type; + } + + @Override + public boolean entryMatchesText(Object obj, String text) { + return templateMatchesText(type.cast(obj), text); + } + + @Override + public String[] getHeaders() { + return new String[] { _("Code"), _("Name") }; + } + + @Override + public ListitemRenderer getItemRenderer() { + return new ListitemRenderer() { + + @Override + public void render(Listitem item, Object data) throws Exception { + T template = type.cast(data); + item.setValue(data); + generateColumnsForRenderer(item, template); + } + }; + } + + protected boolean templateMatchesText(T template, String text) { + String objectString = normalize(objectToString(template)); + return objectString.contains(normalize(text)); + } + + private String normalize(String text) { + return text.trim().toLowerCase(); + } + + @Override + public String objectToString(Object obj) { + T template = type.cast(obj); + return extractStringFor(template); + } + + protected String extractStringFor(T template) { + return template.getCode() + " :: " + template.getName(); + } + + @Override + @Transactional(readOnly = true) + public List getAll() { + return getTemplates(); + } + + protected abstract List getTemplates(); + + protected void generateColumnsForRenderer(Listitem item, T template) { + final Listcell codeCell = new Listcell(); + codeCell.setLabel(template.getCode()); + codeCell.setParent(item); + + final Listcell nameCell = new Listcell(); + nameCell.setParent(item); + nameCell.setLabel(template.getName()); + } + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/TemplatesEligibleForOrder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/TemplatesEligibleForOrder.java new file mode 100644 index 000000000..07c50d801 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/TemplatesEligibleForOrder.java @@ -0,0 +1,51 @@ +/* + * This file is part of ###PROJECT_NAME### + * + * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e + * Desenvolvemento Tecnolóxico de Galicia + * + * 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 Affero 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 . + */ +package org.navalplanner.web.common.components.finders; + +import java.util.List; + +import org.navalplanner.business.templates.daos.IOrderElementTemplateDAO; +import org.navalplanner.business.templates.entities.OrderTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Repository; + +/** + * @author Óscar González Fernández + * + */ +@Repository +@Scope(BeanDefinition.SCOPE_PROTOTYPE) +public class TemplatesEligibleForOrder extends TemplateFinder { + + @Autowired + private IOrderElementTemplateDAO templateDAO; + + protected TemplatesEligibleForOrder() { + super(OrderTemplate.class); + } + + @Override + protected List getTemplates() { + return templateDAO.list(OrderTemplate.class); + } + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/TemplatesEligibleForSubElement.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/TemplatesEligibleForSubElement.java new file mode 100644 index 000000000..310484386 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/TemplatesEligibleForSubElement.java @@ -0,0 +1,62 @@ +/* + * This file is part of ###PROJECT_NAME### + * + * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e + * Desenvolvemento Tecnolóxico de Galicia + * + * 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 Affero 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 . + */ +package org.navalplanner.web.common.components.finders; + +import java.util.ArrayList; +import java.util.List; + +import org.navalplanner.business.templates.daos.IOrderElementTemplateDAO; +import org.navalplanner.business.templates.entities.OrderElementTemplate; +import org.navalplanner.business.templates.entities.OrderTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Repository; + +/** + * @author Óscar González Fernández + * + */ +@Repository +@Scope(BeanDefinition.SCOPE_PROTOTYPE) +public class TemplatesEligibleForSubElement extends + TemplateFinder { + + @Autowired + private IOrderElementTemplateDAO dao; + + public TemplatesEligibleForSubElement() { + super(OrderElementTemplate.class); + } + + @Override + protected List getTemplates() { + List all = dao + .list(OrderElementTemplate.class); + List result = new ArrayList(); + for (OrderElementTemplate each : all) { + if ((!(each instanceof OrderTemplate))) { + result.add(each); + } + } + return result; + } + +}