ItEr29S14ProcuraOrganizacionsTraballo: Move cacheLabels to OrderModel
This commit is contained in:
parent
8860ca1795
commit
4f6709d6a7
5 changed files with 107 additions and 68 deletions
|
|
@ -61,8 +61,6 @@ public class AssignedLabelsToOrderElementModel implements
|
|||
|
||||
IOrderModel orderModel;
|
||||
|
||||
Set<Label> cacheLabels = new HashSet<Label>();
|
||||
|
||||
@Override
|
||||
public OrderElement getOrderElement() {
|
||||
return orderElement;
|
||||
|
|
@ -76,20 +74,10 @@ public class AssignedLabelsToOrderElementModel implements
|
|||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public void init(OrderElement orderElement) {
|
||||
initializeCacheLabels();
|
||||
this.orderElement = orderElement;
|
||||
initializeOrderElement(this.orderElement);
|
||||
}
|
||||
|
||||
private void initializeCacheLabels() {
|
||||
if (cacheLabels.isEmpty()) {
|
||||
cacheLabels = new HashSet<Label>();
|
||||
final List<Label> labels = labelDAO.getAll();
|
||||
initializeLabels(labels);
|
||||
cacheLabels.addAll(labels);
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeOrderElement(OrderElement orderElement) {
|
||||
reattachLabels();
|
||||
orderDAO.save(orderElement);
|
||||
|
|
@ -100,6 +88,12 @@ public class AssignedLabelsToOrderElementModel implements
|
|||
initializeLabels(orderElement.getLabels());
|
||||
}
|
||||
|
||||
private void reattachLabels() {
|
||||
for (Label label : orderModel.getLabels()) {
|
||||
labelDAO.save(label);
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeLabels(Collection<Label> labels) {
|
||||
for (Label label : labels) {
|
||||
initializeLabel(label);
|
||||
|
|
@ -121,12 +115,6 @@ public class AssignedLabelsToOrderElementModel implements
|
|||
return result;
|
||||
}
|
||||
|
||||
private void reattachLabels() {
|
||||
for (Label label : cacheLabels) {
|
||||
labelDAO.save(label);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<Label> getInheritedLabels() {
|
||||
|
|
@ -147,7 +135,7 @@ public class AssignedLabelsToOrderElementModel implements
|
|||
public Label createLabel(String labelName, LabelType labelType) {
|
||||
Label label = Label.create(labelName);
|
||||
label.setType(labelType);
|
||||
cacheLabels.add(label);
|
||||
orderModel.addLabel(label);
|
||||
return label;
|
||||
}
|
||||
|
||||
|
|
@ -171,7 +159,6 @@ public class AssignedLabelsToOrderElementModel implements
|
|||
Label label = findLabelByNameAndTypeName(labelName, labelType.getName());
|
||||
if (label != null) {
|
||||
initializeLabel(label);
|
||||
cacheLabels.add(label);
|
||||
}
|
||||
return label;
|
||||
}
|
||||
|
|
@ -185,7 +172,7 @@ public class AssignedLabelsToOrderElementModel implements
|
|||
*/
|
||||
private Label findLabelByNameAndTypeName(String labelName,
|
||||
String labelTypeName) {
|
||||
for (Label label : cacheLabels) {
|
||||
for (Label label : orderModel.getLabels()) {
|
||||
if (label.getName().equals(labelName)
|
||||
&& label.getType().getName().equals(labelTypeName)) {
|
||||
return label;
|
||||
|
|
@ -206,16 +193,6 @@ public class AssignedLabelsToOrderElementModel implements
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<Label> getAllLabels() {
|
||||
reattachLabels();
|
||||
final List<Label> labels = new ArrayList<Label>();
|
||||
labels.addAll(cacheLabels);
|
||||
initializeLabels(labels);
|
||||
return labels;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public void cancel() {
|
||||
|
|
@ -244,4 +221,9 @@ public class AssignedLabelsToOrderElementModel implements
|
|||
public void setOrderModel(IOrderModel orderModel) {
|
||||
this.orderModel = orderModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Label> getAllLabels() {
|
||||
return (orderModel != null) ? orderModel.getLabels() : new ArrayList<Label>();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@ package org.navalplanner.web.orders;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import javax.sql.rowset.Predicate;
|
||||
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.orders.entities.IOrderLineGroup;
|
||||
|
|
@ -31,39 +33,63 @@ import org.navalplanner.business.planner.entities.TaskElement;
|
|||
|
||||
/**
|
||||
* Contract for {@link OrderModel}<br />
|
||||
*
|
||||
* @author Óscar González Fernández <ogonzalez@igalia.com>
|
||||
* @author Diego Pino García <dpino@igalia.com>
|
||||
*/
|
||||
public interface IOrderModel {
|
||||
|
||||
List<Order> getOrders();
|
||||
/**
|
||||
* Adds {@link Label} to list of labels
|
||||
*
|
||||
* @param label
|
||||
*/
|
||||
void addLabel(Label label);
|
||||
|
||||
void prepareEditFor(Order order);
|
||||
|
||||
void prepareForCreate();
|
||||
|
||||
void save() throws ValidationException;
|
||||
|
||||
IOrderLineGroup getOrder();
|
||||
|
||||
void remove(Order order);
|
||||
|
||||
void prepareForRemove(Order order);
|
||||
|
||||
OrderElementTreeModel getOrderElementTreeModel();
|
||||
|
||||
IOrderElementModel getOrderElementModel(OrderElement orderElement);
|
||||
|
||||
void prepareForSchedule(Order order);
|
||||
|
||||
void schedule();
|
||||
|
||||
boolean isAlreadyScheduled(Order order);
|
||||
|
||||
void setOrder(Order order);
|
||||
/**
|
||||
* Adds a {@link Predicate} for filtering orders
|
||||
*
|
||||
* This filter is later consider by getOrderElementTreeModel
|
||||
*
|
||||
* @param label
|
||||
*/
|
||||
void addLabelPredicate(Label label);
|
||||
|
||||
TaskElement convertToInitialSchedule(OrderElement order);
|
||||
|
||||
void convertToScheduleAndSave(Order order);
|
||||
|
||||
void addLabelPredicate(Label label);
|
||||
/**
|
||||
* Returns a list of {@link Label}
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<Label> getLabels();
|
||||
|
||||
IOrderLineGroup getOrder();
|
||||
|
||||
IOrderElementModel getOrderElementModel(OrderElement orderElement);
|
||||
|
||||
OrderElementTreeModel getOrderElementTreeModel();
|
||||
|
||||
List<Order> getOrders();
|
||||
|
||||
boolean isAlreadyScheduled(Order order);
|
||||
|
||||
void prepareEditFor(Order order);
|
||||
|
||||
void prepareForCreate();
|
||||
|
||||
void prepareForRemove(Order order);
|
||||
|
||||
void prepareForSchedule(Order order);
|
||||
|
||||
void remove(Order order);
|
||||
|
||||
void save() throws ValidationException;
|
||||
|
||||
void schedule();
|
||||
|
||||
void setOrder(Order order);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,6 +77,10 @@ public class OrderElementTreeController extends GenericForwardComposer {
|
|||
|
||||
private final OrderElementController orderElementController;
|
||||
|
||||
public List<org.navalplanner.business.labels.entities.Label> getLabels() {
|
||||
return orderModel.getLabels();
|
||||
}
|
||||
|
||||
public OrderElementTreeitemRenderer getRenderer() {
|
||||
return renderer;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,8 +23,10 @@ package org.navalplanner.web.orders;
|
|||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
|
@ -101,6 +103,20 @@ public class OrderModel implements IOrderModel {
|
|||
@Autowired
|
||||
private IOrderElementDAO orderElementDAO;
|
||||
|
||||
Set<Label> cacheLabels = new HashSet<Label>();
|
||||
|
||||
@Override
|
||||
public List<Label> getLabels() {
|
||||
final List<Label> result = new ArrayList<Label>();
|
||||
result.addAll(cacheLabels);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addLabel(Label label) {
|
||||
cacheLabels.add(label);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<Order> getOrders() {
|
||||
|
|
@ -124,12 +140,33 @@ public class OrderModel implements IOrderModel {
|
|||
@Transactional(readOnly = true)
|
||||
public void prepareEditFor(Order order) {
|
||||
Validate.notNull(order);
|
||||
initializeCacheLabels();
|
||||
loadCriterions();
|
||||
this.order = getFromDB(order);
|
||||
this.orderElementTreeModel = new OrderElementTreeModel(this.order);
|
||||
forceLoadAdvanceAssignmentsAndMeasurements(this.order);
|
||||
}
|
||||
|
||||
private void initializeCacheLabels() {
|
||||
if (cacheLabels.isEmpty()) {
|
||||
cacheLabels = new HashSet<Label>();
|
||||
final List<Label> labels = labelDAO.getAll();
|
||||
initializeLabels(labels);
|
||||
cacheLabels.addAll(labels);
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeLabels(Collection<Label> labels) {
|
||||
for (Label label : labels) {
|
||||
initializeLabel(label);
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeLabel(Label label) {
|
||||
label.getName();
|
||||
label.getType().getName();
|
||||
}
|
||||
|
||||
private void forceLoadAdvanceAssignmentsAndMeasurements(
|
||||
OrderElement orderElement) {
|
||||
for (DirectAdvanceAssignment directAdvanceAssignment : orderElement
|
||||
|
|
@ -245,17 +282,6 @@ public class OrderModel implements IOrderModel {
|
|||
orderElementDAO.save(orderElement);
|
||||
}
|
||||
|
||||
private void initializeLabels(Set<Label> labels) {
|
||||
for (Label label : labels) {
|
||||
initializeLabel(label);
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeLabel(Label label) {
|
||||
label.getName();
|
||||
label.getType().getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public IOrderElementModel getOrderElementModel(OrderElement orderElement) {
|
||||
|
|
|
|||
|
|
@ -41,7 +41,8 @@
|
|||
<combobox id="cbFilterType">
|
||||
<comboitem label="Filter by Label" />
|
||||
</combobox>
|
||||
<bandboxSearch id="bdFilter" finder="LabelBandboxFinder" />
|
||||
<bandboxSearch id="bdFilter" finder="LabelBandboxFinder"
|
||||
model="@{orderElementTreeController.labels}"/>
|
||||
<button label="${i18n:_('Filter')}" style="margin-top: -4px"
|
||||
onClick="orderElementTreeController.onApplyFilter(event)"/>
|
||||
</hbox>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue