Added method getCriterionType in PredefinedCriterionTypes.

* Modified CriterionTypeDAO to only provide a method findByName used in several places.

FEA: ItEr74S04BugFixing
This commit is contained in:
Manuel Rego Casasnovas 2011-04-13 11:08:13 +02:00
parent a697db43e3
commit 5ee0bb05b8
4 changed files with 20 additions and 27 deletions

View file

@ -48,16 +48,9 @@ public class CriterionTypeDAO extends IntegrationEntityDAO<CriterionType>
implements ICriterionTypeDAO {
@Override
@SuppressWarnings("unchecked")
public List<CriterionType> findByName(CriterionType criterionType) {
Criteria criteria = searchByNameCriteria(criterionType.getName());
return (List<CriterionType>) criteria.list();
}
private Criteria searchByNameCriteria(String name) {
Criteria result = getSession().createCriteria(CriterionType.class);
result.add(Restrictions.eq("name", name).ignoreCase());
return result;
public CriterionType findByName(String name) {
return (CriterionType) getSession().createCriteria(CriterionType.class)
.add(Restrictions.eq("name", name).ignoreCase()).uniqueResult();
}
@Override
@ -70,7 +63,7 @@ public class CriterionTypeDAO extends IntegrationEntityDAO<CriterionType>
@Override
public CriterionType findUniqueByName(String name)
throws InstanceNotFoundException {
CriterionType result = uniqueByName(name);
CriterionType result = findByName(name);
if (result == null) {
throw new InstanceNotFoundException(name,
CriterionType.class.getName());
@ -78,14 +71,6 @@ public class CriterionTypeDAO extends IntegrationEntityDAO<CriterionType>
return result;
}
/**
* @return the single result of null
*/
private CriterionType uniqueByName(String name) {
Criteria criteria = searchByNameCriteria(name);
return (CriterionType) criteria.uniqueResult();
}
@Override
@Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
public CriterionType findUniqueByNameAnotherTransaction(String name)
@ -98,7 +83,7 @@ public class CriterionTypeDAO extends IntegrationEntityDAO<CriterionType>
@Override
public boolean existsOtherCriterionTypeByName(CriterionType criterionType) {
Validate.notNull(criterionType);
CriterionType found = uniqueByName(criterionType.getName());
CriterionType found = findByName(criterionType.getName());
return found != null && criterionType != found;
}
@ -150,7 +135,7 @@ public class CriterionTypeDAO extends IntegrationEntityDAO<CriterionType>
public CriterionType findPredefined(CriterionType criterionType) {
Validate.notNull(criterionType);
Validate.notNull(criterionType.getPredefinedTypeInternalName());
CriterionType result = uniqueByName(criterionType.getName());
CriterionType result = findByName(criterionType.getName());
if (result != null) {
return result;
}

View file

@ -48,7 +48,7 @@ public interface ICriterionTypeDAO
CriterionType findUniqueByName(CriterionType criterionType)
throws InstanceNotFoundException;
List<CriterionType> findByName(CriterionType criterionType);
CriterionType findByName(String name);
public boolean existsOtherCriterionTypeByName(CriterionType criterionType);

View file

@ -25,6 +25,8 @@ import static org.navalplanner.business.i18n.I18nHelper._;
import java.util.Arrays;
import java.util.List;
import org.navalplanner.business.common.Registry;
/**
* This class defines some criterion types known a priori<br />
* @author Óscar González Fernández <ogonzalez@igalia.com>
@ -155,4 +157,9 @@ public enum PredefinedCriterionTypes implements ICriterionType<Criterion> {
}
public abstract List<String> getPredefined();
public CriterionType getCriterionType() {
return Registry.getCriterionTypeDAO().findByName(getName());
}
}

View file

@ -30,7 +30,6 @@ import static org.navalplanner.web.WebappGlobalNames.WEBAPP_SPRING_SECURITY_CONF
import static org.navalplanner.web.test.WebappGlobalNames.WEBAPP_SPRING_CONFIG_TEST_FILE;
import static org.navalplanner.web.test.WebappGlobalNames.WEBAPP_SPRING_SECURITY_CONFIG_TEST_FILE;
import java.util.List;
import java.util.UUID;
import org.junit.Test;
@ -44,6 +43,7 @@ import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.CriterionType;
import org.navalplanner.business.resources.entities.ICriterionType;
import org.navalplanner.business.resources.entities.PredefinedCriterionTypes;
import org.navalplanner.web.resources.criterion.CriterionsModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.NotTransactional;
import org.springframework.test.context.ContextConfiguration;
@ -134,12 +134,13 @@ public class CriterionModelTest {
}
private CriterionType ensureExists(CriterionType transientType) {
List<CriterionType> found = criterionTypeDAO.findByName(transientType);
if (!found.isEmpty()) {
return found.get(0);
CriterionType found = criterionTypeDAO.findByName(transientType
.getName());
if (found != null) {
return found;
}
criterionTypeDAO.save(transientType);
return criterionTypeDAO.findByName(transientType).get(0);
return criterionTypeDAO.findByName(transientType.getName());
}
/*@Test