[Bug #644] Not allow resource type.

It's necessary to execute this statement to migrate previous criterion
types associated with resource.
update criteriontype set resource = resource -1 where resource > 0;

FEA: ItEr60S04ValidacionEProbasFuncionaisItEr59S04
This commit is contained in:
Óscar González Fernández 2010-09-17 16:56:48 +02:00
parent 1131c504c6
commit 276c152961
21 changed files with 36 additions and 55 deletions

View file

@ -475,9 +475,9 @@ public abstract class CriterionRequirementHandler<T, S, R> implements
for (CriterionRequirement requirement : requirements) {
ResourceEnum resourceTypeParent = requirement.getCriterion()
.getType().getResource();
if ((resourceTypeParent.equals(resourceType))
|| (resourceTypeParent.equals(ResourceEnum.RESOURCE)))
if (resourceTypeParent.equals(resourceType)) {
result.add(requirement);
}
}
return result;
}

View file

@ -30,6 +30,7 @@ import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.apache.commons.lang.Validate;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.validator.AssertTrue;
@ -181,10 +182,7 @@ public class HoursGroup extends BaseEntity implements Cloneable,
}
public void setResourceType(ResourceEnum resource) {
if ((resource != null) && (resource.equals(ResourceEnum.getDefault()))) {
throw new IllegalArgumentException(
_("the resource type should be Worker or Machine"));
}
Validate.notNull(resource);
this.resourceType = resource;
}

View file

@ -284,8 +284,7 @@ public class CriterionType extends IntegrationEntity implements
*/
@Override
public boolean criterionCanBeRelatedTo(Class<? extends Resource> klass) {
return ResourceEnum.RESOURCE.equals(getResource())
|| getResource().isAssignableFrom(klass);
return getResource().isAssignableFrom(klass);
}

View file

@ -123,10 +123,7 @@ public class Machine extends Resource {
@Override
protected boolean isCriterionSatisfactionOfCorrectType(
CriterionSatisfaction c) {
return super.isCriterionSatisfactionOfCorrectType(c) ||
c.getResourceType().equals(ResourceEnum.MACHINE);
return c.getResourceType().equals(ResourceEnum.MACHINE);
}
}

View file

