ItEr52S04ValidacionEProbasFuncionaisItEr51S04 : it does not permit add repeated names in material categories hierarchy.

This commit is contained in:
Susana Montes Pedreira 2010-03-24 12:03:31 +01:00 committed by Javier Moran Rua
parent 331837adf5
commit 92e1df8216
2 changed files with 13 additions and 9 deletions

View file

@ -227,8 +227,7 @@ public class MaterialCategory extends IntegrationEntity {
}
private Set<MaterialCategory> getAllSubcategories() {
Set<MaterialCategory> result = new HashSet<MaterialCategory>(
subcategories);
Set<MaterialCategory> result = new HashSet<MaterialCategory>(subcategories);
for (MaterialCategory subcategory : subcategories) {
result.addAll(subcategory.getAllSubcategories());
}

View file

@ -29,6 +29,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;
import org.hibernate.validator.InvalidValue;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
@ -123,7 +124,7 @@ public class MaterialsModel implements IMaterialsModel {
public void addMaterialCategory(MaterialCategory parent, MaterialCategory child) throws ValidationException {
Validate.notNull(child);
final MaterialCategory materialCategory = findMaterialCategory(parent, child);
final MaterialCategory materialCategory = findMaterialCategory(child);
if (materialCategory != null) {
final InvalidValue invalidValue = new InvalidValue(_("{0} already exists", materialCategory.getName()),
MaterialCategory.class, "name", materialCategory.getName(), materialCategory);
@ -138,18 +139,22 @@ public class MaterialsModel implements IMaterialsModel {
}
}
private MaterialCategory findMaterialCategory(final MaterialCategory parent, final MaterialCategory category) {
for (int i = 0; i < materialCategories.getChildCount(parent); i++) {
final MaterialCategory each = materialCategories.getChild(parent, i);
if (equalsMaterialCategory(each, category)) {
return each;
private MaterialCategory findMaterialCategory(
final MaterialCategory category) {
for (MaterialCategory mc : materialCategories.asList()) {
if (equalsMaterialCategory(mc, category)) {
return mc;
}
}
return null;
}
private boolean equalsMaterialCategory(MaterialCategory obj1, MaterialCategory obj2) {
return obj1.getName().equals(obj2.getName());
String name1 = StringUtils.deleteWhitespace(obj1.getName()
.toLowerCase());
String name2 = StringUtils.deleteWhitespace(obj2.getName()
.toLowerCase());
return name1.equals(name2);
}
@Override