diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/HoursModification.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/HoursModification.java
index 685517667..a14828a2d 100644
--- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/HoursModification.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/HoursModification.java
@@ -115,7 +115,7 @@ public abstract class HoursModification extends AllocationModification {
for (HoursModification each : result) {
each.withNewResources(resourceDAO);
}
- return result;
+ return ensureNoOneWithoutAssociatedResources(result, resourceDAO);
}
private final int hours;
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/ResourcesPerDayModification.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/ResourcesPerDayModification.java
index 799d17642..cbc6abda2 100644
--- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/ResourcesPerDayModification.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/allocationalgorithms/ResourcesPerDayModification.java
@@ -211,7 +211,7 @@ public abstract class ResourcesPerDayModification extends
for (ResourcesPerDayModification each : result) {
each.withNewResources(resourceDAO);
}
- return result;
+ return ensureNoOneWithoutAssociatedResources(result, resourceDAO);
}
public static ResourcesPerDayModification create(
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/IResourceSearchModel.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IResourcesSearcher.java
similarity index 95%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/IResourceSearchModel.java
rename to navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IResourcesSearcher.java
index a99c84cb5..faa9f0db2 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/IResourceSearchModel.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/IResourcesSearcher.java
@@ -19,7 +19,7 @@
* along with this program. If not, see .
*/
-package org.navalplanner.web.resources.search;
+package org.navalplanner.business.resources.daos;
import java.util.Collection;
import java.util.List;
@@ -39,7 +39,7 @@ import org.navalplanner.business.resources.entities.Worker;
*
* @author Diego Pino Garcia
*/
-public interface IResourceSearchModel {
+public interface IResourcesSearcher {
public interface IResourcesQuery {
@@ -84,7 +84,7 @@ public interface IResourceSearchModel {
* a type compatible for this query.
*
* For example if this query has been created by
- * {@link IResourceSearchModel#searchWorkers()} only the criteria with
+ * {@link IResourcesSearcher#searchWorkers()} only the criteria with
* criterion type such its resource is {@link ResourceEnum.WORKER}
* @return HashMap>
*/
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/ResourceSearchModel.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/ResourcesSearcher.java
similarity index 97%
rename from navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/ResourceSearchModel.java
rename to navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/ResourcesSearcher.java
index 639d3b2aa..e8941a7be 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/ResourceSearchModel.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/daos/ResourcesSearcher.java
@@ -19,7 +19,7 @@
* along with this program. If not, see .
*/
-package org.navalplanner.web.resources.search;
+package org.navalplanner.business.resources.daos;
import static org.hibernate.criterion.Restrictions.eq;
import static org.hibernate.criterion.Restrictions.ilike;
@@ -43,7 +43,6 @@ import org.hibernate.SessionFactory;
import org.hibernate.classic.Session;
import org.navalplanner.business.common.IAdHocTransactionService;
import org.navalplanner.business.common.IOnTransaction;
-import org.navalplanner.business.resources.daos.ICriterionDAO;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.CriterionType;
import org.navalplanner.business.resources.entities.Machine;
@@ -61,9 +60,9 @@ import org.springframework.stereotype.Service;
/**
* @author Diego Pino Garcia
*/
-public class ResourceSearchModel implements IResourceSearchModel {
+public class ResourcesSearcher implements IResourcesSearcher {
- private static final Log LOG = LogFactory.getLog(ResourceSearchModel.class);
+ private static final Log LOG = LogFactory.getLog(ResourcesSearcher.class);
@Autowired
private IAdHocTransactionService adHocTransactionService;
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/NewAllocationSelector.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/NewAllocationSelector.java
index 7a4deb9e5..41b5b29ea 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/NewAllocationSelector.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/NewAllocationSelector.java
@@ -23,13 +23,13 @@ package org.navalplanner.web.common.components;
import java.util.List;
+import org.navalplanner.business.resources.daos.IResourcesSearcher;
+import org.navalplanner.business.resources.daos.IResourcesSearcher.IResourcesQuery;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.ResourceEnum;
import org.navalplanner.business.resources.entities.Worker;
import org.navalplanner.web.I18nHelper;
import org.navalplanner.web.planner.allocation.INewAllocationsAdder;
-import org.navalplanner.web.resources.search.IResourceSearchModel;
-import org.navalplanner.web.resources.search.IResourceSearchModel.IResourcesQuery;
import org.navalplanner.web.resources.search.NewAllocationSelectorController;
import org.zkoss.zul.Radio;
import org.zkoss.zul.Radiogroup;
@@ -59,7 +59,7 @@ public class NewAllocationSelector extends AllocationSelector {
@Override
public IResourcesQuery> doQueryOn(
- IResourceSearchModel resourceSearchModel) {
+ IResourcesSearcher resourceSearchModel) {
return resourceSearchModel.searchWorkers();
}
@@ -81,7 +81,7 @@ public class NewAllocationSelector extends AllocationSelector {
@Override
public IResourcesQuery> doQueryOn(
- IResourceSearchModel resourceSearchModel) {
+ IResourcesSearcher resourceSearchModel) {
return resourceSearchModel.searchMachines();
}
@@ -100,7 +100,7 @@ public class NewAllocationSelector extends AllocationSelector {
@Override
public IResourcesQuery> doQueryOn(
- IResourceSearchModel resourceSearchModel) {
+ IResourcesSearcher resourceSearchModel) {
return resourceSearchModel.searchBoth();
}
@@ -142,7 +142,7 @@ public class NewAllocationSelector extends AllocationSelector {
INewAllocationsAdder allocationsAdder);
public abstract IResourcesQuery> doQueryOn(
- IResourceSearchModel resourceSearchModel);
+ IResourcesSearcher resourceSearchModel);
public abstract String asCaption(List criterions);
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java
index a610ff841..c3b24174b 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java
@@ -47,13 +47,13 @@ import org.navalplanner.business.planner.entities.Task;
import org.navalplanner.business.planner.entities.Task.ModifiedAllocation;
import org.navalplanner.business.planner.entities.allocationalgorithms.HoursModification;
import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
+import org.navalplanner.business.resources.daos.IResourcesSearcher;
import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.resources.entities.ResourceEnum;
import org.navalplanner.business.workingday.EffortDuration;
import org.navalplanner.business.workingday.ResourcesPerDay;
import org.navalplanner.web.common.Util;
import org.navalplanner.web.planner.allocation.ResourceAllocationController.DerivedAllocationColumn;
-import org.navalplanner.web.resources.search.IResourceSearchModel;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zk.ui.event.EventListener;
@@ -185,7 +185,7 @@ public abstract class AllocationRow {
public static List toRows(
Collection extends ResourceAllocation>> resourceAllocations,
- IResourceSearchModel searchModel) {
+ IResourcesSearcher searchModel) {
List result = new ArrayList();
result.addAll(GenericAllocationRow.toGenericAllocations(
resourceAllocations, searchModel));
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/GenericAllocationRow.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/GenericAllocationRow.java
index 51ca57e58..08a87c26e 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/GenericAllocationRow.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/GenericAllocationRow.java
@@ -36,12 +36,12 @@ import org.navalplanner.business.planner.entities.ResourceAllocation;
import org.navalplanner.business.planner.entities.Task;
import org.navalplanner.business.planner.entities.allocationalgorithms.HoursModification;
import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
+import org.navalplanner.business.resources.daos.IResourcesSearcher;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.resources.entities.ResourceEnum;
import org.navalplanner.business.resources.entities.ResourceType;
import org.navalplanner.business.workingday.ResourcesPerDay;
-import org.navalplanner.web.resources.search.IResourceSearchModel;
/**
* The information required for creating a {@link GenericResourceAllocation}
@@ -72,7 +72,7 @@ public class GenericAllocationRow extends AllocationRow {
public static GenericAllocationRow from(
GenericResourceAllocation resourceAllocation,
- IResourceSearchModel searchModel) {
+ IResourcesSearcher searchModel) {
GenericAllocationRow result = createDefault(resourceAllocation
.getResourceType());
result.setOrigin(resourceAllocation);
@@ -105,7 +105,7 @@ public class GenericAllocationRow extends AllocationRow {
public static Collection toGenericAllocations(
Collection extends ResourceAllocation>> resourceAllocations,
- IResourceSearchModel searchModel) {
+ IResourcesSearcher searchModel) {
ArrayList result = new ArrayList();
for (ResourceAllocation> resourceAllocation : resourceAllocations) {
if (resourceAllocation instanceof GenericResourceAllocation) {
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationModel.java
index 50354eade..debaa778d 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationModel.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationModel.java
@@ -46,6 +46,7 @@ import org.navalplanner.business.planner.entities.TaskElement;
import org.navalplanner.business.planner.entities.DerivedAllocationGenerator.IWorkerFinder;
import org.navalplanner.business.resources.daos.ICriterionDAO;
import org.navalplanner.business.resources.daos.IResourceDAO;
+import org.navalplanner.business.resources.daos.IResourcesSearcher;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.CriterionSatisfaction;
import org.navalplanner.business.resources.entities.CriterionType;
@@ -55,7 +56,6 @@ import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.resources.entities.ResourceEnum;
import org.navalplanner.business.resources.entities.Worker;
import org.navalplanner.web.planner.order.PlanningState;
-import org.navalplanner.web.resources.search.IResourceSearchModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
@@ -80,7 +80,7 @@ public class ResourceAllocationModel implements IResourceAllocationModel {
private IResourceDAO resourceDAO;
@Autowired
- private IResourceSearchModel searchModel;
+ private IResourcesSearcher searchModel;
@Autowired
private IHoursGroupDAO hoursGroupDAO;
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/LoadPeriodGenerator.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/LoadPeriodGenerator.java
index 5c0bda181..3eb9e842c 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/LoadPeriodGenerator.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/LoadPeriodGenerator.java
@@ -35,13 +35,13 @@ import org.apache.commons.lang.math.Fraction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.navalplanner.business.planner.entities.ResourceAllocation;
+import org.navalplanner.business.resources.daos.IResourcesSearcher;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.CriterionCompounder;
import org.navalplanner.business.resources.entities.ICriterion;
import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.workingday.EffortDuration;
import org.navalplanner.business.workingday.IntraDayDate;
-import org.navalplanner.web.resources.search.IResourceSearchModel;
import org.zkoss.ganttz.data.resourceload.LoadLevel;
import org.zkoss.ganttz.data.resourceload.LoadPeriod;
@@ -91,7 +91,7 @@ abstract class LoadPeriodGenerator {
}
public static LoadPeriodGeneratorFactory onCriterion(
- final Criterion criterion, final IResourceSearchModel resourceSearch) {
+ final Criterion criterion, final IResourcesSearcher resourceSearch) {
final List potentialResources = resourceSearch.searchBoth()
.byCriteria(Collections.singletonList(criterion)).execute();
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java
index 9fb5c359a..ed8656344 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java
@@ -55,6 +55,7 @@ import org.navalplanner.business.planner.entities.Task;
import org.navalplanner.business.planner.entities.TaskElement;
import org.navalplanner.business.resources.daos.ICriterionDAO;
import org.navalplanner.business.resources.daos.IResourceDAO;
+import org.navalplanner.business.resources.daos.IResourcesSearcher;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.scenarios.IScenarioManager;
@@ -65,7 +66,6 @@ import org.navalplanner.business.users.entities.OrderAuthorizationType;
import org.navalplanner.business.users.entities.User;
import org.navalplanner.business.users.entities.UserRole;
import org.navalplanner.web.calendars.BaseCalendarModel;
-import org.navalplanner.web.resources.search.IResourceSearchModel;
import org.navalplanner.web.security.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
@@ -86,7 +86,7 @@ public class ResourceLoadModel implements IResourceLoadModel {
private IResourceDAO resourcesDAO;
@Autowired
- private IResourceSearchModel resourcesSearchModel;
+ private IResourcesSearcher resourcesSearchModel;
@Autowired
private ICriterionDAO criterionDAO;
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/AllocationSelectorController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/AllocationSelectorController.java
index 5b47f3a4b..f83649fce 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/AllocationSelectorController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/AllocationSelectorController.java
@@ -23,6 +23,7 @@ package org.navalplanner.web.resources.search;
import java.util.List;
+import org.navalplanner.business.resources.daos.IResourcesSearcher;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.web.common.components.ResourceAllocationBehaviour;
@@ -38,7 +39,7 @@ public abstract class AllocationSelectorController extends
GenericForwardComposer {
@Autowired
- protected IResourceSearchModel resourceSearchModel;
+ protected IResourcesSearcher resourceSearchModel;
protected ResourceAllocationBehaviour behaviour;
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorComboController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorComboController.java
index 5065881a0..425eed251 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorComboController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorComboController.java
@@ -24,6 +24,7 @@ package org.navalplanner.web.resources.search;
import java.util.ArrayList;
import java.util.List;
+import org.navalplanner.business.resources.daos.IResourcesSearcher.IResourcesQuery;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.resources.entities.ResourceEnum;
@@ -32,7 +33,6 @@ import org.navalplanner.web.common.components.bandboxsearch.BandboxMultipleSearc
import org.navalplanner.web.common.components.finders.FilterPair;
import org.navalplanner.web.common.components.finders.ResourceAllocationFilterEnum;
import org.navalplanner.web.planner.allocation.INewAllocationsAdder;
-import org.navalplanner.web.resources.search.IResourceSearchModel.IResourcesQuery;
import org.zkoss.zk.ui.Component;
/**
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorController.java
index 6fbdf2e8f..c07efbf70 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorController.java
@@ -32,6 +32,7 @@ import java.util.Map.Entry;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
+import org.navalplanner.business.resources.daos.IResourcesSearcher.IResourcesQuery;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.CriterionType;
import org.navalplanner.business.resources.entities.Resource;
@@ -40,7 +41,6 @@ import org.navalplanner.web.common.Util;
import org.navalplanner.web.common.components.NewAllocationSelector.AllocationType;
import org.navalplanner.web.common.components.ResourceAllocationBehaviour;
import org.navalplanner.web.planner.allocation.INewAllocationsAdder;
-import org.navalplanner.web.resources.search.IResourceSearchModel.IResourcesQuery;
import org.zkoss.lang.Objects;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;