ItEr44S10CUGravacionModelosUnidadesTraballoItEr43S12: Adding finders for searching order element's templates
This commit is contained in:
parent
2781b33ad8
commit
414eb0d348
3 changed files with 217 additions and 0 deletions
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
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 <ogonzalez@igalia.com>
|
||||
*/
|
||||
public abstract class TemplateFinder<T extends OrderElementTemplate> extends
|
||||
BandboxFinder {
|
||||
|
||||
private final Class<T> type;
|
||||
|
||||
protected TemplateFinder(Class<T> 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<? extends OrderElementTemplate> getAll() {
|
||||
return getTemplates();
|
||||
}
|
||||
|
||||
protected abstract List<T> 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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
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 <ogonzalez@igalia.com>
|
||||
*
|
||||
*/
|
||||
@Repository
|
||||
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
|
||||
public class TemplatesEligibleForOrder extends TemplateFinder<OrderTemplate> {
|
||||
|
||||
@Autowired
|
||||
private IOrderElementTemplateDAO templateDAO;
|
||||
|
||||
protected TemplatesEligibleForOrder() {
|
||||
super(OrderTemplate.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<OrderTemplate> getTemplates() {
|
||||
return templateDAO.list(OrderTemplate.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
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 <ogonzalez@igalia.com>
|
||||
*
|
||||
*/
|
||||
@Repository
|
||||
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
|
||||
public class TemplatesEligibleForSubElement extends
|
||||
TemplateFinder<OrderElementTemplate> {
|
||||
|
||||
@Autowired
|
||||
private IOrderElementTemplateDAO dao;
|
||||
|
||||
public TemplatesEligibleForSubElement() {
|
||||
super(OrderElementTemplate.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<OrderElementTemplate> getTemplates() {
|
||||
List<OrderElementTemplate> all = dao
|
||||
.list(OrderElementTemplate.class);
|
||||
List<OrderElementTemplate> result = new ArrayList<OrderElementTemplate>();
|
||||
for (OrderElementTemplate each : all) {
|
||||
if ((!(each instanceof OrderTemplate))) {
|
||||
result.add(each);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue