Merge pull request #29 from BVier/func
Update Classification Query Mapper, SQL-Structure and Tests
This commit is contained in:
commit
683a65dc5c
|
@ -1,5 +1,6 @@
|
|||
package org.taskana;
|
||||
|
||||
import org.taskana.exceptions.NotAuthorizedException;
|
||||
import org.taskana.model.Classification;
|
||||
import org.taskana.persistence.ClassificationQuery;
|
||||
|
||||
|
@ -11,28 +12,19 @@ import java.util.List;
|
|||
public interface ClassificationService {
|
||||
|
||||
/**
|
||||
* Get all available Classifications.
|
||||
* Get all available Classifications as a tree.
|
||||
* @return The List of all Classifications
|
||||
*/
|
||||
List<Classification> selectClassifications();
|
||||
List<Classification> getClassificationTree() throws NotAuthorizedException;
|
||||
|
||||
/**
|
||||
* Get all Classifications with given parent.
|
||||
* @param parentId
|
||||
* the ID of the parent Classification
|
||||
* @return
|
||||
*/
|
||||
List<Classification> selectClassificationsByParentId(String parentId);
|
||||
|
||||
/**
|
||||
* Get a Classification for a given id.
|
||||
* Returns just the DEFAULT Classification!!!
|
||||
* Better use selectClassificationByIdAndDomain.
|
||||
* Get all Classifications with the given id.
|
||||
* Returns also older and domain-specific versions of the classification.
|
||||
*
|
||||
* @param id
|
||||
* @return the requested Default-Classification
|
||||
* @return List with all versions of the Classification
|
||||
*/
|
||||
Classification selectClassificationById(String id);
|
||||
List<Classification> getAllClassificationsWithId(String id, String domain);
|
||||
|
||||
/**
|
||||
* Get the Classification for id and domain.
|
||||
|
@ -40,45 +32,14 @@ public interface ClassificationService {
|
|||
* @param domain
|
||||
* @return If exist: domain-specific classification, else default classification
|
||||
*/
|
||||
Classification selectClassificationByIdAndDomain(String id, String domain);
|
||||
|
||||
/**
|
||||
* Get all Classifications from a domain.
|
||||
* @param domain
|
||||
* @return
|
||||
*/
|
||||
List<Classification> selectClassificationByDomain(String domain);
|
||||
|
||||
/**
|
||||
* Get all Classifications from a domain with a specific type.
|
||||
* @param domain
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
List<Classification> selectClassificationByDomainAndType(String domain, String type);
|
||||
|
||||
/**
|
||||
* Get all Classifications from a category for a domain.
|
||||
* @param domain
|
||||
* @param category
|
||||
* @return
|
||||
*/
|
||||
List<Classification> selectClassificationByDomainAndCategory(String domain, String category);
|
||||
|
||||
/**
|
||||
* Get all Classifications from a category and a type.
|
||||
* @param category
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
List<Classification> selectClassificationByCategoryAndType(String category, String type);
|
||||
Classification getClassification(String id, String domain);
|
||||
|
||||
/**
|
||||
* Insert a new Classification.
|
||||
* @param classification
|
||||
* the classification to insert
|
||||
*/
|
||||
void insertClassification(Classification classification);
|
||||
void addClassification(Classification classification);
|
||||
|
||||
/**
|
||||
* Update a Classification.
|
||||
|
|
|
@ -2,6 +2,7 @@ package org.taskana.impl;
|
|||
|
||||
import org.taskana.ClassificationService;
|
||||
import org.taskana.TaskanaEngine;
|
||||
import org.taskana.exceptions.NotAuthorizedException;
|
||||
import org.taskana.impl.persistence.ClassificationQueryImpl;
|
||||
import org.taskana.impl.util.IdGenerator;
|
||||
import org.taskana.model.Classification;
|
||||
|
@ -11,6 +12,7 @@ import org.taskana.persistence.ClassificationQuery;
|
|||
import java.sql.Date;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -20,6 +22,8 @@ public class ClassificationServiceImpl implements ClassificationService {
|
|||
|
||||
private static final String ID_PREFIX_CLASSIFICATION = "CLI";
|
||||
|
||||
public static final Date CURRENT_CLASSIFICATIONS_VALID_UNTIL = Date.valueOf("9999-12-31");
|
||||
|
||||
private ClassificationMapper classificationMapper;
|
||||
private TaskanaEngine taskanaEngine;
|
||||
|
||||
|
@ -30,112 +34,98 @@ public class ClassificationServiceImpl implements ClassificationService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<Classification> selectClassifications() {
|
||||
final List<Classification> rootClassifications = classificationMapper.findByParentId("");
|
||||
populateChildClassifications(rootClassifications);
|
||||
return rootClassifications;
|
||||
public List<Classification> getClassificationTree() throws NotAuthorizedException {
|
||||
List<Classification> rootClassifications;
|
||||
rootClassifications = this.createClassificationQuery().parentClassification("").validUntil(CURRENT_CLASSIFICATIONS_VALID_UNTIL).list();
|
||||
return this.populateChildClassifications(rootClassifications);
|
||||
}
|
||||
|
||||
private void populateChildClassifications(final List<Classification> classifications) {
|
||||
private List<Classification> populateChildClassifications(List<Classification> classifications) throws NotAuthorizedException {
|
||||
List<Classification> children = new ArrayList<>();
|
||||
for (Classification classification : classifications) {
|
||||
List<Classification> childClassifications = classificationMapper.findByParentId(classification.getId());
|
||||
classification.setChildren(childClassifications);
|
||||
populateChildClassifications(childClassifications);
|
||||
List<Classification> childClassifications = this.createClassificationQuery().parentClassification(classification.getId()).validUntil(CURRENT_CLASSIFICATIONS_VALID_UNTIL).list();
|
||||
children.addAll(populateChildClassifications(childClassifications));
|
||||
}
|
||||
classifications.addAll(children);
|
||||
return classifications;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Classification> selectClassificationsByParentId(String parentId) {
|
||||
return classificationMapper.findByParentId(parentId);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void insertClassification(Classification classification) {
|
||||
public void addClassification(Classification classification) {
|
||||
classification.setId(IdGenerator.generateWithPrefix(ID_PREFIX_CLASSIFICATION));
|
||||
classification.setCreated(Date.valueOf(LocalDate.now()));
|
||||
classification.setValidFrom(Date.valueOf(LocalDate.now()));
|
||||
classification.setValidUntil(Date.valueOf("9999-12-31"));
|
||||
this.checkServiceLevel(classification);
|
||||
if (classification.getDomain() == null) {
|
||||
classification.setDomain("");
|
||||
}
|
||||
|
||||
this.setDefaultValues(classification);
|
||||
|
||||
classificationMapper.insert(classification);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateClassification(Classification classification) {
|
||||
this.checkServiceLevel(classification);
|
||||
Date today = Date.valueOf(LocalDate.now());
|
||||
this.setDefaultValues(classification);
|
||||
|
||||
Classification oldClassification = classificationMapper.findByIdAndDomain(classification.getId(), classification.getDomain());
|
||||
Classification oldClassification = this.getClassification(classification.getId(), classification.getDomain());
|
||||
|
||||
if (oldClassification != null) {
|
||||
if (oldClassification.getValidFrom().equals(today)) {
|
||||
// if we would insert a new Classification, oldClassification gets a negative Duration
|
||||
classificationMapper.update(classification);
|
||||
} else {
|
||||
oldClassification.setValidUntil(Date.valueOf(LocalDate.now().minusDays(1)));
|
||||
classificationMapper.update(oldClassification);
|
||||
if (oldClassification == null) {
|
||||
classification.setId(IdGenerator.generateWithPrefix(ID_PREFIX_CLASSIFICATION));
|
||||
classification.setCreated(Date.valueOf(LocalDate.now()));
|
||||
classificationMapper.insert(classification);
|
||||
return;
|
||||
}
|
||||
|
||||
classification.setValidFrom(today);
|
||||
classification.setValidUntil(Date.valueOf("9999-12-31"));
|
||||
classificationMapper.insert(classification);
|
||||
}
|
||||
// ! If you update an classification twice the same day,
|
||||
// the older version is valid from today until yesterday.
|
||||
if (!oldClassification.getDomain().equals(classification.getDomain())) {
|
||||
classification.setCreated(Date.valueOf(LocalDate.now()));
|
||||
classificationMapper.insert(classification);
|
||||
} else {
|
||||
if (classificationMapper.findByIdAndDomain(classification.getId(), "").equals(null)) {
|
||||
throw new IllegalArgumentException("There is no Default-Classification with this ID!");
|
||||
} else {
|
||||
classification.setValidFrom(today);
|
||||
classification.setValidUntil(Date.valueOf("9999-12-31"));
|
||||
classificationMapper.insert(classification);
|
||||
}
|
||||
oldClassification.setValidUntil(Date.valueOf(LocalDate.now().minusDays(1)));
|
||||
classificationMapper.update(oldClassification);
|
||||
classificationMapper.insert(classification);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Classification selectClassificationById(String id) {
|
||||
return classificationMapper.findByIdAndDomain(id, "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Classification selectClassificationByIdAndDomain(String id, String domain) {
|
||||
Classification classification = classificationMapper.findByIdAndDomain(id, domain);
|
||||
if (classification.equals(null)) {
|
||||
return classificationMapper.findByIdAndDomain(id, "");
|
||||
} else {
|
||||
return classification;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Classification> selectClassificationByDomain(String domain) {
|
||||
return classificationMapper.findByDomain(domain);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Classification> selectClassificationByDomainAndType(String domain, String type) {
|
||||
return classificationMapper.getClassificationByDomainAndType(domain, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Classification> selectClassificationByDomainAndCategory(String domain, String category) {
|
||||
return classificationMapper.getClassificationByDomainAndCategory(domain, category);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Classification> selectClassificationByCategoryAndType(String category, String type) {
|
||||
return classificationMapper.getClassificationByCategoryAndType(category, type);
|
||||
}
|
||||
|
||||
private void checkServiceLevel(Classification classification) {
|
||||
private void setDefaultValues(Classification classification) {
|
||||
classification.setValidFrom(Date.valueOf(LocalDate.now()));
|
||||
classification.setValidUntil(CURRENT_CLASSIFICATIONS_VALID_UNTIL);
|
||||
classification.setValidInDomain(true);
|
||||
if (classification.getServiceLevel() != null) {
|
||||
try {
|
||||
Duration.parse(classification.getServiceLevel());
|
||||
} catch (Exception e) {
|
||||
throw new IllegalArgumentException("Invalid timestamp. Please use the format 'PddDThhHmmM'");
|
||||
throw new IllegalArgumentException("Invalid duration. Please use the format defined by ISO 8601");
|
||||
}
|
||||
}
|
||||
|
||||
if (classification.getParentClassificationId() == classification.getId()) {
|
||||
throw new IllegalArgumentException("A classification can't be a parent to itself");
|
||||
}
|
||||
|
||||
if (classification.getParentClassificationId() == null) {
|
||||
classification.setParentClassificationId("");
|
||||
}
|
||||
if (classification.getDomain() == null) {
|
||||
classification.setDomain("");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<Classification> getAllClassificationsWithId(String id, String domain) {
|
||||
return classificationMapper.getAllClassificationsWithId(id, domain);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Classification getClassification(String id, String domain) {
|
||||
Classification classification = classificationMapper.findByIdAndDomain(id, domain, CURRENT_CLASSIFICATIONS_VALID_UNTIL);
|
||||
|
||||
if (classification == null) {
|
||||
return classificationMapper.findByIdAndDomain(id, "", CURRENT_CLASSIFICATIONS_VALID_UNTIL);
|
||||
} else {
|
||||
return classification;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
package org.taskana.impl.persistence;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.taskana.TaskanaEngine;
|
||||
import org.taskana.impl.TaskanaEngineImpl;
|
||||
import org.taskana.model.Classification;
|
||||
import org.taskana.persistence.ClassificationQuery;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Implementation of ClassificationQuery interface.
|
||||
* @author EH
|
||||
|
@ -20,10 +21,16 @@ public class ClassificationQueryImpl implements ClassificationQuery {
|
|||
private String[] parentClassificationId;
|
||||
private String[] category;
|
||||
private String[] type;
|
||||
private String[] domain;
|
||||
private Boolean validInDomain;
|
||||
private Date[] created;
|
||||
private String[] name;
|
||||
private String description;
|
||||
private int[] priority;
|
||||
private String[] serviceLevel;
|
||||
private String[] customFields;
|
||||
private Date[] validFrom;
|
||||
private Date[] validUntil;
|
||||
|
||||
public ClassificationQueryImpl(TaskanaEngine taskanaEngine) {
|
||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
||||
|
@ -53,6 +60,24 @@ public class ClassificationQueryImpl implements ClassificationQuery {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery domain(String... domain) {
|
||||
this.domain = domain;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery validInDomain(Boolean validInDomain) {
|
||||
this.validInDomain = validInDomain;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery created(Date... created) {
|
||||
this.created = created;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery name(String... name) {
|
||||
this.name = name;
|
||||
|
@ -77,6 +102,24 @@ public class ClassificationQueryImpl implements ClassificationQuery {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery customFields(String... customFields) {
|
||||
this.customFields = customFields;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery validFrom(Date... validFrom) {
|
||||
this.validFrom = validFrom;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery validUntil(Date... validUntil) {
|
||||
this.validUntil = validUntil;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Classification> list() {
|
||||
return taskanaEngine.getSession().selectList(LINK_TO_MAPPER, this);
|
||||
|
@ -156,4 +199,52 @@ public class ClassificationQueryImpl implements ClassificationQuery {
|
|||
public void setServiceLevel(String[] serviceLevel) {
|
||||
this.serviceLevel = serviceLevel;
|
||||
}
|
||||
|
||||
public String[] getDomain() {
|
||||
return domain;
|
||||
}
|
||||
|
||||
public void setDomain(String[] domain) {
|
||||
this.domain = domain;
|
||||
}
|
||||
|
||||
public Boolean getValidInDomain() {
|
||||
return validInDomain;
|
||||
}
|
||||
|
||||
public void setValidInDomain(Boolean validInDomain) {
|
||||
this.validInDomain = validInDomain;
|
||||
}
|
||||
|
||||
public Date[] getCreated() {
|
||||
return created;
|
||||
}
|
||||
|
||||
public void setCreated(Date[] created) {
|
||||
this.created = created;
|
||||
}
|
||||
|
||||
public String[] getCustomFields() {
|
||||
return customFields;
|
||||
}
|
||||
|
||||
public void setCustomFields(String[] customFields) {
|
||||
this.customFields = customFields;
|
||||
}
|
||||
|
||||
public Date[] getValidFrom() {
|
||||
return validFrom;
|
||||
}
|
||||
|
||||
public void setValidFrom(Date[] validFrom) {
|
||||
this.validFrom = validFrom;
|
||||
}
|
||||
|
||||
public Date[] getValidUntil() {
|
||||
return validUntil;
|
||||
}
|
||||
|
||||
public void setValidUntil(Date[] validUntil) {
|
||||
this.validUntil = validUntil;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package org.taskana.model;
|
||||
|
||||
import java.sql.Date;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Classification entity.
|
||||
|
@ -21,7 +19,6 @@ public class Classification {
|
|||
private String description;
|
||||
private int priority;
|
||||
private String serviceLevel; // PddDThhHmmM
|
||||
private List<Classification> children = new ArrayList<>();
|
||||
private String custom1;
|
||||
private String custom2;
|
||||
private String custom3;
|
||||
|
@ -129,18 +126,6 @@ public class Classification {
|
|||
this.serviceLevel = serviceLevel;
|
||||
}
|
||||
|
||||
public List<Classification> getChildren() {
|
||||
return children;
|
||||
}
|
||||
|
||||
public void addChild(Classification child) {
|
||||
children.add(child);
|
||||
}
|
||||
|
||||
public void setChildren(List<Classification> children) {
|
||||
this.children = children;
|
||||
}
|
||||
|
||||
public String getCustom1() {
|
||||
return custom1;
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.taskana.model.mappings;
|
|||
import org.apache.ibatis.annotations.*;
|
||||
import org.taskana.model.Classification;
|
||||
|
||||
import java.sql.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -10,66 +11,11 @@ import java.util.List;
|
|||
*/
|
||||
public interface ClassificationMapper {
|
||||
|
||||
@Select("SELECT ID, TENANT_ID, PARENT_CLASSIFICATION_ID, CATEGORY, TYPE, DOMAIN, VALID_IN_DOMAIN, CREATED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL, CUSTOM_1, CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8, VALID_FROM, VALID_UNTIL "
|
||||
+ "FROM CLASSIFICATION "
|
||||
+ "ORDER BY ID")
|
||||
@Results({@Result(property = "id", column = "ID"),
|
||||
@Result(property = "tenantId", column = "TENANT_ID"),
|
||||
@Result(property = "parentClassificationId", column = "PARENT_CLASSIFICATION_ID"),
|
||||
@Result(property = "category", column = "CATEGORY"),
|
||||
@Result(property = "type", column = "TYPE"),
|
||||
@Result(property = "domain", column = "DOMAIN"),
|
||||
@Result(property = "isValidInDomain", column = "VALID_IN_DOMAIN"),
|
||||
@Result(property = "created", column = "CREATED"),
|
||||
@Result(property = "name", column = "NAME"),
|
||||
@Result(property = "description", column = "DESCRIPTION"),
|
||||
@Result(property = "priority", column = "PRIORITY"),
|
||||
@Result(property = "serviceLevel", column = "SERVICE_LEVEL"),
|
||||
@Result(property = "custom1", column = "CUSTOM_1"),
|
||||
@Result(property = "custom2", column = "CUSTOM_2"),
|
||||
@Result(property = "custom3", column = "CUSTOM_3"),
|
||||
@Result(property = "custom4", column = "CUSTOM_4"),
|
||||
@Result(property = "custom5", column = "CUSTOM_5"),
|
||||
@Result(property = "custom6", column = "CUSTOM_6"),
|
||||
@Result(property = "custom7", column = "CUSTOM_7"),
|
||||
@Result(property = "custom8", column = "CUSTOM_8"),
|
||||
@Result(property = "validFrom", column = "VALID_FROM"),
|
||||
@Result(property = "validUntil", column = "VALID_UNTIL")})
|
||||
List<Classification> findAll();
|
||||
|
||||
@Select("SELECT ID, TENANT_ID, PARENT_CLASSIFICATION_ID, CATEGORY, TYPE, DOMAIN, VALID_IN_DOMAIN, CREATED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL, CUSTOM_1, CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8, VALID_FROM, VALID_UNTIL "
|
||||
+ "FROM CLASSIFICATION "
|
||||
+ "WHERE PARENT_CLASSIFICATION_ID = #{parentClassificationId} "
|
||||
+ "ORDER BY ID")
|
||||
@Results({@Result(property = "id", column = "ID"),
|
||||
@Result(property = "tenantId", column = "TENANT_ID"),
|
||||
@Result(property = "parentClassificationId", column = "PARENT_CLASSIFICATION_ID"),
|
||||
@Result(property = "category", column = "CATEGORY"),
|
||||
@Result(property = "type", column = "TYPE"),
|
||||
@Result(property = "domain", column = "DOMAIN"),
|
||||
@Result(property = "isValidInDomain", column = "VALID_IN_DOMAIN"),
|
||||
@Result(property = "created", column = "CREATED"),
|
||||
@Result(property = "name", column = "NAME"),
|
||||
@Result(property = "description", column = "DESCRIPTION"),
|
||||
@Result(property = "priority", column = "PRIORITY"),
|
||||
@Result(property = "serviceLevel", column = "SERVICE_LEVEL"),
|
||||
@Result(property = "custom1", column = "CUSTOM_1"),
|
||||
@Result(property = "custom2", column = "CUSTOM_2"),
|
||||
@Result(property = "custom3", column = "CUSTOM_3"),
|
||||
@Result(property = "custom4", column = "CUSTOM_4"),
|
||||
@Result(property = "custom5", column = "CUSTOM_5"),
|
||||
@Result(property = "custom6", column = "CUSTOM_6"),
|
||||
@Result(property = "custom7", column = "CUSTOM_7"),
|
||||
@Result(property = "custom8", column = "CUSTOM_8"),
|
||||
@Result(property = "validFrom", column = "VALID_FROM"),
|
||||
@Result(property = "validUntil", column = "VALID_UNTIL")})
|
||||
List<Classification> findByParentId(@Param("parentClassificationId") String parentId);
|
||||
|
||||
|
||||
@Select("SELECT ID, TENANT_ID, PARENT_CLASSIFICATION_ID, CATEGORY, TYPE, DOMAIN, VALID_IN_DOMAIN, CREATED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL, CUSTOM_1, CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8, VALID_FROM, VALID_UNTIL "
|
||||
+ "FROM CLASSIFICATION "
|
||||
+ "WHERE ID = #{id}"
|
||||
+ "AND DOMAIN = #{domain}")
|
||||
+ "AND DOMAIN = #{domain}"
|
||||
+ "AND VALID_UNTIL = #{valid_until}")
|
||||
@Results({@Result(property = "id", column = "ID"),
|
||||
@Result(property = "tenantId", column = "TENANT_ID"),
|
||||
@Result(property = "parentClassificationId", column = "PARENT_CLASSIFICATION_ID"),
|
||||
|
@ -92,18 +38,21 @@ public interface ClassificationMapper {
|
|||
@Result(property = "custom8", column = "CUSTOM_8"),
|
||||
@Result(property = "validFrom", column = "VALID_FROM"),
|
||||
@Result(property = "validUntil", column = "VALID_UNTIL")})
|
||||
Classification findByIdAndDomain(@Param("id") String id, @Param("domain") String domain);
|
||||
Classification findByIdAndDomain(@Param("id") String id, @Param("domain") String domain, @Param("valid_until")Date validUntil);
|
||||
|
||||
@Insert("INSERT INTO CLASSIFICATION (ID, TENANT_ID, PARENT_CLASSIFICATION_ID, CATEGORY, TYPE, DOMAIN, VALID_IN_DOMAIN, CREATED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL, CUSTOM_1, CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8, VALID_FROM, VALID_UNTIL) VALUES (#{classification.id}, #{classification.tenantId}, #{classification.parentClassificationId}, #{classification.category}, #{classification.type}, #{classification.domain}, #{classification.isValidInDomain}, #{classification.created}, #{classification.name}, #{classification.description}, #{classification.priority}, #{classification.serviceLevel}, #{classification.custom1}, #{classification.custom2}, #{classification.custom3}, #{classification.custom4}, #{classification.custom5}, #{classification.custom6}, #{classification.custom7}, #{classification.custom8}, #{classification.validFrom}, #{classification.validUntil})")
|
||||
void insert(@Param("classification") Classification classification);
|
||||
|
||||
@Update(value = "UPDATE CLASSIFICATION SET TENANT_ID = #{classification.tenantId}, PARENT_CLASSIFICATION_ID = #{classification.parentClassificationId}, CATEGORY = #{classification.category}, TYPE = #{classification.type}, NAME = #{classification.name}, DESCRIPTION = #{classification.description}, PRIORITY = #{classification.priority}, SERVICE_LEVEL = #{classification.serviceLevel}, DOMAIN = #{classification.domain}, VALID_IN_DOMAIN = #{classification.isValidInDomain}, CUSTOM_1 = #{classification.custom1}, CUSTOM_2 = #{classification.custom2}, CUSTOM_3 = #{classification.custom3}, CUSTOM_4 = #{classification.custom4}, CUSTOM_5 = #{classification.custom5}, CUSTOM_6 = #{classification.custom6}, CUSTOM_7 = #{classification.custom7}, CUSTOM_8 = #{classification.custom8}, VALID_FROM = #{classification.validFrom}, VALID_UNTIL = #{classification.validUntil} WHERE ID = #{classification.id}")
|
||||
@Update(value = "UPDATE CLASSIFICATION SET TENANT_ID = #{classification.tenantId}, PARENT_CLASSIFICATION_ID = #{classification.parentClassificationId}, CATEGORY = #{classification.category}, TYPE = #{classification.type}, NAME = #{classification.name}, DESCRIPTION = #{classification.description}, PRIORITY = #{classification.priority}, SERVICE_LEVEL = #{classification.serviceLevel}, DOMAIN = #{classification.domain}, VALID_IN_DOMAIN = #{classification.isValidInDomain}, CUSTOM_1 = #{classification.custom1}, CUSTOM_2 = #{classification.custom2}, CUSTOM_3 = #{classification.custom3}, CUSTOM_4 = #{classification.custom4}, CUSTOM_5 = #{classification.custom5}, CUSTOM_6 = #{classification.custom6}, CUSTOM_7 = #{classification.custom7}, CUSTOM_8 = #{classification.custom8}, VALID_FROM = #{classification.validFrom}, VALID_UNTIL = #{classification.validUntil} WHERE ID = #{classification.id}")
|
||||
void update(@Param("classification") Classification classification);
|
||||
|
||||
@Select("SELECT ID, TENANT_ID, PARENT_CLASSIFICATION_ID, CATEGORY, TYPE, DOMAIN, VALID_IN_DOMAIN, CREATED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL, CUSTOM_1, CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8, VALID_FROM, VALID_UNTIL"
|
||||
@Select("<script>"
|
||||
+ "SELECT * "
|
||||
+ "FROM CLASSIFICATION "
|
||||
+ "WHERE DOMAIN = #{domain}"
|
||||
+ "ORDER BY ID")
|
||||
+ "WHERE ID = #{id} "
|
||||
+ "AND DOMAIN = #{domain}"
|
||||
+ "ORDER BY VALID_FROM DESC"
|
||||
+ "</script>")
|
||||
@Results({@Result(property = "id", column = "ID"),
|
||||
@Result(property = "tenantId", column = "TENANT_ID"),
|
||||
@Result(property = "parentClassificationId", column = "PARENT_CLASSIFICATION_ID"),
|
||||
|
@ -126,31 +75,7 @@ public interface ClassificationMapper {
|
|||
@Result(property = "custom8", column = "CUSTOM_8"),
|
||||
@Result(property = "validFrom", column = "VALID_FROM"),
|
||||
@Result(property = "validUntil", column = "VALID_UNTIL")})
|
||||
List<Classification> findByDomain(@Param("domain") String domain);
|
||||
|
||||
@Select("<script>"
|
||||
+ "SELECT * "
|
||||
+ "FROM CLASSIFICATION "
|
||||
+ "WHERE DOMAIN = #{domain} "
|
||||
+ "AND CATEGORY = #{category} "
|
||||
+ "</script>")
|
||||
List<Classification> getClassificationByDomainAndCategory(@Param("domain") String domain, @Param("category") String category);
|
||||
|
||||
@Select("<script>"
|
||||
+ "SELECT * "
|
||||
+ "FROM CLASSIFICATION "
|
||||
+ "WHERE DOMAIN = #{domain} "
|
||||
+ "AND TYPE = #{type} "
|
||||
+ "</script>")
|
||||
List<Classification> getClassificationByDomainAndType(@Param("domain") String domain, @Param("type") String type);
|
||||
|
||||
@Select("<script>"
|
||||
+ "SELECT * "
|
||||
+ "FROM CLASSIFICATION "
|
||||
+ "WHERE CATEGORY = #{category} "
|
||||
+ "AND TYPE = #{type} "
|
||||
+ "</script>")
|
||||
List<Classification> getClassificationByCategoryAndType(@Param("category") String category, @Param("type") String type);
|
||||
List<Classification> getAllClassificationsWithId(@Param("id") String id, @Param("domain") String domain);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -43,10 +43,16 @@ public interface QueryMapper {
|
|||
+ "<if test='classificationQuery.parentClassificationId != null'>AND c.PARENT_CLASSIFICATION_ID IN(<foreach item='item' collection='classificationQuery.parentClassificationId' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationQuery.category != null'>AND c.CATEGORY IN(<foreach item='item' collection='classificationQuery.category' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationQuery.type != null'>AND c.TYPE IN(<foreach item='item' collection='classificationQuery.type' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationQuery.domain != null'>AND c.DOMAIN IN(<foreach item='item' collection='classificationQuery.domain' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationQuery.validInDomain != null'>AND c.VALID_IN_DOMAIN like #{classificationQuery.validInDomain}</if> "
|
||||
+ "<if test='classificationQuery.created != null'>AND c.CREATED IN(<foreach item='item' collection='classificationQuery.created' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationQuery.name != null'>AND c.NAME IN(<foreach item='item' collection='classificationQuery.name' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationQuery.description != null'>AND c.DESCRIPTION like #{classificationQuery.description}</if> "
|
||||
+ "<if test='classificationQuery.priority != null'>AND c.PRIORITY IN(<foreach item='item' collection='classificationQuery.priority' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationQuery.serviceLevel != null'>AND c.SERVICE_LEVEL IN(<foreach item='item' collection='classificationQuery.serviceLevel' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationQuery.customFields != null'>AND (c.CUSTOM_1 IN(<foreach item='item' collection='classificationQuery.customFields' separator=',' >#{item}</foreach>) OR c.CUSTOM_2 IN(<foreach item='item' collection='classificationQuery.customFields' separator=',' >#{item}</foreach>) OR c.CUSTOM_3 IN(<foreach item='item' collection='classificationQuery.customFields' separator=',' >#{item}</foreach>) OR c.CUSTOM_4 IN(<foreach item='item' collection='classificationQuery.customFields' separator=',' >#{item}</foreach>) OR c.CUSTOM_5 IN(<foreach item='item' collection='classificationQuery.customFields' separator=',' >#{item}</foreach>) OR c.CUSTOM_6 IN(<foreach item='item' collection='classificationQuery.customFields' separator=',' >#{item}</foreach>) OR c.CUSTOM_7 IN(<foreach item='item' collection='classificationQuery.customFields' separator=',' >#{item}</foreach>) OR c.CUSTOM_8 IN(<foreach item='item' collection='classificationQuery.customFields' separator=',' >#{item}</foreach>))</if> "
|
||||
+ "<if test='classificationQuery.validFrom != null'>AND c.VALID_FROM IN(<foreach item='item' collection='classificationQuery.validFrom' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='classificationQuery.validUntil != null'>AND c.VALID_UNTIL IN(<foreach item='item' collection='classificationQuery.validUntil' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "</if>"
|
||||
// Object Reference Query
|
||||
+ "<if test='objectReferenceQuery != null'>"
|
||||
|
@ -64,7 +70,6 @@ public interface QueryMapper {
|
|||
@Result(property = "created", column = "CREATED"),
|
||||
@Result(property = "claimed", column = "CLAIMED"),
|
||||
@Result(property = "completed", column = "COMPLETED"),
|
||||
@Result(property = "modified", column = "MODIFIED"),
|
||||
@Result(property = "planned", column = "PLANNED"),
|
||||
@Result(property = "due", column = "DUE"),
|
||||
@Result(property = "name", column = "NAME"),
|
||||
|
@ -89,17 +94,23 @@ public interface QueryMapper {
|
|||
@Result(property = "custom10", column = "CUSTOM_10") })
|
||||
List<Task> queryTasks(TaskQueryImpl taskQuery);
|
||||
|
||||
@Select("<script>SELECT ID, TENANT_ID, PARENT_CLASSIFICATION_ID, CATEGORY, TYPE, CREATED, MODIFIED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL "
|
||||
@Select("<script>SELECT ID, TENANT_ID, PARENT_CLASSIFICATION_ID, CATEGORY, TYPE, CREATED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL "
|
||||
+ "FROM CLASSIFICATION "
|
||||
+ "<where>"
|
||||
+ "<if test='tenantId != null'>TENANT_ID = #{tenantId}</if> "
|
||||
+ "<if test='parentClassificationId != null'>AND PARENT_CLASSIFICATION_ID IN(<foreach item='item' collection='parentClassificationId' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='category != null'>AND CATEGORY IN(<foreach item='item' collection='category' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='type != null'>AND TYPE IN(<foreach item='item' collection='type' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='domain != null'>AND DOMAIN IN(<foreach item='item' collection='domain' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='validInDomain != null'>AND VALID_IN_DOMAIN like #{validInDomain}</if> "
|
||||
+ "<if test='created != null'>AND CREATED IN(<foreach item='item' collection='created' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='name != null'>AND NAME IN(<foreach item='item' collection='name' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='description != null'>AND DESCRIPTION like #{description}</if> "
|
||||
+ "<if test='priority != null'>AND PRIORITY IN(<foreach item='item' collection='.priority' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='priority != null'>AND PRIORITY IN(<foreach item='item' collection='priority' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='serviceLevel != null'>AND SERVICE_LEVEL IN(<foreach item='item' collection='serviceLevel' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='customFields != null'>AND (CUSTOM_1 IN(<foreach item='item' collection='customFields' separator=',' >#{item}</foreach>) OR CUSTOM_2 IN(<foreach item='item' collection='customFields' separator=',' >#{item}</foreach>) OR CUSTOM_3 IN(<foreach item='item' collection='customFields' separator=',' >#{item}</foreach>) OR CUSTOM_4 IN(<foreach item='item' collection='customFields' separator=',' >#{item}</foreach>) OR CUSTOM_5 IN(<foreach item='item' collection='customFields' separator=',' >#{item}</foreach>) OR CUSTOM_6 IN(<foreach item='item' collection='customFields' separator=',' >#{item}</foreach>) OR CUSTOM_7 IN(<foreach item='item' collection='customFields' separator=',' >#{item}</foreach>) OR CUSTOM_8 IN(<foreach item='item' collection='customFields' separator=',' >#{item}</foreach>))</if> "
|
||||
+ "<if test='validFrom != null'>AND VALID_FROM IN(<foreach item='item' collection='validFrom' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "<if test='validUntil != null'>AND VALID_UNTIL IN(<foreach item='item' collection='validUntil' separator=',' >#{item}</foreach>)</if> "
|
||||
+ "</where>"
|
||||
+ "</script>")
|
||||
@Results({ @Result(property = "id", column = "ID"),
|
||||
|
@ -108,7 +119,6 @@ public interface QueryMapper {
|
|||
@Result(property = "category", column = "CATEGORY"),
|
||||
@Result(property = "type", column = "TYPE"),
|
||||
@Result(property = "created", column = "CREATED"),
|
||||
@Result(property = "modified", column = "MODIFIED"),
|
||||
@Result(property = "name", column = "NAME"),
|
||||
@Result(property = "description", column = "DESCRIPTION"),
|
||||
@Result(property = "priority", column = "PRIORITY"),
|
||||
|
|
|
@ -2,10 +2,13 @@ package org.taskana.persistence;
|
|||
|
||||
import org.taskana.model.Classification;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* ClassificationQuery for generating dynamic sql.
|
||||
*/
|
||||
public interface ClassificationQuery extends BaseQuery<Classification> {
|
||||
|
||||
/**
|
||||
* Add your tenant id to your query.
|
||||
* @param tenantId
|
||||
|
@ -38,6 +41,27 @@ public interface ClassificationQuery extends BaseQuery<Classification> {
|
|||
*/
|
||||
ClassificationQuery type(String... type);
|
||||
|
||||
/**
|
||||
* Add your domain to your query.
|
||||
* @param domain
|
||||
* @return
|
||||
*/
|
||||
ClassificationQuery domain(String... domain);
|
||||
|
||||
/**
|
||||
* Add to your query if the Classification shall be valid in its domain.
|
||||
* @param validInDomain
|
||||
* @return
|
||||
*/
|
||||
ClassificationQuery validInDomain(Boolean validInDomain);
|
||||
|
||||
/**
|
||||
* Add your created-Dates to your query.
|
||||
* @param created
|
||||
* @return
|
||||
*/
|
||||
ClassificationQuery created(Date... created);
|
||||
|
||||
/**
|
||||
* Add your name to your query.
|
||||
* @param name
|
||||
|
@ -71,4 +95,24 @@ public interface ClassificationQuery extends BaseQuery<Classification> {
|
|||
*/
|
||||
ClassificationQuery serviceLevel(String... serviceLevel);
|
||||
|
||||
/**
|
||||
* Add your customFields to your query.
|
||||
* @param customFields
|
||||
* @return
|
||||
*/
|
||||
ClassificationQuery customFields(String... customFields);
|
||||
|
||||
/**
|
||||
* Define after which date the classifications should be valid.
|
||||
* @param validFrom
|
||||
* @return
|
||||
*/
|
||||
ClassificationQuery validFrom(Date... validFrom);
|
||||
|
||||
/**
|
||||
* Define until which date the classifications should be valid.
|
||||
* @param validUntil
|
||||
* @return
|
||||
*/
|
||||
ClassificationQuery validUntil(Date... validUntil);
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ CREATE TABLE TASKANA_SCHEMA_VERSION(
|
|||
);
|
||||
INSERT INTO TASKANA_SCHEMA_VERSION VALUES ('1', '0.0.1');
|
||||
|
||||
CREATE TABLE TASK(
|
||||
CREATE TABLE TASK (
|
||||
ID CHAR(40) NOT NULL,
|
||||
TENANT_ID VARCHAR(32) NULL,
|
||||
CREATED TIMESTAMP NULL,
|
||||
|
@ -59,11 +59,11 @@ CREATE TABLE DISTRIBUTION_TARGETS(
|
|||
CREATE TABLE CLASSIFICATION(
|
||||
ID CHAR(40) NOT NULL,
|
||||
TENANT_ID VARCHAR(32) NULL,
|
||||
PARENT_CLASSIFICATION_ID VARCHAR(255),
|
||||
PARENT_CLASSIFICATION_ID VARCHAR(255) NOT NULL,
|
||||
CATEGORY VARCHAR(255),
|
||||
TYPE VARCHAR(255),
|
||||
DOMAIN VARCHAR(255) NOT NULL,
|
||||
VALID_IN_DOMAIN BOOLEAN NULL,
|
||||
VALID_IN_DOMAIN BOOLEAN NOT NULL,
|
||||
CREATED DATE NULL,
|
||||
NAME VARCHAR(255) NULL,
|
||||
DESCRIPTION VARCHAR(255) NULL,
|
||||
|
@ -77,9 +77,8 @@ CREATE TABLE CLASSIFICATION(
|
|||
CUSTOM_6 VARCHAR(255) NULL,
|
||||
CUSTOM_7 VARCHAR(255) NULL,
|
||||
CUSTOM_8 VARCHAR(255) NULL,
|
||||
VALID_FROM DATE NULL,
|
||||
VALID_UNTIL DATE NULL,
|
||||
PRIMARY KEY (ID)
|
||||
VALID_FROM DATE NOT NULL,
|
||||
VALID_UNTIL DATE NOT NULL,
|
||||
);
|
||||
|
||||
CREATE TABLE WORKBASKET_ACCESS_LIST(
|
||||
|
|
|
@ -5,7 +5,10 @@ import org.junit.Test;
|
|||
import org.junit.runner.RunWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Spy;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
import org.taskana.exceptions.NotAuthorizedException;
|
||||
import org.taskana.impl.persistence.TestClassificationQuery;
|
||||
import org.taskana.model.Classification;
|
||||
import org.taskana.model.mappings.ClassificationMapper;
|
||||
|
||||
|
@ -24,121 +27,50 @@ import static org.mockito.Mockito.*;
|
|||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class ClassificationServiceImplTest {
|
||||
|
||||
@Spy
|
||||
@InjectMocks
|
||||
ClassificationServiceImpl classificationService;
|
||||
|
||||
@Mock
|
||||
ClassificationMapper classificationMapper;
|
||||
|
||||
|
||||
@Test
|
||||
public void testInsertClassification() {
|
||||
public void testAddClassification() {
|
||||
doNothing().when(classificationMapper).insert(any());
|
||||
|
||||
Classification classification = new Classification();
|
||||
classification.setId("0");
|
||||
classificationService.insertClassification(classification);
|
||||
classificationService.addClassification(classification);
|
||||
|
||||
when(classificationMapper.findByIdAndDomain(any(), any())).thenReturn(classification);
|
||||
when(classificationMapper.findByIdAndDomain(any(), any(), any())).thenReturn(classification);
|
||||
|
||||
Assert.assertNotNull(classificationService.selectClassificationById(classification.getId()));
|
||||
Assert.assertNotNull(classificationService.getClassification(classification.getId(), ""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindAllClassifications() {
|
||||
doNothing().when(classificationMapper).insert(any());
|
||||
|
||||
Classification classification0 = new Classification();
|
||||
classification0.setId("0");
|
||||
classification0.setParentClassificationId("");
|
||||
classificationService.insertClassification(classification0);
|
||||
Classification classification1 = new Classification();
|
||||
classification1.setId("1");
|
||||
classification1.setParentClassificationId("");
|
||||
classificationService.insertClassification(classification1);
|
||||
|
||||
List<Classification> classifications = new ArrayList<>();
|
||||
classifications.add(classification0);
|
||||
when(classificationMapper.findByParentId("")).thenReturn(classifications);
|
||||
|
||||
verify(classificationMapper, atLeast(2)).insert(any());
|
||||
Assert.assertEquals(1, classificationService.selectClassifications().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindByParentClassification() {
|
||||
doNothing().when(classificationMapper).insert(any());
|
||||
|
||||
Classification classification0 = new Classification();
|
||||
classification0.setId("0");
|
||||
classification0.setParentClassificationId("0");
|
||||
classificationService.insertClassification(classification0);
|
||||
Classification classification1 = new Classification();
|
||||
classification1.setId("1");
|
||||
classification1.setParentClassificationId("0");
|
||||
classificationService.insertClassification(classification1);
|
||||
|
||||
List<Classification> classifications = new ArrayList<>();
|
||||
classifications.add(classification0);
|
||||
classifications.add(classification1);
|
||||
when(classificationMapper.findByParentId(any())).thenReturn(classifications);
|
||||
|
||||
verify(classificationMapper, times(2)).insert(any());
|
||||
|
||||
Assert.assertEquals(2, classificationService.selectClassificationsByParentId("0").size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testModifiedClassificationSameDay() {
|
||||
doNothing().when(classificationMapper).insert(any());
|
||||
doNothing().when(classificationMapper).update(any());
|
||||
|
||||
Classification classification = new Classification();
|
||||
classificationService.insertClassification(classification);
|
||||
|
||||
when(classificationMapper.findByIdAndDomain(any(), eq(""))).thenReturn(classification);
|
||||
when(classificationMapper.findByIdAndDomain(any(), eq("testDomain"))).thenReturn(null);
|
||||
|
||||
//Same day, same domain
|
||||
Classification classification2 = classification;
|
||||
classification2.setDescription("TEST EVERYTHING");
|
||||
classificationService.updateClassification(classification2);
|
||||
|
||||
//Same day, different domain
|
||||
Classification classification3 = classification;
|
||||
classification3.setDomain("testDomain");
|
||||
|
||||
classificationService.updateClassification(classification3);
|
||||
|
||||
verify(classificationMapper, times(1)).update(any());
|
||||
verify(classificationMapper, times(2)).insert(any()); // insert classification, insert classification 3
|
||||
|
||||
Assert.assertEquals(classification.getValidFrom(), Date.valueOf(LocalDate.now()));
|
||||
Assert.assertEquals(classification.getValidUntil(), classification3.getValidUntil());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testModifiedClassificationDifferentDates() {
|
||||
public void testModifiedClassification() {
|
||||
doNothing().when(classificationMapper).insert(any());
|
||||
doNothing().when(classificationMapper).update(any());
|
||||
|
||||
int insert = 0;
|
||||
|
||||
Classification classification = new Classification();
|
||||
classificationService.insertClassification(classification);
|
||||
classification.setId("0");
|
||||
classificationService.addClassification(classification);
|
||||
insert++;
|
||||
classification.setValidFrom(Date.valueOf(LocalDate.now().minusDays(1)));
|
||||
|
||||
when(classificationMapper.findByIdAndDomain(any(), eq(""))).thenReturn(classification);
|
||||
when(classificationMapper.findByIdAndDomain(any(), eq("testDomain"))).thenReturn(null);
|
||||
when(classificationMapper.findByIdAndDomain(any(), any(), any())).thenReturn(classification);
|
||||
|
||||
//Different day, same domain
|
||||
Classification classification2 = classification;
|
||||
//same domain
|
||||
Classification classification2 = new Classification();
|
||||
classification2.setId(classification.getId());
|
||||
classification2.setDescription("TEST EVERYTHING");
|
||||
classificationService.updateClassification(classification2);
|
||||
insert++;
|
||||
|
||||
//Different day, different domain
|
||||
Classification classification3 = classification;
|
||||
//different domain
|
||||
Classification classification3 = new Classification();
|
||||
classification3.setId(classification.getId());
|
||||
classification3.setDomain("testDomain");
|
||||
classificationService.updateClassification(classification3);
|
||||
|
@ -147,7 +79,60 @@ public class ClassificationServiceImplTest {
|
|||
verify(classificationMapper, times(1)).update(any()); // update when same domain
|
||||
verify(classificationMapper, times(insert)).insert(any()); // insert all classifications
|
||||
|
||||
Assert.assertEquals(classification.getValidFrom(), Date.valueOf(LocalDate.now()));
|
||||
Assert.assertEquals(classification.getValidUntil(), Date.valueOf(LocalDate.now().minusDays(1)));
|
||||
Assert.assertEquals(classification2.getValidUntil(), classification3.getValidUntil());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindAllClassifications() throws NotAuthorizedException {
|
||||
doNothing().when(classificationMapper).insert(any());
|
||||
|
||||
// insert Classifications
|
||||
Classification classification0 = new Classification();
|
||||
classificationService.addClassification(classification0);
|
||||
Classification classification1 = new Classification();
|
||||
classificationService.addClassification(classification1);
|
||||
Classification classification2 = new Classification();
|
||||
classification2.setParentClassificationId(classification0.getId());
|
||||
classificationService.addClassification(classification2);
|
||||
|
||||
//update Classification1
|
||||
Classification classification11 = new Classification();
|
||||
classification11.setId(classification1.getId());
|
||||
when(classificationMapper.findByIdAndDomain(any(), any(), any())).thenReturn(classification1);
|
||||
classificationService.updateClassification(classification11);
|
||||
|
||||
List<Classification> classifications = new ArrayList<>();
|
||||
classifications.add(classification0);
|
||||
classifications.add(classification1);
|
||||
classifications.add(classification2);
|
||||
classifications.add(classification11);
|
||||
doReturn(new TestClassificationQuery(classifications)).when(classificationService).createClassificationQuery();
|
||||
|
||||
List<Classification> classificationList = classificationService.getClassificationTree();
|
||||
|
||||
verify(classificationMapper, atLeast(2)).insert(any());
|
||||
Assert.assertEquals(2 + 1, classificationList.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClassificationQuery() throws NotAuthorizedException {
|
||||
doNothing().when(classificationMapper).insert(any());
|
||||
|
||||
Classification classification = new Classification();
|
||||
classification.setDescription("DESC");
|
||||
classificationService.addClassification(classification);
|
||||
Classification classification1 = new Classification();
|
||||
classification1.setDescription("ABC");
|
||||
classificationService.addClassification(classification1);
|
||||
|
||||
List<Classification> classifications = new ArrayList<>();
|
||||
classifications.add(classification);
|
||||
classifications.add(classification1);
|
||||
|
||||
doReturn(new TestClassificationQuery(classifications)).when(classificationService).createClassificationQuery();
|
||||
|
||||
List<Classification> classificationDESC = classificationService.createClassificationQuery().descriptionLike("DESC").list();
|
||||
Assert.assertEquals(1, classificationDESC.size());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
package org.taskana.impl.integration;
|
||||
|
||||
import org.h2.jdbcx.JdbcDataSource;
|
||||
import org.h2.store.fs.FileUtils;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.taskana.ClassificationService;
|
||||
import org.taskana.TaskanaEngine;
|
||||
import org.taskana.configuration.TaskanaEngineConfiguration;
|
||||
import org.taskana.exceptions.NotAuthorizedException;
|
||||
import org.taskana.model.Classification;
|
||||
|
||||
import javax.security.auth.login.LoginException;
|
||||
|
@ -14,6 +17,7 @@ import java.io.FileNotFoundException;
|
|||
import java.sql.Date;
|
||||
import java.sql.SQLException;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Integration Test for ClassificationServiceImpl.
|
||||
|
@ -38,45 +42,29 @@ public class ClassificationServiceImplIntTest {
|
|||
@Test
|
||||
public void testInsertClassification() {
|
||||
Classification classification = new Classification();
|
||||
classification.setId("0");
|
||||
classificationService.insertClassification(classification);
|
||||
classificationService.addClassification(classification);
|
||||
|
||||
Assert.assertNotNull(classificationService.selectClassificationById(classification.getId()));
|
||||
Assert.assertNotNull(classificationService.getClassification(classification.getId(), ""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindAllClassifications() {
|
||||
public void testFindAllClassifications() throws NotAuthorizedException {
|
||||
Classification classification0 = new Classification();
|
||||
classification0.setId("0");
|
||||
classification0.setParentClassificationId("");
|
||||
classificationService.insertClassification(classification0);
|
||||
classificationService.addClassification(classification0);
|
||||
Classification classification1 = new Classification();
|
||||
classification1.setId("1");
|
||||
classification1.setParentClassificationId("");
|
||||
classificationService.insertClassification(classification1);
|
||||
classificationService.addClassification(classification1);
|
||||
Classification classification2 = new Classification();
|
||||
classification2.setParentClassificationId(classification0.getId());
|
||||
classificationService.addClassification(classification2);
|
||||
|
||||
Assert.assertEquals(2, classificationService.selectClassifications().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindByParentClassification() {
|
||||
Classification classification0 = new Classification();
|
||||
classification0.setId("0");
|
||||
classification0.setParentClassificationId("0");
|
||||
classificationService.insertClassification(classification0);
|
||||
Classification classification1 = new Classification();
|
||||
classification1.setId("1");
|
||||
classification1.setParentClassificationId("0");
|
||||
classificationService.insertClassification(classification1);
|
||||
|
||||
Assert.assertEquals(2, classificationService.selectClassificationsByParentId("0").size());
|
||||
Assert.assertEquals(2 + 1, classificationService.getClassificationTree().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testModifiedClassification() {
|
||||
|
||||
Classification classification = new Classification();
|
||||
classificationService.insertClassification(classification);
|
||||
classificationService.addClassification(classification);
|
||||
classification.setDescription("TEST SOMETHING");
|
||||
classificationService.updateClassification(classification);
|
||||
|
||||
|
@ -84,22 +72,188 @@ public class ClassificationServiceImplIntTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testFindByDomainAndCategory() {
|
||||
public void testInsertAndClassificationMapper() throws NotAuthorizedException {
|
||||
Classification classification = new Classification();
|
||||
classificationService.addClassification(classification);
|
||||
Date today = Date.valueOf(LocalDate.now());
|
||||
List<Classification> list = classificationService.createClassificationQuery().validInDomain(Boolean.TRUE).created(today).validFrom(today).validUntil(Date.valueOf("9999-12-31")).list();
|
||||
Assert.assertEquals(1, list.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateAndClassificationMapper() throws NotAuthorizedException {
|
||||
Classification classification = new Classification();
|
||||
classificationService.addClassification(classification);
|
||||
System.out.println(classification.getId());
|
||||
classification.setDescription("description");
|
||||
classificationService.updateClassification(classification);
|
||||
|
||||
List<Classification> list = classificationService.createClassificationQuery().validUntil(Date.valueOf("9999-12-31")).list();
|
||||
Assert.assertEquals(1, list.size());
|
||||
list = classificationService.createClassificationQuery().validInDomain(true).list();
|
||||
Assert.assertEquals(2, list.size());
|
||||
|
||||
classification.setDomain("domain");
|
||||
classificationService.updateClassification(classification);
|
||||
System.out.println(classification.getId());
|
||||
list = classificationService.createClassificationQuery().validUntil(Date.valueOf("9999-12-31")).list();
|
||||
Assert.assertEquals(2, list.size());
|
||||
|
||||
System.out.println(classification.getParentClassificationId());
|
||||
|
||||
list = classificationService.getClassificationTree();
|
||||
Assert.assertEquals(2, list.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindWithClassificationMapperDomainAndCategory() throws NotAuthorizedException {
|
||||
Classification classification1 = new Classification();
|
||||
classification1.setDomain("domain1");
|
||||
classification1.setCategory("category1");
|
||||
classificationService.insertClassification(classification1);
|
||||
classificationService.addClassification(classification1);
|
||||
Classification classification2 = new Classification();
|
||||
classification2.setDomain("domain2");
|
||||
classification2.setCategory("category1");
|
||||
classificationService.insertClassification(classification2);
|
||||
classificationService.addClassification(classification2);
|
||||
Classification classification3 = new Classification();
|
||||
classification3.setDomain("domain1");
|
||||
classification3.setCategory("category2");
|
||||
classificationService.insertClassification(classification3);
|
||||
classificationService.addClassification(classification3);
|
||||
|
||||
int sizeOfReturn = classificationService.selectClassificationByDomainAndCategory("domain1", "category1").size();
|
||||
Assert.assertEquals(sizeOfReturn, 1);
|
||||
List<Classification> list = classificationService.createClassificationQuery().category("category1").domain("domain1").list();
|
||||
Assert.assertEquals(1, list.size());
|
||||
list = classificationService.createClassificationQuery().domain("domain1", "domain3").list();
|
||||
Assert.assertEquals(2, list.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindWithClassificationMapperTenantCustomAndCategory() throws NotAuthorizedException {
|
||||
Classification classification1 = new Classification();
|
||||
classification1.setTenantId("tenant1");
|
||||
classification1.setCategory("category1");
|
||||
classificationService.addClassification(classification1);
|
||||
Classification classification2 = new Classification();
|
||||
classification2.setTenantId("tenant1");
|
||||
classification2.setCustom1("custom1");
|
||||
classification2.setCategory("category1");
|
||||
classificationService.addClassification(classification2);
|
||||
Classification classification3 = new Classification();
|
||||
classification3.setCustom1("custom2");
|
||||
classification3.setCustom2("custom1");
|
||||
classification3.setCategory("category2");
|
||||
classificationService.addClassification(classification3);
|
||||
Classification classification4 = new Classification();
|
||||
classification4.setTenantId("tenant2");
|
||||
classification4.setCustom8("custom2");
|
||||
classification4.setCategory("category1");
|
||||
classificationService.addClassification(classification4);
|
||||
|
||||
List<Classification> list = classificationService.createClassificationQuery().tenantId("tenant1").customFields("custom1").list();
|
||||
Assert.assertEquals(1, list.size());
|
||||
list = classificationService.createClassificationQuery().customFields("custom2").list();
|
||||
Assert.assertEquals(2, list.size());
|
||||
list = classificationService.createClassificationQuery().tenantId("tenant1").category("category1").list();
|
||||
Assert.assertEquals(2, list.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindWithClassificationMapperPriorityTypeAndParent() throws NotAuthorizedException {
|
||||
Classification classification = new Classification();
|
||||
classification.setPriority(Integer.decode("5"));
|
||||
classification.setType("type1");
|
||||
classificationService.addClassification(classification);
|
||||
Classification classification1 = new Classification();
|
||||
classification1.setPriority(Integer.decode("3"));
|
||||
classification1.setType("type1");
|
||||
classification1.setParentClassificationId(classification.getId());
|
||||
classificationService.addClassification(classification1);
|
||||
Classification classification2 = new Classification();
|
||||
classification2.setPriority(Integer.decode("5"));
|
||||
classification2.setType("type2");
|
||||
classification2.setParentClassificationId(classification.getId());
|
||||
classificationService.addClassification(classification2);
|
||||
Classification classification3 = new Classification();
|
||||
classification3.setPriority(Integer.decode("5"));
|
||||
classification3.setType("type1");
|
||||
classification3.setParentClassificationId(classification1.getId());
|
||||
classificationService.addClassification(classification3);
|
||||
|
||||
List<Classification> list = classificationService.createClassificationQuery().parentClassification(classification.getId()).list();
|
||||
Assert.assertEquals(2, list.size());
|
||||
list = classificationService.createClassificationQuery().type("type1").priority(Integer.decode("5")).list();
|
||||
Assert.assertEquals(2, list.size());
|
||||
list = classificationService.createClassificationQuery().priority(Integer.decode("5")).type("type1").parentClassification(classification1.getId()).list();
|
||||
Assert.assertEquals(1, list.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFindWithClassificationMapperServiceLevelNameAndDescription() throws NotAuthorizedException {
|
||||
int all = 0;
|
||||
Classification classification = new Classification();
|
||||
classification.setServiceLevel("P1D");
|
||||
classification.setName("name1");
|
||||
classification.setDescription("desc");
|
||||
classificationService.addClassification(classification);
|
||||
all++;
|
||||
Classification classification1 = new Classification();
|
||||
classification1.setServiceLevel("P1DT1H");
|
||||
classification1.setName("name1");
|
||||
classification1.setDescription("desc");
|
||||
classificationService.addClassification(classification1);
|
||||
all++;
|
||||
Classification classification2 = new Classification();
|
||||
classification2.setServiceLevel("P1D");
|
||||
classification2.setName("name");
|
||||
classification2.setDescription("desc");
|
||||
classificationService.addClassification(classification2);
|
||||
all++;
|
||||
Classification classification3 = new Classification();
|
||||
classification3.setName("name1");
|
||||
classification3.setDescription("description");
|
||||
classificationService.addClassification(classification3);
|
||||
all++;
|
||||
|
||||
List<Classification> list = classificationService.createClassificationQuery().name("name").list();
|
||||
Assert.assertEquals(1, list.size());
|
||||
list = classificationService.createClassificationQuery().serviceLevel("P1D").descriptionLike("desc").list();
|
||||
Assert.assertEquals(2, list.size());
|
||||
list = classificationService.createClassificationQuery().serviceLevel("P1DT1H").name("name").list();
|
||||
Assert.assertEquals(0, list.size());
|
||||
list = classificationService.createClassificationQuery().descriptionLike("desc%").list();
|
||||
Assert.assertEquals(all, list.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDefaultSettingsWithClassificationMapper() throws NotAuthorizedException {
|
||||
Classification classification = new Classification();
|
||||
Classification classification1 = new Classification();
|
||||
classificationService.addClassification(classification);
|
||||
classificationService.addClassification(classification1);
|
||||
classification1.setParentClassificationId(classification.getId());
|
||||
classificationService.updateClassification(classification1);
|
||||
|
||||
List<Classification>
|
||||
list = classificationService.createClassificationQuery().parentClassification("").list();
|
||||
Assert.assertEquals(2, list.size());
|
||||
list = classificationService.createClassificationQuery().validUntil(Date.valueOf("9999-12-31")).list();
|
||||
Assert.assertEquals(2, list.size());
|
||||
|
||||
List<Classification> listAll = classificationService.createClassificationQuery().list();
|
||||
list = classificationService.createClassificationQuery().validFrom(Date.valueOf(LocalDate.now())).list();
|
||||
Assert.assertEquals(listAll.size(), list.size());
|
||||
list = classificationService.createClassificationQuery().validInDomain(true).list();
|
||||
Assert.assertEquals(listAll.size(), list.size());
|
||||
list = classificationService.createClassificationQuery().created(Date.valueOf(LocalDate.now())).list();
|
||||
Assert.assertEquals(listAll.size(), list.size());
|
||||
|
||||
list = classificationService.createClassificationQuery().domain("domain1").validInDomain(false).list();
|
||||
Assert.assertEquals(0, list.size());
|
||||
list = classificationService.createClassificationQuery().validFrom(Date.valueOf((LocalDate.now()))).validUntil(Date.valueOf(LocalDate.now().minusDays(1))).list();
|
||||
Assert.assertEquals(1, list.size());
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void cleanUp() {
|
||||
FileUtils.deleteRecursive("~/data", true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
package org.taskana.impl.integration;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
import org.h2.jdbcx.JdbcDataSource;
|
||||
import org.h2.store.fs.FileUtils;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.taskana.TaskanaEngine;
|
||||
|
@ -20,6 +18,10 @@ import org.taskana.model.TaskState;
|
|||
import org.taskana.persistence.ClassificationQuery;
|
||||
import org.taskana.persistence.ObjectReferenceQuery;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Integration Test for TaskServiceImpl transactions.
|
||||
* @author EH
|
||||
|
@ -123,4 +125,8 @@ public class TaskServiceImplTransactionTest {
|
|||
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void cleanUp() {
|
||||
FileUtils.deleteRecursive("~/data", true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,8 @@
|
|||
package org.taskana.impl.integration;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.security.auth.login.LoginException;
|
||||
|
||||
import org.h2.jdbcx.JdbcDataSource;
|
||||
import org.h2.store.fs.FileUtils;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
@ -19,6 +14,12 @@ import org.taskana.exceptions.WorkbasketNotFoundException;
|
|||
import org.taskana.model.Workbasket;
|
||||
import org.taskana.model.WorkbasketAccessItem;
|
||||
|
||||
import javax.security.auth.login.LoginException;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* Integration Test for workbasketServiceImpl.
|
||||
|
@ -181,4 +182,8 @@ public class WorkbasketServiceImplIntTest {
|
|||
workbasketServiceImpl.getWorkbasketAuthorization(accessItem.getId()).getUserId());
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void cleanUp() {
|
||||
FileUtils.deleteRecursive("~/data", true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,149 @@
|
|||
package org.taskana.impl.persistence;
|
||||
|
||||
import org.taskana.exceptions.NotAuthorizedException;
|
||||
import org.taskana.model.Classification;
|
||||
import org.taskana.persistence.ClassificationQuery;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by BV on 26.10.2017.
|
||||
*/
|
||||
public class TestClassificationQuery implements ClassificationQuery {
|
||||
|
||||
private List<Classification> classifications;
|
||||
private String[] parentId;
|
||||
private Date[] validUntil;
|
||||
private String description;
|
||||
|
||||
public TestClassificationQuery(List<Classification> classifications) {
|
||||
this.classifications = classifications;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery tenantId(String tenantId) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery parentClassification(String... parentClassificationId) {
|
||||
parentId = parentClassificationId;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery category(String... category) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery type(String... type) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery domain(String... domain) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery validInDomain(Boolean validInDomain) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery created(Date... created) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery name(String... name) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery descriptionLike(String description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery priority(int... priorities) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery serviceLevel(String... serviceLevel) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery customFields(String... customFields) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery validFrom(Date... validFrom) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassificationQuery validUntil(Date... validUntil) {
|
||||
this.validUntil = validUntil;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Classification> list() throws NotAuthorizedException {
|
||||
List<Classification> returnedClassifications = new ArrayList<>();
|
||||
returnedClassifications.addAll(classifications);
|
||||
for (Classification classification : classifications) {
|
||||
if (this.validUntil != null) {
|
||||
boolean validDate = false;
|
||||
for (Date valid : validUntil) {
|
||||
if (!classification.getValidUntil().before(valid)) {
|
||||
validDate = true;
|
||||
}
|
||||
}
|
||||
if (!validDate) {
|
||||
returnedClassifications.remove(classification);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.parentId != null) {
|
||||
Boolean classificationWithParent = false;
|
||||
if (classification.getParentClassificationId() != null) {
|
||||
for (String parent : this.parentId) {
|
||||
if (parent.equals(classification.getParentClassificationId())) {
|
||||
classificationWithParent = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!classificationWithParent) {
|
||||
returnedClassifications.remove(classification);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.description != null) {
|
||||
if (classification.getDescription() != description) {
|
||||
returnedClassifications.remove(classification);
|
||||
}
|
||||
}
|
||||
}
|
||||
return returnedClassifications;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Classification> list(int offset, int limit) throws NotAuthorizedException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Classification single() throws NotAuthorizedException {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -21,19 +21,29 @@ public class ClassificationController {
|
|||
private ClassificationService classificationService;
|
||||
|
||||
@RequestMapping
|
||||
public List<Classification> getClassifications() {
|
||||
return classificationService.selectClassifications();
|
||||
public ResponseEntity<List<Classification>> getClassifications() {
|
||||
try {
|
||||
List<Classification> classificationTree = classificationService.getClassificationTree();
|
||||
return ResponseEntity.status(HttpStatus.CREATED).body(classificationTree);
|
||||
} catch (Exception e) {
|
||||
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
|
||||
}
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/{classificationId}")
|
||||
public Classification getClassification(@PathVariable String classificationId) {
|
||||
return classificationService.selectClassificationById(classificationId);
|
||||
return classificationService.getClassification(classificationId, "");
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/{classificationId}/{domain}")
|
||||
public Classification getClassification(@PathVariable String classificationId, @PathVariable String domain) {
|
||||
return classificationService.getClassification(classificationId, domain);
|
||||
}
|
||||
|
||||
@RequestMapping(method = RequestMethod.POST)
|
||||
public ResponseEntity<Classification> createClassification(@RequestBody Classification classification) {
|
||||
try {
|
||||
classificationService.insertClassification(classification);
|
||||
classificationService.addClassification(classification);
|
||||
return ResponseEntity.status(HttpStatus.CREATED).body(classification);
|
||||
} catch (Exception e) {
|
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
|
||||
|
|
Loading…
Reference in New Issue