Extract labels map as a predefined snapshot
FEA: ItEr60S04ValidacionEProbasFuncionaisItEr59S04
This commit is contained in:
parent
053850a5d4
commit
df885861ca
4 changed files with 50 additions and 66 deletions
|
|
@ -29,6 +29,10 @@ import javax.annotation.PostConstruct;
|
|||
|
||||
import org.navalplanner.business.common.AdHocTransactionService;
|
||||
import org.navalplanner.business.common.IAdHocTransactionService;
|
||||
import org.navalplanner.business.labels.daos.ILabelDAO;
|
||||
import org.navalplanner.business.labels.daos.ILabelTypeDAO;
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.labels.entities.LabelType;
|
||||
import org.navalplanner.business.resources.daos.ICriterionDAO;
|
||||
import org.navalplanner.business.resources.daos.ICriterionTypeDAO;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
|
|
@ -58,11 +62,18 @@ public class PredefinedDatabaseSnapshots {
|
|||
return criterionsMap.getValue();
|
||||
}
|
||||
|
||||
private IAutoUpdatedSnapshot<Map<LabelType, List<Label>>> labelsMap;
|
||||
|
||||
public Map<LabelType, List<Label>> snapshotLabelsMap() {
|
||||
return labelsMap.getValue();
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
@SuppressWarnings("unused")
|
||||
private void postConstruct() {
|
||||
criterionsMap = snapshot(calculateCriterionsMap(), CriterionType.class,
|
||||
Criterion.class);
|
||||
labelsMap = snapshot(calculateLabelsMap(), LabelType.class, Label.class);
|
||||
}
|
||||
|
||||
private <T> IAutoUpdatedSnapshot<T> snapshot(Callable<T> callable,
|
||||
|
|
@ -100,4 +111,25 @@ public class PredefinedDatabaseSnapshots {
|
|||
};
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private ILabelTypeDAO labelTypeDAO;
|
||||
|
||||
@Autowired
|
||||
private ILabelDAO labelDAO;
|
||||
|
||||
private Callable<Map<LabelType, List<Label>>> calculateLabelsMap() {
|
||||
return new Callable<Map<LabelType,List<Label>>>() {
|
||||
@Override
|
||||
public Map<LabelType, List<Label>> call() throws Exception {
|
||||
Map<LabelType, List<Label>> result = new HashMap<LabelType, List<Label>>();
|
||||
for (LabelType labelType : labelTypeDAO.getAll()) {
|
||||
List<Label> labels = new ArrayList<Label>(
|
||||
labelDAO.findByType(labelType));
|
||||
result.put(labelType, labels);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,25 +20,17 @@
|
|||
|
||||
package org.navalplanner.web.common.components.finders;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.navalplanner.business.hibernate.notification.IAutoUpdatedSnapshot;
|
||||
import org.navalplanner.business.hibernate.notification.PredefinedDatabaseSnapshots;
|
||||
import org.navalplanner.business.hibernate.notification.ReloadOn;
|
||||
import org.navalplanner.business.labels.daos.ILabelDAO;
|
||||
import org.navalplanner.business.labels.daos.ILabelTypeDAO;
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.labels.entities.LabelType;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.CriterionType;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* Implements all the methods needed to search the criterion to filter the
|
||||
|
|
@ -49,42 +41,14 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
*/
|
||||
public class OrderElementsMultipleFiltersFinder extends MultipleFiltersFinder {
|
||||
|
||||
@Autowired
|
||||
private ILabelTypeDAO labelTypeDAO;
|
||||
|
||||
@Autowired
|
||||
private ILabelDAO labelDAO;
|
||||
|
||||
@Autowired
|
||||
private PredefinedDatabaseSnapshots databaseSnapshots;
|
||||
|
||||
private IAutoUpdatedSnapshot<Map<LabelType, List<Label>>> mapLabels;
|
||||
|
||||
protected OrderElementsMultipleFiltersFinder() {
|
||||
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public void init() {
|
||||
mapLabels = getSnapshotRefresher().takeSnapshot(
|
||||
onTransaction(getMapLabelsCallable()),
|
||||
ReloadOn.onChangeOf(LabelType.class, Label.class));
|
||||
}
|
||||
|
||||
private Callable<Map<LabelType, List<Label>>> getMapLabelsCallable() {
|
||||
return new Callable<Map<LabelType, List<Label>>>() {
|
||||
|
||||
@Override
|
||||
public Map<LabelType, List<Label>> call() throws Exception {
|
||||
Map<LabelType, List<Label>> result = new HashMap<LabelType, List<Label>>();
|
||||
for (LabelType labelType : labelTypeDAO.getAll()) {
|
||||
List<Label> labels = new ArrayList<Label>(
|
||||
labelDAO.findByType(labelType));
|
||||
result.put(labelType, labels);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public List<FilterPair> getFirstTenFilters() {
|
||||
|
|
@ -96,7 +60,7 @@ public class OrderElementsMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
}
|
||||
|
||||
private List<FilterPair> fillWithFirstTenFiltersLabels() {
|
||||
Map<LabelType, List<Label>> mapLabels = this.mapLabels.getValue();
|
||||
Map<LabelType, List<Label>> mapLabels = getLabelsMap();
|
||||
Iterator<LabelType> iteratorLabelType = mapLabels.keySet().iterator();
|
||||
while (iteratorLabelType.hasNext() && getListMatching().size() < 10) {
|
||||
LabelType type = iteratorLabelType.next();
|
||||
|
|
@ -112,6 +76,10 @@ public class OrderElementsMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
return getListMatching();
|
||||
}
|
||||
|
||||
private Map<LabelType, List<Label>> getLabelsMap() {
|
||||
return databaseSnapshots.snapshotLabelsMap();
|
||||
}
|
||||
|
||||
private List<FilterPair> fillWithFirstTenFiltersCriterions() {
|
||||
Map<CriterionType, List<Criterion>> mapCriterions = getMapCriterions();
|
||||
Iterator<CriterionType> iteratorCriterionType = mapCriterions.keySet()
|
||||
|
|
@ -191,7 +159,7 @@ public class OrderElementsMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
|
||||
private void searchInLabelTypes(String filter) {
|
||||
boolean limited = (filter.length() < 3);
|
||||
for (LabelType type : mapLabels.getValue().keySet()) {
|
||||
for (LabelType type : getLabelsMap().keySet()) {
|
||||
String name = StringUtils.deleteWhitespace(type.getName()
|
||||
.toLowerCase());
|
||||
if (name.contains(filter)) {
|
||||
|
|
@ -203,7 +171,7 @@ public class OrderElementsMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
}
|
||||
|
||||
private void searchInLabels(LabelType type, String filter) {
|
||||
for (Label label : mapLabels.getValue().get(type)) {
|
||||
for (Label label : getLabelsMap().get(type)) {
|
||||
String name = StringUtils.deleteWhitespace(label.getName()
|
||||
.toLowerCase());
|
||||
if (name.contains(filter)) {
|
||||
|
|
@ -216,7 +184,7 @@ public class OrderElementsMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
}
|
||||
|
||||
private void setFilterPairLabelType(LabelType type, boolean limited) {
|
||||
for (Label label : mapLabels.getValue().get(type)) {
|
||||
for (Label label : getLabelsMap().get(type)) {
|
||||
addLabel(type, label);
|
||||
if ((limited) && (getListMatching().size() > 9)) {
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@
|
|||
package org.navalplanner.web.common.components.finders;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -31,8 +30,6 @@ import org.navalplanner.business.common.IOnTransaction;
|
|||
import org.navalplanner.business.externalcompanies.daos.IExternalCompanyDAO;
|
||||
import org.navalplanner.business.externalcompanies.entities.ExternalCompany;
|
||||
import org.navalplanner.business.hibernate.notification.PredefinedDatabaseSnapshots;
|
||||
import org.navalplanner.business.labels.daos.ILabelDAO;
|
||||
import org.navalplanner.business.labels.daos.ILabelTypeDAO;
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.labels.entities.LabelType;
|
||||
import org.navalplanner.business.orders.daos.IOrderDAO;
|
||||
|
|
@ -54,23 +51,15 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
|
||||
public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
||||
|
||||
@Autowired
|
||||
private ILabelTypeDAO labelTypeDAO;
|
||||
|
||||
@Autowired
|
||||
private IExternalCompanyDAO externalCompanyDAO;
|
||||
|
||||
@Autowired
|
||||
private ILabelDAO labelDAO;
|
||||
|
||||
@Autowired
|
||||
private IOrderDAO orderDAO;
|
||||
|
||||
@Autowired
|
||||
private PredefinedDatabaseSnapshots databaseSnapshots;
|
||||
|
||||
private static final Map<LabelType, List<Label>> mapLabels = new HashMap<LabelType, List<Label>>();
|
||||
|
||||
private static final List<ExternalCompany> externalCompanies = new ArrayList<ExternalCompany>();
|
||||
|
||||
private static final List<String> customerReferences = new ArrayList<String>();
|
||||
|
|
@ -89,7 +78,6 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
.runOnReadOnlyTransaction(new IOnTransaction<Void>() {
|
||||
@Override
|
||||
public Void execute() {
|
||||
loadLabels();
|
||||
loadExternalCompanies();
|
||||
loadOrdersStatusEnums();
|
||||
loadOrderCodesAndCustomerReferences();
|
||||
|
|
@ -98,16 +86,6 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
});
|
||||
}
|
||||
|
||||
private void loadLabels() {
|
||||
mapLabels.clear();
|
||||
List<LabelType> labelTypes = labelTypeDAO.getAll();
|
||||
for (LabelType labelType : labelTypes) {
|
||||
List<Label> labels = new ArrayList<Label>(labelDAO
|
||||
.findByType(labelType));
|
||||
mapLabels.put(labelType, labels);
|
||||
}
|
||||
}
|
||||
|
||||
private void loadExternalCompanies() {
|
||||
externalCompanies.clear();
|
||||
externalCompanies.addAll(externalCompanyDAO
|
||||
|
|
@ -145,6 +123,8 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
}
|
||||
|
||||
private List<FilterPair> fillWithFirstTenFiltersLabels() {
|
||||
Map<LabelType, List<Label>> mapLabels = databaseSnapshots
|
||||
.snapshotLabelsMap();
|
||||
Iterator<LabelType> iteratorLabelType = mapLabels.keySet().iterator();
|
||||
while (iteratorLabelType.hasNext() && getListMatching().size() < 10) {
|
||||
LabelType type = iteratorLabelType.next();
|
||||
|
|
@ -276,6 +256,7 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
}
|
||||
|
||||
private void searchInLabelTypes(String filter) {
|
||||
Map<LabelType, List<Label>> mapLabels = getLabelsMap();
|
||||
boolean limited = (filter.length() < 3);
|
||||
for (LabelType type : mapLabels.keySet()) {
|
||||
String name = StringUtils.deleteWhitespace(type.getName()
|
||||
|
|
@ -288,8 +269,12 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
}
|
||||
}
|
||||
|
||||
private Map<LabelType, List<Label>> getLabelsMap() {
|
||||
return databaseSnapshots.snapshotLabelsMap();
|
||||
}
|
||||
|
||||
private void searchInLabels(LabelType type, String filter) {
|
||||
for (Label label : mapLabels.get(type)) {
|
||||
for (Label label : getLabelsMap().get(type)) {
|
||||
String name = StringUtils.deleteWhitespace(label.getName()
|
||||
.toLowerCase());
|
||||
if (name.contains(filter)) {
|
||||
|
|
@ -302,7 +287,7 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
}
|
||||
|
||||
private void setFilterPairLabelType(LabelType type, boolean limited) {
|
||||
for (Label label : mapLabels.get(type)) {
|
||||
for (Label label : getLabelsMap().get(type)) {
|
||||
addLabel(type, label);
|
||||
if ((limited) && (getListMatching().size() > 9)) {
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -48,8 +48,7 @@
|
|||
<bean id="ordersMultipleFiltersFinder" class="org.navalplanner.web.common.components.finders.OrdersMultipleFiltersFinder" scope="singleton"
|
||||
init-method="init" />
|
||||
|
||||
<bean id="orderElementsMultipleFiltersFinder" class="org.navalplanner.web.common.components.finders.OrderElementsMultipleFiltersFinder" scope="singleton"
|
||||
init-method="init" />
|
||||
<bean id="orderElementsMultipleFiltersFinder" class="org.navalplanner.web.common.components.finders.OrderElementsMultipleFiltersFinder" scope="singleton"/>
|
||||
|
||||
<bean id="resourcesMultipleFiltersFinder" class="org.navalplanner.web.common.components.finders.ResourcesMultipleFiltersFinder" scope="singleton"
|
||||
init-method="init" />
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue