Extract some data as predefined snapshots from OrdersMultipleFiltersFinder
FEA: ItEr60S04ValidacionEProbasFuncionaisItEr59S04
This commit is contained in:
parent
f8709f32fa
commit
23d80600cd
3 changed files with 83 additions and 54 deletions
|
|
@ -31,10 +31,14 @@ import org.navalplanner.business.common.AdHocTransactionService;
|
|||
import org.navalplanner.business.common.IAdHocTransactionService;
|
||||
import org.navalplanner.business.costcategories.daos.ICostCategoryDAO;
|
||||
import org.navalplanner.business.costcategories.entities.CostCategory;
|
||||
import org.navalplanner.business.externalcompanies.daos.IExternalCompanyDAO;
|
||||
import org.navalplanner.business.externalcompanies.entities.ExternalCompany;
|
||||
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;
|
||||
import org.navalplanner.business.orders.entities.Order;
|
||||
import org.navalplanner.business.resources.daos.ICriterionDAO;
|
||||
import org.navalplanner.business.resources.daos.ICriterionTypeDAO;
|
||||
import org.navalplanner.business.resources.daos.IResourceDAO;
|
||||
|
|
@ -100,6 +104,24 @@ public class PredefinedDatabaseSnapshots {
|
|||
return mapResources.getValue();
|
||||
}
|
||||
|
||||
private IAutoUpdatedSnapshot<List<ExternalCompany>> externalCompanies;
|
||||
|
||||
public List<ExternalCompany> snapshotExternalCompanies() {
|
||||
return externalCompanies.getValue();
|
||||
}
|
||||
|
||||
private IAutoUpdatedSnapshot<List<String>> customerReferences;
|
||||
|
||||
public List<String> snapshotCustomerReferences() {
|
||||
return customerReferences.getValue();
|
||||
}
|
||||
|
||||
private IAutoUpdatedSnapshot<List<String>> ordersCodes;
|
||||
|
||||
public List<String> snapshotOrdersCodes() {
|
||||
return ordersCodes.getValue();
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
@SuppressWarnings("unused")
|
||||
private void postConstruct() {
|
||||
|
|
@ -112,6 +134,11 @@ public class PredefinedDatabaseSnapshots {
|
|||
listCriterion = snapshot(calculateListCriterion(), Criterion.class);
|
||||
mapResources = snapshot(calculateMapResources(), Resource.class,
|
||||
Worker.class, Machine.class, VirtualWorker.class);
|
||||
externalCompanies = snapshot(calculateExternalCompanies(),
|
||||
ExternalCompany.class);
|
||||
customerReferences = snapshot(calculateCustomerReferences(),
|
||||
Order.class);
|
||||
ordersCodes = snapshot(calculateOrdersCodes(), Order.class);
|
||||
}
|
||||
|
||||
private <T> IAutoUpdatedSnapshot<T> snapshot(Callable<T> callable,
|
||||
|
|
@ -224,4 +251,49 @@ public class PredefinedDatabaseSnapshots {
|
|||
};
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private IExternalCompanyDAO externalCompanyDAO;
|
||||
|
||||
private Callable<List<ExternalCompany>> calculateExternalCompanies() {
|
||||
return new Callable<List<ExternalCompany>>() {
|
||||
@Override
|
||||
public List<ExternalCompany> call() throws Exception {
|
||||
return externalCompanyDAO.getExternalCompaniesAreClient();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private IOrderDAO orderDAO;
|
||||
|
||||
private Callable<List<String>> calculateCustomerReferences() {
|
||||
return new Callable<List<String>>() {
|
||||
@Override
|
||||
public List<String> call() throws Exception {
|
||||
// FIXME replace by a HQL query, for god's sake!
|
||||
List<String> result = new ArrayList<String>();
|
||||
for (Order order : orderDAO.getOrders()) {
|
||||
if ((order.getCustomerReference() != null)
|
||||
&& (!order.getCustomerReference().isEmpty())) {
|
||||
result.add(order.getCustomerReference());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private Callable<List<String>> calculateOrdersCodes() {
|
||||
return new Callable<List<String>>() {
|
||||
@Override
|
||||
public List<String> call() throws Exception {
|
||||
List<String> result = new ArrayList<String>();
|
||||
for (Order order : orderDAO.getOrders()) {
|
||||
result.add(order.getCode());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,25 +20,19 @@
|
|||
|
||||
package org.navalplanner.web.common.components.finders;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
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.entities.Label;
|
||||
import org.navalplanner.business.labels.entities.LabelType;
|
||||
import org.navalplanner.business.orders.daos.IOrderDAO;
|
||||
import org.navalplanner.business.orders.entities.Order;
|
||||
import org.navalplanner.business.orders.entities.OrderStatusEnum;
|
||||
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;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -51,56 +45,13 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
|
||||
public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
||||
|
||||
@Autowired
|
||||
private IExternalCompanyDAO externalCompanyDAO;
|
||||
|
||||
@Autowired
|
||||
private IOrderDAO orderDAO;
|
||||
|
||||
@Autowired
|
||||
private PredefinedDatabaseSnapshots databaseSnapshots;
|
||||
|
||||
private static final List<ExternalCompany> externalCompanies = new ArrayList<ExternalCompany>();
|
||||
|
||||
private static final List<String> customerReferences = new ArrayList<String>();
|
||||
|
||||
private static final List<String> ordersCodes = new ArrayList<String>();
|
||||
|
||||
protected OrdersMultipleFiltersFinder() {
|
||||
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public void init() {
|
||||
getAdHocTransactionService()
|
||||
.runOnReadOnlyTransaction(new IOnTransaction<Void>() {
|
||||
@Override
|
||||
public Void execute() {
|
||||
loadExternalCompanies();
|
||||
loadOrderCodesAndCustomerReferences();
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void loadExternalCompanies() {
|
||||
externalCompanies.clear();
|
||||
externalCompanies.addAll(externalCompanyDAO
|
||||
.getExternalCompaniesAreClient());
|
||||
}
|
||||
|
||||
private void loadOrderCodesAndCustomerReferences() {
|
||||
customerReferences.clear();
|
||||
ordersCodes.clear();
|
||||
for (Order order : orderDAO.getOrders()) {
|
||||
// load customer references
|
||||
if ((order.getCustomerReference() != null)
|
||||
&& (!order.getCustomerReference().isEmpty())) {
|
||||
customerReferences.add(order.getCustomerReference());
|
||||
}
|
||||
// load the order codes
|
||||
ordersCodes.add(order.getCode());
|
||||
}
|
||||
}
|
||||
|
||||
public List<FilterPair> getFirstTenFilters() {
|
||||
|
|
@ -156,6 +107,8 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
}
|
||||
|
||||
private List<FilterPair> fillWithFirstTenFiltersCustomer() {
|
||||
List<ExternalCompany> externalCompanies = databaseSnapshots
|
||||
.snapshotExternalCompanies();
|
||||
for (int i = 0; getListMatching().size() < 10
|
||||
&& i < externalCompanies.size(); i++) {
|
||||
ExternalCompany externalCompany = externalCompanies.get(i);
|
||||
|
|
@ -174,6 +127,7 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
}
|
||||
|
||||
private List<FilterPair> fillWihtFirstTenFiltersCodes() {
|
||||
List<String> ordersCodes = databaseSnapshots.snapshotOrdersCodes();
|
||||
for (int i = 0; getListMatching().size() < 10 && i < ordersCodes.size(); i++) {
|
||||
String code = ordersCodes.get(i);
|
||||
addCode(code);
|
||||
|
|
@ -182,6 +136,8 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
}
|
||||
|
||||
private List<FilterPair> fillWihtFirstTenFiltersCustomerReferences() {
|
||||
List<String> customerReferences = databaseSnapshots
|
||||
.snapshotCustomerReferences();
|
||||
for (int i = 0; getListMatching().size() < 10
|
||||
&& i < customerReferences.size(); i++) {
|
||||
String reference = customerReferences.get(i);
|
||||
|
|
@ -289,7 +245,8 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
}
|
||||
|
||||
private void searchInExternalCompanies(String filter){
|
||||
for(ExternalCompany externalCompany : externalCompanies){
|
||||
for(ExternalCompany externalCompany : databaseSnapshots
|
||||
.snapshotExternalCompanies()){
|
||||
String name = StringUtils.deleteWhitespace(externalCompany
|
||||
.getName().toLowerCase());
|
||||
String nif = StringUtils.deleteWhitespace(externalCompany.getNif()
|
||||
|
|
@ -319,7 +276,7 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
private void searchInOrderCodes(String filter) {
|
||||
if (filter.indexOf("cod:") == 0) {
|
||||
String codeFilter = filter.replaceFirst("cod:", "");
|
||||
for (String code : ordersCodes) {
|
||||
for (String code : databaseSnapshots.snapshotOrdersCodes()) {
|
||||
code = StringUtils.deleteWhitespace(code.toLowerCase());
|
||||
if (code.equals(codeFilter)) {
|
||||
addCode(code);
|
||||
|
|
@ -332,7 +289,8 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder {
|
|||
private void searchInCustomerReferences(String filter) {
|
||||
if (filter.indexOf("rc:") == 0) {
|
||||
String referenceFilter = filter.replaceFirst("rc:", "");
|
||||
for (String reference : customerReferences) {
|
||||
for (String reference : databaseSnapshots
|
||||
.snapshotCustomerReferences()) {
|
||||
reference = StringUtils.deleteWhitespace(reference
|
||||
.toLowerCase());
|
||||
if (reference.equals(referenceFilter)) {
|
||||
|
|
|
|||
|
|
@ -45,8 +45,7 @@
|
|||
<lookup-method name="getTaskElementAdapter" bean="taskElementAdapter"/>
|
||||
</bean>
|
||||
|
||||
<bean id="ordersMultipleFiltersFinder" class="org.navalplanner.web.common.components.finders.OrdersMultipleFiltersFinder" scope="singleton"
|
||||
init-method="init" />
|
||||
<bean id="ordersMultipleFiltersFinder" class="org.navalplanner.web.common.components.finders.OrdersMultipleFiltersFinder" scope="singleton" />
|
||||
|
||||
<bean id="orderElementsMultipleFiltersFinder" class="org.navalplanner.web.common.components.finders.OrderElementsMultipleFiltersFinder" scope="singleton"/>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue