TSK-991 after initial refactoring

This commit is contained in:
BerndBreier 2020-01-31 10:43:13 +01:00
parent 5d39ff63e2
commit 3b13b9a95e
352 changed files with 2555 additions and 2409 deletions

View File

@ -6,8 +6,8 @@ import java.util.List;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.TimeInterval; import pro.taskana.common.api.TimeInterval;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.simplehistory.impl.mappings.HistoryQueryMapper; import pro.taskana.simplehistory.impl.mappings.HistoryQueryMapper;
import pro.taskana.simplehistory.query.HistoryQuery; import pro.taskana.simplehistory.query.HistoryQuery;
import pro.taskana.simplehistory.query.HistoryQueryColumnName; import pro.taskana.simplehistory.query.HistoryQueryColumnName;

View File

@ -5,7 +5,7 @@ import java.time.Instant;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.TaskanaEngineConfiguration;
import pro.taskana.history.api.TaskanaHistory; import pro.taskana.history.api.TaskanaHistory;
import pro.taskana.history.api.TaskanaHistoryEvent; import pro.taskana.history.api.TaskanaHistoryEvent;
import pro.taskana.simplehistory.impl.mappings.HistoryEventMapper; import pro.taskana.simplehistory.impl.mappings.HistoryEventMapper;

View File

@ -13,7 +13,7 @@ import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import org.apache.ibatis.transaction.managed.ManagedTransactionFactory; import org.apache.ibatis.transaction.managed.ManagedTransactionFactory;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.TaskanaEngineConfiguration;
import pro.taskana.history.api.TaskanaHistory; import pro.taskana.history.api.TaskanaHistory;
import pro.taskana.simplehistory.TaskanaHistoryEngine; import pro.taskana.simplehistory.TaskanaHistoryEngine;
import pro.taskana.simplehistory.configuration.DbSchemaCreator; import pro.taskana.simplehistory.configuration.DbSchemaCreator;

View File

@ -1,8 +1,8 @@
package pro.taskana.simplehistory.query; package pro.taskana.simplehistory.query;
import pro.taskana.BaseQuery; import pro.taskana.common.api.BaseQuery;
import pro.taskana.TimeInterval; import pro.taskana.common.api.TimeInterval;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.simplehistory.impl.HistoryEventImpl; import pro.taskana.simplehistory.impl.HistoryEventImpl;
/** HistoryQuery for generating dynamic sql. */ /** HistoryQuery for generating dynamic sql. */

View File

