ItEr42S17CUGravacionModelosUnidadesTraballoItEr41S20: MaterialAssignments are converted into MaterialAssignmentTemplates when converting an OrderElement into an OrderElementTemplate

This commit is contained in:
Óscar González Fernández 2010-01-06 19:15:32 +01:00
parent 3b7d799e8e
commit c62a1152ea
4 changed files with 30 additions and 6 deletions

View file

@ -69,7 +69,7 @@ public class MaterialAssignment extends BaseEntity implements Comparable {
}
@Valid
private MaterialInfo getMaterialInfo() {
public MaterialInfo getMaterialInfo() {
if (materialInfo == null) {
materialInfo = new MaterialInfo();
}

View file

@ -48,6 +48,14 @@ public class MaterialAssignmentTemplate extends BaseEntity {
return result;
}
public static MaterialAssignmentTemplate copyFrom(
MaterialAssignment assignment, OrderElementTemplate destination) {
MaterialAssignmentTemplate result = new MaterialAssignmentTemplate();
result.materialInfo = assignment.getMaterialInfo().copy();
result.orderElementTemplate = destination;
return result;
}
private MaterialInfo materialInfo = new MaterialInfo();
private OrderElementTemplate orderElementTemplate;
@ -67,11 +75,6 @@ public class MaterialAssignmentTemplate extends BaseEntity {
return orderElementTemplate;
}
public void setOrderElementTemplate(
OrderElementTemplate orderElementTemplate) {
this.orderElementTemplate = orderElementTemplate;
}
public Material getMaterial() {
return getMaterialInfo().getMaterial();
}

View file

@ -62,4 +62,12 @@ public class MaterialInfo {
this.unitPrice = unitPrice;
}
public MaterialInfo copy() {
MaterialInfo result = new MaterialInfo();
result.setMaterial(getMaterial());
result.setUnits(getUnits());
result.setUnitPrice(getUnitPrice());
return result;
}
}

View file

@ -19,6 +19,7 @@
*/
package org.navalplanner.business.templates.entities;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
@ -31,6 +32,7 @@ import org.hibernate.validator.Valid;
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.navalplanner.business.common.BaseEntity;
import org.navalplanner.business.materials.entities.MaterialAssignment;
import org.navalplanner.business.materials.entities.MaterialAssignmentTemplate;
import org.navalplanner.business.orders.entities.InfoComponent;
import org.navalplanner.business.orders.entities.Order;
@ -52,10 +54,21 @@ public abstract class OrderElementTemplate extends BaseEntity implements
.getInitDate());
Days fromBeginningToEnd = daysBetween(order.getDeadline(), origin
.getDeadline());
beingBuilt.materialAssignments = copyMaterialAssignmentsFrom(beingBuilt, origin
.getMaterialAssignments());
return create(beingBuilt, infoComponentCopied,
fromBeginningToStart, fromBeginningToEnd);
}
private static Set<MaterialAssignmentTemplate> copyMaterialAssignmentsFrom(OrderElementTemplate beingBuilt,
Collection<? extends MaterialAssignment> assignments) {
Set<MaterialAssignmentTemplate> result = new HashSet<MaterialAssignmentTemplate>();
for (MaterialAssignment each : assignments) {
result.add(MaterialAssignmentTemplate.copyFrom(each, beingBuilt));
}
return result;
}
private static <T extends OrderElementTemplate> T create(T beingBuilt,
InfoComponent infoComponentCopied, Days fromBeginningToStart,
Days fromBeginningToEnd) {