diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/IMultipleFiltersFinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/IMultipleFiltersFinder.java index 8d3bf4961..ce460c1e2 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/IMultipleFiltersFinder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/IMultipleFiltersFinder.java @@ -33,12 +33,22 @@ public interface IMultipleFiltersFinder { void init(); + /** + * Return the FilterPair list match with filter. + * @param filter + * @return List + */ List getMatching(String filter); List getFirstTenFilters(); String objectToString(Object obj); + /** + * Return the new filter that is lower case and without white spaces. + * @param inputText + * @return + */ String getNewFilterText(String inputText); boolean isValidNewFilter(Object obj); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/MultipleFiltersFinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/MultipleFiltersFinder.java index 155ca3b38..be44f8612 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/MultipleFiltersFinder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/MultipleFiltersFinder.java @@ -25,6 +25,7 @@ import static org.navalplanner.web.I18nHelper._; import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang.StringUtils; import org.navalplanner.business.common.IAdHocTransactionService; import org.springframework.beans.factory.annotation.Autowired; import org.zkoss.zul.Listcell; @@ -72,11 +73,8 @@ public abstract class MultipleFiltersFinder implements IMultipleFiltersFinder { } public String getNewFilterText(String inputText) { - String newFilterText = new String(""); String[] filtersText = inputText.split(","); - newFilterText = getLastText(filtersText); - newFilterText = newFilterText.replace(" ", ""); - newFilterText = newFilterText.trim(); + String newFilterText = getLastText(filtersText); return newFilterText; } @@ -85,7 +83,7 @@ public abstract class MultipleFiltersFinder implements IMultipleFiltersFinder { if (texts.length > 0) { return texts[last]; } else { - return ""; + return new String(""); } } @@ -103,7 +101,7 @@ public abstract class MultipleFiltersFinder implements IMultipleFiltersFinder { } filterValues = updateDeletedFilters(filterValues, value); - value = value.replace(" ", ""); + value = StringUtils.deleteWhitespace(value); String[] values = value.split(","); if (values.length != filterValues.size()) { return false; @@ -142,7 +140,7 @@ public abstract class MultipleFiltersFinder implements IMultipleFiltersFinder { private boolean isFilterAdded(String[] values, String filter) { for (int i = 0; i < values.length; i++) { String value = values[i].replace(" ", ""); - filter = filter.replace(" ", ""); + filter = StringUtils.deleteWhitespace(filter); if (filter.equals(value)) { return true; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/OrderElementsMultipleFiltersFinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/OrderElementsMultipleFiltersFinder.java index 5d110d12c..f8861bd81 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/OrderElementsMultipleFiltersFinder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/OrderElementsMultipleFiltersFinder.java @@ -26,6 +26,7 @@ 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.labels.daos.ILabelDAO; import org.navalplanner.business.labels.daos.ILabelTypeDAO; @@ -151,7 +152,7 @@ public class OrderElementsMultipleFiltersFinder extends MultipleFiltersFinder { public List getMatching(String filter) { getListMatching().clear(); if ((filter != null) && (!filter.isEmpty())) { - filter = filter.toLowerCase(); + filter = StringUtils.deleteWhitespace(filter.toLowerCase()); searchInCriterionTypes(filter); searchInLabelTypes(filter); } @@ -163,7 +164,9 @@ public class OrderElementsMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInCriterionTypes(String filter) { boolean limited = (filter.length() < 3); for (CriterionType type : mapCriterions.keySet()) { - if (type.getName().toLowerCase().contains(filter)) { + String name = StringUtils.deleteWhitespace(type.getName() + .toLowerCase()); + if (name.contains(filter)) { setFilterPairCriterionType(type, limited); } else { searchInCriterions(type, filter); @@ -173,7 +176,9 @@ public class OrderElementsMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInCriterions(CriterionType type, String filter) { for (Criterion criterion : mapCriterions.get(type)) { - if (criterion.getName().toLowerCase().contains(filter)) { + String name = StringUtils.deleteWhitespace(criterion.getName() + .toLowerCase()); + if (name.contains(filter)) { addCriterion(type, criterion); if ((filter.length() < 3) && (getListMatching().size() > 9)) { return; @@ -194,7 +199,9 @@ public class OrderElementsMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInLabelTypes(String filter) { boolean limited = (filter.length() < 3); for (LabelType type : mapLabels.keySet()) { - if (type.getName().toLowerCase().contains(filter)) { + String name = StringUtils.deleteWhitespace(type.getName() + .toLowerCase()); + if (name.contains(filter)) { setFilterPairLabelType(type, limited); } else { searchInLabels(type, filter); @@ -204,7 +211,9 @@ public class OrderElementsMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInLabels(LabelType type, String filter) { for (Label label : mapLabels.get(type)) { - if (label.getName().toLowerCase().contains(filter)) { + String name = StringUtils.deleteWhitespace(label.getName() + .toLowerCase()); + if (name.contains(filter)) { addLabel(type, label); if ((filter.length() < 3) && (getListMatching().size() > 9)) { return; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/OrdersMultipleFiltersFinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/OrdersMultipleFiltersFinder.java index 22e52a869..fe3a2571e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/OrdersMultipleFiltersFinder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/OrdersMultipleFiltersFinder.java @@ -26,6 +26,7 @@ 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; @@ -235,7 +236,9 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder { public List getMatching(String filter) { getListMatching().clear(); if ((filter != null) && (!filter.isEmpty())) { - filter = filter.toLowerCase(); + + filter = StringUtils.deleteWhitespace(filter.toLowerCase()); + if (filter.indexOf("rc:") == 0) { searchInCustomerReferences(filter); } else if (filter.indexOf("cod:") == 0) { @@ -255,7 +258,9 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInCriterionTypes(String filter) { boolean limited = (filter.length() < 3); for (CriterionType type : mapCriterions.keySet()) { - if (type.getName().toLowerCase().contains(filter)) { + String name = StringUtils.deleteWhitespace(type.getName() + .toLowerCase()); + if (name.contains(filter)) { setFilterPairCriterionType(type, limited); } else { searchInCriterions(type, filter); @@ -265,7 +270,9 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInCriterions(CriterionType type, String filter) { for (Criterion criterion : mapCriterions.get(type)) { - if (criterion.getName().toLowerCase().contains(filter)) { + String name = StringUtils.deleteWhitespace(criterion.getName() + .toLowerCase()); + if (name.contains(filter)) { addCriterion(type, criterion); if ((filter.length() < 3) && (getListMatching().size() > 9)) { return; @@ -286,7 +293,9 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInLabelTypes(String filter) { boolean limited = (filter.length() < 3); for (LabelType type : mapLabels.keySet()) { - if (type.getName().toLowerCase().contains(filter)) { + String name = StringUtils.deleteWhitespace(type.getName() + .toLowerCase()); + if (name.contains(filter)) { setFilterPairLabelType(type, limited); } else { searchInLabels(type, filter); @@ -296,7 +305,9 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInLabels(LabelType type, String filter) { for (Label label : mapLabels.get(type)) { - if (label.getName().toLowerCase().contains(filter)) { + String name = StringUtils.deleteWhitespace(label.getName() + .toLowerCase()); + if (name.contains(filter)) { addLabel(type, label); if ((filter.length() < 3) && (getListMatching().size() > 9)) { return; @@ -316,8 +327,11 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInExternalCompanies(String filter){ for(ExternalCompany externalCompany : externalCompanies){ - if ((externalCompany.getName().toLowerCase().contains(filter)) - || (externalCompany.getNif().toLowerCase().contains(filter))) { + String name = StringUtils.deleteWhitespace(externalCompany + .getName().toLowerCase()); + String nif = StringUtils.deleteWhitespace(externalCompany.getNif() + .toLowerCase()); + if ((name.contains(filter)) || (nif.contains(filter))) { addExternalCompany(externalCompany); if ((filter.length() < 3) && (getListMatching().size() > 9)) { return; @@ -328,7 +342,9 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInOrderStatus(String filter) { for (OrderStatusEnum state : ordersStatusEnums) { - if (state.name().toLowerCase().contains(filter)) { + String name = StringUtils.deleteWhitespace(state.name() + .toLowerCase()); + if (name.contains(filter)) { addState(state); if ((filter.length() < 3) && (getListMatching().size() > 9)) { return; @@ -340,9 +356,9 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInOrderCodes(String filter) { if (filter.indexOf("cod:") == 0) { String codeFilter = filter.replaceFirst("cod:", ""); - codeFilter = codeFilter.replace(" ", ""); for (String code : ordersCodes) { - if (code.toLowerCase().equals(codeFilter)) { + code = StringUtils.deleteWhitespace(code.toLowerCase()); + if (code.equals(codeFilter)) { addCode(code); return; } @@ -353,9 +369,10 @@ public class OrdersMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInCustomerReferences(String filter) { if (filter.indexOf("rc:") == 0) { String referenceFilter = filter.replaceFirst("rc:", ""); - referenceFilter = referenceFilter.replace(" ", ""); for (String reference : customerReferences) { - if (reference.toLowerCase().equals(referenceFilter)) { + reference = StringUtils.deleteWhitespace(reference + .toLowerCase()); + if (reference.equals(referenceFilter)) { addCustomerReference(reference); return; } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/ResourcesMultipleFiltersFinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/ResourcesMultipleFiltersFinder.java index b3696066c..488f87020 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/ResourcesMultipleFiltersFinder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/ResourcesMultipleFiltersFinder.java @@ -26,6 +26,7 @@ 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.costcategories.daos.ICostCategoryDAO; import org.navalplanner.business.costcategories.entities.CostCategory; @@ -131,7 +132,7 @@ public class ResourcesMultipleFiltersFinder extends MultipleFiltersFinder { public List getMatching(String filter) { getListMatching().clear(); if ((filter != null) && (!filter.isEmpty())) { - filter = filter.toLowerCase(); + filter = StringUtils.deleteWhitespace(filter.toLowerCase()); searchInCriterionTypes(filter); searchInCostCategories(filter); } @@ -142,7 +143,9 @@ public class ResourcesMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInCriterionTypes(String filter) { boolean limited = (filter.length() < 3); for (CriterionType type : mapCriterions.keySet()) { - if (type.getName().toLowerCase().contains(filter)) { + String name = StringUtils.deleteWhitespace(type.getName() + .toLowerCase()); + if (name.contains(filter)) { setFilterPairCriterionType(type, limited); } else { searchInCriterions(type, filter); @@ -152,7 +155,9 @@ public class ResourcesMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInCriterions(CriterionType type, String filter) { for (Criterion criterion : mapCriterions.get(type)) { - if (criterion.getName().toLowerCase().contains(filter)) { + String name = StringUtils.deleteWhitespace(criterion.getName() + .toLowerCase()); + if (name.contains(filter)) { addCriterion(type, criterion); if ((filter.length() < 3) && (getListMatching().size() > 9)) { return; @@ -172,7 +177,9 @@ public class ResourcesMultipleFiltersFinder extends MultipleFiltersFinder { private void searchInCostCategories(String filter) { for (CostCategory costCategory : costCategories) { - if (costCategory.getName().toLowerCase().contains(filter)) { + String name = StringUtils.deleteWhitespace(costCategory.getName() + .toLowerCase()); + if (name.contains(filter)) { addCostCategory(costCategory); if ((filter.length() < 3) && (getListMatching().size() > 9)) { return;