@ -1,6 +1,6 @@
package pro.taskana.simplehistory.query; package pro.taskana.simplehistory.query;
import pro.taskana.QueryColumnName; import pro.taskana.common.api.QueryColumnName;
/** /**
* Enum containing the column names for {@link * Enum containing the column names for {@link

View File

@ -15,7 +15,7 @@ import org.junit.BeforeClass;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.TaskanaEngineConfiguration;
import pro.taskana.simplehistory.impl.HistoryEventImpl; import pro.taskana.simplehistory.impl.HistoryEventImpl;
import pro.taskana.simplehistory.impl.SimpleHistoryServiceImpl; import pro.taskana.simplehistory.impl.SimpleHistoryServiceImpl;

View File

@ -10,8 +10,8 @@ import java.time.Instant;
import java.util.List; import java.util.List;
import org.junit.Test; import org.junit.Test;
import pro.taskana.BaseQuery.SortDirection; import pro.taskana.common.api.BaseQuery.SortDirection;
import pro.taskana.TimeInterval; import pro.taskana.common.api.TimeInterval;
import pro.taskana.simplehistory.impl.HistoryEventImpl; import pro.taskana.simplehistory.impl.HistoryEventImpl;
import pro.taskana.simplehistory.query.HistoryQuery; import pro.taskana.simplehistory.query.HistoryQuery;
import pro.taskana.simplehistory.query.HistoryQueryColumnName; import pro.taskana.simplehistory.query.HistoryQueryColumnName;

View File

@ -8,8 +8,8 @@ import javax.sql.DataSource;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import pro.taskana.TaskanaEngine; import pro.taskana.common.api.TaskanaEngine;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.TaskanaEngineConfiguration;
/** /**
* Unit Test for TaskanaEngineConfigurationTest. * Unit Test for TaskanaEngineConfigurationTest.

View File

@ -15,7 +15,7 @@ import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner; import org.mockito.junit.MockitoJUnitRunner;
import pro.taskana.TimeInterval; import pro.taskana.common.api.TimeInterval;
import pro.taskana.simplehistory.impl.mappings.HistoryQueryMapper; import pro.taskana.simplehistory.impl.mappings.HistoryQueryMapper;
/** /**

View File

@ -25,7 +25,7 @@ import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunner;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.TaskanaEngineConfiguration;
import pro.taskana.simplehistory.impl.mappings.HistoryEventMapper; import pro.taskana.simplehistory.impl.mappings.HistoryEventMapper;
import pro.taskana.simplehistory.impl.mappings.HistoryQueryMapper; import pro.taskana.simplehistory.impl.mappings.HistoryQueryMapper;

View File

@ -16,11 +16,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import pro.taskana.BaseQuery; import pro.taskana.common.api.BaseQuery;
import pro.taskana.TimeInterval; import pro.taskana.common.api.TimeInterval;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.TaskanaEngineConfiguration;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.impl.util.LoggerUtils; import pro.taskana.common.internal.util.LoggerUtils;
import pro.taskana.rest.AbstractPagingController; import pro.taskana.rest.AbstractPagingController;
import pro.taskana.rest.resource.PagedResources.PageMetadata; import pro.taskana.rest.resource.PagedResources.PageMetadata;
import pro.taskana.rest.resource.TaskHistoryEventListAssembler; import pro.taskana.rest.resource.TaskHistoryEventListAssembler;

View File

@ -13,7 +13,7 @@ import org.apache.ibatis.jdbc.ScriptRunner;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.configuration.DB; import pro.taskana.common.internal.configuration.DB;
/** This class generates sample data for manual testing purposes. */ /** This class generates sample data for manual testing purposes. */
public class SampleDataGenerator { public class SampleDataGenerator {

View File

@ -35,7 +35,7 @@ import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import pro.taskana.exceptions.SystemException; import pro.taskana.common.api.exceptions.SystemException;
import pro.taskana.rest.resource.TaskHistoryEventListResource; import pro.taskana.rest.resource.TaskHistoryEventListResource;
import pro.taskana.rest.simplehistory.TaskHistoryRestConfiguration; import pro.taskana.rest.simplehistory.TaskHistoryRestConfiguration;
import pro.taskana.rest.simplehistory.sampledata.SampleDataGenerator; import pro.taskana.rest.simplehistory.sampledata.SampleDataGenerator;

View File

@ -6,14 +6,16 @@ import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.Initialized; import javax.enterprise.context.Initialized;
import javax.enterprise.event.Observes; import javax.enterprise.event.Observes;
import pro.taskana.exceptions.ClassificationNotFoundException; import pro.taskana.classification.api.exceptions.ClassificationNotFoundException;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.InvalidOwnerException; import pro.taskana.common.api.exceptions.InvalidOwnerException;
import pro.taskana.exceptions.InvalidStateException; import pro.taskana.common.api.exceptions.InvalidStateException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.TaskAlreadyExistException; import pro.taskana.task.api.exceptions.TaskAlreadyExistException;
import pro.taskana.exceptions.TaskNotFoundException; import pro.taskana.task.api.exceptions.TaskNotFoundException;
import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException;
import pro.taskana.task.api.ObjectReference;
import pro.taskana.task.api.Task;
/** Example Bootstrap Application. */ /** Example Bootstrap Application. */
@ApplicationScoped @ApplicationScoped

View File

@ -3,6 +3,8 @@ package pro.taskana;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.inject.Inject; import javax.inject.Inject;
import pro.taskana.task.api.TaskService;
/** example Taskana EJB. */ /** example Taskana EJB. */
@Stateless @Stateless
public class TaskanaEjb { public class TaskanaEjb {

View File

@ -17,7 +17,10 @@ import javax.sql.DataSource;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.classification.api.ClassificationService;
import pro.taskana.common.api.TaskanaEngine;
import pro.taskana.task.api.TaskService;
import pro.taskana.workbasket.api.WorkbasketService;
/** TODO. */ /** TODO. */
@ApplicationScoped @ApplicationScoped

View File

@ -3,11 +3,16 @@ package pro.taskana;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.inject.Inject; import javax.inject.Inject;
import pro.taskana.exceptions.ClassificationNotFoundException; import pro.taskana.classification.api.ClassificationService;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.classification.api.exceptions.ClassificationNotFoundException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.TaskAlreadyExistException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.task.api.exceptions.TaskAlreadyExistException;
import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException;
import pro.taskana.task.api.ObjectReference;
import pro.taskana.task.api.Task;
import pro.taskana.task.api.TaskService;
import pro.taskana.workbasket.api.WorkbasketService;
/** TODO. */ /** TODO. */
@Stateless @Stateless

View File

@ -11,18 +11,24 @@ import javax.ws.rs.core.Response;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.exceptions.ClassificationAlreadyExistException; import pro.taskana.classification.api.Classification;
import pro.taskana.exceptions.ClassificationNotFoundException; import pro.taskana.classification.api.ClassificationService;
import pro.taskana.exceptions.DomainNotFoundException; import pro.taskana.classification.api.exceptions.ClassificationAlreadyExistException;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.classification.api.exceptions.ClassificationNotFoundException;
import pro.taskana.exceptions.InvalidOwnerException; import pro.taskana.common.api.exceptions.DomainNotFoundException;
import pro.taskana.exceptions.InvalidStateException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.InvalidWorkbasketException; import pro.taskana.common.api.exceptions.InvalidOwnerException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.api.exceptions.InvalidStateException;
import pro.taskana.exceptions.TaskAlreadyExistException; import pro.taskana.workbasket.api.exceptions.InvalidWorkbasketException;
import pro.taskana.exceptions.TaskNotFoundException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.WorkbasketAlreadyExistException; import pro.taskana.task.api.exceptions.TaskAlreadyExistException;
import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.task.api.exceptions.TaskNotFoundException;
import pro.taskana.workbasket.api.exceptions.WorkbasketAlreadyExistException;
import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException;
import pro.taskana.task.api.ObjectReference;
import pro.taskana.task.api.Task;
import pro.taskana.workbasket.api.Workbasket;
import pro.taskana.workbasket.api.WorkbasketType;
/** TODO. */ /** TODO. */
@Path("/test") @Path("/test")

View File

@ -1,4 +1,4 @@
package pro.taskana.configuration; package pro.taskana;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@ -27,11 +27,13 @@ import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.TaskanaEngine; import pro.taskana.common.api.TaskanaEngine;
import pro.taskana.TaskanaRole; import pro.taskana.common.api.exceptions.SystemException;
import pro.taskana.exceptions.SystemException; import pro.taskana.common.internal.TaskanaEngineImpl;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.common.internal.configuration.DB;
import pro.taskana.impl.util.LoggerUtils; import pro.taskana.common.internal.configuration.DbSchemaCreator;
import pro.taskana.common.internal.util.LoggerUtils;
import pro.taskana.task.api.TaskanaRole;
/** /**
* This central class creates the TaskanaEngine and holds all the information about DB and Security. * This central class creates the TaskanaEngine and holds all the information about DB and Security.

View File

@ -1,9 +1,9 @@
package pro.taskana; package pro.taskana.classification.api;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import java.time.Instant; import java.time.Instant;
import pro.taskana.impl.ClassificationImpl; import pro.taskana.classification.internal.ClassificationImpl;
/** Interface used to specify the Classification-Model. */ /** Interface used to specify the Classification-Model. */
@JsonDeserialize(as = ClassificationImpl.class) @JsonDeserialize(as = ClassificationImpl.class)

View File

@ -1,6 +1,8 @@
package pro.taskana; package pro.taskana.classification.api;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.BaseQuery;
import pro.taskana.common.api.TimeInterval;
import pro.taskana.common.api.exceptions.InvalidArgumentException;
/** ClassificationQuery for generating dynamic sql. */ /** ClassificationQuery for generating dynamic sql. */
public interface ClassificationQuery public interface ClassificationQuery

View File

@ -1,8 +1,11 @@
package pro.taskana; package pro.taskana.classification.api;
import pro.taskana.common.api.QueryColumnName;
import pro.taskana.workbasket.internal.WorkbasketQueryMapper;
/** /**
* Enum containing the column names for {@link * Enum containing the column names for {@link
* pro.taskana.mappings.QueryMapper#queryClassificationColumnValues}. * WorkbasketQueryMapper#queryClassificationColumnValues}.
* *
* @author jsa * @author jsa
*/ */

View File

@ -1,12 +1,12 @@
package pro.taskana; package pro.taskana.classification.api;
import pro.taskana.exceptions.ClassificationAlreadyExistException; import pro.taskana.classification.api.exceptions.ClassificationAlreadyExistException;
import pro.taskana.exceptions.ClassificationInUseException; import pro.taskana.classification.api.exceptions.ClassificationInUseException;
import pro.taskana.exceptions.ClassificationNotFoundException; import pro.taskana.classification.api.exceptions.ClassificationNotFoundException;
import pro.taskana.exceptions.ConcurrencyException; import pro.taskana.common.api.exceptions.ConcurrencyException;
import pro.taskana.exceptions.DomainNotFoundException; import pro.taskana.common.api.exceptions.DomainNotFoundException;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
/** This class manages the classifications. */ /** This class manages the classifications. */
public interface ClassificationService { public interface ClassificationService {

View File

@ -1,4 +1,4 @@
package pro.taskana; package pro.taskana.classification.api;
/** /**
* Interface for ClassificationSummaries. This is a specific short model-object which only requieres * Interface for ClassificationSummaries. This is a specific short model-object which only requieres

View File

@ -1,6 +1,7 @@
package pro.taskana.exceptions; package pro.taskana.classification.api.exceptions;
import pro.taskana.Classification; import pro.taskana.classification.api.Classification;
import pro.taskana.common.api.exceptions.TaskanaException;
/** Thrown, when a classification does already exits, but wanted to create with same ID+domain. */ /** Thrown, when a classification does already exits, but wanted to create with same ID+domain. */
public class ClassificationAlreadyExistException extends TaskanaException { public class ClassificationAlreadyExistException extends TaskanaException {

View File

@ -1,4 +1,6 @@
package pro.taskana.exceptions; package pro.taskana.classification.api.exceptions;
import pro.taskana.common.api.exceptions.TaskanaException;
/** Thrown if a specific task is not in the database. */ /** Thrown if a specific task is not in the database. */
public class ClassificationInUseException extends TaskanaException { public class ClassificationInUseException extends TaskanaException {

View File

@ -1,4 +1,6 @@
package pro.taskana.exceptions; package pro.taskana.classification.api.exceptions;
import pro.taskana.common.api.exceptions.NotFoundException;
/** Thrown if a specific task is not in the database. */ /** Thrown if a specific task is not in the database. */
public class ClassificationNotFoundException extends NotFoundException { public class ClassificationNotFoundException extends NotFoundException {

View File

@ -1,10 +1,10 @@
package pro.taskana.impl; package pro.taskana.classification.internal;
import java.time.Instant; import java.time.Instant;
import java.util.Objects; import java.util.Objects;
import pro.taskana.Classification; import pro.taskana.classification.api.Classification;
import pro.taskana.ClassificationSummary; import pro.taskana.classification.api.ClassificationSummary;
/** Classification entity. */ /** Classification entity. */
public class ClassificationImpl extends ClassificationSummaryImpl implements Classification { public class ClassificationImpl extends ClassificationSummaryImpl implements Classification {
@ -15,7 +15,7 @@ public class ClassificationImpl extends ClassificationSummaryImpl implements Cla
private String description; private String description;
private String applicationEntryPoint; private String applicationEntryPoint;
ClassificationImpl() {} public ClassificationImpl() {}
ClassificationImpl(ClassificationImpl classification) { ClassificationImpl(ClassificationImpl classification) {
this.id = classification.getId(); this.id = classification.getId();

View File

@ -1,4 +1,4 @@
package pro.taskana.mappings; package pro.taskana.classification.internal;
import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Insert;
@ -8,8 +8,6 @@ import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import pro.taskana.impl.ClassificationImpl;
/** This class is the mybatis mapping of classifications. */ /** This class is the mybatis mapping of classifications. */
@SuppressWarnings({"checkstyle:LineLength", "checkstyle:Indentation"}) @SuppressWarnings({"checkstyle:LineLength", "checkstyle:Indentation"})
public interface ClassificationMapper { public interface ClassificationMapper {

View File

@ -1,4 +1,4 @@
package pro.taskana.impl; package pro.taskana.classification.internal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@ -8,13 +8,14 @@ import org.apache.ibatis.session.RowBounds;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.ClassificationQuery; import pro.taskana.classification.api.ClassificationQuery;
import pro.taskana.ClassificationQueryColumnName; import pro.taskana.classification.api.ClassificationQueryColumnName;
import pro.taskana.ClassificationSummary; import pro.taskana.classification.api.ClassificationSummary;
import pro.taskana.TimeInterval; import pro.taskana.common.api.TimeInterval;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.TaskanaRuntimeException; import pro.taskana.common.api.exceptions.TaskanaRuntimeException;
import pro.taskana.impl.util.LoggerUtils; import pro.taskana.common.internal.InternalTaskanaEngine;
import pro.taskana.common.internal.util.LoggerUtils;
/** /**
* Implementation of ClassificationQuery interface. * Implementation of ClassificationQuery interface.

View File

@ -0,0 +1,161 @@
package pro.taskana.classification.internal;
import java.util.List;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
/** This class provides a mapper for all classification queries. */
@SuppressWarnings({"checkstyle:LineLength", "checkstyle:Indentation"})
public interface ClassificationQueryMapper {
@Select(
"<script>SELECT ID, KEY, PARENT_ID, PARENT_KEY, CATEGORY, TYPE, DOMAIN, VALID_IN_DOMAIN, CREATED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL, APPLICATION_ENTRY_POINT, CUSTOM_1, CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8 "
+ "FROM CLASSIFICATION "
+ "<where>"
+ "<if test='key != null'>AND KEY IN(<foreach item='item' collection='key' separator=',' >#{item}</foreach>)</if> "
+ "<if test='idIn != null'>AND ID IN(<foreach item='item' collection='idIn' separator=',' >#{item}</foreach>)</if> "
+ "<if test='parentId != null'>AND PARENT_ID IN(<foreach item='item' collection='parentId' separator=',' >#{item}</foreach>)</if> "
+ "<if test='parentKey != null'>AND PARENT_KEY IN(<foreach item='item' collection='parentKey' 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 = #{validInDomain}</if> "
+ "<if test='createdIn !=null'> AND ( <foreach item='item' collection='createdIn' separator=' OR ' > ( <if test='item.begin!=null'> CREATED &gt;= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> CREATED &lt;=#{item.end} </if>)</foreach>)</if> "
+ "<if test='modifiedIn !=null'> AND ( <foreach item='item' collection='modifiedIn' separator=' OR ' > ( <if test='item.begin!=null'> MODIFIED &gt;= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> MODIFIED &lt;=#{item.end} </if>)</foreach>)</if> "
+ "<if test='nameIn != null'>AND NAME IN(<foreach item='item' collection='nameIn' separator=',' >#{item}</foreach>)</if> "
+ "<if test='nameLike != null'>AND (<foreach item='item' collection='nameLike' separator=' OR '>UPPER(NAME) LIKE #{item}</foreach>)</if> "
+ "<if test='descriptionLike != null'>AND UPPER(DESCRIPTION) like #{descriptionLike}</if> "
+ "<if test='priority != null'>AND PRIORITY IN(<foreach item='item' collection='priority' separator=',' >#{item}</foreach>)</if> "
+ "<if test='serviceLevelIn != null'>AND SERVICE_LEVEL IN(<foreach item='item' collection='serviceLevelIn' separator=',' >#{item}</foreach>)</if> "
+ "<if test='serviceLevelLike != null'>AND (<foreach item='item' collection='serviceLevelLike' separator=' OR ' >UPPER(SERVICE_LEVEL) LIKE #{item}</foreach>)</if> "
+ "<if test='applicationEntryPointIn != null'>AND APPLICATION_ENTRY_POINT IN(<foreach item='item' collection='applicationEntryPointIn' separator=',' >#{item}</foreach>)</if> "
+ "<if test='applicationEntryPointLike != null'>AND (<foreach item='item' collection='applicationEntryPointLike' separator=' OR ' >UPPER(APPLICATION_ENTRY_POINT) LIKE #{item}</foreach>)</if> "
+ "<if test='custom1In != null'>AND CUSTOM_1 IN(<foreach item='item' collection='custom1In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom1Like != null'>AND (<foreach item='item' collection='custom1Like' separator=' OR ' > UPPER(CUSTOM_1) LIKE #{item}</foreach>)</if> "
+ "<if test='custom2In != null'>AND CUSTOM_2 IN(<foreach item='item' collection='custom2In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom2Like != null'>AND (<foreach item='item' collection='custom2Like' separator=' OR ' > UPPER(CUSTOM_2) LIKE #{item}</foreach>)</if> "
+ "<if test='custom3In != null'>AND CUSTOM_3 IN(<foreach item='item' collection='custom3In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom3Like != null'>AND (<foreach item='item' collection='custom3Like' separator=' OR ' > UPPER(CUSTOM_3) LIKE #{item}</foreach>)</if> "
+ "<if test='custom4In != null'>AND CUSTOM_4 IN(<foreach item='item' collection='custom4In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom4Like != null'>AND (<foreach item='item' collection='custom4Like' separator=' OR ' > UPPER(CUSTOM_4) LIKE #{item}</foreach>)</if> "
+ "<if test='custom5In != null'>AND CUSTOM_5 IN(<foreach item='item' collection='custom5In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom5Like != null'>AND (<foreach item='item' collection='custom5Like' separator=' OR ' > UPPER(CUSTOM_5) LIKE #{item}</foreach>)</if> "
+ "<if test='custom6In != null'>AND CUSTOM_6 IN(<foreach item='item' collection='custom6In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom6Like != null'>AND (<foreach item='item' collection='custom6Like' separator=' OR ' > UPPER(CUSTOM_6) LIKE #{item}</foreach>)</if> "
+ "<if test='custom7In != null'>AND CUSTOM_7 IN(<foreach item='item' collection='custom7In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom7Like != null'>AND (<foreach item='item' collection='custom7Like' separator=' OR ' > UPPER(CUSTOM_7) LIKE #{item}</foreach>)</if> "
+ "<if test='custom8In != null'>AND CUSTOM_8 IN(<foreach item='item' collection='custom8In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom8Like != null'>AND (<foreach item='item' collection='custom8Like' separator=' OR ' > UPPER(CUSTOM_8) LIKE #{item}</foreach>)</if> "
+ "</where>"
+ "<if test='!orderBy.isEmpty()'>ORDER BY <foreach item='item' collection='orderBy' separator=',' >${item}</foreach></if> "
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
+ "</script>")
@Results({
@Result(property = "id", column = "ID"),
@Result(property = "key", column = "KEY"),
@Result(property = "category", column = "CATEGORY"),
@Result(property = "type", column = "TYPE"),
@Result(property = "domain", column = "DOMAIN"),
@Result(property = "name", column = "NAME"),
@Result(property = "priority", column = "PRIORITY"),
@Result(property = "serviceLevel", column = "SERVICE_LEVEL"),
@Result(property = "parentId", column = "PARENT_ID"),
@Result(property = "parentKey", column = "PARENT_KEY"),
@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")
})
List<ClassificationSummaryImpl> queryClassificationSummaries(
ClassificationQueryImpl classificationQuery);
@Select(
"<script>SELECT COUNT(ID) FROM CLASSIFICATION "
+ "<where>"
+ "<if test='key != null'>AND KEY IN(<foreach item='item' collection='key' separator=',' >#{item}</foreach>)</if> "
+ "<if test='idIn != null'>AND ID IN(<foreach item='item' collection='idIn' separator=',' >#{item}</foreach>)</if> "
+ "<if test='parentId != null'>AND PARENT_ID IN(<foreach item='item' collection='parentId' separator=',' >#{item}</foreach>)</if> "
+ "<if test='parentKey != null'>AND PARENT_KEY IN(<foreach item='item' collection='parentKey' 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 = #{validInDomain}</if> "
+ "<if test='createdIn !=null'> AND ( <foreach item='item' collection='createdIn' separator=' OR ' > ( <if test='item.begin!=null'> CREATED &gt;= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> CREATED &lt;=#{item.end} </if>)</foreach>)</if> "
+ "<if test='modifiedIn !=null'> AND ( <foreach item='item' collection='modifiedIn' separator=' OR ' > ( <if test='item.begin!=null'> MODIFIED &gt;= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> MODIFIED &lt;=#{item.end} </if>)</foreach>)</if> "
+ "<if test='nameIn != null'>AND NAME IN(<foreach item='item' collection='nameIn' separator=',' >#{item}</foreach>)</if> "
+ "<if test='nameLike != null'>AND (<foreach item='item' collection='nameLike' separator=' OR '>NAME LIKE #{item}</foreach>)</if> "
+ "<if test='descriptionLike != null'>AND DESCRIPTION like #{descriptionLike}</if> "
+ "<if test='priority != null'>AND PRIORITY IN(<foreach item='item' collection='priority' separator=',' >#{item}</foreach>)</if> "
+ "<if test='serviceLevelIn != null'>AND SERVICE_LEVEL IN(<foreach item='item' collection='serviceLevelIn' separator=',' >#{item}</foreach>)</if> "
+ "<if test='serviceLevelLike != null'>AND (<foreach item='item' collection='serviceLevelLike' separator=' OR ' >SERVICE_LEVEL LIKE #{item}</foreach>)</if> "
+ "<if test='applicationEntryPointIn != null'>AND APPLICATION_ENTRY_POINT IN(<foreach item='item' collection='applicationEntryPoint' separator=',' >#{item}</foreach>)</if> "
+ "<if test='applicationEntryPointLike != null'>AND (<foreach item='item' collection='applicationEntryPointLike' separator=' OR ' >APPLICATION_ENTRY_POINT LIKE #{item}</foreach>)</if> "
+ "<if test='custom1In != null'>AND CUSTOM_1 IN(<foreach item='item' collection='custom1In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom1Like != null'>AND (<foreach item='item' collection='custom1Like' separator=' OR ' >CUSTOM_1 LIKE #{item}</foreach>)</if> "
+ "<if test='custom2In != null'>AND CUSTOM_2 IN(<foreach item='item' collection='custom2In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom2Like != null'>AND (<foreach item='item' collection='custom2Like' separator=' OR ' > CUSTOM_2 LIKE #{item}</foreach>)</if> "
+ "<if test='custom3In != null'>AND CUSTOM_3 IN(<foreach item='item' collection='custom3In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom3Like != null'>AND (<foreach item='item' collection='custom3Like' separator=' OR ' > CUSTOM_3 LIKE #{item}</foreach>)</if> "
+ "<if test='custom4In != null'>AND CUSTOM_4 IN(<foreach item='item' collection='custom4In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom4Like != null'>AND (<foreach item='item' collection='custom4Like' separator=' OR ' > CUSTOM_4 LIKE #{item}</foreach>)</if> "
+ "<if test='custom5In != null'>AND CUSTOM_5 IN(<foreach item='item' collection='custom5In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom5Like != null'>AND (<foreach item='item' collection='custom5Like' separator=' OR ' > CUSTOM_5 LIKE #{item}</foreach>)</if> "
+ "<if test='custom6In != null'>AND CUSTOM_6 IN(<foreach item='item' collection='custom6In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom6Like != null'>AND (<foreach item='item' collection='custom6Like' separator=' OR ' > CUSTOM_6 LIKE #{item}</foreach>)</if> "
+ "<if test='custom7In != null'>AND CUSTOM_7 IN(<foreach item='item' collection='custom7In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom7Like != null'>AND (<foreach item='item' collection='custom7Like' separator=' OR ' > CUSTOM_7 LIKE #{item}</foreach>)</if> "
+ "<if test='custom8In != null'>AND CUSTOM_8 IN(<foreach item='item' collection='custom8In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom8Like != null'>AND (<foreach item='item' collection='custom8Like' separator=' OR ' > CUSTOM_8 LIKE #{item}</foreach>)</if> "
+ "</where>"
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
+ "</script>")
Long countQueryClassifications(ClassificationQueryImpl classificationQuery);
@Select(
"<script>SELECT DISTINCT ${columnName} "
+ "FROM CLASSIFICATION"
+ "<where>"
+ "<if test='key != null'>AND KEY IN(<foreach item='item' collection='key' separator=',' >#{item}</foreach>)</if> "
+ "<if test='idIn != null'>AND ID IN(<foreach item='item' collection='idIn' separator=',' >#{item}</foreach>)</if> "
+ "<if test='parentId != null'>AND PARENT_ID IN(<foreach item='item' collection='parentId' separator=',' >#{item}</foreach>)</if> "
+ "<if test='parentKey != null'>AND PARENT_KEY IN(<foreach item='item' collection='parentKey' 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 = #{validInDomain}</if> "
+ "<if test='createdIn !=null'> AND ( <foreach item='item' collection='createdIn' separator=' OR ' > ( <if test='item.begin!=null'> CREATED &gt;= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> CREATED &lt;=#{item.end} </if>)</foreach>)</if> "
+ "<if test='modifiedIn !=null'> AND ( <foreach item='item' collection='modifiedIn' separator=' OR ' > ( <if test='item.begin!=null'> MODIFIED &gt;= #{item.begin} </if> <if test='item.begin!=null and item.end!=null'> AND </if><if test='item.end!=null'> MODIFIED &lt;=#{item.end} </if>)</foreach>)</if> "
+ "<if test='nameIn != null'>AND NAME IN(<foreach item='item' collection='nameIn' separator=',' >#{item}</foreach>)</if> "
+ "<if test='nameLike != null'>AND (<foreach item='item' collection='nameLike' separator=' OR '>NAME LIKE #{item}</foreach>)</if> "
+ "<if test='descriptionLike != null'>AND DESCRIPTION like #{descriptionLike}</if> "
+ "<if test='priority != null'>AND PRIORITY IN(<foreach item='item' collection='priority' separator=',' >#{item}</foreach>)</if> "
+ "<if test='serviceLevelIn != null'>AND SERVICE_LEVEL IN(<foreach item='item' collection='serviceLevelIn' separator=',' >#{item}</foreach>)</if> "
+ "<if test='serviceLevelLike != null'>AND (<foreach item='item' collection='serviceLevelLike' separator=' OR ' >SERVICE_LEVEL LIKE #{item}</foreach>)</if> "
+ "<if test='applicationEntryPointIn != null'>AND APPLICATION_ENTRY_POINT IN(<foreach item='item' collection='applicationEntryPoint' separator=',' >#{item}</foreach>)</if> "
+ "<if test='applicationEntryPointLike != null'>AND (<foreach item='item' collection='applicationEntryPointLike' separator=' OR ' >APPLICATION_ENTRY_POINT LIKE #{item}</foreach>)</if> "
+ "<if test='custom1In != null'>AND CUSTOM_1 IN(<foreach item='item' collection='custom1In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom1Like != null'>AND (<foreach item='item' collection='custom1Like' separator=' OR ' >CUSTOM_1 LIKE #{item}</foreach>)</if> "
+ "<if test='custom2In != null'>AND CUSTOM_2 IN(<foreach item='item' collection='custom2In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom2Like != null'>AND (<foreach item='item' collection='custom2Like' separator=' OR ' > CUSTOM_2 LIKE #{item}</foreach>)</if> "
+ "<if test='custom3In != null'>AND CUSTOM_3 IN(<foreach item='item' collection='custom3In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom3Like != null'>AND (<foreach item='item' collection='custom3Like' separator=' OR ' > CUSTOM_3 LIKE #{item}</foreach>)</if> "
+ "<if test='custom4In != null'>AND CUSTOM_4 IN(<foreach item='item' collection='custom4In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom4Like != null'>AND (<foreach item='item' collection='custom4Like' separator=' OR ' > CUSTOM_4 LIKE #{item}</foreach>)</if> "
+ "<if test='custom5In != null'>AND CUSTOM_5 IN(<foreach item='item' collection='custom5In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom5Like != null'>AND (<foreach item='item' collection='custom5Like' separator=' OR ' > CUSTOM_5 LIKE #{item}</foreach>)</if> "
+ "<if test='custom6In != null'>AND CUSTOM_6 IN(<foreach item='item' collection='custom6In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom6Like != null'>AND (<foreach item='item' collection='custom6Like' separator=' OR ' > CUSTOM_6 LIKE #{item}</foreach>)</if> "
+ "<if test='custom7In != null'>AND CUSTOM_7 IN(<foreach item='item' collection='custom7In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom7Like != null'>AND (<foreach item='item' collection='custom7Like' separator=' OR ' > CUSTOM_7 LIKE #{item}</foreach>)</if> "
+ "<if test='custom8In != null'>AND CUSTOM_8 IN(<foreach item='item' collection='custom8In' separator=',' >#{item}</foreach>) </if> "
+ "<if test='custom8Like != null'>AND (<foreach item='item' collection='custom8Like' separator=' OR ' > CUSTOM_8 LIKE #{item}</foreach>)</if> "
+ "</where>"
+ "<if test='!orderBy.isEmpty()'>ORDER BY <foreach item='item' collection='orderBy' separator=',' >${item}</foreach></if> "
+ "<if test=\"_databaseId == 'db2'\">with UR </if> "
+ "</script>")
List<String> queryClassificationColumnValues(ClassificationQueryImpl classificationQuery);
}

View File

@ -1,4 +1,4 @@
package pro.taskana.impl; package pro.taskana.classification.internal;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.SQLIntegrityConstraintViolationException; import java.sql.SQLIntegrityConstraintViolationException;
@ -13,24 +13,24 @@ import org.apache.ibatis.exceptions.PersistenceException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.Classification; import pro.taskana.classification.api.Classification;
import pro.taskana.ClassificationQuery; import pro.taskana.classification.api.ClassificationQuery;
import pro.taskana.ClassificationService; import pro.taskana.classification.api.ClassificationService;
import pro.taskana.ClassificationSummary; import pro.taskana.classification.api.ClassificationSummary;
import pro.taskana.TaskSummary; import pro.taskana.classification.api.exceptions.ClassificationAlreadyExistException;
import pro.taskana.TaskanaRole; import pro.taskana.classification.api.exceptions.ClassificationInUseException;
import pro.taskana.exceptions.ClassificationAlreadyExistException; import pro.taskana.classification.api.exceptions.ClassificationNotFoundException;
import pro.taskana.exceptions.ClassificationInUseException; import pro.taskana.common.api.exceptions.ConcurrencyException;
import pro.taskana.exceptions.ClassificationNotFoundException; import pro.taskana.common.api.exceptions.DomainNotFoundException;
import pro.taskana.exceptions.ConcurrencyException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.DomainNotFoundException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.internal.InternalTaskanaEngine;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.internal.jobs.ClassificationChangedJob;
import pro.taskana.impl.util.IdGenerator; import pro.taskana.common.internal.jobs.ScheduledJob;
import pro.taskana.jobs.ClassificationChangedJob; import pro.taskana.common.internal.util.IdGenerator;
import pro.taskana.jobs.ScheduledJob; import pro.taskana.task.api.TaskSummary;
import pro.taskana.mappings.ClassificationMapper; import pro.taskana.task.api.TaskanaRole;
import pro.taskana.mappings.TaskMapper; import pro.taskana.task.internal.TaskMapper;
/** This is the implementation of ClassificationService. */ /** This is the implementation of ClassificationService. */
public class ClassificationServiceImpl implements ClassificationService { public class ClassificationServiceImpl implements ClassificationService {
@ -41,7 +41,7 @@ public class ClassificationServiceImpl implements ClassificationService {
private TaskMapper taskMapper; private TaskMapper taskMapper;
private InternalTaskanaEngine taskanaEngine; private InternalTaskanaEngine taskanaEngine;
ClassificationServiceImpl( public ClassificationServiceImpl(
InternalTaskanaEngine taskanaEngine, InternalTaskanaEngine taskanaEngine,
ClassificationMapper classificationMapper, ClassificationMapper classificationMapper,
TaskMapper taskMapper) { TaskMapper taskMapper) {

View File

@ -1,8 +1,8 @@
package pro.taskana.impl; package pro.taskana.classification.internal;
import java.util.Objects; import java.util.Objects;
import pro.taskana.ClassificationSummary; import pro.taskana.classification.api.ClassificationSummary;
/** Implementation for the short summaries of a classification entity. */ /** Implementation for the short summaries of a classification entity. */
public class ClassificationSummaryImpl implements ClassificationSummary { public class ClassificationSummaryImpl implements ClassificationSummary {
@ -26,7 +26,7 @@ public class ClassificationSummaryImpl implements ClassificationSummary {
protected String custom7; protected String custom7;
protected String custom8; protected String custom8;
ClassificationSummaryImpl() {} public ClassificationSummaryImpl() {}
@Override @Override
public String getId() { public String getId() {

View File

@ -1,4 +1,4 @@
package pro.taskana; package pro.taskana.common.api;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package pro.taskana; package pro.taskana.common.api;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -7,7 +7,7 @@ import java.util.Map;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.impl.util.LoggerUtils; import pro.taskana.common.internal.util.LoggerUtils;
/** /**
* Returning type for a bulk db interaction with errors. This wrapper is storing them with a * Returning type for a bulk db interaction with errors. This wrapper is storing them with a

View File

@ -1,4 +1,4 @@
package pro.taskana; package pro.taskana.common.api;
/** This enum contains the fields CUSTOM_1 - CUSTOM_10 for the task entity. */ /** This enum contains the fields CUSTOM_1 - CUSTOM_10 for the task entity. */
public enum CustomField { public enum CustomField {

View File

@ -1,6 +1,6 @@
package pro.taskana; package pro.taskana.common.api;
import pro.taskana.jobs.ScheduledJob; import pro.taskana.common.internal.jobs.ScheduledJob;
/** Service to manage the TASKANA jobs. */ /** Service to manage the TASKANA jobs. */
public interface JobService { public interface JobService {

View File

@ -1,4 +1,4 @@
package pro.taskana; package pro.taskana.common.api;
import java.util.Objects; import java.util.Objects;

View File

@ -1,4 +1,4 @@
package pro.taskana; package pro.taskana.common.api;
/** /**
* This interface ist used to emulate an extensible enum for use in the Basequery interface. * This interface ist used to emulate an extensible enum for use in the Basequery interface.

View File

@ -1,9 +1,14 @@
package pro.taskana; package pro.taskana.common.api;
import java.sql.SQLException; import java.sql.SQLException;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.TaskanaEngineConfiguration;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.classification.api.ClassificationService;
import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.report.api.TaskMonitorService;
import pro.taskana.task.api.TaskService;
import pro.taskana.task.api.TaskanaRole;
import pro.taskana.workbasket.api.WorkbasketService;
/** The TaskanaEngine represents an overall set of all needed services. */ /** The TaskanaEngine represents an overall set of all needed services. */
public interface TaskanaEngine { public interface TaskanaEngine {

View File

@ -1,4 +1,4 @@
package pro.taskana; package pro.taskana.common.api;
import java.time.Instant; import java.time.Instant;
import java.util.Objects; import java.util.Objects;

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** /**
* Thrown, when an attachment should be inserted to the DB, but it does already exist.<br> * Thrown, when an attachment should be inserted to the DB, but it does already exist.<br>

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** Thrown in ConnectionManagementMode AUTOCOMMIT when an attempt to commit fails. */ /** Thrown in ConnectionManagementMode AUTOCOMMIT when an attempt to commit fails. */
public class AutocommitFailedException extends TaskanaRuntimeException { public class AutocommitFailedException extends TaskanaRuntimeException {

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** /**
* This exception is thrown when an attempt is made to update an object that has already been * This exception is thrown when an attempt is made to update an object that has already been

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** /**
* Thrown if ConnectionManagementMode is CONNECTION_MANAGED_EXTERNALLY and an attempt is made to * Thrown if ConnectionManagementMode is CONNECTION_MANAGED_EXTERNALLY and an attempt is made to

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** /**
* This exception is thrown if a domain name is specified which is not found in the configuration. * This exception is thrown if a domain name is specified which is not found in the configuration.

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** /**
* This exception is thrown when a method is called with invalid argument. * This exception is thrown when a method is called with invalid argument.

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** /**
* This exception is thrown when the task state doesn't allow the requested operation. * This exception is thrown when the task state doesn't allow the requested operation.

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** /**
* This exception is thrown when the task state doesn't allow the requested operation. * This exception is thrown when the task state doesn't allow the requested operation.

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** This exception is used to communicate a not authorized user. */ /** This exception is used to communicate a not authorized user. */
public class NotAuthorizedException extends TaskanaException { public class NotAuthorizedException extends TaskanaException {

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** This exception will be thrown if a specific object is not in the database. */ /** This exception will be thrown if a specific object is not in the database. */
public class NotFoundException extends TaskanaException { public class NotFoundException extends TaskanaException {

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** This exception is thrown when a generic taskana problem is encountered. */ /** This exception is thrown when a generic taskana problem is encountered. */
public class SystemException extends TaskanaRuntimeException { public class SystemException extends TaskanaRuntimeException {

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** /**
* common base class for Taskana's checked exceptions. * common base class for Taskana's checked exceptions.

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** /**
* Common base class for Taskana's runtime exceptions. * Common base class for Taskana's runtime exceptions.

View File

@ -1,4 +1,4 @@
package pro.taskana.exceptions; package pro.taskana.common.api.exceptions;
/** /**
* This exception will be thrown if the database name doesn't match to one of the desired databases. * This exception will be thrown if the database name doesn't match to one of the desired databases.

View File

@ -1,6 +1,6 @@
package pro.taskana.mappings; package pro.taskana.common.internal;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
/** /**
* Determines which custom properties are to be updated. * Determines which custom properties are to be updated.

View File

@ -1,11 +1,11 @@
package pro.taskana.impl; package pro.taskana.common.internal;
import java.util.function.Supplier; import java.util.function.Supplier;
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSession;
import pro.taskana.TaskanaEngine; import pro.taskana.common.api.TaskanaEngine;
import pro.taskana.history.HistoryEventProducer; import pro.taskana.history.internal.HistoryEventProducer;
import pro.taskana.taskrouting.TaskRoutingManager; import pro.taskana.task.internal.TaskRoutingManager;
/** /**
* FOR INTERNAL USE ONLY. * FOR INTERNAL USE ONLY.

View File

@ -1,4 +1,4 @@
package pro.taskana.mappings; package pro.taskana.common.internal;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -10,8 +10,8 @@ import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import pro.taskana.impl.persistence.MapTypeHandler; import pro.taskana.common.internal.jobs.ScheduledJob;
import pro.taskana.jobs.ScheduledJob; import pro.taskana.common.internal.persistence.MapTypeHandler;
/** This class is the mybatis mapping of the JOB table. */ /** This class is the mybatis mapping of the JOB table. */
@SuppressWarnings("checkstyle:LineLength") @SuppressWarnings("checkstyle:LineLength")

View File

@ -1,13 +1,12 @@
package pro.taskana.impl; package pro.taskana.common.internal;
import java.time.Instant; import java.time.Instant;
import java.util.List; import java.util.List;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.JobService; import pro.taskana.common.api.JobService;
import pro.taskana.jobs.ScheduledJob; import pro.taskana.common.internal.jobs.ScheduledJob;
import pro.taskana.mappings.JobMapper;
/** Controls all job activities. */ /** Controls all job activities. */
public class JobServiceImpl implements JobService { public class JobServiceImpl implements JobService {

View File

@ -1,4 +1,4 @@
package pro.taskana.impl; package pro.taskana.common.internal;
import java.security.AccessController; import java.security.AccessController;
import java.security.Principal; import java.security.Principal;
@ -26,37 +26,40 @@ import org.apache.ibatis.transaction.managed.ManagedTransactionFactory;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.ClassificationService; import pro.taskana.TaskanaEngineConfiguration;
import pro.taskana.JobService; import pro.taskana.classification.api.ClassificationService;
import pro.taskana.TaskMonitorService; import pro.taskana.classification.internal.ClassificationMapper;
import pro.taskana.TaskService; import pro.taskana.classification.internal.ClassificationServiceImpl;
import pro.taskana.TaskanaEngine; import pro.taskana.common.api.JobService;
import pro.taskana.TaskanaRole; import pro.taskana.common.api.TaskanaEngine;
import pro.taskana.WorkbasketService; import pro.taskana.common.api.exceptions.AutocommitFailedException;
import pro.taskana.configuration.DB; import pro.taskana.common.api.exceptions.ConnectionNotSetException;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.AutocommitFailedException; import pro.taskana.common.api.exceptions.SystemException;
import pro.taskana.exceptions.ConnectionNotSetException; import pro.taskana.common.api.exceptions.TaskanaRuntimeException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.internal.configuration.DB;
import pro.taskana.exceptions.SystemException; import pro.taskana.common.internal.persistence.InstantTypeHandler;
import pro.taskana.exceptions.TaskanaRuntimeException; import pro.taskana.common.internal.persistence.MapTypeHandler;
import pro.taskana.history.HistoryEventProducer; import pro.taskana.common.internal.security.CurrentUserContext;
import pro.taskana.impl.persistence.InstantTypeHandler; import pro.taskana.common.internal.security.GroupPrincipal;
import pro.taskana.impl.persistence.MapTypeHandler; import pro.taskana.common.internal.util.LoggerUtils;
import pro.taskana.impl.util.LoggerUtils; import pro.taskana.history.internal.HistoryEventProducer;
import pro.taskana.mappings.AttachmentMapper; import pro.taskana.report.api.TaskMonitorService;
import pro.taskana.mappings.ClassificationMapper; import pro.taskana.report.internal.TaskMonitorMapper;
import pro.taskana.mappings.DistributionTargetMapper; import pro.taskana.report.internal.TaskMonitorServiceImpl;
import pro.taskana.mappings.JobMapper; import pro.taskana.task.api.TaskService;
import pro.taskana.mappings.ObjectReferenceMapper; import pro.taskana.task.api.TaskanaRole;
import pro.taskana.mappings.QueryMapper; import pro.taskana.task.internal.AttachmentMapper;
import pro.taskana.mappings.TaskMapper; import pro.taskana.task.internal.ObjectReferenceMapper;
import pro.taskana.mappings.TaskMonitorMapper; import pro.taskana.task.internal.TaskMapper;
import pro.taskana.mappings.WorkbasketAccessMapper; import pro.taskana.task.internal.TaskRoutingManager;
import pro.taskana.mappings.WorkbasketMapper; import pro.taskana.task.internal.TaskServiceImpl;
import pro.taskana.security.CurrentUserContext; import pro.taskana.workbasket.api.WorkbasketService;
import pro.taskana.security.GroupPrincipal; import pro.taskana.workbasket.internal.DistributionTargetMapper;
import pro.taskana.taskrouting.TaskRoutingManager; import pro.taskana.workbasket.internal.WorkbasketAccessMapper;
import pro.taskana.workbasket.internal.WorkbasketMapper;
import pro.taskana.workbasket.internal.WorkbasketQueryMapper;
import pro.taskana.workbasket.internal.WorkbasketServiceImpl;
/** This is the implementation of TaskanaEngine. */ /** This is the implementation of TaskanaEngine. */
public class TaskanaEngineImpl implements TaskanaEngine { public class TaskanaEngineImpl implements TaskanaEngine {
@ -251,7 +254,7 @@ public class TaskanaEngineImpl implements TaskanaEngine {
configuration.addMapper(ClassificationMapper.class); configuration.addMapper(ClassificationMapper.class);
configuration.addMapper(WorkbasketAccessMapper.class); configuration.addMapper(WorkbasketAccessMapper.class);
configuration.addMapper(ObjectReferenceMapper.class); configuration.addMapper(ObjectReferenceMapper.class);
configuration.addMapper(QueryMapper.class); configuration.addMapper(WorkbasketQueryMapper.class);
configuration.addMapper(AttachmentMapper.class); configuration.addMapper(AttachmentMapper.class);
configuration.addMapper(JobMapper.class); configuration.addMapper(JobMapper.class);
SqlSessionFactory localSessionFactory = new SqlSessionFactoryBuilder().build(configuration); SqlSessionFactory localSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

View File

@ -1,6 +1,6 @@
package pro.taskana.configuration; package pro.taskana.common.internal.configuration;
import pro.taskana.exceptions.UnsupportedDatabaseException; import pro.taskana.common.api.exceptions.UnsupportedDatabaseException;
/** Supported versions of databases. */ /** Supported versions of databases. */
public enum DB { public enum DB {

View File

@ -1,4 +1,4 @@
package pro.taskana.configuration; package pro.taskana.common.internal.configuration;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;

View File

@ -1,13 +1,13 @@
package pro.taskana.jobs; package pro.taskana.common.internal.jobs;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import pro.taskana.TaskanaEngine; import pro.taskana.common.api.TaskanaEngine;
import pro.taskana.exceptions.TaskanaException; import pro.taskana.common.api.exceptions.TaskanaException;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.common.internal.TaskanaEngineImpl;
import pro.taskana.transaction.TaskanaTransactionProvider; import pro.taskana.common.internal.transaction.TaskanaTransactionProvider;
/** Abstract base for all background jobs of TASKANA. */ /** Abstract base for all background jobs of TASKANA. */
public abstract class AbstractTaskanaJob implements TaskanaJob { public abstract class AbstractTaskanaJob implements TaskanaJob {

View File

@ -1,4 +1,4 @@
package pro.taskana.jobs; package pro.taskana.common.internal.jobs;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -7,10 +7,10 @@ import java.util.Set;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.TaskanaEngine; import pro.taskana.common.api.TaskanaEngine;
import pro.taskana.exceptions.TaskanaException; import pro.taskana.common.api.exceptions.TaskanaException;
import pro.taskana.impl.TaskServiceImpl; import pro.taskana.common.internal.transaction.TaskanaTransactionProvider;
import pro.taskana.transaction.TaskanaTransactionProvider; import pro.taskana.task.internal.TaskServiceImpl;
/** /**
* This class executes a job of type CLASSIFICATIONCHANGEDJOB. * This class executes a job of type CLASSIFICATIONCHANGEDJOB.

View File

@ -1,4 +1,4 @@
package pro.taskana.jobs; package pro.taskana.common.internal.jobs;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
@ -7,12 +7,12 @@ import java.util.List;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.TaskanaEngine; import pro.taskana.common.api.TaskanaEngine;
import pro.taskana.exceptions.SystemException; import pro.taskana.common.api.exceptions.SystemException;
import pro.taskana.impl.JobServiceImpl; import pro.taskana.common.internal.JobServiceImpl;
import pro.taskana.impl.TaskServiceImpl; import pro.taskana.common.internal.TaskanaEngineImpl;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.common.internal.transaction.TaskanaTransactionProvider;
import pro.taskana.transaction.TaskanaTransactionProvider; import pro.taskana.task.internal.TaskServiceImpl;
/** This is the runner for Tasks jobs. */ /** This is the runner for Tasks jobs. */
public class JobRunner { public class JobRunner {

View File

@ -1,4 +1,4 @@
package pro.taskana.jobs; package pro.taskana.common.internal.jobs;
import java.time.Instant; import java.time.Instant;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package pro.taskana.jobs; package pro.taskana.common.internal.jobs;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
@ -10,15 +10,15 @@ import java.util.stream.Collectors;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.BaseQuery; import pro.taskana.common.api.BaseQuery;
import pro.taskana.BulkOperationResults; import pro.taskana.common.api.BulkOperationResults;
import pro.taskana.TaskSummary; import pro.taskana.common.api.TaskanaEngine;
import pro.taskana.TaskanaEngine; import pro.taskana.common.api.TimeInterval;
import pro.taskana.TimeInterval; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.TaskanaException;
import pro.taskana.exceptions.TaskanaException; import pro.taskana.common.internal.transaction.TaskanaTransactionProvider;
import pro.taskana.impl.util.LoggerUtils; import pro.taskana.common.internal.util.LoggerUtils;
import pro.taskana.transaction.TaskanaTransactionProvider; import pro.taskana.task.api.TaskSummary;
/** Job to cleanup completed tasks after a period of time. */ /** Job to cleanup completed tasks after a period of time. */
public class TaskCleanupJob extends AbstractTaskanaJob { public class TaskCleanupJob extends AbstractTaskanaJob {

View File

@ -1,4 +1,4 @@
package pro.taskana.jobs; package pro.taskana.common.internal.jobs;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -6,11 +6,11 @@ import java.util.Map;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.TaskanaEngine; import pro.taskana.common.api.TaskanaEngine;
import pro.taskana.exceptions.TaskanaException; import pro.taskana.common.api.exceptions.TaskanaException;
import pro.taskana.impl.TaskServiceImpl; import pro.taskana.common.internal.transaction.TaskanaTransactionProvider;
import pro.taskana.impl.util.LoggerUtils; import pro.taskana.common.internal.util.LoggerUtils;
import pro.taskana.transaction.TaskanaTransactionProvider; import pro.taskana.task.internal.TaskServiceImpl;
/** /**
* This class executes a job of type CLASSIFICATIONCHANGEDJOB. * This class executes a job of type CLASSIFICATIONCHANGEDJOB.

View File

@ -1,6 +1,6 @@
package pro.taskana.jobs; package pro.taskana.common.internal.jobs;
import pro.taskana.exceptions.TaskanaException; import pro.taskana.common.api.exceptions.TaskanaException;
/** Interface for all background TASKANA jobs. */ /** Interface for all background TASKANA jobs. */
public interface TaskanaJob { public interface TaskanaJob {

View File

@ -1,4 +1,4 @@
package pro.taskana.jobs; package pro.taskana.common.internal.jobs;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
@ -6,16 +6,16 @@ import java.util.List;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.BaseQuery; import pro.taskana.common.api.BaseQuery;
import pro.taskana.BulkOperationResults; import pro.taskana.common.api.BulkOperationResults;
import pro.taskana.TaskanaEngine; import pro.taskana.common.api.TaskanaEngine;
import pro.taskana.WorkbasketQueryColumnName; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.api.exceptions.TaskanaException;
import pro.taskana.exceptions.TaskanaException; import pro.taskana.common.internal.transaction.TaskanaTransactionProvider;
import pro.taskana.exceptions.WorkbasketInUseException; import pro.taskana.workbasket.api.WorkbasketQueryColumnName;
import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.workbasket.api.exceptions.WorkbasketInUseException;
import pro.taskana.transaction.TaskanaTransactionProvider; import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException;
/** /**
* Job to cleanup completed workbaskets after a period of time if there are no pending tasks * Job to cleanup completed workbaskets after a period of time if there are no pending tasks

View File

@ -1,4 +1,4 @@
package pro.taskana.impl.persistence; package pro.taskana.common.internal.persistence;
import java.sql.CallableStatement; import java.sql.CallableStatement;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;

View File

@ -1,4 +1,4 @@
package pro.taskana.impl.persistence; package pro.taskana.common.internal.persistence;
import java.sql.CallableStatement; import java.sql.CallableStatement;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;

View File

@ -1,6 +1,6 @@
package pro.taskana.security; package pro.taskana.common.internal.security;
import static pro.taskana.configuration.TaskanaEngineConfiguration.shouldUseLowerCaseForAccessIds; import static pro.taskana.TaskanaEngineConfiguration.shouldUseLowerCaseForAccessIds;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;

View File

@ -1,4 +1,4 @@
package pro.taskana.security; package pro.taskana.common.internal.security;
import java.security.Principal; import java.security.Principal;
import java.security.acl.Group; import java.security.acl.Group;
@ -7,7 +7,7 @@ import java.util.Enumeration;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import pro.taskana.impl.util.LoggerUtils; import pro.taskana.common.internal.util.LoggerUtils;
/** Represents a group with a name and a set of members. */ /** Represents a group with a name and a set of members. */
public class GroupPrincipal implements Group { public class GroupPrincipal implements Group {

View File

@ -1,4 +1,4 @@
package pro.taskana.security; package pro.taskana.common.internal.security;
import java.security.Principal; import java.security.Principal;

View File

@ -1,4 +1,4 @@
package pro.taskana.transaction; package pro.taskana.common.internal.transaction;
/** /**
* represents a callable Object. * represents a callable Object.

View File

@ -1,4 +1,4 @@
package pro.taskana.transaction; package pro.taskana.common.internal.transaction;
/** /**
* This class provides support for transactions. * This class provides support for transactions.

View File

@ -1,4 +1,4 @@
package pro.taskana.impl.util; package pro.taskana.common.internal.util;
import java.util.UUID; import java.util.UUID;

View File

@ -1,4 +1,4 @@
package pro.taskana.impl.util; package pro.taskana.common.internal.util;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -1,6 +1,6 @@
package pro.taskana.history.api; package pro.taskana.history.api;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.TaskanaEngineConfiguration;
/** Interface for TASKANA History Service Provider. */ /** Interface for TASKANA History Service Provider. */
public interface TaskanaHistory { public interface TaskanaHistory {

View File

@ -2,7 +2,7 @@ package pro.taskana.history.api;
import java.time.Instant; import java.time.Instant;
import pro.taskana.security.CurrentUserContext; import pro.taskana.common.internal.security.CurrentUserContext;
/** Super class for all specific events from the TASKANA engine. */ /** Super class for all specific events from the TASKANA engine. */
public class TaskanaHistoryEvent { public class TaskanaHistoryEvent {

View File

@ -1,11 +1,11 @@
package pro.taskana.history; package pro.taskana.history.internal;
import java.util.Objects; import java.util.Objects;
import java.util.ServiceLoader; import java.util.ServiceLoader;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.TaskanaEngineConfiguration;
import pro.taskana.history.api.TaskanaHistory; import pro.taskana.history.api.TaskanaHistory;
import pro.taskana.history.api.TaskanaHistoryEvent; import pro.taskana.history.api.TaskanaHistoryEvent;

View File

@ -1,6 +1,6 @@
package pro.taskana.history.events.task; package pro.taskana.history.internal.events.task;
import pro.taskana.Task; import pro.taskana.task.api.Task;
/** Event fired if a task is cancelled to be claimed. */ /** Event fired if a task is cancelled to be claimed. */
public class ClaimCancelledEvent extends TaskEvent { public class ClaimCancelledEvent extends TaskEvent {

View File

@ -1,6 +1,6 @@
package pro.taskana.history.events.task; package pro.taskana.history.internal.events.task;
import pro.taskana.Task; import pro.taskana.task.api.Task;
/** Event fired if a task is claimed. */ /** Event fired if a task is claimed. */
public class ClaimedEvent extends TaskEvent { public class ClaimedEvent extends TaskEvent {

View File

@ -1,7 +1,7 @@
package pro.taskana.history.events.task; package pro.taskana.history.internal.events.task;
import pro.taskana.Task; import pro.taskana.task.api.Task;
import pro.taskana.TaskSummary; import pro.taskana.task.api.TaskSummary;
/** Event fired if a task is completed. */ /** Event fired if a task is completed. */
public class CompletedEvent extends TaskEvent { public class CompletedEvent extends TaskEvent {

View File

@ -1,6 +1,6 @@
package pro.taskana.history.events.task; package pro.taskana.history.internal.events.task;
import pro.taskana.Task; import pro.taskana.task.api.Task;
/** Event fired if a task is created. */ /** Event fired if a task is created. */
public class CreatedEvent extends TaskEvent { public class CreatedEvent extends TaskEvent {

View File

@ -1,8 +1,8 @@
package pro.taskana.history.events.task; package pro.taskana.history.internal.events.task;
import pro.taskana.Task;
import pro.taskana.TaskSummary;
import pro.taskana.history.api.TaskanaHistoryEvent; import pro.taskana.history.api.TaskanaHistoryEvent;
import pro.taskana.task.api.Task;
import pro.taskana.task.api.TaskSummary;
/** Super class for all task related events. */ /** Super class for all task related events. */
public class TaskEvent extends TaskanaHistoryEvent { public class TaskEvent extends TaskanaHistoryEvent {

View File

@ -1,10 +1,10 @@
package pro.taskana.history.events.task; package pro.taskana.history.internal.events.task;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.Task; import pro.taskana.task.api.Task;
import pro.taskana.WorkbasketSummary; import pro.taskana.workbasket.api.WorkbasketSummary;
/** Event fired if a task is transferred. */ /** Event fired if a task is transferred. */
public class TransferredEvent extends TaskEvent { public class TransferredEvent extends TaskEvent {

View File

@ -1,12 +1,12 @@
package pro.taskana.report; package pro.taskana.report.api;
import java.util.List; import java.util.List;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.impl.report.header.TimeIntervalColumnHeader; import pro.taskana.report.internal.header.TimeIntervalColumnHeader;
import pro.taskana.impl.report.item.MonitorQueryItem; import pro.taskana.report.internal.item.MonitorQueryItem;
import pro.taskana.impl.report.structure.Report; import pro.taskana.report.internal.structure.Report;
/** /**
* A CategoryReport contains the total numbers of tasks of the respective category as well as the * A CategoryReport contains the total numbers of tasks of the respective category as well as the

View File

@ -1,18 +1,20 @@
package pro.taskana.report; package pro.taskana.report.api;
import java.util.List; import java.util.List;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.impl.report.header.TimeIntervalColumnHeader; import pro.taskana.report.internal.header.TimeIntervalColumnHeader;
import pro.taskana.impl.report.item.DetailedMonitorQueryItem; import pro.taskana.report.internal.item.DetailedMonitorQueryItem;
import pro.taskana.impl.report.item.MonitorQueryItem; import pro.taskana.report.internal.item.MonitorQueryItem;
import pro.taskana.impl.report.row.DetailedClassificationRow; import pro.taskana.report.internal.row.DetailedClassificationRow;
import pro.taskana.impl.report.structure.Report; import pro.taskana.report.internal.row.FoldableRow;
import pro.taskana.report.internal.structure.Report;
import pro.taskana.report.internal.structure.Row;
/** /**
* The ClassificationReport extends the Report. The {@link pro.taskana.impl.report.structure.Row}s * The ClassificationReport extends the Report. The {@link Row}s of the ClassificationReport are
* of the ClassificationReport are grouped by classifications. * grouped by classifications.
*/ */
public class ClassificationReport extends Report<MonitorQueryItem, TimeIntervalColumnHeader> { public class ClassificationReport extends Report<MonitorQueryItem, TimeIntervalColumnHeader> {
@ -30,9 +32,8 @@ public class ClassificationReport extends Report<MonitorQueryItem, TimeIntervalC
/** /**
* Returns a {@link DetailedClassificationReport} containing all tasks after applying the * Returns a {@link DetailedClassificationReport} containing all tasks after applying the
* filters. If the column headers are set the report is subdivided into clusters. Its {@link * filters. If the column headers are set the report is subdivided into clusters. Its {@link
* pro.taskana.impl.report.row.FoldableRow}s contain an additional list of {@link * FoldableRow}s contain an additional list of {@link Row}s for the classifications of the
* pro.taskana.impl.report.structure.Row}s for the classifications of the attachments of the * attachments of the tasks.
* tasks.
* *
* @return the DetailedClassificationReport * @return the DetailedClassificationReport
* @throws InvalidArgumentException if the column headers are not initialized * @throws InvalidArgumentException if the column headers are not initialized
@ -44,9 +45,8 @@ public class ClassificationReport extends Report<MonitorQueryItem, TimeIntervalC
/** /**
* The DetailedClassificationReport is a functional extension of the {@link ClassificationReport}. * The DetailedClassificationReport is a functional extension of the {@link ClassificationReport}.
* Its {@link pro.taskana.impl.report.row.FoldableRow}s contain an additional list of {@link * Its {@link FoldableRow}s contain an additional list of {@link Row}s for the classifications of
* pro.taskana.impl.report.structure.Row}s for the classifications of the attachments of the * the attachments of the tasks.
* tasks.
*/ */
public static class DetailedClassificationReport public static class DetailedClassificationReport
extends Report<DetailedMonitorQueryItem, TimeIntervalColumnHeader> { extends Report<DetailedMonitorQueryItem, TimeIntervalColumnHeader> {

View File

@ -1,12 +1,12 @@
package pro.taskana.report; package pro.taskana.report.api;
import java.util.List; import java.util.List;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.impl.report.header.TimeIntervalColumnHeader; import pro.taskana.report.internal.header.TimeIntervalColumnHeader;
import pro.taskana.impl.report.item.MonitorQueryItem; import pro.taskana.report.internal.item.MonitorQueryItem;
import pro.taskana.impl.report.structure.Report; import pro.taskana.report.internal.structure.Report;
/** /**
* A CustomFieldValueReport contains the total numbers of tasks of the respective custom field as * A CustomFieldValueReport contains the total numbers of tasks of the respective custom field as

View File

@ -1,11 +1,6 @@
package pro.taskana; package pro.taskana.report.api;
import pro.taskana.report.CategoryReport; import pro.taskana.common.api.CustomField;
import pro.taskana.report.ClassificationReport;
import pro.taskana.report.CustomFieldValueReport;
import pro.taskana.report.TaskStatusReport;
import pro.taskana.report.TimestampReport;
import pro.taskana.report.WorkbasketReport;
/** The Task Monitor Service manages operations on tasks regarding the monitoring. */ /** The Task Monitor Service manages operations on tasks regarding the monitoring. */
public interface TaskMonitorService { public interface TaskMonitorService {

View File

@ -1,15 +1,15 @@
package pro.taskana.report; package pro.taskana.report.api;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import pro.taskana.TaskState; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.report.internal.header.TaskStatusColumnHeader;
import pro.taskana.impl.report.header.TaskStatusColumnHeader; import pro.taskana.report.internal.item.TaskQueryItem;
import pro.taskana.impl.report.item.TaskQueryItem; import pro.taskana.report.internal.structure.Report;
import pro.taskana.impl.report.structure.Report; import pro.taskana.task.api.TaskState;
/** /**
* A TaskStatusReport contains the total number of tasks, clustered in their task status. * A TaskStatusReport contains the total number of tasks, clustered in their task status.

View File

@ -1,16 +1,16 @@
package pro.taskana.report; package pro.taskana.report.api;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import pro.taskana.CustomField; import pro.taskana.common.api.CustomField;
import pro.taskana.TaskState; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.report.internal.SelectedItem;
import pro.taskana.impl.SelectedItem; import pro.taskana.report.internal.header.TimeIntervalColumnHeader;
import pro.taskana.impl.report.header.TimeIntervalColumnHeader; import pro.taskana.report.internal.item.AgeQueryItem;
import pro.taskana.impl.report.item.AgeQueryItem; import pro.taskana.report.internal.structure.Report;
import pro.taskana.impl.report.structure.Report; import pro.taskana.task.api.TaskState;
/** /**
* "Super" Interface for all TimeIntervalReportBuilders. * "Super" Interface for all TimeIntervalReportBuilders.

View File

@ -1,6 +1,8 @@
package pro.taskana.report; package pro.taskana.report.api;
/** This enum contains all timestamps saved in the database table for a {@link pro.taskana.Task}. */ import pro.taskana.task.api.Task;
/** This enum contains all timestamps saved in the database table for a {@link Task}. */
public enum Timestamp { public enum Timestamp {
CREATED, CREATED,
CLAIMED, CLAIMED,

View File

@ -1,13 +1,13 @@
package pro.taskana.report; package pro.taskana.report.api;
import java.util.List; import java.util.List;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.impl.report.header.TimeIntervalColumnHeader; import pro.taskana.report.internal.header.TimeIntervalColumnHeader;
import pro.taskana.impl.report.item.TimestampQueryItem; import pro.taskana.report.internal.item.TimestampQueryItem;
import pro.taskana.impl.report.row.TimestampRow; import pro.taskana.report.internal.row.TimestampRow;
import pro.taskana.impl.report.structure.Report; import pro.taskana.report.internal.structure.Report;
/** A {@link TimestampReport} displays created and competed tasks for a specific dates. */ /** A {@link TimestampReport} displays created and competed tasks for a specific dates. */
public class TimestampReport extends Report<TimestampQueryItem, TimeIntervalColumnHeader> { public class TimestampReport extends Report<TimestampQueryItem, TimeIntervalColumnHeader> {

View File

@ -1,13 +1,13 @@
package pro.taskana.report; package pro.taskana.report.api;
import java.util.List; import java.util.List;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.impl.report.CombinedClassificationFilter; import pro.taskana.report.internal.CombinedClassificationFilter;
import pro.taskana.impl.report.header.TimeIntervalColumnHeader; import pro.taskana.report.internal.header.TimeIntervalColumnHeader;
import pro.taskana.impl.report.item.MonitorQueryItem; import pro.taskana.report.internal.item.MonitorQueryItem;
import pro.taskana.impl.report.structure.Report; import pro.taskana.report.internal.structure.Report;
/** /**
* A WorkbasketReport contains the total numbers of tasks of the respective workbasket as well as * A WorkbasketReport contains the total numbers of tasks of the respective workbasket as well as

View File

@ -1,17 +1,17 @@
package pro.taskana.impl; package pro.taskana.report.internal;
import java.util.List; import java.util.List;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.TaskanaRole; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.internal.InternalTaskanaEngine;
import pro.taskana.impl.report.header.TimeIntervalColumnHeader; import pro.taskana.report.api.CategoryReport;
import pro.taskana.impl.report.item.MonitorQueryItem; import pro.taskana.report.internal.header.TimeIntervalColumnHeader;
import pro.taskana.impl.report.preprocessor.DaysToWorkingDaysPreProcessor; import pro.taskana.report.internal.item.MonitorQueryItem;
import pro.taskana.mappings.TaskMonitorMapper; import pro.taskana.report.internal.preprocessor.DaysToWorkingDaysPreProcessor;
import pro.taskana.report.CategoryReport; import pro.taskana.task.api.TaskanaRole;
/** The implementation of CategoryReportBuilder. */ /** The implementation of CategoryReportBuilder. */
public class CategoryReportBuilderImpl public class CategoryReportBuilderImpl

View File

@ -1,19 +1,19 @@
package pro.taskana.impl; package pro.taskana.report.internal;
import java.util.List; import java.util.List;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.TaskanaRole; import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.common.internal.InternalTaskanaEngine;
import pro.taskana.impl.report.header.TimeIntervalColumnHeader; import pro.taskana.report.api.ClassificationReport;
import pro.taskana.impl.report.item.DetailedMonitorQueryItem; import pro.taskana.report.api.ClassificationReport.DetailedClassificationReport;
import pro.taskana.impl.report.item.MonitorQueryItem; import pro.taskana.report.internal.header.TimeIntervalColumnHeader;
import pro.taskana.impl.report.preprocessor.DaysToWorkingDaysPreProcessor; import pro.taskana.report.internal.item.DetailedMonitorQueryItem;
import pro.taskana.mappings.TaskMonitorMapper; import pro.taskana.report.internal.item.MonitorQueryItem;
import pro.taskana.report.ClassificationReport; import pro.taskana.report.internal.preprocessor.DaysToWorkingDaysPreProcessor;
import pro.taskana.report.ClassificationReport.DetailedClassificationReport; import pro.taskana.task.api.TaskanaRole;
/** The implementation of ClassificationReportBuilder. */ /** The implementation of ClassificationReportBuilder. */
public class ClassificationReportBuilderImpl public class ClassificationReportBuilderImpl

View File

@ -1,10 +1,12 @@
package pro.taskana.impl.report; package pro.taskana.report.internal;
import pro.taskana.report.api.WorkbasketReport;
/** /**
* The CombinedClassificationFilter is a pair of a classificationId for a task and a * The CombinedClassificationFilter is a pair of a classificationId for a task and a
* classificationId for the corresponding attachment that is used to filter the {@link * classificationId for the corresponding attachment that is used to filter the {@link
* pro.taskana.report.WorkbasketReport} by the classification of the attachment. To filter by the * WorkbasketReport} by the classification of the attachment. To filter by the classification of the
* classification of the task, the classificationId of the attachment should be null. * task, the classificationId of the attachment should be null.
*/ */
public class CombinedClassificationFilter { public class CombinedClassificationFilter {

Some files were not shown because too many files have changed in this diff Show More