ItEr28S11AltaEtiquetasTipoEtiquetaItEr27S11: Add label to OrderElement
This commit is contained in:
parent
12de5c9f8c
commit
ead0ee0f6e
8 changed files with 168 additions and 11 deletions
|
|
@ -24,6 +24,7 @@ import java.util.List;
|
|||
|
||||
import org.navalplanner.business.common.daos.IGenericDAO;
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.labels.entities.LabelType;
|
||||
|
||||
/**
|
||||
* @author Diego Pino Garcia <dpino@igalia.com>
|
||||
|
|
@ -32,4 +33,5 @@ public interface ILabelDAO extends IGenericDAO<Label, Long> {
|
|||
|
||||
List<Label> getAll();
|
||||
|
||||
Label findByNameAndType(String labelName, LabelType labelType);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,8 +22,10 @@ package org.navalplanner.business.labels.daos;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
import org.navalplanner.business.common.daos.GenericDAOHibernate;
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.labels.entities.LabelType;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
|
@ -43,4 +45,10 @@ public class LabelDAO extends GenericDAOHibernate<Label, Long> implements
|
|||
return list(Label.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Label findByNameAndType(String labelName, LabelType labelType) {
|
||||
return (Label) getSession().createCriteria(Label.class).add(
|
||||
Restrictions.eq("name", labelName)).add(
|
||||
Restrictions.eq("type", labelType)).uniqueResult();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import org.springframework.web.context.support.WebApplicationContextUtils;
|
|||
import org.zkoss.zk.ui.Executions;
|
||||
import org.zkoss.zk.ui.HtmlMacroComponent;
|
||||
import org.zkoss.zul.Combobox;
|
||||
import org.zkoss.zul.Comboitem;
|
||||
|
||||
/**
|
||||
* Autocomplete component
|
||||
|
|
@ -67,6 +68,10 @@ public class Autocomplete extends HtmlMacroComponent {
|
|||
finder = (IFinder) getBean(StringUtils.uncapitalize(classname));
|
||||
}
|
||||
|
||||
public Comboitem getSelectedItem() {
|
||||
return combo.getSelectedItem();
|
||||
}
|
||||
|
||||
private Object getBean(String classname) {
|
||||
HttpServletRequest servletRequest = (HttpServletRequest) Executions
|
||||
.getCurrent().getNativeRequest();
|
||||
|
|
|
|||
|
|
@ -1,7 +1,20 @@
|
|||
package org.navalplanner.web.orders;
|
||||
|
||||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.labels.entities.LabelType;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
import org.navalplanner.web.common.Util;
|
||||
import org.navalplanner.web.common.components.Autocomplete;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.WrongValueException;
|
||||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
import org.zkoss.zul.Comboitem;
|
||||
import org.zkoss.zul.Grid;
|
||||
import org.zkoss.zul.Textbox;
|
||||
|
||||
/**
|
||||
* Controller for showing OrderElement assigned labels
|
||||
|
|
@ -12,10 +25,57 @@ import org.zkoss.zk.ui.util.GenericForwardComposer;
|
|||
public class AssignedLabelsToOrderElementController extends
|
||||
GenericForwardComposer {
|
||||
|
||||
private IAssignedLabelsToOrderElementModel assignedLabelsToOrderElementModel;
|
||||
|
||||
private Autocomplete cbLabelType;
|
||||
|
||||
private Grid directLabels;
|
||||
|
||||
private Textbox txtLabelName;
|
||||
|
||||
public OrderElement getOrderElement() {
|
||||
return assignedLabelsToOrderElementModel.getOrderElement();
|
||||
}
|
||||
|
||||
public void setOrderElement(OrderElement orderElement) {
|
||||
assignedLabelsToOrderElementModel.setOrderElement(orderElement);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doAfterCompose(Component comp) throws Exception {
|
||||
super.doAfterCompose(comp.getFellow("listOrderElementLabels"));
|
||||
comp.setVariable("assignedLabelsController", this, true);
|
||||
}
|
||||
|
||||
public void createAndAssign() {
|
||||
// Check LabelType is not null
|
||||
final Comboitem comboitem = cbLabelType.getSelectedItem();
|
||||
if (comboitem == null || comboitem.getValue() == null) {
|
||||
throw new WrongValueException(cbLabelType, _("cannot be null"));
|
||||
}
|
||||
|
||||
// Check Label is not null or empty
|
||||
final String labelName = txtLabelName.getValue();
|
||||
if (labelName == null || labelName.isEmpty()) {
|
||||
throw new WrongValueException(txtLabelName,
|
||||
_("cannot be null or empty"));
|
||||
}
|
||||
|
||||
|
||||
final LabelType labelType = (LabelType) comboitem.getValue();
|
||||
if (!assignedLabelsToOrderElementModel.existsLabelByNameAndType(
|
||||
labelName, labelType)) {
|
||||
addLabel(labelName, labelType);
|
||||
}
|
||||
}
|
||||
|
||||
private void addLabel(String labelName, LabelType labelType) {
|
||||
assignedLabelsToOrderElementModel.addLabel(labelName, labelType);
|
||||
Util.reloadBindings(directLabels);
|
||||
}
|
||||
|
||||
public List<Label> getLabels() {
|
||||
return assignedLabelsToOrderElementModel.getLabels();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,15 @@
|
|||
package org.navalplanner.web.orders;
|
||||
|
||||
import org.navalplanner.business.orders.daos.OrderElementDAO;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.navalplanner.business.labels.daos.ILabelDAO;
|
||||
import org.navalplanner.business.labels.daos.ILabelTypeDAO;
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.labels.entities.LabelType;
|
||||
import org.navalplanner.business.orders.daos.IOrderElementDAO;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -15,11 +23,23 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
public class AssignedLabelsToOrderElementModel implements
|
||||
IAssignedLabelsToOrderElementModel {
|
||||
|
||||
OrderElementDAO orderDAO;
|
||||
@Autowired
|
||||
IOrderElementDAO orderDAO;
|
||||
|
||||
OrderElement orderElement;
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
@Autowired
|
||||
ILabelTypeDAO labelTypeDAO;
|
||||
|
||||
@Autowired
|
||||
ILabelDAO labelDAO;
|
||||
|
||||
@Override
|
||||
public OrderElement getOrderElement() {
|
||||
return orderElement;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOrderElement(OrderElement orderElement) {
|
||||
this.orderElement = orderElement;
|
||||
}
|
||||
|
|
@ -28,4 +48,23 @@ public class AssignedLabelsToOrderElementModel implements
|
|||
|
||||
}
|
||||
|
||||
public List<Label> getLabels() {
|
||||
List<Label> result = new ArrayList<Label>();
|
||||
if (orderElement.getLabels() != null) {
|
||||
result.addAll(orderElement.getLabels());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public boolean existsLabelByNameAndType(String labelName,
|
||||
LabelType labelType) {
|
||||
return (labelDAO.findByNameAndType(labelName, labelType) != null);
|
||||
}
|
||||
|
||||
public void addLabel(String labelName, LabelType labelType) {
|
||||
Label label = Label.create(labelName);
|
||||
label.setType(labelType);
|
||||
orderElement.addLabel(label);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,49 @@
|
|||
package org.navalplanner.web.orders;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.labels.entities.LabelType;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
|
||||
/**
|
||||
* @author Diego Pino Garcia <dpino@igalia.com>
|
||||
*/
|
||||
public interface IAssignedLabelsToOrderElementModel {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param labelName
|
||||
* @param labelType
|
||||
* @return
|
||||
*/
|
||||
boolean existsLabelByNameAndType(String labelName, LabelType labelType);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param labelName
|
||||
* @param labelType
|
||||
*/
|
||||
void addLabel(String labelName, LabelType labelType);
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
OrderElement getOrderElement();
|
||||
|
||||
/**
|
||||
* Set {@link OrderElement}
|
||||
*
|
||||
* @param orderElement
|
||||
*/
|
||||
void setOrderElement(OrderElement orderElement);
|
||||
|
||||
/**
|
||||
* Returns {@link OrderElement}
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public List<Label> getLabels();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -199,6 +199,7 @@ public class OrderElementController extends GenericForwardComposer {
|
|||
throws Exception {
|
||||
assignedLabelsController = new AssignedLabelsToOrderElementController();
|
||||
assignedLabelsController.doAfterCompose(comp);
|
||||
assignedLabelsController.setOrderElement(getOrderElement());
|
||||
}
|
||||
|
||||
private void setupManageOrderElementAdvancesController(Component comp)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<vbox id="listOrderElementLabels">
|
||||
<!-- Indirect labels -->
|
||||
<!-- Indirect labels -->
|
||||
<vbox>
|
||||
<label value="${i18n:_('Indirect labels')}" />
|
||||
<grid>
|
||||
|
|
@ -18,16 +18,16 @@
|
|||
<!-- Direct labels -->
|
||||
<vbox>
|
||||
<label value="${i18n:_('Direct labels')}" />
|
||||
<grid>
|
||||
<grid id="directLabels" model="@{assignedLabelsController.labels}">
|
||||
<columns>
|
||||
<column label="${i18n:_('Label type')}" />
|
||||
<column label="${i18n:_('Value')}" />
|
||||
<column label="${i18n:_('Operations')}" />
|
||||
</columns>
|
||||
<rows>
|
||||
<row>
|
||||
<label value=""/>
|
||||
<label value=""/>
|
||||
<row self="@{each='label'}">
|
||||
<label value="@{label.type.name}"/>
|
||||
<label value="@{label.name}"/>
|
||||
<button label="${i18n:_('Delete')}" />
|
||||
</row>
|
||||
</rows>
|
||||
|
|
@ -48,8 +48,9 @@
|
|||
<label value="${i18n:_('Create and assign label')}" />
|
||||
</vbox>
|
||||
<hbox>
|
||||
<autocomplete finder="LabelTypeFinder" buttonVisible="true" />
|
||||
<textbox />
|
||||
<button style="margin-top: -4px" label="${i18n:_('Create & Assign')}" />
|
||||
<autocomplete id="cbLabelType" finder="LabelTypeFinder" buttonVisible="true" />
|
||||
<textbox id="txtLabelName" constraint="no empty:${i18n:_('cannot be null or empty')}"/>
|
||||
<button style="margin-top: -4px" label="${i18n:_('Create & Assign')}"
|
||||
onClick="assignedLabelsController.createAndAssign()"/>
|
||||
</hbox>
|
||||
</vbox>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue