ItEr40S14CUVinculacionFormularioCalidadePlanificacion : Creation of domain classes TaskQualityForm and TaskQualityFormItem and its tests.
This commit is contained in:
parent
bb5a1927ea
commit
553439893e
6 changed files with 317 additions and 0 deletions
|
|
@ -31,6 +31,7 @@ import java.util.List;
|
|||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.hibernate.validator.InvalidValue;
|
||||
import org.hibernate.validator.NotEmpty;
|
||||
import org.hibernate.validator.Valid;
|
||||
import org.joda.time.LocalDate;
|
||||
|
|
@ -41,6 +42,7 @@ import org.navalplanner.business.advance.entities.IndirectAdvanceAssignment;
|
|||
import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssignmentForOrderElementException;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException;
|
||||
import org.navalplanner.business.common.BaseEntity;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.materials.entities.MaterialAssignment;
|
||||
import org.navalplanner.business.orders.entities.SchedulingState.ITypeChangedListener;
|
||||
|
|
@ -48,6 +50,8 @@ import org.navalplanner.business.orders.entities.SchedulingState.Type;
|
|||
import org.navalplanner.business.orders.entities.TaskSource.TaskSourceSynchronization;
|
||||
import org.navalplanner.business.planner.entities.Task;
|
||||
import org.navalplanner.business.planner.entities.TaskElement;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityForm;
|
||||
import org.navalplanner.business.qualityforms.entities.TaskQualityForm;
|
||||
import org.navalplanner.business.requirements.entities.CriterionRequirement;
|
||||
import org.navalplanner.business.requirements.entities.DirectCriterionRequirement;
|
||||
import org.navalplanner.business.requirements.entities.IndirectCriterionRequirement;
|
||||
|
|
@ -73,6 +77,8 @@ public abstract class OrderElement extends BaseEntity {
|
|||
|
||||
private Set<Label> labels = new HashSet<Label>();
|
||||
|
||||
private Set<TaskQualityForm> taskQualityForms = new HashSet<TaskQualityForm>();
|
||||
|
||||
@NotEmpty(message = "code not specified")
|
||||
private String code;
|
||||
|
||||
|
|
@ -693,4 +699,39 @@ public abstract class OrderElement extends BaseEntity {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Valid
|
||||
public Set<TaskQualityForm> getTaskQualityForms() {
|
||||
return Collections.unmodifiableSet(taskQualityForms);
|
||||
}
|
||||
|
||||
public void setTaskQualityFormItems(Set<TaskQualityForm> taskQualityForms) {
|
||||
this.taskQualityForms = taskQualityForms;
|
||||
}
|
||||
|
||||
public TaskQualityForm addTaskQualityForm(QualityForm qualityForm)
|
||||
throws ValidationException {
|
||||
ckeckUniqueQualityForm(qualityForm);
|
||||
TaskQualityForm taskQualityForm = TaskQualityForm.create(this,
|
||||
qualityForm);
|
||||
this.taskQualityForms.add(taskQualityForm);
|
||||
return taskQualityForm;
|
||||
}
|
||||
|
||||
public void remove(TaskQualityForm taskQualityForm) {
|
||||
this.taskQualityForms.remove(taskQualityForm);
|
||||
}
|
||||
|
||||
private void ckeckUniqueQualityForm(QualityForm qualityForm)
|
||||
throws ValidationException, IllegalArgumentException {
|
||||
Validate.notNull(qualityForm);
|
||||
for (TaskQualityForm taskQualityForm : getTaskQualityForms()) {
|
||||
if (qualityForm.equals(taskQualityForm.getQualityForm())) {
|
||||
throw new ValidationException(new InvalidValue(_(
|
||||
"{0} already exists", qualityForm.getName()),
|
||||
QualityForm.class, "name", qualityForm.getName(),
|
||||
qualityForm));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,77 @@
|
|||
package org.navalplanner.business.qualityforms.entities;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.hibernate.validator.NotNull;
|
||||
import org.hibernate.validator.Valid;
|
||||
import org.navalplanner.business.common.BaseEntity;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
|
||||
public class TaskQualityForm extends BaseEntity {
|
||||
|
||||
public static TaskQualityForm create(OrderElement orderElement,
|
||||
QualityForm qualityForm) {
|
||||
TaskQualityForm taskQualityForm = new TaskQualityForm(orderElement,
|
||||
qualityForm);
|
||||
taskQualityForm.setNewObject(true);
|
||||
return taskQualityForm;
|
||||
}
|
||||
|
||||
protected TaskQualityForm() {
|
||||
|
||||
}
|
||||
|
||||
private TaskQualityForm(OrderElement orderElement, QualityForm qualityForm) {
|
||||
this.orderElement = orderElement;
|
||||
this.qualityForm = qualityForm;
|
||||
createTaskQualityFormItems();
|
||||
}
|
||||
|
||||
private OrderElement orderElement;
|
||||
|
||||
private QualityForm qualityForm;
|
||||
|
||||
private List<TaskQualityFormItem> taskQualityFormItems = new ArrayList<TaskQualityFormItem>();
|
||||
|
||||
@Valid
|
||||
public List<TaskQualityFormItem> getTaskQualityFormItems() {
|
||||
return Collections.unmodifiableList(taskQualityFormItems);
|
||||
}
|
||||
|
||||
public void setTaskQualityFormItems(
|
||||
List<TaskQualityFormItem> taskQualityFormItems) {
|
||||
this.taskQualityFormItems = taskQualityFormItems;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public OrderElement getOrderElement() {
|
||||
return orderElement;
|
||||
}
|
||||
|
||||
public void setOrderElement(OrderElement orderElement) {
|
||||
this.orderElement = orderElement;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public QualityForm getQualityForm() {
|
||||
return qualityForm;
|
||||
}
|
||||
|
||||
public void setQualityForm(QualityForm qualityForm) {
|
||||
this.qualityForm = qualityForm;
|
||||
}
|
||||
|
||||
private void createTaskQualityFormItems() {
|
||||
Validate.notNull(qualityForm);
|
||||
for (QualityFormItem qualityFormItem : qualityForm
|
||||
.getQualityFormItems()) {
|
||||
TaskQualityFormItem taskQualityFormItem = TaskQualityFormItem
|
||||
.create(qualityFormItem);
|
||||
taskQualityFormItems.add(taskQualityFormItem);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
package org.navalplanner.business.qualityforms.entities;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.hibernate.validator.AssertTrue;
|
||||
import org.hibernate.validator.NotEmpty;
|
||||
import org.hibernate.validator.NotNull;
|
||||
import org.navalplanner.business.INewObject;
|
||||
|
||||
public class TaskQualityFormItem implements INewObject {
|
||||
|
||||
public final static String propertyName = "name";
|
||||
|
||||
public final static String propertyPercentage = "percentage";
|
||||
|
||||
static TaskQualityFormItem create(QualityFormItem qualityFormItem) {
|
||||
TaskQualityFormItem taskQualityFormItem = new TaskQualityFormItem(
|
||||
qualityFormItem);
|
||||
taskQualityFormItem.setNewObject(true);
|
||||
return taskQualityFormItem;
|
||||
}
|
||||
|
||||
public TaskQualityFormItem() {
|
||||
|
||||
}
|
||||
|
||||
private TaskQualityFormItem(QualityFormItem qualityFormItem) {
|
||||
Validate.notNull(qualityFormItem);
|
||||
setName(qualityFormItem.getName());
|
||||
setPosition(qualityFormItem.getPosition());
|
||||
setPercentage(qualityFormItem.getPercentage());
|
||||
}
|
||||
|
||||
private boolean newObject = false;
|
||||
|
||||
private String name;
|
||||
|
||||
private BigDecimal percentage;
|
||||
|
||||
private Integer position;
|
||||
|
||||
private Boolean passed = false;
|
||||
|
||||
private Date date;
|
||||
|
||||
@NotEmpty
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
private void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public BigDecimal getPercentage() {
|
||||
return percentage;
|
||||
}
|
||||
|
||||
private void setPercentage(BigDecimal percentage) {
|
||||
this.percentage = percentage;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Integer getPosition() {
|
||||
return position;
|
||||
}
|
||||
|
||||
private void setPosition(Integer position) {
|
||||
this.position = position;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Boolean getPassed() {
|
||||
return passed == null ? false : passed;
|
||||
}
|
||||
|
||||
public void setPassed(Boolean passed) {
|
||||
this.passed = passed;
|
||||
}
|
||||
|
||||
public Date getDate() {
|
||||
return date;
|
||||
}
|
||||
|
||||
public void setDate(Date date) {
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
public boolean isNewObject() {
|
||||
return newObject;
|
||||
}
|
||||
|
||||
private void setNewObject(boolean newObject) {
|
||||
this.newObject = newObject;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@AssertTrue(message = "percentage should be greater than 0% and less than 100%")
|
||||
public boolean checkConstraintQualityFormItemPercentage() {
|
||||
if (percentage == null)
|
||||
return true;
|
||||
if ((percentage.compareTo(new BigDecimal(100).setScale(2)) <= 0)
|
||||
&& (percentage.compareTo(new BigDecimal(0).setScale(2)) > 0)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -42,6 +42,11 @@
|
|||
<one-to-many class="org.navalplanner.business.materials.entities.MaterialAssignment" />
|
||||
</set>
|
||||
|
||||
<set name="taskQualityForms" cascade="all-delete-orphan" inverse="true">
|
||||
<key column="ORDER_ELEMENT_ID" not-null="true" />
|
||||
<one-to-many class="org.navalplanner.business.qualityforms.entities.TaskQualityForm" />
|
||||
</set>
|
||||
|
||||
<!-- Inverse navigation from OrderElement to OrderLineGroup -->
|
||||
<many-to-one name="parent" access="field" cascade="all"/>
|
||||
|
||||
|
|
|
|||
|
|
@ -31,4 +31,30 @@
|
|||
</list>
|
||||
</class>
|
||||
|
||||
<!-- TaskQualityForm -->
|
||||
<class name="TaskQualityForm" table="TASK_QUALITY_FORM">
|
||||
<id name="id" type="long" access="property">
|
||||
<generator class="hilo">
|
||||
<param name="max_lo">100</param>
|
||||
</generator>
|
||||
</id>
|
||||
<version name="version" access="property" type="long" />
|
||||
|
||||
<many-to-one name="qualityForm" class="QualityForm" column="QUALITY_FORM_ID"/>
|
||||
|
||||
<many-to-one name="orderElement" class="org.navalplanner.business.orders.entities.OrderElement" column="ORDER_ELEMENT_ID"/>
|
||||
|
||||
<list name="taskQualityFormItems" table="TASK_QUALITY_FORM_ITEMS">
|
||||
<key column="TASK_QUALITY_FORM_ID"/>
|
||||
<index column="idx"/>
|
||||
<composite-element class="org.navalplanner.business.qualityforms.entities.TaskQualityFormItem">
|
||||
<property name="name" access="field"/>
|
||||
<property name="percentage" access="field"/>
|
||||
<property name="position" access="field"/>
|
||||
<property name="passed" access="field"/>
|
||||
<property name="date" access="field"/>
|
||||
</composite-element>
|
||||
</list>
|
||||
</class>
|
||||
|
||||
</hibernate-mapping>
|
||||
|
|
|
|||
|
|
@ -49,10 +49,14 @@ import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
|
|||
import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssignmentForOrderElementException;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.orders.daos.IOrderElementDAO;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
import org.navalplanner.business.orders.entities.OrderLine;
|
||||
import org.navalplanner.business.orders.entities.OrderLineGroup;
|
||||
import org.navalplanner.business.qualityforms.daos.IQualityFormDAO;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityForm;
|
||||
import org.navalplanner.business.qualityforms.entities.TaskQualityForm;
|
||||
import org.navalplanner.business.test.orders.entities.OrderElementTest;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
|
|
@ -76,6 +80,9 @@ public class OrderElementDAOTest {
|
|||
defaultAdvanceTypesBootstrapListener.loadRequiredData();
|
||||
}
|
||||
|
||||
@Autowired
|
||||
IQualityFormDAO qualityFormDAO;
|
||||
|
||||
@Autowired
|
||||
private IOrderElementDAO orderElementDAO;
|
||||
|
||||
|
|
@ -334,4 +341,53 @@ public class OrderElementDAOTest {
|
|||
assertNull(found);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSaveAndRemoveTaskQualityForm() {
|
||||
OrderElement orderElement = OrderElementTest
|
||||
.givenOrderLineGroupWithTwoOrderLines(2000, 3000);
|
||||
QualityForm qualityForm = QualityForm.create(UUID.randomUUID()
|
||||
.toString(), UUID.randomUUID().toString());
|
||||
qualityFormDAO.save(qualityForm);
|
||||
TaskQualityForm taskQualityForm = orderElement
|
||||
.addTaskQualityForm(qualityForm);
|
||||
|
||||
orderElementDAO.save(orderElement);
|
||||
orderElementDAO.flush();
|
||||
assertThat(orderElement.getTaskQualityForms().size(), equalTo(1));
|
||||
|
||||
orderElement.remove(taskQualityForm);
|
||||
|
||||
orderElementDAO.save(orderElement);
|
||||
orderElementDAO.flush();
|
||||
assertThat(orderElement.getTaskQualityForms().size(), equalTo(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCheckUniqueQualityForm() {
|
||||
OrderElement orderElement = OrderElementTest
|
||||
.givenOrderLineGroupWithTwoOrderLines(2000, 3000);
|
||||
QualityForm qualityForm = QualityForm.create(UUID.randomUUID()
|
||||
.toString(), UUID.randomUUID().toString());
|
||||
qualityFormDAO.save(qualityForm);
|
||||
orderElement.addTaskQualityForm(qualityForm);
|
||||
|
||||
orderElementDAO.save(orderElement);
|
||||
orderElementDAO.flush();
|
||||
assertThat(orderElement.getTaskQualityForms().size(), equalTo(1));
|
||||
|
||||
try {
|
||||
orderElement.addTaskQualityForm(null);
|
||||
fail("It should throw an exception");
|
||||
} catch (IllegalArgumentException e) {
|
||||
//
|
||||
}
|
||||
|
||||
try {
|
||||
orderElement.addTaskQualityForm(qualityForm);
|
||||
fail("It should throw an exception");
|
||||
} catch (ValidationException e) {
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue