Extract workers list as a predefined snapshot

FEA: ItEr60S04ValidacionEProbasFuncionaisItEr59S04
This commit is contained in:
Óscar González Fernández 2010-09-09 13:02:05 +02:00
parent df885861ca
commit 86acf99c74
3 changed files with 31 additions and 26 deletions

View file

@ -35,8 +35,10 @@ 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.daos.IWorkerDAO;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.CriterionType;
import org.navalplanner.business.resources.entities.Worker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
@ -68,12 +70,19 @@ public class PredefinedDatabaseSnapshots {
return labelsMap.getValue();
}
private IAutoUpdatedSnapshot<List<Worker>> listWorkers;
public List<Worker> snapshotListWorkers() {
return listWorkers.getValue();
}
@PostConstruct
@SuppressWarnings("unused")
private void postConstruct() {
criterionsMap = snapshot(calculateCriterionsMap(), CriterionType.class,
Criterion.class);
labelsMap = snapshot(calculateLabelsMap(), LabelType.class, Label.class);
listWorkers = snapshot(calculateWorkers(), Worker.class);
}
private <T> IAutoUpdatedSnapshot<T> snapshot(Callable<T> callable,
@ -132,4 +141,17 @@ public class PredefinedDatabaseSnapshots {
};
}
@Autowired
private IWorkerDAO workerDAO;
private Callable<List<Worker>> calculateWorkers() {
return new Callable<List<Worker>>() {
@Override
public List<Worker> call() throws Exception {
return workerDAO.getAll();
}
};
}
}

View file

@ -22,23 +22,18 @@ package org.navalplanner.web.common.components.finders;
import static org.navalplanner.web.I18nHelper._;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.navalplanner.business.common.IOnTransaction;
import org.navalplanner.business.resources.daos.IWorkerDAO;
import org.navalplanner.business.hibernate.notification.PredefinedDatabaseSnapshots;
import org.navalplanner.business.resources.entities.Worker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
public class WorkerMultipleFiltersFinder extends MultipleFiltersFinder {
@Autowired
private IWorkerDAO workerDAO;
private static final List<Worker> workerList = new ArrayList<Worker>();
private PredefinedDatabaseSnapshots databaseSnapshots;
private IFilterEnum workerFilterEnum = new IFilterEnum() {
@Override
@ -47,27 +42,12 @@ public class WorkerMultipleFiltersFinder extends MultipleFiltersFinder {
}
};
@Transactional(readOnly = true)
public void init() {
getAdHocTransactionService()
.runOnReadOnlyTransaction(new IOnTransaction<Void>() {
@Override
public Void execute() {
loadWorkers();
return null;
}
});
}
@Transactional(readOnly = true)
private void loadWorkers() {
workerList.clear();
workerList.addAll(workerDAO.getAll());
}
@Override
public List<FilterPair> getFirstTenFilters() {
Iterator<Worker> iteratorWorker = workerList.iterator();
Iterator<Worker> iteratorWorker = getListWorkers().iterator();
while(iteratorWorker.hasNext() && getListMatching().size() < 10) {
Worker worker = iteratorWorker.next();
getListMatching().add(new FilterPair(
@ -77,6 +57,10 @@ public class WorkerMultipleFiltersFinder extends MultipleFiltersFinder {
return getListMatching();
}
private List<Worker> getListWorkers() {
return databaseSnapshots.snapshotListWorkers();
}
@Override
public List<FilterPair> getMatching(String filter) {
getListMatching().clear();
@ -90,7 +74,7 @@ public class WorkerMultipleFiltersFinder extends MultipleFiltersFinder {
}
private void searchInWorkers(String filter) {
boolean limited = (filter.length() < 3);
for(Worker worker : workerList) {
for (Worker worker : getListWorkers()) {
String name = StringUtils.deleteWhitespace(
worker.getShortDescription().toLowerCase());
if(name.contains(filter)) {

View file

@ -59,8 +59,7 @@
<bean id="nonLimitingResourceAllocationMultipleFiltersFinder" class="org.navalplanner.web.common.components.finders.NonLimitingResourceAllocationMultipleFiltersFinder" scope="singleton"
init-method="init" />
<bean id="workerMultipleFiltersFinder" class="org.navalplanner.web.common.components.finders.WorkerMultipleFiltersFinder" scope="singleton"
init-method="init" />
<bean id="workerMultipleFiltersFinder" class="org.navalplanner.web.common.components.finders.WorkerMultipleFiltersFinder" scope="singleton"/>
<bean id="criterionMultipleFiltersFinder" class="org.navalplanner.web.common.components.finders.CriterionMultipleFiltersFinder" scope="singleton"
init-method="init" />