@ -19,11 +19,11 @@
*/
package org.navalplanner.business.resources.entities;
import static org.navalplanner.business.i18n.I18nHelper._;
import java.util.Arrays;
import java.util.List;
import static org.navalplanner.business.i18n.I18nHelper._;
/**
* This class defines some criterion types known a priori<br />
* @author Óscar González Fernández <ogonzalez@igalia.com>
@ -37,7 +37,8 @@ public enum PredefinedCriterionTypes implements ICriterionType<Criterion> {
return WorkingRelationship.getCriterionNames();
}
},
LOCATION_GROUP(_("LOCATION_GROUP"), "Location where the resource work",false, true, true, ResourceEnum.RESOURCE) {
LOCATION_GROUP(_("LOCATION_GROUP"), "Location where the workers work",
false, true, true, ResourceEnum.WORKER) {
@Override
public List<String> getPredefined() {
return Arrays.asList();

View file

@ -1124,12 +1124,8 @@ public abstract class Resource extends IntegrationEntity {
return getFirstRepeatedCode(resourcesCostCategoryAssignments) == null;
}
protected boolean isCriterionSatisfactionOfCorrectType(
CriterionSatisfaction c) {
return c.getResourceType().equals(ResourceEnum.RESOURCE);
}
protected abstract boolean isCriterionSatisfactionOfCorrectType(
CriterionSatisfaction c);
protected IResourceDAO getIntegrationEntityDAO() {
return Registry.getResourceDAO();

View file

@ -29,7 +29,6 @@ import static org.navalplanner.business.i18n.I18nHelper._;
*/
public enum ResourceEnum {
RESOURCE(Resource.class, _("RESOURCE")),
WORKER(Worker.class, _("WORKER")),
MACHINE(Machine.class, _("MACHINE"));
@ -50,7 +49,7 @@ public enum ResourceEnum {
}
public static ResourceEnum getDefault() {
return RESOURCE;
return WORKER;
}
public String toString() {

View file

@ -172,9 +172,7 @@ public class Worker extends Resource {
@Override
protected boolean isCriterionSatisfactionOfCorrectType(
CriterionSatisfaction c) {
return super.isCriterionSatisfactionOfCorrectType(c) ||
c.getResourceType().equals(ResourceEnum.WORKER);
return c.getResourceType().equals(ResourceEnum.WORKER);
}

View file

@ -225,7 +225,7 @@ public class CriterionTypeDAOTest {
public void testGetCriterionTypesByResourceType() {
// Add RESOURCE criterionType
CriterionType criterionType = createValidCriterionType();
criterionType.setResource(ResourceEnum.RESOURCE);
criterionType.setResource(ResourceEnum.WORKER);
criterionTypeDAO.save(criterionType);
// Add WORKER criterionType
@ -235,7 +235,7 @@ public class CriterionTypeDAOTest {
// Get number of criterionTypes of type RESOURCE
List<ResourceEnum> resources = new ArrayList<ResourceEnum>();
resources.add(ResourceEnum.RESOURCE);
resources.add(ResourceEnum.WORKER);
List<CriterionType> criterions = criterionTypeDAO.getCriterionTypesByResources(resources);
int numberOfCriterionsOfTypeResource = criterions.size();

View file

@ -190,7 +190,7 @@ public class CriterionTest {
@Test
public void testCanBeRelatedTo() throws Exception {
assertTrue(PredefinedCriterionTypes.LOCATION_GROUP
.criterionCanBeRelatedTo(Resource.class));
.criterionCanBeRelatedTo(Worker.class));
assertTrue(PredefinedCriterionTypes.WORK_RELATIONSHIP
.criterionCanBeRelatedTo(Worker.class));
}

View file

@ -291,7 +291,6 @@ public class ResourceAllocationController extends GenericForwardComposer {
private static String asString(ResourceEnum resourceType) {
switch (resourceType) {
case RESOURCE:
case MACHINE:
case WORKER:
return _(resourceType.getDisplayName());

View file

@ -85,7 +85,6 @@ public class CompletedEstimatedHoursPerTaskModel implements ICompletedEstimatedH
private static List<ResourceEnum> applicableResources = new ArrayList<ResourceEnum>();
static {
applicableResources.add(ResourceEnum.RESOURCE);
applicableResources.add(ResourceEnum.WORKER);
}

View file

@ -73,7 +73,6 @@ public class HoursWorkedPerWorkerModel implements IHoursWorkedPerWorkerModel {
private static List<ResourceEnum> applicableResources = new ArrayList<ResourceEnum>();
static {
applicableResources.add(ResourceEnum.RESOURCE);
applicableResources.add(ResourceEnum.WORKER);
}

View file

@ -98,7 +98,6 @@ public class OrderCostsPerResourceModel implements IOrderCostsPerResourceModel {
private static List<ResourceEnum> applicableResources = new ArrayList<ResourceEnum>();
static {
applicableResources.add(ResourceEnum.RESOURCE);
applicableResources.add(ResourceEnum.WORKER);
}

View file

@ -40,10 +40,10 @@ import org.navalplanner.business.orders.entities.Order;
import org.navalplanner.business.orders.entities.OrderElement;
import org.navalplanner.business.planner.daos.ITaskElementDAO;
import org.navalplanner.business.planner.entities.Dependency;
import org.navalplanner.business.planner.entities.Dependency.Type;
import org.navalplanner.business.planner.entities.Task;
import org.navalplanner.business.planner.entities.TaskElement;
import org.navalplanner.business.planner.entities.TaskStatusEnum;
import org.navalplanner.business.planner.entities.Dependency.Type;
import org.navalplanner.business.reports.dtos.WorkingArrangementPerOrderDTO;
import org.navalplanner.business.reports.dtos.WorkingArrangementPerOrderDTO.DependencyWorkingArrangementDTO;
import org.navalplanner.business.resources.daos.ICriterionTypeDAO;
@ -98,7 +98,6 @@ public class WorkingArrangementsPerOrderModel implements
private static List<ResourceEnum> applicableResources = new ArrayList<ResourceEnum>();
static {
applicableResources.add(ResourceEnum.RESOURCE);
applicableResources.add(ResourceEnum.WORKER);
}

View file

@ -84,7 +84,6 @@ public class WorkingProgressPerTaskModel implements IWorkingProgressPerTaskModel
private static List<ResourceEnum> applicableResources = new ArrayList<ResourceEnum>();
static {
applicableResources.add(ResourceEnum.RESOURCE);
applicableResources.add(ResourceEnum.WORKER);
}

View file

@ -76,14 +76,12 @@ public class AssignedMachineCriterionsModel implements IAssignedMachineCriterion
private static List<ResourceEnum> applicableResources = new ArrayList<ResourceEnum>();
static {
applicableResources.add(ResourceEnum.RESOURCE);
applicableResources.add(ResourceEnum.MACHINE);
}
private static List<ResourceEnum> applicableWorkerResources = new ArrayList<ResourceEnum>();
static {
applicableWorkerResources.add(ResourceEnum.RESOURCE);
applicableWorkerResources.add(ResourceEnum.WORKER);
}

View file

@ -253,7 +253,6 @@ public class MachineModel implements IMachineModel {
HashSet<ResourceEnum> appliableToMachine =
new HashSet<ResourceEnum>();
appliableToMachine.add(ResourceEnum.MACHINE);
appliableToMachine.add(ResourceEnum.RESOURCE);
unit.addRequiredCriterion(criterion);
}

View file

@ -72,7 +72,7 @@ public class AssignedCriterionsModel implements IAssignedCriterionsModel {
private static List<ResourceEnum> applicableResources = new ArrayList<ResourceEnum>();
static {
applicableResources.add(ResourceEnum.RESOURCE);
applicableResources.add(ResourceEnum.WORKER);
applicableResources.add(ResourceEnum.WORKER);
}

View file

@ -42,9 +42,8 @@ public class ResourceEnumConverter {
static {
resourceEnumToDTO.put(ResourceEnum.RESOURCE, ResourceEnumDTO.RESOURCE);
resourceEnumFromDTO
.put(ResourceEnumDTO.RESOURCE, ResourceEnum.RESOURCE);
resourceEnumToDTO.put(ResourceEnum.WORKER, ResourceEnumDTO.RESOURCE);
resourceEnumFromDTO.put(ResourceEnumDTO.RESOURCE, ResourceEnum.WORKER);
resourceEnumToDTO.put(ResourceEnum.WORKER, ResourceEnumDTO.WORKER);
resourceEnumFromDTO.put(ResourceEnumDTO.WORKER, ResourceEnum.WORKER);

View file

@ -210,7 +210,7 @@ public class ResourceServiceTest {
public void testAddResourceWithCriterionSatisfactions() {
/* Create a criterion type. */
CriterionType ct = createCriterionType();
CriterionType ct = createCriterionType(ResourceEnum.MACHINE);
/* Create a resource DTO. */
MachineDTO m1 = new MachineDTO("name", "desc");
@ -286,7 +286,7 @@ public class ResourceServiceTest {
public void testAddResourceWithCriterionSatisfactionWithoutStartDate() {
/* Create a criterion type. */
CriterionType ct = createCriterionType();
CriterionType ct = createCriterionType(ResourceEnum.MACHINE);
/* Create a machine DTO. */
MachineDTO machineDTO = new MachineDTO("name", "desc");
@ -305,7 +305,7 @@ public class ResourceServiceTest {
public void testAddResourceWithCriterionSatisfactionWithNegativeInterval() {
/* Create a criterion type. */
CriterionType ct = createCriterionType();
CriterionType ct = createCriterionType(ResourceEnum.MACHINE);
/* Create a machine DTO. */
MachineDTO machineDTO = new MachineDTO("name", "desc");
@ -324,7 +324,7 @@ public class ResourceServiceTest {
public void testAddResourceWithOverlappingCriterionSatisfactionsAllowed() {
/* Create a criterion type. */
CriterionType ct = createCriterionType();
CriterionType ct = createCriterionType(ResourceEnum.MACHINE);
/*
* Create a machine DTO. OK, because
@ -346,8 +346,8 @@ public class ResourceServiceTest {
public void testAddResourceWithOverlappingCriterionSatisfactions() {
/* Create criterion types. */
CriterionType ct1 = createCriterionType();
CriterionType ct2 = createCriterionType(ResourceEnum.RESOURCE, false);
CriterionType ct1 = createCriterionType(ResourceEnum.MACHINE);
CriterionType ct2 = createCriterionType(ResourceEnum.MACHINE, false);
/*
* Create resource DTOs. Each resource contains one criterion
@ -732,13 +732,14 @@ public class ResourceServiceTest {
@Test
public void testUpdateResources() throws InstanceNotFoundException {
/* Create a criterion type and a cost category. */
CriterionType ct = createCriterionType();
CriterionType ctMachine = createCriterionType(ResourceEnum.MACHINE);
CriterionType ctWorker = createCriterionType(ResourceEnum.WORKER);
CostCategory costCategory = createCostCategory();
/* Create a machine DTO. */
MachineDTO m1 = new MachineDTO("name", "desc");
CriterionSatisfactionDTO m1s1 = new CriterionSatisfactionDTO(ct
CriterionSatisfactionDTO m1s1 = new CriterionSatisfactionDTO(
ctMachine
.getName(), "c1", getDate(2000, 1, 1), getDate(2000, 2, 1));
m1.criterionSatisfactions.add(m1s1);
ResourcesCostCategoryAssignmentDTO m1a1 = new ResourcesCostCategoryAssignmentDTO(
@ -749,7 +750,8 @@ public class ResourceServiceTest {
/* Create a worker DTO. */
String nif = getUniqueName();
WorkerDTO w1 = new WorkerDTO(getUniqueName(), "surname", nif);
CriterionSatisfactionDTO w1s1 = new CriterionSatisfactionDTO(ct
CriterionSatisfactionDTO w1s1 = new CriterionSatisfactionDTO(
ctWorker
.getName(), "c1", getDate(2000, 1, 1), getDate(2000, 2, 1));
w1.criterionSatisfactions.add(w1s1);
ResourcesCostCategoryAssignmentDTO w1a1 = new ResourcesCostCategoryAssignmentDTO(
@ -777,7 +779,8 @@ public class ResourceServiceTest {
WorkerDTO w1Updated = new WorkerDTO(w1.code, null, "surname"
+ "UPDATED", null);
CriterionSatisfactionDTO w1s2 = new CriterionSatisfactionDTO(ct
CriterionSatisfactionDTO w1s2 = new CriterionSatisfactionDTO(
ctWorker
.getName(), "c1", getDate(2000, 3, 1), getDate(2000, 4, 1));
w1Updated.criterionSatisfactions.add(w1s2);
ResourcesCostCategoryAssignmentDTO w1a1Updated = new ResourcesCostCategoryAssignmentDTO(
@ -819,7 +822,7 @@ public class ResourceServiceTest {
}
private CriterionType createCriterionType() {
return createCriterionType(ResourceEnum.RESOURCE, true);
return createCriterionType(ResourceEnum.WORKER, true);
}
private CriterionType createCriterionType(final ResourceEnum resourceType) {