ItEr28S11AltaEtiquetasTipoEtiquetaItEr27S11: Show inherited labels in OrderElement Labels tab

This commit is contained in:
Diego Pino Garcia 2009-10-01 18:12:34 +02:00 committed by Javier Moran Rua
parent d5167874ac
commit 5222b9bb2c
7 changed files with 78 additions and 17 deletions

View file

@ -16,7 +16,7 @@
<many-to-one name="type" class="LabelType" column="LABEL_TYPE_ID" />
</properties>
<set name="orderElements" table="ORDER_ELEMENT_LABEL">
<set name="orderElements" table="ORDER_ELEMENT_LABEL" cascade="all,delete-orphan">
<key column="LABEL_ID" not-null="false"/>
<many-to-many column="ORDER_ELEMENT_ID" class="org.navalplanner.business.orders.entities.OrderElement"/>
</set>

View file

@ -45,7 +45,7 @@
<one-to-many class="org.navalplanner.business.advance.entities.DirectAdvanceAssignment" />
</set>
<set name="labels" table="ORDER_ELEMENT_LABEL" access="field">
<set name="labels" table="ORDER_ELEMENT_LABEL" access="field" cascade="all,delete-orphan">
<key column="ORDER_ELEMENT_ID" not-null="true"/>
<many-to-many column="LABEL_ID" class="org.navalplanner.business.labels.entities.Label" />
</set>

View file

@ -72,9 +72,19 @@ public class AssignedLabelsToOrderElementController extends
return assignedLabelsToOrderElementModel.getLabels();
}
public List<Label> getInheritedLabels() {
return assignedLabelsToOrderElementModel.getInheritedLabels();
}
public void deleteLabel(Label label) {
assignedLabelsToOrderElementModel.deleteLabel(label);
Util.reloadBindings(directLabels);
}
public void openWindow(IOrderElementModel orderElementModel) {
assignedLabelsToOrderElementModel.init(orderElementModel
.getOrderElement());
Util.reloadBindings(self);
}
}

View file

@ -2,6 +2,7 @@ package org.navalplanner.web.orders;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.navalplanner.business.labels.daos.ILabelDAO;
import org.navalplanner.business.labels.daos.ILabelTypeDAO;
@ -9,6 +10,7 @@ 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.navalplanner.business.orders.entities.OrderLineGroup;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
@ -26,31 +28,42 @@ public class AssignedLabelsToOrderElementModel implements
@Autowired
IOrderElementDAO orderDAO;
OrderElement orderElement;
@Autowired
ILabelTypeDAO labelTypeDAO;
@Autowired
ILabelDAO labelDAO;
@Override
public OrderElement getOrderElement() {
return orderElement;
}
OrderElement orderElement;
@Override
public void setOrderElement(OrderElement orderElement) {
@Transactional(readOnly = true)
public void init(OrderElement orderElement) {
// orderDAO.save(orderElement);
this.orderElement = orderElement;
reattachOrderElement(this.orderElement);
}
private void reattachLabels() {
private void reattachOrderElement(OrderElement orderElement) {
orderDAO.save(orderElement);
orderElement.getName();
if (orderElement.getParent() != null) {
orderElement.getParent().getName();
}
reattachLabels(orderElement.getLabels());
}
private void reattachLabels(Set<Label> labels) {
for (Label label : labels) {
label.getName();
label.getType().getName();
}
}
@Transactional(readOnly = true)
public List<Label> getLabels() {
List<Label> result = new ArrayList<Label>();
if (orderElement.getLabels() != null) {
if (orderElement != null && orderElement.getLabels() != null) {
result.addAll(orderElement.getLabels());
}
return result;
@ -72,4 +85,34 @@ public class AssignedLabelsToOrderElementModel implements
public void deleteLabel(Label label) {
orderElement.removeLabel(label);
}
@Override
@Transactional(readOnly = true)
public List<Label> getInheritedLabels() {
System.out.println("### getInheritedLabels");
List<Label> result = new ArrayList<Label>();
if (orderElement != null) {
OrderLineGroup parent = orderElement.getParent();
while (parent != null) {
reattachOrderElement(parent);
// System.out.println("### labels: " + parent.getLabels());
result.addAll(parent.getLabels());
parent = parent.getParent();
}
}
return result;
}
@Override
public OrderElement getOrderElement() {
return orderElement;
}
@Override
public void setOrderElement(OrderElement orderElement) {
this.orderElement = orderElement;
}
}

View file

@ -52,4 +52,12 @@ public interface IAssignedLabelsToOrderElementModel {
*/
void deleteLabel(Label label);
/**
*
* @return
*/
List<Label> getInheritedLabels();
void init(OrderElement orderElement);
}

View file

@ -199,7 +199,6 @@ public class OrderElementController extends GenericForwardComposer {
throws Exception {
assignedLabelsController = new AssignedLabelsToOrderElementController();
assignedLabelsController.doAfterCompose(comp);
assignedLabelsController.setOrderElement(getOrderElement());
}
private void setupManageOrderElementAdvancesController(Component comp)
@ -222,6 +221,7 @@ public class OrderElementController extends GenericForwardComposer {
asignedHoursController.openWindow(model);
manageOrderElementAdvancesController.openWindow(model);
assignedLabelsController.openWindow(model);
// If is a container
if (orderElement instanceof OrderLineGroup) {

View file

@ -2,15 +2,15 @@
<!-- Indirect labels -->
<vbox>
<label value="${i18n:_('Indirect labels')}" />
<grid>
<grid id="inheritedLabels" model="@{assignedLabelsController.inheritedLabels}">
<columns>
<column label="${i18n:_('Label type')}" />
<column label="${i18n:_('Value')}" />
</columns>
<rows>
<row>
<label value=""/>
<label value=""/>
<row self="@{each='label'}" value="@{label}">
<label value="@{label.type.name}" />
<label value="@{label.name}"/>
</row>
</rows>
</grid>