[Bug #1187] Add filter by resources in TaskGroup filter in company Gantt view
FEA: ItEr75S04BugFixing
This commit is contained in:
parent
94edf7fd42
commit
628e065542
3 changed files with 77 additions and 2 deletions
|
|
@ -29,7 +29,7 @@ public enum TaskGroupFilterEnum implements IFilterEnum {
|
|||
|
||||
Criterion(_("Criterion")), Label(_("Label")), ExternalCompany(_("Customer")), State(
|
||||
_("State")), Code(_("Code")), CustomerReference(
|
||||
_("Customer Reference"));
|
||||
_("Customer Reference")), Resource(_("Resource"));
|
||||
/**
|
||||
* Forces to mark the string as needing translation
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ import org.navalplanner.business.orders.entities.OrderStatusEnum;
|
|||
import org.navalplanner.business.planner.entities.TaskGroup;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.CriterionType;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
|
||||
|
|
@ -59,6 +60,7 @@ public class TaskGroupsMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
fillWithFirstTenFiltersState();
|
||||
fillWihtFirstTenFiltersCodes();
|
||||
fillWihtFirstTenFiltersCustomerReferences();
|
||||
fillWithFirstTenFiltersResources();
|
||||
addNoneFilter();
|
||||
return getListMatching();
|
||||
}
|
||||
|
|
@ -152,6 +154,7 @@ public class TaskGroupsMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
searchInLabelTypes(filter);
|
||||
searchInExternalCompanies(filter);
|
||||
searchInOrderStatus(filter);
|
||||
searchInResources(filter);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -334,4 +337,43 @@ public class TaskGroupsMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
reference, reference));
|
||||
}
|
||||
|
||||
private List<FilterPair> fillWithFirstTenFiltersResources() {
|
||||
Map<Class<?>, List<Resource>> mapResources = databaseSnapshots
|
||||
.snapshotMapResources();
|
||||
Iterator<Class<?>> iteratorClass = mapResources.keySet().iterator();
|
||||
while (iteratorClass.hasNext() && getListMatching().size() < 10) {
|
||||
Class<?> className = iteratorClass.next();
|
||||
for (int i = 0; getListMatching().size() < 10
|
||||
&& i < mapResources.get(className).size(); i++) {
|
||||
Resource resource = mapResources.get(className).get(i);
|
||||
addResource(className, resource);
|
||||
}
|
||||
}
|
||||
return getListMatching();
|
||||
}
|
||||
|
||||
private void searchInResources(String filter) {
|
||||
Map<Class<?>, List<Resource>> mapResources = databaseSnapshots
|
||||
.snapshotMapResources();
|
||||
for (Class<?> className : mapResources.keySet()) {
|
||||
for (Resource resource : mapResources.get(className)) {
|
||||
String name = StringUtils.deleteWhitespace(resource.getName()
|
||||
.toLowerCase());
|
||||
if (name.contains(filter)) {
|
||||
addResource(className, resource);
|
||||
if ((filter.length() < 3) && (getListMatching().size() > 9)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addResource(Class className, Resource resource) {
|
||||
String pattern = resource.getName();
|
||||
getListMatching().add(
|
||||
new FilterPair(TaskGroupFilterEnum.Resource, className
|
||||
.getSimpleName(), pattern, resource));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,9 +29,11 @@ import org.navalplanner.business.orders.entities.OrderElement;
|
|||
import org.navalplanner.business.orders.entities.OrderStatusEnum;
|
||||
import org.navalplanner.business.planner.entities.GenericResourceAllocation;
|
||||
import org.navalplanner.business.planner.entities.ResourceAllocation;
|
||||
import org.navalplanner.business.planner.entities.SpecificResourceAllocation;
|
||||
import org.navalplanner.business.planner.entities.TaskElement;
|
||||
import org.navalplanner.business.planner.entities.TaskGroup;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
import org.navalplanner.web.common.components.finders.FilterPair;
|
||||
import org.navalplanner.web.common.components.finders.TaskGroupFilterEnum;
|
||||
import org.zkoss.ganttz.IPredicate;
|
||||
|
|
@ -102,6 +104,8 @@ public class TaskGroupPredicate implements IPredicate {
|
|||
return acceptCode(filter, taskGroup);
|
||||
case CustomerReference:
|
||||
return acceptCustomerReference(filter, taskGroup);
|
||||
case Resource:
|
||||
return acceptResource(filter, taskGroup);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
@ -249,4 +253,33 @@ public class TaskGroupPredicate implements IPredicate {
|
|||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
private boolean acceptResource(FilterPair filter, TaskElement taskElement) {
|
||||
Resource filterResource = (Resource) filter.getValue();
|
||||
return existResourceInTaskElementResourceAllocations(filterResource,
|
||||
taskElement);
|
||||
}
|
||||
|
||||
private boolean existResourceInTaskElementResourceAllocations(
|
||||
Resource filterResource, TaskElement taskElement) {
|
||||
for (ResourceAllocation<?> each : taskElement
|
||||
.getAllResourceAllocations()) {
|
||||
if (acceptsResourceInResourceAllocation(filterResource, each)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean acceptsResourceInResourceAllocation(
|
||||
Resource filterResource, ResourceAllocation<?> resourceAllocation) {
|
||||
if (resourceAllocation instanceof SpecificResourceAllocation) {
|
||||
Resource resource = ((SpecificResourceAllocation) resourceAllocation)
|
||||
.getResource();
|
||||
if (resource.getId().equals(filterResource.getId())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue