TSK-865: seperated taskanaEngine in two engines (internal + external)
This commit is contained in:
parent
301085da06
commit
271e293969
|
@ -2,8 +2,11 @@ package pro.taskana;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
import org.apache.ibatis.session.SqlSession;
|
||||||
|
|
||||||
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
|
import pro.taskana.history.HistoryEventProducer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The TaskanaEngine represents an overall set of all needed services.
|
* The TaskanaEngine represents an overall set of all needed services.
|
||||||
|
@ -52,6 +55,12 @@ public interface TaskanaEngine {
|
||||||
*/
|
*/
|
||||||
TaskanaEngineConfiguration getConfiguration();
|
TaskanaEngineConfiguration getConfiguration();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The HistoryEventProducer events and emits them to the registered history service providers.
|
||||||
|
* @return The HistoryEventProducer
|
||||||
|
*/
|
||||||
|
HistoryEventProducer getHistoryEventProducer();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sets the connection management mode for taskana.
|
* sets the connection management mode for taskana.
|
||||||
*
|
*
|
||||||
|
@ -112,4 +121,52 @@ public interface TaskanaEngine {
|
||||||
EXPLICIT
|
EXPLICIT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FOR INTERNAL USE ONLY.
|
||||||
|
*
|
||||||
|
* Contains all actions which are necessary within taskana.
|
||||||
|
*/
|
||||||
|
interface Internal {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens the connection to the database. Has to be called at the begin of each Api call that accesses the database
|
||||||
|
*/
|
||||||
|
void openConnection();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the database connection into the pool. In the case of nested calls, simply pops the latest session from
|
||||||
|
* the session stack. Closes the connection if the session stack is empty. In mode AUTOCOMMIT commits before the
|
||||||
|
* connection is closed. To be called at the end of each Api call that accesses the database
|
||||||
|
*/
|
||||||
|
void returnConnection();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the SqlSessionManager.
|
||||||
|
*/
|
||||||
|
void initSqlSession();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the given domain does exist in the configuration.
|
||||||
|
*
|
||||||
|
* @param domain
|
||||||
|
* the domain specified in the configuration
|
||||||
|
* @return <code>true</code> if the domain exists
|
||||||
|
*/
|
||||||
|
boolean domainExists(String domain);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* retrieve the SqlSession used by taskana.
|
||||||
|
*
|
||||||
|
* @return the myBatis SqlSession object used by taskana
|
||||||
|
*/
|
||||||
|
SqlSession getSqlSession();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve TaskanaEngine.
|
||||||
|
* @return The nested TaskanaEngine.
|
||||||
|
*/
|
||||||
|
TaskanaEngine getEngine();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package pro.taskana.history;
|
package pro.taskana.history;
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.ServiceLoader;
|
import java.util.ServiceLoader;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -16,12 +15,22 @@ import pro.taskana.history.api.TaskanaHistoryEvent;
|
||||||
public final class HistoryEventProducer {
|
public final class HistoryEventProducer {
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(HistoryEventProducer.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(HistoryEventProducer.class);
|
||||||
|
|
||||||
TaskanaEngineConfiguration taskanaEngineConfiguration;
|
|
||||||
private static HistoryEventProducer emitterInstance;
|
private static HistoryEventProducer emitterInstance;
|
||||||
private ServiceLoader<TaskanaHistory> serviceLoader;
|
private ServiceLoader<TaskanaHistory> serviceLoader;
|
||||||
private boolean enabled = false;
|
private boolean enabled = false;
|
||||||
|
|
||||||
|
private HistoryEventProducer(TaskanaEngineConfiguration taskanaEngineConfiguration) {
|
||||||
|
serviceLoader = ServiceLoader.load(TaskanaHistory.class);
|
||||||
|
for (TaskanaHistory history : serviceLoader) {
|
||||||
|
history.initialize(taskanaEngineConfiguration);
|
||||||
|
LOGGER.info("Registered history provider: {}", history.getClass().getName());
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
if (!enabled) {
|
||||||
|
LOGGER.info("No history provider found. Running without history.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static synchronized HistoryEventProducer getInstance(TaskanaEngineConfiguration taskanaEngineConfiguration) {
|
public static synchronized HistoryEventProducer getInstance(TaskanaEngineConfiguration taskanaEngineConfiguration) {
|
||||||
if (emitterInstance == null) {
|
if (emitterInstance == null) {
|
||||||
emitterInstance = new HistoryEventProducer(taskanaEngineConfiguration);
|
emitterInstance = new HistoryEventProducer(taskanaEngineConfiguration);
|
||||||
|
@ -39,23 +48,6 @@ public final class HistoryEventProducer {
|
||||||
|
|
||||||
public void createEvent(TaskanaHistoryEvent event) {
|
public void createEvent(TaskanaHistoryEvent event) {
|
||||||
LOGGER.debug("Sending event to history service providers: {}", event);
|
LOGGER.debug("Sending event to history service providers: {}", event);
|
||||||
serviceLoader.forEach(historyProvider -> {
|
serviceLoader.forEach(historyProvider -> historyProvider.create(event));
|
||||||
historyProvider.create(event);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private HistoryEventProducer(TaskanaEngineConfiguration taskanaEngineConfiguration) {
|
|
||||||
this.taskanaEngineConfiguration = taskanaEngineConfiguration;
|
|
||||||
serviceLoader = ServiceLoader.load(TaskanaHistory.class);
|
|
||||||
Iterator<TaskanaHistory> serviceIterator = serviceLoader.iterator();
|
|
||||||
while (serviceIterator.hasNext()) {
|
|
||||||
TaskanaHistory history = serviceIterator.next();
|
|
||||||
history.initialize(taskanaEngineConfiguration);
|
|
||||||
LOGGER.info("Registered history provider: {}", history.getClass().getName());
|
|
||||||
enabled = true;
|
|
||||||
}
|
|
||||||
if (!enabled) {
|
|
||||||
LOGGER.info("No history provider found. Running without history.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,12 +33,12 @@ abstract class AbstractWorkbasketAccessItemQueryImpl<Q extends AbstractWorkbaske
|
||||||
private String[] workbasketIdIn;
|
private String[] workbasketIdIn;
|
||||||
private String[] idIn;
|
private String[] idIn;
|
||||||
|
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngine;
|
||||||
private List<String> orderBy;
|
private List<String> orderBy;
|
||||||
private List<String> orderColumns;
|
private List<String> orderColumns;
|
||||||
|
|
||||||
AbstractWorkbasketAccessItemQueryImpl(TaskanaEngine taskanaEngine) {
|
AbstractWorkbasketAccessItemQueryImpl(TaskanaEngine.Internal taskanaEngine) {
|
||||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
this.taskanaEngine = taskanaEngine;
|
||||||
orderBy = new ArrayList<>();
|
orderBy = new ArrayList<>();
|
||||||
orderColumns = new ArrayList<>();
|
orderColumns = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
@ -96,7 +96,7 @@ abstract class AbstractWorkbasketAccessItemQueryImpl<Q extends AbstractWorkbaske
|
||||||
} finally {
|
} finally {
|
||||||
taskanaEngine.returnConnection();
|
taskanaEngine.returnConnection();
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("exit from list(). Returning {} resulting Objects: {} ", result.size(),
|
LOGGER.debug("exit from list(). Returning {} resulting Objects: {} ", result.size(),
|
||||||
LoggerUtils.listToString(result));
|
LoggerUtils.listToString(result));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ public class CategoryReportBuilderImpl
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(CategoryReport.Builder.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(CategoryReport.Builder.class);
|
||||||
|
|
||||||
CategoryReportBuilderImpl(TaskanaEngine taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
CategoryReportBuilderImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
||||||
super(taskanaEngine, taskMonitorMapper);
|
super(taskanaEngine, taskMonitorMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ public class CategoryReportBuilderImpl
|
||||||
@Override
|
@Override
|
||||||
public CategoryReport buildReport() throws InvalidArgumentException, NotAuthorizedException {
|
public CategoryReport buildReport() throws InvalidArgumentException, NotAuthorizedException {
|
||||||
LOGGER.debug("entry to buildReport(), this = {}", this);
|
LOGGER.debug("entry to buildReport(), this = {}", this);
|
||||||
this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR);
|
this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR);
|
||||||
try {
|
try {
|
||||||
this.taskanaEngine.openConnection();
|
this.taskanaEngine.openConnection();
|
||||||
CategoryReport report = new CategoryReport(this.columnHeaders);
|
CategoryReport report = new CategoryReport(this.columnHeaders);
|
||||||
|
|
|
@ -10,8 +10,8 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import pro.taskana.ClassificationQuery;
|
import pro.taskana.ClassificationQuery;
|
||||||
import pro.taskana.ClassificationSummary;
|
|
||||||
import pro.taskana.ClassificationQueryColumnName;
|
import pro.taskana.ClassificationQueryColumnName;
|
||||||
|
import pro.taskana.ClassificationSummary;
|
||||||
import pro.taskana.TaskanaEngine;
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.TimeInterval;
|
import pro.taskana.TimeInterval;
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
|
@ -29,7 +29,7 @@ public class ClassificationQueryImpl implements ClassificationQuery {
|
||||||
private static final String LINK_TO_COUNTER = "pro.taskana.mappings.QueryMapper.countQueryClassifications";
|
private static final String LINK_TO_COUNTER = "pro.taskana.mappings.QueryMapper.countQueryClassifications";
|
||||||
private static final String LINK_TO_VALUEMAPPER = "pro.taskana.mappings.QueryMapper.queryClassificationColumnValues";
|
private static final String LINK_TO_VALUEMAPPER = "pro.taskana.mappings.QueryMapper.queryClassificationColumnValues";
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(ClassificationQueryImpl.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(ClassificationQueryImpl.class);
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngine;
|
||||||
private ClassificationQueryColumnName columnName;
|
private ClassificationQueryColumnName columnName;
|
||||||
private String[] key;
|
private String[] key;
|
||||||
private String[] idIn;
|
private String[] idIn;
|
||||||
|
@ -68,8 +68,8 @@ public class ClassificationQueryImpl implements ClassificationQuery {
|
||||||
private List<String> orderBy;
|
private List<String> orderBy;
|
||||||
private List<String> orderColumns;
|
private List<String> orderColumns;
|
||||||
|
|
||||||
ClassificationQueryImpl(TaskanaEngine taskanaEngine) {
|
ClassificationQueryImpl(TaskanaEngine.Internal taskanaEngine) {
|
||||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
this.taskanaEngine = taskanaEngine;
|
||||||
this.orderBy = new ArrayList<>();
|
this.orderBy = new ArrayList<>();
|
||||||
this.orderColumns = new ArrayList<>();
|
this.orderColumns = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
@ -241,7 +241,8 @@ public class ClassificationQueryImpl implements ClassificationQuery {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ClassificationQuery customAttributeLike(String number, String... customLike) throws InvalidArgumentException {
|
public ClassificationQuery customAttributeLike(String number, String... customLike)
|
||||||
|
throws InvalidArgumentException {
|
||||||
int num = 0;
|
int num = 0;
|
||||||
try {
|
try {
|
||||||
num = Integer.parseInt(number);
|
num = Integer.parseInt(number);
|
||||||
|
@ -334,7 +335,8 @@ public class ClassificationQueryImpl implements ClassificationQuery {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ClassificationQuery orderByCustomAttribute(String number, SortDirection sortDirection) throws InvalidArgumentException {
|
public ClassificationQuery orderByCustomAttribute(String number, SortDirection sortDirection)
|
||||||
|
throws InvalidArgumentException {
|
||||||
int num = 0;
|
int num = 0;
|
||||||
try {
|
try {
|
||||||
num = Integer.parseInt(number);
|
num = Integer.parseInt(number);
|
||||||
|
|
|
@ -26,7 +26,7 @@ public class ClassificationReportBuilderImpl
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(ClassificationReport.Builder.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(ClassificationReport.Builder.class);
|
||||||
|
|
||||||
ClassificationReportBuilderImpl(TaskanaEngine taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
ClassificationReportBuilderImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
||||||
super(taskanaEngine, taskMonitorMapper);
|
super(taskanaEngine, taskMonitorMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ public class ClassificationReportBuilderImpl
|
||||||
@Override
|
@Override
|
||||||
public ClassificationReport buildReport() throws InvalidArgumentException, NotAuthorizedException {
|
public ClassificationReport buildReport() throws InvalidArgumentException, NotAuthorizedException {
|
||||||
LOGGER.debug("entry to buildReport(), this = {}", this);
|
LOGGER.debug("entry to buildReport(), this = {}", this);
|
||||||
this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
this.taskanaEngine.openConnection();
|
this.taskanaEngine.openConnection();
|
||||||
ClassificationReport report = new ClassificationReport(this.columnHeaders);
|
ClassificationReport report = new ClassificationReport(this.columnHeaders);
|
||||||
|
@ -62,7 +62,7 @@ public class ClassificationReportBuilderImpl
|
||||||
@Override
|
@Override
|
||||||
public DetailedClassificationReport buildDetailedReport() throws InvalidArgumentException, NotAuthorizedException {
|
public DetailedClassificationReport buildDetailedReport() throws InvalidArgumentException, NotAuthorizedException {
|
||||||
LOGGER.debug("entry to buildDetailedReport(), this = {}", this);
|
LOGGER.debug("entry to buildDetailedReport(), this = {}", this);
|
||||||
this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
this.taskanaEngine.openConnection();
|
this.taskanaEngine.openConnection();
|
||||||
DetailedClassificationReport report = new DetailedClassificationReport(this.columnHeaders);
|
DetailedClassificationReport report = new DetailedClassificationReport(this.columnHeaders);
|
||||||
|
|
|
@ -43,12 +43,11 @@ public class ClassificationServiceImpl implements ClassificationService {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(ClassificationServiceImpl.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(ClassificationServiceImpl.class);
|
||||||
private ClassificationMapper classificationMapper;
|
private ClassificationMapper classificationMapper;
|
||||||
private TaskMapper taskMapper;
|
private TaskMapper taskMapper;
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngine;
|
||||||
|
|
||||||
ClassificationServiceImpl(TaskanaEngine taskanaEngine, ClassificationMapper classificationMapper,
|
ClassificationServiceImpl(TaskanaEngine.Internal taskanaEngine, ClassificationMapper classificationMapper,
|
||||||
TaskMapper taskMapper) {
|
TaskMapper taskMapper) {
|
||||||
super();
|
this.taskanaEngine = taskanaEngine;
|
||||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
|
||||||
this.classificationMapper = classificationMapper;
|
this.classificationMapper = classificationMapper;
|
||||||
this.taskMapper = taskMapper;
|
this.taskMapper = taskMapper;
|
||||||
}
|
}
|
||||||
|
@ -79,7 +78,7 @@ public class ClassificationServiceImpl implements ClassificationService {
|
||||||
throws ClassificationAlreadyExistException, NotAuthorizedException,
|
throws ClassificationAlreadyExistException, NotAuthorizedException,
|
||||||
DomainNotFoundException, InvalidArgumentException {
|
DomainNotFoundException, InvalidArgumentException {
|
||||||
LOGGER.debug("entry to createClassification(classification = {})", classification);
|
LOGGER.debug("entry to createClassification(classification = {})", classification);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
if (!taskanaEngine.domainExists(classification.getDomain()) && !"".equals(classification.getDomain())) {
|
if (!taskanaEngine.domainExists(classification.getDomain()) && !"".equals(classification.getDomain())) {
|
||||||
throw new DomainNotFoundException(classification.getDomain(),
|
throw new DomainNotFoundException(classification.getDomain(),
|
||||||
"Domain " + classification.getDomain() + " does not exist in the configuration.");
|
"Domain " + classification.getDomain() + " does not exist in the configuration.");
|
||||||
|
@ -183,7 +182,7 @@ public class ClassificationServiceImpl implements ClassificationService {
|
||||||
public Classification updateClassification(Classification classification)
|
public Classification updateClassification(Classification classification)
|
||||||
throws NotAuthorizedException, ConcurrencyException, ClassificationNotFoundException, InvalidArgumentException {
|
throws NotAuthorizedException, ConcurrencyException, ClassificationNotFoundException, InvalidArgumentException {
|
||||||
LOGGER.debug("entry to updateClassification(Classification = {})", classification);
|
LOGGER.debug("entry to updateClassification(Classification = {})", classification);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
ClassificationImpl classificationImpl = null;
|
ClassificationImpl classificationImpl = null;
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
|
@ -256,13 +255,13 @@ public class ClassificationServiceImpl implements ClassificationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (classification.getType() != null
|
if (classification.getType() != null
|
||||||
&& !taskanaEngine.getConfiguration().getClassificationTypes().contains(classification.getType())) {
|
&& !taskanaEngine.getEngine().getConfiguration().getClassificationTypes().contains(classification.getType())) {
|
||||||
throw new InvalidArgumentException("Given classification type " + classification.getType()
|
throw new InvalidArgumentException("Given classification type " + classification.getType()
|
||||||
+ " is not valid according to the configuration.");
|
+ " is not valid according to the configuration.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (classification.getCategory() != null
|
if (classification.getCategory() != null
|
||||||
&& !taskanaEngine.getConfiguration()
|
&& !taskanaEngine.getEngine().getConfiguration()
|
||||||
.getClassificationCategoriesByType(classification.getType())
|
.getClassificationCategoriesByType(classification.getType())
|
||||||
.contains(classification.getCategory())) {
|
.contains(classification.getCategory())) {
|
||||||
throw new InvalidArgumentException(
|
throw new InvalidArgumentException(
|
||||||
|
@ -355,7 +354,7 @@ public class ClassificationServiceImpl implements ClassificationService {
|
||||||
public void deleteClassification(String classificationKey, String domain)
|
public void deleteClassification(String classificationKey, String domain)
|
||||||
throws ClassificationInUseException, ClassificationNotFoundException, NotAuthorizedException {
|
throws ClassificationInUseException, ClassificationNotFoundException, NotAuthorizedException {
|
||||||
LOGGER.debug("entry to deleteClassification(key = {}, domain = {})", classificationKey, domain);
|
LOGGER.debug("entry to deleteClassification(key = {}, domain = {})", classificationKey, domain);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
Classification classification = this.classificationMapper.findByKeyAndDomain(classificationKey, domain);
|
Classification classification = this.classificationMapper.findByKeyAndDomain(classificationKey, domain);
|
||||||
|
@ -374,7 +373,7 @@ public class ClassificationServiceImpl implements ClassificationService {
|
||||||
public void deleteClassification(String classificationId)
|
public void deleteClassification(String classificationId)
|
||||||
throws ClassificationInUseException, ClassificationNotFoundException, NotAuthorizedException {
|
throws ClassificationInUseException, ClassificationNotFoundException, NotAuthorizedException {
|
||||||
LOGGER.debug("entry to deleteClassification(id = {})", classificationId);
|
LOGGER.debug("entry to deleteClassification(id = {})", classificationId);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
Classification classification = this.classificationMapper.findById(classificationId);
|
Classification classification = this.classificationMapper.findById(classificationId);
|
||||||
|
@ -460,7 +459,7 @@ public class ClassificationServiceImpl implements ClassificationService {
|
||||||
*/
|
*/
|
||||||
private void updateCategoryOnAssociatedTasks(ClassificationImpl classificationImpl,
|
private void updateCategoryOnAssociatedTasks(ClassificationImpl classificationImpl,
|
||||||
Classification oldClassification) {
|
Classification oldClassification) {
|
||||||
List<TaskSummary> taskSummaries = taskanaEngine.getTaskService()
|
List<TaskSummary> taskSummaries = taskanaEngine.getEngine().getTaskService()
|
||||||
.createTaskQuery()
|
.createTaskQuery()
|
||||||
.classificationIdIn(oldClassification.getId())
|
.classificationIdIn(oldClassification.getId())
|
||||||
.list();
|
.list();
|
||||||
|
@ -515,7 +514,7 @@ public class ClassificationServiceImpl implements ClassificationService {
|
||||||
ScheduledJob job = new ScheduledJob();
|
ScheduledJob job = new ScheduledJob();
|
||||||
job.setArguments(args);
|
job.setArguments(args);
|
||||||
job.setType(ScheduledJob.Type.CLASSIFICATIONCHANGEDJOB);
|
job.setType(ScheduledJob.Type.CLASSIFICATIONCHANGEDJOB);
|
||||||
taskanaEngine.getJobService().createJob(job);
|
taskanaEngine.getEngine().getJobService().createJob(job);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ public class CustomFieldValueReportBuilderImpl
|
||||||
|
|
||||||
private CustomField customField;
|
private CustomField customField;
|
||||||
|
|
||||||
CustomFieldValueReportBuilderImpl(TaskanaEngine taskanaEngine, TaskMonitorMapper taskMonitorMapper,
|
CustomFieldValueReportBuilderImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper,
|
||||||
CustomField customField) {
|
CustomField customField) {
|
||||||
super(taskanaEngine, taskMonitorMapper);
|
super(taskanaEngine, taskMonitorMapper);
|
||||||
this.customField = customField;
|
this.customField = customField;
|
||||||
|
@ -47,7 +47,7 @@ public class CustomFieldValueReportBuilderImpl
|
||||||
public CustomFieldValueReport buildReport()
|
public CustomFieldValueReport buildReport()
|
||||||
throws InvalidArgumentException, NotAuthorizedException {
|
throws InvalidArgumentException, NotAuthorizedException {
|
||||||
LOGGER.debug("entry to buildReport(customField = {}), this = {}", this.customField, this);
|
LOGGER.debug("entry to buildReport(customField = {}), this = {}", this.customField, this);
|
||||||
this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR);
|
this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR);
|
||||||
try {
|
try {
|
||||||
this.taskanaEngine.openConnection();
|
this.taskanaEngine.openConnection();
|
||||||
CustomFieldValueReport report = new CustomFieldValueReport(this.columnHeaders);
|
CustomFieldValueReport report = new CustomFieldValueReport(this.columnHeaders);
|
||||||
|
|
|
@ -21,11 +21,10 @@ public class JobServiceImpl implements JobService {
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(JobServiceImpl.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(JobServiceImpl.class);
|
||||||
private JobMapper jobMapper;
|
private JobMapper jobMapper;
|
||||||
private TaskanaEngineImpl taskanaEngineImpl;
|
private TaskanaEngine.Internal taskanaEngineImpl;
|
||||||
|
|
||||||
public JobServiceImpl(TaskanaEngine taskanaEngine, JobMapper jobMapper) {
|
public JobServiceImpl(TaskanaEngine.Internal taskanaEngine, JobMapper jobMapper) {
|
||||||
super();
|
this.taskanaEngineImpl = taskanaEngine;
|
||||||
this.taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine;
|
|
||||||
this.jobMapper = jobMapper;
|
this.jobMapper = jobMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +93,7 @@ public class JobServiceImpl implements JobService {
|
||||||
if (job.getDue() == null) {
|
if (job.getDue() == null) {
|
||||||
job.setDue(Instant.now());
|
job.setDue(Instant.now());
|
||||||
}
|
}
|
||||||
job.setRetryCount(taskanaEngineImpl.getConfiguration().getMaxNumberOfJobRetries());
|
job.setRetryCount(taskanaEngineImpl.getEngine().getConfiguration().getMaxNumberOfJobRetries());
|
||||||
LOGGER.debug("Job after initialization: {}", job);
|
LOGGER.debug("Job after initialization: {}", job);
|
||||||
return job;
|
return job;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ public class ObjectReferenceQueryImpl implements ObjectReferenceQuery {
|
||||||
private static final String LINK_TO_COUNTER = "pro.taskana.mappings.QueryMapper.countQueryObjectReferences";
|
private static final String LINK_TO_COUNTER = "pro.taskana.mappings.QueryMapper.countQueryObjectReferences";
|
||||||
private static final String LINK_TO_VALUEMAPPER = "pro.taskana.mappings.QueryMapper.queryObjectReferenceColumnValues";
|
private static final String LINK_TO_VALUEMAPPER = "pro.taskana.mappings.QueryMapper.queryObjectReferenceColumnValues";
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(ObjectReferenceQueryImpl.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(ObjectReferenceQueryImpl.class);
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngine;
|
||||||
private ObjectReferenceQueryColumnName columnName;
|
private ObjectReferenceQueryColumnName columnName;
|
||||||
private String[] company;
|
private String[] company;
|
||||||
private String[] system;
|
private String[] system;
|
||||||
|
@ -36,8 +36,8 @@ public class ObjectReferenceQueryImpl implements ObjectReferenceQuery {
|
||||||
private String[] value;
|
private String[] value;
|
||||||
private List<String> orderBy;
|
private List<String> orderBy;
|
||||||
|
|
||||||
ObjectReferenceQueryImpl(TaskanaEngine taskanaEngine) {
|
ObjectReferenceQueryImpl(TaskanaEngine.Internal taskanaEngine) {
|
||||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
this.taskanaEngine = taskanaEngine;
|
||||||
this.orderBy = new ArrayList<>();
|
this.orderBy = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ package pro.taskana.impl;
|
||||||
|
|
||||||
import pro.taskana.CustomField;
|
import pro.taskana.CustomField;
|
||||||
import pro.taskana.TaskMonitorService;
|
import pro.taskana.TaskMonitorService;
|
||||||
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.mappings.TaskMonitorMapper;
|
import pro.taskana.mappings.TaskMonitorMapper;
|
||||||
import pro.taskana.report.CategoryReport;
|
import pro.taskana.report.CategoryReport;
|
||||||
import pro.taskana.report.ClassificationReport;
|
import pro.taskana.report.ClassificationReport;
|
||||||
|
@ -15,43 +16,43 @@ import pro.taskana.report.WorkbasketReport;
|
||||||
*/
|
*/
|
||||||
public class TaskMonitorServiceImpl implements TaskMonitorService {
|
public class TaskMonitorServiceImpl implements TaskMonitorService {
|
||||||
|
|
||||||
private TaskanaEngineImpl taskanaEngineImpl;
|
private TaskanaEngine.Internal taskanaEngine;
|
||||||
private TaskMonitorMapper taskMonitorMapper;
|
private TaskMonitorMapper taskMonitorMapper;
|
||||||
|
|
||||||
TaskMonitorServiceImpl(TaskanaEngineImpl taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
TaskMonitorServiceImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
||||||
super();
|
super();
|
||||||
this.taskanaEngineImpl = taskanaEngine;
|
this.taskanaEngine = taskanaEngine;
|
||||||
this.taskMonitorMapper = taskMonitorMapper;
|
this.taskMonitorMapper = taskMonitorMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketReport.Builder createWorkbasketReportBuilder() {
|
public WorkbasketReport.Builder createWorkbasketReportBuilder() {
|
||||||
return new WorkbasketReportBuilderImpl(taskanaEngineImpl, taskMonitorMapper);
|
return new WorkbasketReportBuilderImpl(taskanaEngine, taskMonitorMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CategoryReport.Builder createCategoryReportBuilder() {
|
public CategoryReport.Builder createCategoryReportBuilder() {
|
||||||
return new CategoryReportBuilderImpl(taskanaEngineImpl, taskMonitorMapper);
|
return new CategoryReportBuilderImpl(taskanaEngine, taskMonitorMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ClassificationReport.Builder createClassificationReportBuilder() {
|
public ClassificationReport.Builder createClassificationReportBuilder() {
|
||||||
return new ClassificationReportBuilderImpl(taskanaEngineImpl, taskMonitorMapper);
|
return new ClassificationReportBuilderImpl(taskanaEngine, taskMonitorMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CustomFieldValueReport.Builder createCustomFieldValueReportBuilder(CustomField customField) {
|
public CustomFieldValueReport.Builder createCustomFieldValueReportBuilder(CustomField customField) {
|
||||||
return new CustomFieldValueReportBuilderImpl(taskanaEngineImpl, taskMonitorMapper, customField);
|
return new CustomFieldValueReportBuilderImpl(taskanaEngine, taskMonitorMapper, customField);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskStatusReport.Builder createTaskStatusReportBuilder() {
|
public TaskStatusReport.Builder createTaskStatusReportBuilder() {
|
||||||
return new TaskStatusReportBuilderImpl(taskanaEngineImpl, taskMonitorMapper);
|
return new TaskStatusReportBuilderImpl(taskanaEngine, taskMonitorMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TimestampReport.Builder createTimestampReportBuilder() {
|
public TimestampReport.Builder createTimestampReportBuilder() {
|
||||||
return new TimestampReportBuilderImpl(taskanaEngineImpl, taskMonitorMapper);
|
return new TimestampReportBuilderImpl(taskanaEngine, taskMonitorMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
private static final String TIME_INTERVAL = "TimeInterval ";
|
private static final String TIME_INTERVAL = "TimeInterval ";
|
||||||
private static final String IS_INVALID = " is invalid.";
|
private static final String IS_INVALID = " is invalid.";
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(TaskQueryImpl.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(TaskQueryImpl.class);
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngine;
|
||||||
private TaskServiceImpl taskService;
|
private TaskServiceImpl taskService;
|
||||||
private TaskQueryColumnName columnName;
|
private TaskQueryColumnName columnName;
|
||||||
private String[] nameIn;
|
private String[] nameIn;
|
||||||
|
@ -146,9 +146,9 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
private boolean addClassificationNameToSelectClauseForOrdering = false;
|
private boolean addClassificationNameToSelectClauseForOrdering = false;
|
||||||
private boolean addAttachmentClassificationNameToSelectClauseForOrdering = false;
|
private boolean addAttachmentClassificationNameToSelectClauseForOrdering = false;
|
||||||
|
|
||||||
TaskQueryImpl(TaskanaEngine taskanaEngine) {
|
TaskQueryImpl(TaskanaEngine.Internal taskanaEngine) {
|
||||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
this.taskanaEngine = taskanaEngine;
|
||||||
this.taskService = (TaskServiceImpl) taskanaEngine.getTaskService();
|
this.taskService = (TaskServiceImpl) taskanaEngine.getEngine().getTaskService();
|
||||||
this.orderBy = new ArrayList<>();
|
this.orderBy = new ArrayList<>();
|
||||||
this.orderColumns = new ArrayList<>();
|
this.orderColumns = new ArrayList<>();
|
||||||
this.filterByAccessIdIn = true;
|
this.filterByAccessIdIn = true;
|
||||||
|
@ -178,7 +178,6 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery nameLike(String... names) {
|
public TaskQuery nameLike(String... names) {
|
||||||
this.nameLike = toUpperCopy(names);
|
this.nameLike = toUpperCopy(names);
|
||||||
|
@ -698,23 +697,23 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
public TaskQuery orderByClassificationName(SortDirection sortDirection) {
|
public TaskQuery orderByClassificationName(SortDirection sortDirection) {
|
||||||
joinWithClassifications = true;
|
joinWithClassifications = true;
|
||||||
addClassificationNameToSelectClauseForOrdering = true;
|
addClassificationNameToSelectClauseForOrdering = true;
|
||||||
return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2")
|
return this.taskanaEngine.getSqlSession().getConfiguration().getDatabaseId().equals("db2")
|
||||||
? addOrderCriteria("CNAME", sortDirection)
|
? addOrderCriteria("CNAME", sortDirection)
|
||||||
: addOrderCriteria("c.NAME", sortDirection);
|
: addOrderCriteria("c.NAME", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByAttachmentClassificationName(SortDirection sortDirection) {
|
public TaskQuery orderByAttachmentClassificationName(SortDirection sortDirection) {
|
||||||
joinWithAttachments = true;
|
joinWithAttachments = true;
|
||||||
addAttachmentClassificationNameToSelectClauseForOrdering = true;
|
addAttachmentClassificationNameToSelectClauseForOrdering = true;
|
||||||
return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2")
|
return this.taskanaEngine.getSqlSession().getConfiguration().getDatabaseId().equals("db2")
|
||||||
? addOrderCriteria("ACNAME", sortDirection)
|
? addOrderCriteria("ACNAME", sortDirection)
|
||||||
: addOrderCriteria("ac.NAME", sortDirection);
|
: addOrderCriteria("ac.NAME", sortDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskQuery orderByClassificationKey(SortDirection sortDirection) {
|
public TaskQuery orderByClassificationKey(SortDirection sortDirection) {
|
||||||
return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2")
|
return this.taskanaEngine.getSqlSession().getConfiguration().getDatabaseId().equals("db2")
|
||||||
? addOrderCriteria("TCLASSIFICATION_KEY", sortDirection)
|
? addOrderCriteria("TCLASSIFICATION_KEY", sortDirection)
|
||||||
: addOrderCriteria("t.CLASSIFICATION_KEY", sortDirection);
|
: addOrderCriteria("t.CLASSIFICATION_KEY", sortDirection);
|
||||||
}
|
}
|
||||||
|
@ -803,7 +802,7 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
public TaskQuery orderByAttachmentClassificationKey(SortDirection sortDirection) {
|
public TaskQuery orderByAttachmentClassificationKey(SortDirection sortDirection) {
|
||||||
joinWithAttachments = true;
|
joinWithAttachments = true;
|
||||||
addAttachmentColumnsToSelectClauseForOrdering = true;
|
addAttachmentColumnsToSelectClauseForOrdering = true;
|
||||||
return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2")
|
return this.taskanaEngine.getSqlSession().getConfiguration().getDatabaseId().equals("db2")
|
||||||
? addOrderCriteria("ACLASSIFICATION_KEY", sortDirection)
|
? addOrderCriteria("ACLASSIFICATION_KEY", sortDirection)
|
||||||
: addOrderCriteria("a.CLASSIFICATION_KEY", sortDirection);
|
: addOrderCriteria("a.CLASSIFICATION_KEY", sortDirection);
|
||||||
}
|
}
|
||||||
|
@ -812,7 +811,7 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
public TaskQuery orderByAttachmentClassificationId(SortDirection sortDirection) {
|
public TaskQuery orderByAttachmentClassificationId(SortDirection sortDirection) {
|
||||||
joinWithAttachments = true;
|
joinWithAttachments = true;
|
||||||
addAttachmentColumnsToSelectClauseForOrdering = true;
|
addAttachmentColumnsToSelectClauseForOrdering = true;
|
||||||
return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2")
|
return this.taskanaEngine.getSqlSession().getConfiguration().getDatabaseId().equals("db2")
|
||||||
? addOrderCriteria("ACLASSIFICATION_ID", sortDirection)
|
? addOrderCriteria("ACLASSIFICATION_ID", sortDirection)
|
||||||
: addOrderCriteria("a.CLASSIFICATION_ID", sortDirection);
|
: addOrderCriteria("a.CLASSIFICATION_ID", sortDirection);
|
||||||
}
|
}
|
||||||
|
@ -976,19 +975,21 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getLinkToMapperScript() {
|
public String getLinkToMapperScript() {
|
||||||
return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2")
|
return this.taskanaEngine
|
||||||
|
.getSqlSession()
|
||||||
|
.getConfiguration().getDatabaseId().equals("db2")
|
||||||
? LINK_TO_MAPPER_DB2
|
? LINK_TO_MAPPER_DB2
|
||||||
: LINK_TO_MAPPER;
|
: LINK_TO_MAPPER;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getLinkToCounterTaskScript() {
|
public String getLinkToCounterTaskScript() {
|
||||||
return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2")
|
return this.taskanaEngine.getSqlSession().getConfiguration().getDatabaseId().equals("db2")
|
||||||
? LINK_TO_COUNTER_DB2
|
? LINK_TO_COUNTER_DB2
|
||||||
: LINK_TO_COUNTER;
|
: LINK_TO_COUNTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupAccessIds() {
|
private void setupAccessIds() {
|
||||||
if (taskanaEngine.isUserInRole(TaskanaRole.ADMIN) || !filterByAccessIdIn) {
|
if (taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN) || !filterByAccessIdIn) {
|
||||||
this.accessIdIn = null;
|
this.accessIdIn = null;
|
||||||
} else if (this.accessIdIn == null) {
|
} else if (this.accessIdIn == null) {
|
||||||
String[] accessIds = new String[0];
|
String[] accessIds = new String[0];
|
||||||
|
@ -1154,7 +1155,7 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkOpenAndReadPermissionForSpecifiedWorkbaskets() {
|
private void checkOpenAndReadPermissionForSpecifiedWorkbaskets() {
|
||||||
if (taskanaEngine.isUserInRole(TaskanaRole.ADMIN)) {
|
if (taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN)) {
|
||||||
LOGGER.debug("Skipping permissions check since user is in role ADMIN.");
|
LOGGER.debug("Skipping permissions check since user is in role ADMIN.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1178,7 +1179,7 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
|
|
||||||
private void checkOpenAndReadPermissionById(String workbasketId) throws NotAuthorizedException {
|
private void checkOpenAndReadPermissionById(String workbasketId) throws NotAuthorizedException {
|
||||||
try {
|
try {
|
||||||
taskanaEngine.getWorkbasketService().checkAuthorization(workbasketId,
|
taskanaEngine.getEngine().getWorkbasketService().checkAuthorization(workbasketId,
|
||||||
WorkbasketPermission.OPEN, WorkbasketPermission.READ);
|
WorkbasketPermission.OPEN, WorkbasketPermission.READ);
|
||||||
} catch (WorkbasketNotFoundException e) {
|
} catch (WorkbasketNotFoundException e) {
|
||||||
LOGGER.warn("The workbasket with the ID '" + workbasketId + "' does not exist.", e);
|
LOGGER.warn("The workbasket with the ID '" + workbasketId + "' does not exist.", e);
|
||||||
|
@ -1187,7 +1188,7 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
|
|
||||||
private void checkOpenAndReadPermissionByKeyDomain(KeyDomain keyDomain) throws NotAuthorizedException {
|
private void checkOpenAndReadPermissionByKeyDomain(KeyDomain keyDomain) throws NotAuthorizedException {
|
||||||
try {
|
try {
|
||||||
taskanaEngine.getWorkbasketService().checkAuthorization(keyDomain.getKey(),
|
taskanaEngine.getEngine().getWorkbasketService().checkAuthorization(keyDomain.getKey(),
|
||||||
keyDomain.getDomain(), WorkbasketPermission.OPEN, WorkbasketPermission.READ);
|
keyDomain.getDomain(), WorkbasketPermission.OPEN, WorkbasketPermission.READ);
|
||||||
} catch (WorkbasketNotFoundException e) {
|
} catch (WorkbasketNotFoundException e) {
|
||||||
LOGGER.warn("The workbasket with the KEY '" + keyDomain.getKey() + "' and DOMAIN '"
|
LOGGER.warn("The workbasket with the KEY '" + keyDomain.getKey() + "' and DOMAIN '"
|
||||||
|
@ -1195,10 +1196,6 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public TaskanaEngineImpl getTaskanaEngine() {
|
|
||||||
return taskanaEngine;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String[] getTaskIds() {
|
public String[] getTaskIds() {
|
||||||
return taskIds;
|
return taskIds;
|
||||||
}
|
}
|
||||||
|
@ -1634,7 +1631,8 @@ public class TaskQueryImpl implements TaskQuery {
|
||||||
return addClassificationNameToSelectClauseForOrdering;
|
return addClassificationNameToSelectClauseForOrdering;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAddClassificationNameToSelectClauseForOrdering(boolean addClassificationNameToSelectClauseForOrdering) {
|
public void setAddClassificationNameToSelectClauseForOrdering(
|
||||||
|
boolean addClassificationNameToSelectClauseForOrdering) {
|
||||||
this.addClassificationNameToSelectClauseForOrdering = addClassificationNameToSelectClauseForOrdering;
|
this.addClassificationNameToSelectClauseForOrdering = addClassificationNameToSelectClauseForOrdering;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
import org.apache.ibatis.exceptions.PersistenceException;
|
import org.apache.ibatis.exceptions.PersistenceException;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -19,6 +20,7 @@ import org.slf4j.LoggerFactory;
|
||||||
import pro.taskana.Attachment;
|
import pro.taskana.Attachment;
|
||||||
import pro.taskana.BulkOperationResults;
|
import pro.taskana.BulkOperationResults;
|
||||||
import pro.taskana.Classification;
|
import pro.taskana.Classification;
|
||||||
|
import pro.taskana.ClassificationService;
|
||||||
import pro.taskana.ClassificationSummary;
|
import pro.taskana.ClassificationSummary;
|
||||||
import pro.taskana.ObjectReference;
|
import pro.taskana.ObjectReference;
|
||||||
import pro.taskana.Task;
|
import pro.taskana.Task;
|
||||||
|
@ -79,17 +81,17 @@ public class TaskServiceImpl implements TaskService {
|
||||||
private static final String ID_PREFIX_BUSINESS_PROCESS = "BPI";
|
private static final String ID_PREFIX_BUSINESS_PROCESS = "BPI";
|
||||||
private static final String MUST_NOT_BE_EMPTY = " must not be empty";
|
private static final String MUST_NOT_BE_EMPTY = " must not be empty";
|
||||||
private static final Duration MAX_DURATION = Duration.ofSeconds(Long.MAX_VALUE, 999_999_999);
|
private static final Duration MAX_DURATION = Duration.ofSeconds(Long.MAX_VALUE, 999_999_999);
|
||||||
private static final Set<String> ALLOWED_KEYS = new HashSet<>(
|
private static final Set<String> ALLOWED_KEYS =
|
||||||
Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"));
|
IntStream.rangeClosed(1, 16).mapToObj(String::valueOf).collect(Collectors.toSet());
|
||||||
private DaysToWorkingDaysConverter converter;
|
private DaysToWorkingDaysConverter converter;
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngine;
|
||||||
private WorkbasketService workbasketService;
|
private WorkbasketService workbasketService;
|
||||||
private ClassificationServiceImpl classificationService;
|
private ClassificationService classificationService;
|
||||||
private TaskMapper taskMapper;
|
private TaskMapper taskMapper;
|
||||||
private AttachmentMapper attachmentMapper;
|
private AttachmentMapper attachmentMapper;
|
||||||
private HistoryEventProducer historyEventProducer;
|
private HistoryEventProducer historyEventProducer;
|
||||||
|
|
||||||
TaskServiceImpl(TaskanaEngine taskanaEngine, TaskMapper taskMapper,
|
TaskServiceImpl(TaskanaEngine.Internal taskanaEngine, TaskMapper taskMapper,
|
||||||
AttachmentMapper attachmentMapper) {
|
AttachmentMapper attachmentMapper) {
|
||||||
super();
|
super();
|
||||||
try {
|
try {
|
||||||
|
@ -98,12 +100,12 @@ public class TaskServiceImpl implements TaskService {
|
||||||
} catch (InvalidArgumentException e) {
|
} catch (InvalidArgumentException e) {
|
||||||
throw new SystemException("Internal error. Cannot initialize DaysToWorkingDaysConverter", e.getCause());
|
throw new SystemException("Internal error. Cannot initialize DaysToWorkingDaysConverter", e.getCause());
|
||||||
}
|
}
|
||||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
this.taskanaEngine = taskanaEngine;
|
||||||
this.taskMapper = taskMapper;
|
this.taskMapper = taskMapper;
|
||||||
this.workbasketService = taskanaEngine.getWorkbasketService();
|
this.workbasketService = taskanaEngine.getEngine().getWorkbasketService();
|
||||||
this.attachmentMapper = attachmentMapper;
|
this.attachmentMapper = attachmentMapper;
|
||||||
this.classificationService = (ClassificationServiceImpl) taskanaEngine.getClassificationService();
|
this.classificationService = taskanaEngine.getEngine().getClassificationService();
|
||||||
this.historyEventProducer = ((TaskanaEngineImpl) taskanaEngine).getHistoryEventProducer();
|
this.historyEventProducer = taskanaEngine.getEngine().getHistoryEventProducer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -237,7 +239,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
if (msg != null
|
if (msg != null
|
||||||
&& (msg.contains("violation") || msg.contains("violates"))
|
&& (msg.contains("violation") || msg.contains("violates"))
|
||||||
&& msg.contains("external_id")) {
|
&& msg.contains("external_id")) {
|
||||||
throw new TaskAlreadyExistException("Task with external id " + task.getExternalId() + " already exists");
|
throw new TaskAlreadyExistException(
|
||||||
|
"Task with external id " + task.getExternalId() + " already exists");
|
||||||
} else {
|
} else {
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
@ -280,7 +283,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
|
|
||||||
List<ClassificationSummary> classifications;
|
List<ClassificationSummary> classifications;
|
||||||
classifications = findClassificationForTaskImplAndAttachments(resultTask, attachmentImpls);
|
classifications = findClassificationForTaskImplAndAttachments(resultTask, attachmentImpls);
|
||||||
List<Attachment> attachments = addClassificationSummariesToAttachments(attachmentImpls, classifications);
|
List<Attachment> attachments = addClassificationSummariesToAttachments(attachmentImpls,
|
||||||
|
classifications);
|
||||||
resultTask.setAttachments(attachments);
|
resultTask.setAttachments(attachments);
|
||||||
|
|
||||||
String classificationId = resultTask.getClassificationSummary().getId();
|
String classificationId = resultTask.getClassificationSummary().getId();
|
||||||
|
@ -413,7 +417,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to transferTasks(targetWbId = {}, taskIds = {})", destinationWorkbasketId, LoggerUtils.listToString(taskIds));
|
LOGGER.debug("entry to transferTasks(targetWbId = {}, taskIds = {})", destinationWorkbasketId,
|
||||||
|
LoggerUtils.listToString(taskIds));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check pre-conditions with trowing Exceptions
|
// Check pre-conditions with trowing Exceptions
|
||||||
|
@ -426,7 +431,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
return transferTasks(taskIds, destinationWorkbasket);
|
return transferTasks(taskIds, destinationWorkbasket);
|
||||||
} finally {
|
} finally {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("exit from transferTasks(targetWbKey = {}, taskIds = {})", destinationWorkbasketId, LoggerUtils.listToString(taskIds));
|
LOGGER.debug("exit from transferTasks(targetWbKey = {}, taskIds = {})", destinationWorkbasketId,
|
||||||
|
LoggerUtils.listToString(taskIds));
|
||||||
}
|
}
|
||||||
|
|
||||||
taskanaEngine.returnConnection();
|
taskanaEngine.returnConnection();
|
||||||
|
@ -440,7 +446,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to transferTasks(targetWbKey = {}, domain = {}, taskIds = {})", destinationWorkbasketKey,
|
LOGGER.debug("entry to transferTasks(targetWbKey = {}, domain = {}, taskIds = {})",
|
||||||
|
destinationWorkbasketKey,
|
||||||
destinationWorkbasketDomain, LoggerUtils.listToString(taskIds));
|
destinationWorkbasketDomain, LoggerUtils.listToString(taskIds));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -455,7 +462,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
return transferTasks(taskIds, destinationWorkbasket);
|
return transferTasks(taskIds, destinationWorkbasket);
|
||||||
} finally {
|
} finally {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("exit from transferTasks(targetWbKey = {}, targetWbDomain = {}, destination taskIds = {})", destinationWorkbasketKey,
|
LOGGER.debug("exit from transferTasks(targetWbKey = {}, targetWbDomain = {}, destination taskIds = {})",
|
||||||
|
destinationWorkbasketKey,
|
||||||
destinationWorkbasketDomain, LoggerUtils.listToString(taskIds));
|
destinationWorkbasketDomain, LoggerUtils.listToString(taskIds));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -609,7 +617,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
changedTasks = taskSummaries.stream().map(TaskSummary::getTaskId).collect(Collectors.toList());
|
changedTasks = taskSummaries.stream().map(TaskSummary::getTaskId).collect(Collectors.toList());
|
||||||
taskMapper.updateTasks(changedTasks, updated, fieldSelector);
|
taskMapper.updateTasks(changedTasks, updated, fieldSelector);
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("updateTasks() updated the following tasks: {} ", LoggerUtils.listToString(changedTasks));
|
LOGGER.debug("updateTasks() updated the following tasks: {} ",
|
||||||
|
LoggerUtils.listToString(changedTasks));
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -645,7 +654,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
changedTasks = taskSummaries.stream().map(TaskSummary::getTaskId).collect(Collectors.toList());
|
changedTasks = taskSummaries.stream().map(TaskSummary::getTaskId).collect(Collectors.toList());
|
||||||
taskMapper.updateTasks(changedTasks, updatedTask, fieldSelector);
|
taskMapper.updateTasks(changedTasks, updatedTask, fieldSelector);
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("updateTasks() updated the following tasks: {} ", LoggerUtils.listToString(changedTasks));
|
LOGGER.debug("updateTasks() updated the following tasks: {} ",
|
||||||
|
LoggerUtils.listToString(changedTasks));
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -697,7 +707,7 @@ public class TaskServiceImpl implements TaskService {
|
||||||
task.setTransferred(false);
|
task.setTransferred(false);
|
||||||
|
|
||||||
String creator = CurrentUserContext.getUserid();
|
String creator = CurrentUserContext.getUserid();
|
||||||
if (taskanaEngine.getConfiguration().isSecurityEnabled() && creator == null) {
|
if (taskanaEngine.getEngine().getConfiguration().isSecurityEnabled() && creator == null) {
|
||||||
throw new SystemException(
|
throw new SystemException(
|
||||||
"TaskanaSecurity is enabled, but the current UserId is NULL while creating a Task.");
|
"TaskanaSecurity is enabled, but the current UserId is NULL while creating a Task.");
|
||||||
}
|
}
|
||||||
|
@ -747,7 +757,7 @@ public class TaskServiceImpl implements TaskService {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (task.getName() == null && classification != null) {
|
if (task.getName() == null && classification != null) {
|
||||||
task.setName(classification.getName());
|
task.setName(classification.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -761,7 +771,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
Workbasket destinationWorkbasket)
|
Workbasket destinationWorkbasket)
|
||||||
throws InvalidArgumentException, WorkbasketNotFoundException, NotAuthorizedException {
|
throws InvalidArgumentException, WorkbasketNotFoundException, NotAuthorizedException {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to transferTasks(taskIdsToBeTransferred = {}, destinationWorkbasket = {})", LoggerUtils.listToString(taskIdsToBeTransferred), destinationWorkbasket);
|
LOGGER.debug("entry to transferTasks(taskIdsToBeTransferred = {}, destinationWorkbasket = {})",
|
||||||
|
LoggerUtils.listToString(taskIdsToBeTransferred), destinationWorkbasket);
|
||||||
}
|
}
|
||||||
|
|
||||||
workbasketService.checkAuthorization(destinationWorkbasket.getId(), WorkbasketPermission.APPEND);
|
workbasketService.checkAuthorization(destinationWorkbasket.getId(), WorkbasketPermission.APPEND);
|
||||||
|
@ -795,7 +806,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
private void removeNonExistingTasksFromTaskIdList(List<String> taskIds,
|
private void removeNonExistingTasksFromTaskIdList(List<String> taskIds,
|
||||||
BulkOperationResults<String, TaskanaException> bulkLog) {
|
BulkOperationResults<String, TaskanaException> bulkLog) {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to removeNonExistingTasksFromTaskIdList(targetWbId = {}, taskIds = {})", taskIds, bulkLog);
|
LOGGER.debug("entry to removeNonExistingTasksFromTaskIdList(targetWbId = {}, taskIds = {})", taskIds,
|
||||||
|
bulkLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
Iterator<String> taskIdIterator = taskIds.iterator();
|
Iterator<String> taskIdIterator = taskIds.iterator();
|
||||||
|
@ -813,7 +825,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
private void checkIfTransferConditionsAreFulfilled(List<String> taskIds, List<MinimalTaskSummary> taskSummaries,
|
private void checkIfTransferConditionsAreFulfilled(List<String> taskIds, List<MinimalTaskSummary> taskSummaries,
|
||||||
BulkOperationResults<String, TaskanaException> bulkLog) {
|
BulkOperationResults<String, TaskanaException> bulkLog) {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to checkIfTransferConditionsAreFulfilled(taskIds = {}, taskSummaries = {}, bulkLog = {})",
|
LOGGER.debug(
|
||||||
|
"entry to checkIfTransferConditionsAreFulfilled(taskIds = {}, taskSummaries = {}, bulkLog = {})",
|
||||||
LoggerUtils.listToString(taskIds), LoggerUtils.listToString(taskSummaries), bulkLog);
|
LoggerUtils.listToString(taskIds), LoggerUtils.listToString(taskSummaries), bulkLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -837,8 +850,10 @@ public class TaskServiceImpl implements TaskService {
|
||||||
private void checkIfTasksMatchTransferCriteria(List<String> taskIds, List<MinimalTaskSummary> taskSummaries,
|
private void checkIfTasksMatchTransferCriteria(List<String> taskIds, List<MinimalTaskSummary> taskSummaries,
|
||||||
List<WorkbasketSummary> sourceWorkbaskets, BulkOperationResults<String, TaskanaException> bulkLog) {
|
List<WorkbasketSummary> sourceWorkbaskets, BulkOperationResults<String, TaskanaException> bulkLog) {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to checkIfTasksMatchTransferCriteria(taskIds = {}, taskSummaries = {}, sourceWorkbaskets = {}, bulkLog = {})",
|
LOGGER.debug(
|
||||||
LoggerUtils.listToString(taskIds), LoggerUtils.listToString(taskSummaries), LoggerUtils.listToString(sourceWorkbaskets), bulkLog);
|
"entry to checkIfTasksMatchTransferCriteria(taskIds = {}, taskSummaries = {}, sourceWorkbaskets = {}, bulkLog = {})",
|
||||||
|
LoggerUtils.listToString(taskIds), LoggerUtils.listToString(taskSummaries),
|
||||||
|
LoggerUtils.listToString(sourceWorkbaskets), bulkLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
Iterator<String> taskIdIterator = taskIds.iterator();
|
Iterator<String> taskIdIterator = taskIds.iterator();
|
||||||
|
@ -935,7 +950,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
private void updateTasksToBeCompleted(List<String> taskIds,
|
private void updateTasksToBeCompleted(List<String> taskIds,
|
||||||
List<TaskSummary> taskSummaries) {
|
List<TaskSummary> taskSummaries) {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to updateTasksToBeCompleted(taskIds = {}, taskSummaries = {})", LoggerUtils.listToString(taskIds), LoggerUtils.listToString(taskSummaries));
|
LOGGER.debug("entry to updateTasksToBeCompleted(taskIds = {}, taskSummaries = {})",
|
||||||
|
LoggerUtils.listToString(taskIds), LoggerUtils.listToString(taskSummaries));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!taskIds.isEmpty() && !taskSummaries.isEmpty()) {
|
if (!taskIds.isEmpty() && !taskSummaries.isEmpty()) {
|
||||||
|
@ -985,7 +1001,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
private void addClassificationSummariesToTaskSummaries(List<TaskSummaryImpl> tasks,
|
private void addClassificationSummariesToTaskSummaries(List<TaskSummaryImpl> tasks,
|
||||||
List<ClassificationSummary> classifications) {
|
List<ClassificationSummary> classifications) {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to addClassificationSummariesToTaskSummaries(tasks = {}, classifications = {})", LoggerUtils.listToString(tasks), LoggerUtils.listToString(classifications));
|
LOGGER.debug("entry to addClassificationSummariesToTaskSummaries(tasks = {}, classifications = {})",
|
||||||
|
LoggerUtils.listToString(tasks), LoggerUtils.listToString(classifications));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tasks == null || tasks.isEmpty()) {
|
if (tasks == null || tasks.isEmpty()) {
|
||||||
|
@ -1096,8 +1113,10 @@ public class TaskServiceImpl implements TaskService {
|
||||||
private void addAttachmentSummariesToTaskSummaries(List<TaskSummaryImpl> taskSummaries,
|
private void addAttachmentSummariesToTaskSummaries(List<TaskSummaryImpl> taskSummaries,
|
||||||
List<AttachmentSummaryImpl> attachmentSummaries, List<ClassificationSummary> classifications) {
|
List<AttachmentSummaryImpl> attachmentSummaries, List<ClassificationSummary> classifications) {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to addAttachmentSummariesToTaskSummaries(taskSummaries = {}, attachmentSummaries = {}, classifications = {})",
|
LOGGER.debug(
|
||||||
LoggerUtils.listToString(taskSummaries), LoggerUtils.listToString(attachmentSummaries), LoggerUtils.listToString(classifications));
|
"entry to addAttachmentSummariesToTaskSummaries(taskSummaries = {}, attachmentSummaries = {}, classifications = {})",
|
||||||
|
LoggerUtils.listToString(taskSummaries), LoggerUtils.listToString(attachmentSummaries),
|
||||||
|
LoggerUtils.listToString(classifications));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taskSummaries == null || taskSummaries.isEmpty()) {
|
if (taskSummaries == null || taskSummaries.isEmpty()) {
|
||||||
|
@ -1181,7 +1200,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
private TaskImpl initUpdatedTask(Map<String, String> customFieldsToUpdate, CustomPropertySelector fieldSelector)
|
private TaskImpl initUpdatedTask(Map<String, String> customFieldsToUpdate, CustomPropertySelector fieldSelector)
|
||||||
throws InvalidArgumentException {
|
throws InvalidArgumentException {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to initUpdatedTask(customFieldsToUpdate = {}, fieldSelector = {})", LoggerUtils.mapToString(customFieldsToUpdate), fieldSelector);
|
LOGGER.debug("entry to initUpdatedTask(customFieldsToUpdate = {}, fieldSelector = {})",
|
||||||
|
LoggerUtils.mapToString(customFieldsToUpdate), fieldSelector);
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskImpl newTask = new TaskImpl();
|
TaskImpl newTask = new TaskImpl();
|
||||||
|
@ -1201,7 +1221,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
|
|
||||||
private void validateCustomFields(Map<String, String> customFieldsToUpdate) throws InvalidArgumentException {
|
private void validateCustomFields(Map<String, String> customFieldsToUpdate) throws InvalidArgumentException {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to validateCustomFields(customFieldsToUpdate = {}, taskIds = {})", LoggerUtils.mapToString(customFieldsToUpdate));
|
LOGGER.debug("entry to validateCustomFields(customFieldsToUpdate = {}, taskIds = {})",
|
||||||
|
LoggerUtils.mapToString(customFieldsToUpdate));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (customFieldsToUpdate == null || customFieldsToUpdate.isEmpty()) {
|
if (customFieldsToUpdate == null || customFieldsToUpdate.isEmpty()) {
|
||||||
|
@ -1296,9 +1317,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
} else {
|
} else {
|
||||||
ClassificationSummary classificationSummary = attachment.getClassificationSummary();
|
ClassificationSummary classificationSummary = attachment.getClassificationSummary();
|
||||||
if (classificationSummary != null) {
|
if (classificationSummary != null) {
|
||||||
PrioDurationHolder newPrioDuraton = getNewPrioDuration(actualPrioDuration,
|
actualPrioDuration = getNewPrioDuration(actualPrioDuration,
|
||||||
classificationSummary.getPriority(), classificationSummary.getServiceLevel());
|
classificationSummary.getPriority(), classificationSummary.getServiceLevel());
|
||||||
actualPrioDuration = newPrioDuraton;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return actualPrioDuration;
|
return actualPrioDuration;
|
||||||
|
@ -1405,7 +1425,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
private PrioDurationHolder handleAttachmentsOnTaskUpdate(TaskImpl oldTaskImpl, TaskImpl newTaskImpl)
|
private PrioDurationHolder handleAttachmentsOnTaskUpdate(TaskImpl oldTaskImpl, TaskImpl newTaskImpl)
|
||||||
throws AttachmentPersistenceException {
|
throws AttachmentPersistenceException {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to handleAttachmentsOnTaskUpdate(oldTaskImpl = {}, newTaskImpl = {})", oldTaskImpl, newTaskImpl);
|
LOGGER.debug("entry to handleAttachmentsOnTaskUpdate(oldTaskImpl = {}, newTaskImpl = {})", oldTaskImpl,
|
||||||
|
newTaskImpl);
|
||||||
}
|
}
|
||||||
|
|
||||||
PrioDurationHolder prioDuration = new PrioDurationHolder(MAX_DURATION, Integer.MIN_VALUE);
|
PrioDurationHolder prioDuration = new PrioDurationHolder(MAX_DURATION, Integer.MIN_VALUE);
|
||||||
|
@ -1415,7 +1436,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
while (i.hasNext()) {
|
while (i.hasNext()) {
|
||||||
Attachment attachment = i.next();
|
Attachment attachment = i.next();
|
||||||
if (attachment != null) {
|
if (attachment != null) {
|
||||||
prioDuration = handlePrioDurationOfOneAttachmentOnTaskUpdate(oldTaskImpl, newTaskImpl, prioDuration, attachment);
|
prioDuration = handlePrioDurationOfOneAttachmentOnTaskUpdate(oldTaskImpl, newTaskImpl, prioDuration,
|
||||||
|
attachment);
|
||||||
} else {
|
} else {
|
||||||
i.remove();
|
i.remove();
|
||||||
}
|
}
|
||||||
|
@ -1433,7 +1455,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
|
|
||||||
private void deleteAttachmentOnTaskUpdate(TaskImpl oldTaskImpl, TaskImpl newTaskImpl) {
|
private void deleteAttachmentOnTaskUpdate(TaskImpl oldTaskImpl, TaskImpl newTaskImpl) {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to deleteAttachmentOnTaskUpdate(oldTaskImpl = {}, newTaskImpl = {})", oldTaskImpl, newTaskImpl);
|
LOGGER.debug("entry to deleteAttachmentOnTaskUpdate(oldTaskImpl = {}, newTaskImpl = {})", oldTaskImpl,
|
||||||
|
newTaskImpl);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Attachment oldAttachment : oldTaskImpl.getAttachments()) {
|
for (Attachment oldAttachment : oldTaskImpl.getAttachments()) {
|
||||||
|
@ -1491,7 +1514,7 @@ public class TaskServiceImpl implements TaskService {
|
||||||
|
|
||||||
ClassificationSummary classification = attachment.getClassificationSummary();
|
ClassificationSummary classification = attachment.getClassificationSummary();
|
||||||
if (classification != null) {
|
if (classification != null) {
|
||||||
prioDuration = getNewPrioDuration(prioDuration,
|
prioDuration = getNewPrioDuration(prioDuration,
|
||||||
classification.getPriority(), classification.getServiceLevel());
|
classification.getPriority(), classification.getServiceLevel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1556,11 +1579,12 @@ public class TaskServiceImpl implements TaskService {
|
||||||
|
|
||||||
LOGGER.debug("exit from handleAttachmentsOnClassificationUpdate(), returning {}", prioDuration);
|
LOGGER.debug("exit from handleAttachmentsOnClassificationUpdate(), returning {}", prioDuration);
|
||||||
return prioDuration;
|
return prioDuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
private PrioDurationHolder getNewPrioDuration(PrioDurationHolder prioDurationHolder, int prioFromClassification,
|
private PrioDurationHolder getNewPrioDuration(PrioDurationHolder prioDurationHolder, int prioFromClassification,
|
||||||
String serviceLevelFromClassification) {
|
String serviceLevelFromClassification) {
|
||||||
LOGGER.debug("entry to getNewPrioDuration(prioDurationHolder = {}, prioFromClassification = {}, serviceLevelFromClassification = {})",
|
LOGGER.debug(
|
||||||
|
"entry to getNewPrioDuration(prioDurationHolder = {}, prioFromClassification = {}, serviceLevelFromClassification = {})",
|
||||||
prioDurationHolder, prioFromClassification, serviceLevelFromClassification);
|
prioDurationHolder, prioFromClassification, serviceLevelFromClassification);
|
||||||
Duration minDuration = prioDurationHolder.getDuration();
|
Duration minDuration = prioDurationHolder.getDuration();
|
||||||
int maxPrio = prioDurationHolder.getPrio();
|
int maxPrio = prioDurationHolder.getPrio();
|
||||||
|
@ -1832,7 +1856,7 @@ public class TaskServiceImpl implements TaskService {
|
||||||
private void deleteTask(String taskId, boolean forceDelete)
|
private void deleteTask(String taskId, boolean forceDelete)
|
||||||
throws TaskNotFoundException, InvalidStateException, NotAuthorizedException {
|
throws TaskNotFoundException, InvalidStateException, NotAuthorizedException {
|
||||||
LOGGER.debug("entry to deleteTask(taskId = {} , forceDelete = {})", taskId, forceDelete);
|
LOGGER.debug("entry to deleteTask(taskId = {} , forceDelete = {})", taskId, forceDelete);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.ADMIN);
|
||||||
TaskImpl task = null;
|
TaskImpl task = null;
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
|
@ -1877,7 +1901,8 @@ public class TaskServiceImpl implements TaskService {
|
||||||
|
|
||||||
List<TaskSummary> augmentTaskSummariesByContainedSummaries(List<TaskSummaryImpl> taskSummaries) {
|
List<TaskSummary> augmentTaskSummariesByContainedSummaries(List<TaskSummaryImpl> taskSummaries) {
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
LOGGER.debug("entry to augmentTaskSummariesByContainedSummaries(taskSummaries= {})", LoggerUtils.listToString(taskSummaries));
|
LOGGER.debug("entry to augmentTaskSummariesByContainedSummaries(taskSummaries= {})",
|
||||||
|
LoggerUtils.listToString(taskSummaries));
|
||||||
}
|
}
|
||||||
|
|
||||||
List<TaskSummary> result = new ArrayList<>();
|
List<TaskSummary> result = new ArrayList<>();
|
||||||
|
@ -1909,6 +1934,7 @@ public class TaskServiceImpl implements TaskService {
|
||||||
* @author bbr
|
* @author bbr
|
||||||
*/
|
*/
|
||||||
static class PrioDurationHolder {
|
static class PrioDurationHolder {
|
||||||
|
|
||||||
private Duration duration;
|
private Duration duration;
|
||||||
|
|
||||||
private int prio;
|
private int prio;
|
||||||
|
@ -1923,14 +1949,14 @@ public class TaskServiceImpl implements TaskService {
|
||||||
return duration;
|
return duration;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getPrio() {
|
|
||||||
return prio;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDuration(Duration duration) {
|
public void setDuration(Duration duration) {
|
||||||
this.duration = duration;
|
this.duration = duration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getPrio() {
|
||||||
|
return prio;
|
||||||
|
}
|
||||||
|
|
||||||
public void setPrio(int prio) {
|
public void setPrio(int prio) {
|
||||||
this.prio = prio;
|
this.prio = prio;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,13 +19,13 @@ import pro.taskana.report.TaskStatusReport;
|
||||||
public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(TaskStatusReportBuilderImpl.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(TaskStatusReportBuilderImpl.class);
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngine;
|
||||||
private TaskMonitorMapper taskMonitorMapper;
|
private TaskMonitorMapper taskMonitorMapper;
|
||||||
private List<String> domains;
|
private List<String> domains;
|
||||||
private List<TaskState> states;
|
private List<TaskState> states;
|
||||||
|
|
||||||
TaskStatusReportBuilderImpl(TaskanaEngine taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
TaskStatusReportBuilderImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
||||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
this.taskanaEngine = taskanaEngine;
|
||||||
this.taskMonitorMapper = taskMonitorMapper;
|
this.taskMonitorMapper = taskMonitorMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
||||||
@Override
|
@Override
|
||||||
public TaskStatusReport buildReport() throws NotAuthorizedException {
|
public TaskStatusReport buildReport() throws NotAuthorizedException {
|
||||||
LOGGER.debug("entry to buildReport(), this = {}", this);
|
LOGGER.debug("entry to buildReport(), this = {}", this);
|
||||||
this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
this.taskanaEngine.openConnection();
|
this.taskanaEngine.openConnection();
|
||||||
List<TaskQueryItem> tasks = this.taskMonitorMapper.getTasksCountByState(this.domains, this.states);
|
List<TaskQueryItem> tasks = this.taskMonitorMapper.getTasksCountByState(this.domains, this.states);
|
||||||
|
|
|
@ -63,12 +63,14 @@ public class TaskanaEngineImpl implements TaskanaEngine {
|
||||||
protected ConnectionManagementMode mode = ConnectionManagementMode.PARTICIPATE;
|
protected ConnectionManagementMode mode = ConnectionManagementMode.PARTICIPATE;
|
||||||
protected java.sql.Connection connection = null;
|
protected java.sql.Connection connection = null;
|
||||||
protected HistoryEventProducer historyEventProducer;
|
protected HistoryEventProducer historyEventProducer;
|
||||||
|
private Internal internal;
|
||||||
|
|
||||||
protected TaskanaEngineImpl(TaskanaEngineConfiguration taskanaEngineConfiguration) {
|
protected TaskanaEngineImpl(TaskanaEngineConfiguration taskanaEngineConfiguration) {
|
||||||
this.taskanaEngineConfiguration = taskanaEngineConfiguration;
|
this.taskanaEngineConfiguration = taskanaEngineConfiguration;
|
||||||
createTransactionFactory(taskanaEngineConfiguration.getUseManagedTransactions());
|
createTransactionFactory(taskanaEngineConfiguration.getUseManagedTransactions());
|
||||||
this.sessionManager = createSqlSessionManager();
|
this.sessionManager = createSqlSessionManager();
|
||||||
this.historyEventProducer = HistoryEventProducer.getInstance(taskanaEngineConfiguration);
|
this.historyEventProducer = HistoryEventProducer.getInstance(taskanaEngineConfiguration);
|
||||||
|
this.internal = new Internal();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TaskanaEngine createTaskanaEngine(TaskanaEngineConfiguration taskanaEngineConfiguration) {
|
public static TaskanaEngine createTaskanaEngine(TaskanaEngineConfiguration taskanaEngineConfiguration) {
|
||||||
|
@ -130,21 +132,21 @@ public class TaskanaEngineImpl implements TaskanaEngine {
|
||||||
@Override
|
@Override
|
||||||
public TaskService getTaskService() {
|
public TaskService getTaskService() {
|
||||||
SqlSession session = this.sessionManager;
|
SqlSession session = this.sessionManager;
|
||||||
return new TaskServiceImpl(this, session.getMapper(TaskMapper.class),
|
return new TaskServiceImpl(internal, session.getMapper(TaskMapper.class),
|
||||||
session.getMapper(AttachmentMapper.class));
|
session.getMapper(AttachmentMapper.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TaskMonitorService getTaskMonitorService() {
|
public TaskMonitorService getTaskMonitorService() {
|
||||||
SqlSession session = this.sessionManager;
|
SqlSession session = this.sessionManager;
|
||||||
return new TaskMonitorServiceImpl(this,
|
return new TaskMonitorServiceImpl(internal,
|
||||||
session.getMapper(TaskMonitorMapper.class));
|
session.getMapper(TaskMonitorMapper.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketService getWorkbasketService() {
|
public WorkbasketService getWorkbasketService() {
|
||||||
SqlSession session = this.sessionManager;
|
SqlSession session = this.sessionManager;
|
||||||
return new WorkbasketServiceImpl(this,
|
return new WorkbasketServiceImpl(internal,
|
||||||
session.getMapper(WorkbasketMapper.class),
|
session.getMapper(WorkbasketMapper.class),
|
||||||
session.getMapper(DistributionTargetMapper.class),
|
session.getMapper(DistributionTargetMapper.class),
|
||||||
session.getMapper(WorkbasketAccessMapper.class));
|
session.getMapper(WorkbasketAccessMapper.class));
|
||||||
|
@ -153,14 +155,14 @@ public class TaskanaEngineImpl implements TaskanaEngine {
|
||||||
@Override
|
@Override
|
||||||
public ClassificationService getClassificationService() {
|
public ClassificationService getClassificationService() {
|
||||||
SqlSession session = this.sessionManager;
|
SqlSession session = this.sessionManager;
|
||||||
return new ClassificationServiceImpl(this, session.getMapper(ClassificationMapper.class),
|
return new ClassificationServiceImpl(internal, session.getMapper(ClassificationMapper.class),
|
||||||
session.getMapper(TaskMapper.class));
|
session.getMapper(TaskMapper.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JobService getJobService() {
|
public JobService getJobService() {
|
||||||
SqlSession session = this.sessionManager;
|
SqlSession session = this.sessionManager;
|
||||||
return new JobServiceImpl(this, session.getMapper(JobMapper.class));
|
return new JobServiceImpl(internal, session.getMapper(JobMapper.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -168,8 +170,9 @@ public class TaskanaEngineImpl implements TaskanaEngine {
|
||||||
return this.taskanaEngineConfiguration;
|
return this.taskanaEngineConfiguration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public HistoryEventProducer getHistoryEventProducer() {
|
public HistoryEventProducer getHistoryEventProducer() {
|
||||||
return this.historyEventProducer;
|
return historyEventProducer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -233,65 +236,6 @@ public class TaskanaEngineImpl implements TaskanaEngine {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Open the connection to the database. to be called at the begin of each Api call that accesses the database
|
|
||||||
*/
|
|
||||||
void openConnection() {
|
|
||||||
initSqlSession();
|
|
||||||
try {
|
|
||||||
this.sessionManager.getConnection().setSchema(taskanaEngineConfiguration.getSchemaName());
|
|
||||||
} catch (SQLException e) {
|
|
||||||
throw new SystemException(
|
|
||||||
"Method openConnection() could not open a connection to the database. No schema has been created.",
|
|
||||||
e.getCause());
|
|
||||||
}
|
|
||||||
if (mode != ConnectionManagementMode.EXPLICIT) {
|
|
||||||
pushSessionToStack(this.sessionManager);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initializes the SqlSessionManager.
|
|
||||||
*/
|
|
||||||
void initSqlSession() {
|
|
||||||
if (mode == ConnectionManagementMode.EXPLICIT && this.connection == null) {
|
|
||||||
throw new ConnectionNotSetException();
|
|
||||||
} else if (mode != ConnectionManagementMode.EXPLICIT && !this.sessionManager.isManagedSessionStarted()) {
|
|
||||||
this.sessionManager.startManagedSession();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the database connection into the pool. In the case of nested calls, simply pops the latest session from
|
|
||||||
* the session stack. Closes the connection if the session stack is empty. In mode AUTOCOMMIT commits before the
|
|
||||||
* connection is closed. To be called at the end of each Api call that accesses the database
|
|
||||||
*/
|
|
||||||
void returnConnection() {
|
|
||||||
if (this.mode != ConnectionManagementMode.EXPLICIT) {
|
|
||||||
popSessionFromStack();
|
|
||||||
if (getSessionStack().isEmpty()
|
|
||||||
&& this.sessionManager != null && this.sessionManager.isManagedSessionStarted()) {
|
|
||||||
if (this.mode == ConnectionManagementMode.AUTOCOMMIT) {
|
|
||||||
try {
|
|
||||||
this.sessionManager.commit();
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new AutocommitFailedException(e.getCause());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.sessionManager.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* retrieve the SqlSession used by taskana.
|
|
||||||
*
|
|
||||||
* @return the myBatis SqlSession object used by taskana
|
|
||||||
*/
|
|
||||||
SqlSession getSqlSession() {
|
|
||||||
return this.sessionManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether current user is member of any of the specified roles.
|
* Checks whether current user is member of any of the specified roles.
|
||||||
*
|
*
|
||||||
|
@ -402,14 +346,66 @@ public class TaskanaEngineImpl implements TaskanaEngine {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the given domain does exist in the configuration.
|
* Internal Engine for internal operations.
|
||||||
*
|
|
||||||
* @param domain
|
|
||||||
* the domain specified in the configuration
|
|
||||||
* @return <code>true</code> if the domain exists
|
|
||||||
*/
|
*/
|
||||||
public boolean domainExists(String domain) {
|
private class Internal implements TaskanaEngine.Internal {
|
||||||
return getConfiguration().getDomains().contains(domain);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void openConnection() {
|
||||||
|
initSqlSession();
|
||||||
|
try {
|
||||||
|
sessionManager.getConnection().setSchema(taskanaEngineConfiguration.getSchemaName());
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new SystemException(
|
||||||
|
"Method openConnection() could not open a connection to the database. No schema has been created.",
|
||||||
|
e.getCause());
|
||||||
|
}
|
||||||
|
if (mode != ConnectionManagementMode.EXPLICIT) {
|
||||||
|
pushSessionToStack(sessionManager);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initSqlSession() {
|
||||||
|
if (mode == ConnectionManagementMode.EXPLICIT && connection == null) {
|
||||||
|
throw new ConnectionNotSetException();
|
||||||
|
} else if (mode != ConnectionManagementMode.EXPLICIT && !sessionManager.isManagedSessionStarted()) {
|
||||||
|
sessionManager.startManagedSession();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void returnConnection() {
|
||||||
|
if (mode != ConnectionManagementMode.EXPLICIT) {
|
||||||
|
popSessionFromStack();
|
||||||
|
if (getSessionStack().isEmpty()
|
||||||
|
&& sessionManager != null && sessionManager.isManagedSessionStarted()) {
|
||||||
|
if (mode == ConnectionManagementMode.AUTOCOMMIT) {
|
||||||
|
try {
|
||||||
|
sessionManager.commit();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new AutocommitFailedException(e.getCause());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sessionManager.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean domainExists(String domain) {
|
||||||
|
return getConfiguration().getDomains().contains(domain);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SqlSession getSqlSession() {
|
||||||
|
return sessionManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TaskanaEngine getEngine() {
|
||||||
|
return TaskanaEngineImpl.this;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ abstract class TimeIntervalReportBuilderImpl<B extends TimeIntervalReportBuilder
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(TimeIntervalReportBuilder.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(TimeIntervalReportBuilder.class);
|
||||||
|
|
||||||
protected TaskanaEngineImpl taskanaEngine;
|
protected TaskanaEngine.Internal taskanaEngine;
|
||||||
protected TaskMonitorMapper taskMonitorMapper;
|
protected TaskMonitorMapper taskMonitorMapper;
|
||||||
protected List<H> columnHeaders;
|
protected List<H> columnHeaders;
|
||||||
protected boolean inWorkingDays;
|
protected boolean inWorkingDays;
|
||||||
|
@ -45,8 +45,8 @@ abstract class TimeIntervalReportBuilderImpl<B extends TimeIntervalReportBuilder
|
||||||
protected List<String> excludedClassificationIds;
|
protected List<String> excludedClassificationIds;
|
||||||
protected Map<CustomField, String> customAttributeFilter;
|
protected Map<CustomField, String> customAttributeFilter;
|
||||||
|
|
||||||
TimeIntervalReportBuilderImpl(TaskanaEngine taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
TimeIntervalReportBuilderImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
||||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
this.taskanaEngine = taskanaEngine;
|
||||||
this.taskMonitorMapper = taskMonitorMapper;
|
this.taskMonitorMapper = taskMonitorMapper;
|
||||||
this.columnHeaders = Collections.emptyList();
|
this.columnHeaders = Collections.emptyList();
|
||||||
configureDaysToWorkingDaysConverter();
|
configureDaysToWorkingDaysConverter();
|
||||||
|
@ -113,7 +113,7 @@ abstract class TimeIntervalReportBuilderImpl<B extends TimeIntervalReportBuilder
|
||||||
throws NotAuthorizedException {
|
throws NotAuthorizedException {
|
||||||
LOGGER.debug("entry to listCustomAttributeValuesForCustomAttributeName(customField = {}), this = {}",
|
LOGGER.debug("entry to listCustomAttributeValuesForCustomAttributeName(customField = {}), this = {}",
|
||||||
customField, this);
|
customField, this);
|
||||||
this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR);
|
this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR);
|
||||||
try {
|
try {
|
||||||
this.taskanaEngine.openConnection();
|
this.taskanaEngine.openConnection();
|
||||||
return taskMonitorMapper.getCustomAttributeValuesForReport(this.workbasketIds,
|
return taskMonitorMapper.getCustomAttributeValuesForReport(this.workbasketIds,
|
||||||
|
@ -133,7 +133,7 @@ abstract class TimeIntervalReportBuilderImpl<B extends TimeIntervalReportBuilder
|
||||||
LoggerUtils.listToString(selectedItems), this);
|
LoggerUtils.listToString(selectedItems), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR);
|
this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR);
|
||||||
try {
|
try {
|
||||||
this.taskanaEngine.openConnection();
|
this.taskanaEngine.openConnection();
|
||||||
if (this.columnHeaders == null) {
|
if (this.columnHeaders == null) {
|
||||||
|
@ -161,9 +161,10 @@ abstract class TimeIntervalReportBuilderImpl<B extends TimeIntervalReportBuilder
|
||||||
protected abstract String determineGroupedBy();
|
protected abstract String determineGroupedBy();
|
||||||
|
|
||||||
private void configureDaysToWorkingDaysConverter() {
|
private void configureDaysToWorkingDaysConverter() {
|
||||||
DaysToWorkingDaysConverter.setCustomHolidays(this.taskanaEngine.getConfiguration().getCustomHolidays());
|
DaysToWorkingDaysConverter.setCustomHolidays(
|
||||||
|
this.taskanaEngine.getEngine().getConfiguration().getCustomHolidays());
|
||||||
DaysToWorkingDaysConverter.setGermanPublicHolidaysEnabled(
|
DaysToWorkingDaysConverter.setGermanPublicHolidaysEnabled(
|
||||||
this.taskanaEngine.getConfiguration().isGermanPublicHolidaysEnabled());
|
this.taskanaEngine.getEngine().getConfiguration().isGermanPublicHolidaysEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<SelectedItem> convertWorkingDaysToDays(List<SelectedItem> selectedItems,
|
private List<SelectedItem> convertWorkingDaysToDays(List<SelectedItem> selectedItems,
|
||||||
|
|
|
@ -31,7 +31,7 @@ public class TimestampReportBuilderImpl extends
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(TimestampReport.Builder.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(TimestampReport.Builder.class);
|
||||||
private List<Timestamp> status = Arrays.asList(Timestamp.CREATED, Timestamp.COMPLETED);
|
private List<Timestamp> status = Arrays.asList(Timestamp.CREATED, Timestamp.COMPLETED);
|
||||||
|
|
||||||
TimestampReportBuilderImpl(TaskanaEngine taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
TimestampReportBuilderImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
||||||
super(taskanaEngine, taskMonitorMapper);
|
super(taskanaEngine, taskMonitorMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ public class TimestampReportBuilderImpl extends
|
||||||
@Override
|
@Override
|
||||||
public TimestampReport buildReport() throws NotAuthorizedException, InvalidArgumentException {
|
public TimestampReport buildReport() throws NotAuthorizedException, InvalidArgumentException {
|
||||||
LOGGER.debug("entry to buildDetailedReport(), this = {}", this);
|
LOGGER.debug("entry to buildDetailedReport(), this = {}", this);
|
||||||
this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
this.taskanaEngine.openConnection();
|
this.taskanaEngine.openConnection();
|
||||||
TimestampReport report = new TimestampReport(this.columnHeaders);
|
TimestampReport report = new TimestampReport(this.columnHeaders);
|
||||||
|
|
|
@ -33,12 +33,12 @@ public class WorkbasketAccessItemQueryImpl implements WorkbasketAccessItemQuery
|
||||||
private String[] workbasketKeyLike;
|
private String[] workbasketKeyLike;
|
||||||
private String[] idIn;
|
private String[] idIn;
|
||||||
|
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngine;
|
||||||
private List<String> orderBy;
|
private List<String> orderBy;
|
||||||
private List<String> orderColumns;
|
private List<String> orderColumns;
|
||||||
|
|
||||||
WorkbasketAccessItemQueryImpl(TaskanaEngine taskanaEngine) {
|
WorkbasketAccessItemQueryImpl(TaskanaEngine.Internal taskanaEngine) {
|
||||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
this.taskanaEngine = taskanaEngine;
|
||||||
orderBy = new ArrayList<>();
|
orderBy = new ArrayList<>();
|
||||||
orderColumns = new ArrayList<>();
|
orderColumns = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
@ -197,7 +197,8 @@ public class WorkbasketAccessItemQueryImpl implements WorkbasketAccessItemQuery
|
||||||
}
|
}
|
||||||
|
|
||||||
private WorkbasketAccessItemQuery addOrderCriteria(String colName, SortDirection sortDirection) {
|
private WorkbasketAccessItemQuery addOrderCriteria(String colName, SortDirection sortDirection) {
|
||||||
String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING.toString() : sortDirection.toString());
|
String orderByDirection =
|
||||||
|
" " + (sortDirection == null ? SortDirection.ASCENDING.toString() : sortDirection.toString());
|
||||||
orderBy.add(colName + orderByDirection);
|
orderBy.add(colName + orderByDirection);
|
||||||
orderColumns.add(colName);
|
orderColumns.add(colName);
|
||||||
return this;
|
return this;
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class WorkbasketQueryImpl implements WorkbasketQuery {
|
||||||
private String[] orgLevel4Like;
|
private String[] orgLevel4Like;
|
||||||
private boolean markedForDeletion;
|
private boolean markedForDeletion;
|
||||||
|
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngine;
|
||||||
private List<String> orderBy;
|
private List<String> orderBy;
|
||||||
private List<String> orderColumns;
|
private List<String> orderColumns;
|
||||||
private boolean joinWithAccessList;
|
private boolean joinWithAccessList;
|
||||||
|
@ -78,8 +78,8 @@ public class WorkbasketQueryImpl implements WorkbasketQuery {
|
||||||
private boolean usedToAugmentTasks;
|
private boolean usedToAugmentTasks;
|
||||||
private boolean callerRolesAndAccessIdsAlreadyHandled;
|
private boolean callerRolesAndAccessIdsAlreadyHandled;
|
||||||
|
|
||||||
WorkbasketQueryImpl(TaskanaEngine taskanaEngine) {
|
WorkbasketQueryImpl(TaskanaEngine.Internal taskanaEngine) {
|
||||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
this.taskanaEngine = taskanaEngine;
|
||||||
this.orderBy = new ArrayList<>();
|
this.orderBy = new ArrayList<>();
|
||||||
this.orderColumns = new ArrayList<>();
|
this.orderColumns = new ArrayList<>();
|
||||||
this.callerRolesAndAccessIdsAlreadyHandled = false;
|
this.callerRolesAndAccessIdsAlreadyHandled = false;
|
||||||
|
@ -354,7 +354,7 @@ public class WorkbasketQueryImpl implements WorkbasketQuery {
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketQuery accessIdsHavePermission(WorkbasketPermission permission, String... accessIds)
|
public WorkbasketQuery accessIdsHavePermission(WorkbasketPermission permission, String... accessIds)
|
||||||
throws InvalidArgumentException, NotAuthorizedException {
|
throws InvalidArgumentException, NotAuthorizedException {
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN);
|
||||||
// Checking pre-conditions
|
// Checking pre-conditions
|
||||||
if (permission == null) {
|
if (permission == null) {
|
||||||
throw new InvalidArgumentException("Permission can´t be null.");
|
throw new InvalidArgumentException("Permission can´t be null.");
|
||||||
|
@ -670,10 +670,10 @@ public class WorkbasketQueryImpl implements WorkbasketQuery {
|
||||||
// (f,t) -> cannot happen, cannot be matched to meaningful query
|
// (f,t) -> cannot happen, cannot be matched to meaningful query
|
||||||
joinWithAccessList = true;
|
joinWithAccessList = true;
|
||||||
checkReadPermission = true;
|
checkReadPermission = true;
|
||||||
if (taskanaEngine.isUserInRole(TaskanaRole.ADMIN) && accessId == null) {
|
if (taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN) && accessId == null) {
|
||||||
checkReadPermission = false;
|
checkReadPermission = false;
|
||||||
joinWithAccessList = false;
|
joinWithAccessList = false;
|
||||||
} else if (taskanaEngine.isUserInRole(TaskanaRole.BUSINESS_ADMIN) && !usedToAugmentTasks) {
|
} else if (taskanaEngine.getEngine().isUserInRole(TaskanaRole.BUSINESS_ADMIN) && !usedToAugmentTasks) {
|
||||||
checkReadPermission = false;
|
checkReadPermission = false;
|
||||||
if (accessId == null && permission == null) {
|
if (accessId == null && permission == null) {
|
||||||
joinWithAccessList = false;
|
joinWithAccessList = false;
|
||||||
|
|
|
@ -26,7 +26,7 @@ public class WorkbasketReportBuilderImpl
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketReportBuilderImpl.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketReportBuilderImpl.class);
|
||||||
private List<CombinedClassificationFilter> combinedClassificationFilter;
|
private List<CombinedClassificationFilter> combinedClassificationFilter;
|
||||||
|
|
||||||
WorkbasketReportBuilderImpl(TaskanaEngine taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
WorkbasketReportBuilderImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper) {
|
||||||
super(taskanaEngine, taskMonitorMapper);
|
super(taskanaEngine, taskMonitorMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ public class WorkbasketReportBuilderImpl
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketReport buildReport() throws InvalidArgumentException, NotAuthorizedException {
|
public WorkbasketReport buildReport() throws InvalidArgumentException, NotAuthorizedException {
|
||||||
LOGGER.debug("entry to buildReport(), this = {}", this);
|
LOGGER.debug("entry to buildReport(), this = {}", this);
|
||||||
this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
this.taskanaEngine.openConnection();
|
this.taskanaEngine.openConnection();
|
||||||
WorkbasketReport report = new WorkbasketReport(this.columnHeaders);
|
WorkbasketReport report = new WorkbasketReport(this.columnHeaders);
|
||||||
|
@ -62,7 +62,7 @@ public class WorkbasketReportBuilderImpl
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketReport buildPlannedDateBasedReport() throws NotAuthorizedException, InvalidArgumentException {
|
public WorkbasketReport buildPlannedDateBasedReport() throws NotAuthorizedException, InvalidArgumentException {
|
||||||
LOGGER.debug("entry to buildPlannedDateReport(), this = {}", this);
|
LOGGER.debug("entry to buildPlannedDateReport(), this = {}", this);
|
||||||
this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
this.taskanaEngine.openConnection();
|
this.taskanaEngine.openConnection();
|
||||||
WorkbasketReport report = new WorkbasketReport(this.columnHeaders);
|
WorkbasketReport report = new WorkbasketReport(this.columnHeaders);
|
||||||
|
|
|
@ -43,14 +43,14 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketServiceImpl.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketServiceImpl.class);
|
||||||
private static final String ID_PREFIX_WORKBASKET = "WBI";
|
private static final String ID_PREFIX_WORKBASKET = "WBI";
|
||||||
private static final String ID_PREFIX_WORKBASKET_AUTHORIZATION = "WAI";
|
private static final String ID_PREFIX_WORKBASKET_AUTHORIZATION = "WAI";
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngine;
|
||||||
private WorkbasketMapper workbasketMapper;
|
private WorkbasketMapper workbasketMapper;
|
||||||
private DistributionTargetMapper distributionTargetMapper;
|
private DistributionTargetMapper distributionTargetMapper;
|
||||||
private WorkbasketAccessMapper workbasketAccessMapper;
|
private WorkbasketAccessMapper workbasketAccessMapper;
|
||||||
|
|
||||||
WorkbasketServiceImpl(TaskanaEngine taskanaEngine, WorkbasketMapper workbasketMapper,
|
WorkbasketServiceImpl(TaskanaEngine.Internal taskanaEngine, WorkbasketMapper workbasketMapper,
|
||||||
DistributionTargetMapper distributionTargetMapper, WorkbasketAccessMapper workbasketAccessMapper) {
|
DistributionTargetMapper distributionTargetMapper, WorkbasketAccessMapper workbasketAccessMapper) {
|
||||||
this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine;
|
this.taskanaEngine = taskanaEngine;
|
||||||
this.workbasketMapper = workbasketMapper;
|
this.workbasketMapper = workbasketMapper;
|
||||||
this.distributionTargetMapper = distributionTargetMapper;
|
this.distributionTargetMapper = distributionTargetMapper;
|
||||||
this.workbasketAccessMapper = workbasketAccessMapper;
|
this.workbasketAccessMapper = workbasketAccessMapper;
|
||||||
|
@ -68,7 +68,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
throw new WorkbasketNotFoundException(workbasketId,
|
throw new WorkbasketNotFoundException(workbasketId,
|
||||||
"Workbasket with id " + workbasketId + " was not found.");
|
"Workbasket with id " + workbasketId + " was not found.");
|
||||||
}
|
}
|
||||||
if (!taskanaEngine.isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) {
|
if (!taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) {
|
||||||
this.checkAuthorization(workbasketId, WorkbasketPermission.READ);
|
this.checkAuthorization(workbasketId, WorkbasketPermission.READ);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
@ -90,7 +90,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
throw new WorkbasketNotFoundException(workbasketKey, domain,
|
throw new WorkbasketNotFoundException(workbasketKey, domain,
|
||||||
"Workbasket with key " + workbasketKey + " and domain " + domain + " was not found.");
|
"Workbasket with key " + workbasketKey + " and domain " + domain + " was not found.");
|
||||||
}
|
}
|
||||||
if (!taskanaEngine.isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) {
|
if (!taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) {
|
||||||
this.checkAuthorization(workbasketKey, domain, WorkbasketPermission.READ);
|
this.checkAuthorization(workbasketKey, domain, WorkbasketPermission.READ);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
@ -104,8 +104,8 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
public Workbasket createWorkbasket(Workbasket newWorkbasket)
|
public Workbasket createWorkbasket(Workbasket newWorkbasket)
|
||||||
throws InvalidWorkbasketException, NotAuthorizedException, WorkbasketAlreadyExistException,
|
throws InvalidWorkbasketException, NotAuthorizedException, WorkbasketAlreadyExistException,
|
||||||
DomainNotFoundException {
|
DomainNotFoundException {
|
||||||
LOGGER.debug("entry to createWorkbasket(workbasket)", newWorkbasket);
|
LOGGER.debug("entry to createtWorkbasket(workbasket)", newWorkbasket);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
|
|
||||||
WorkbasketImpl workbasket = (WorkbasketImpl) newWorkbasket;
|
WorkbasketImpl workbasket = (WorkbasketImpl) newWorkbasket;
|
||||||
try {
|
try {
|
||||||
|
@ -137,7 +137,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
public Workbasket updateWorkbasket(Workbasket workbasketToUpdate)
|
public Workbasket updateWorkbasket(Workbasket workbasketToUpdate)
|
||||||
throws NotAuthorizedException {
|
throws NotAuthorizedException {
|
||||||
LOGGER.debug("entry to updateWorkbasket(workbasket)", workbasketToUpdate);
|
LOGGER.debug("entry to updateWorkbasket(workbasket)", workbasketToUpdate);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
|
|
||||||
WorkbasketImpl workbasket = (WorkbasketImpl) workbasketToUpdate;
|
WorkbasketImpl workbasket = (WorkbasketImpl) workbasketToUpdate;
|
||||||
try {
|
try {
|
||||||
|
@ -168,7 +168,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
public WorkbasketAccessItem createWorkbasketAccessItem(WorkbasketAccessItem workbasketAccessItem)
|
public WorkbasketAccessItem createWorkbasketAccessItem(WorkbasketAccessItem workbasketAccessItem)
|
||||||
throws InvalidArgumentException, NotAuthorizedException, WorkbasketNotFoundException {
|
throws InvalidArgumentException, NotAuthorizedException, WorkbasketNotFoundException {
|
||||||
LOGGER.debug("entry to createWorkbasketAccessItemn(workbasketAccessItem = {})", workbasketAccessItem);
|
LOGGER.debug("entry to createWorkbasketAccessItemn(workbasketAccessItem = {})", workbasketAccessItem);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
WorkbasketAccessItemImpl accessItem = (WorkbasketAccessItemImpl) workbasketAccessItem;
|
WorkbasketAccessItemImpl accessItem = (WorkbasketAccessItemImpl) workbasketAccessItem;
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
|
@ -199,7 +199,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
public void setWorkbasketAccessItems(String workbasketId, List<WorkbasketAccessItem> wbAccessItems)
|
public void setWorkbasketAccessItems(String workbasketId, List<WorkbasketAccessItem> wbAccessItems)
|
||||||
throws InvalidArgumentException, NotAuthorizedException {
|
throws InvalidArgumentException, NotAuthorizedException {
|
||||||
LOGGER.debug("entry to setWorkbasketAccessItems(workbasketAccessItems = {})", wbAccessItems.toString());
|
LOGGER.debug("entry to setWorkbasketAccessItems(workbasketAccessItems = {})", wbAccessItems.toString());
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
List<WorkbasketAccessItemImpl> newItems = new ArrayList<>();
|
List<WorkbasketAccessItemImpl> newItems = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
|
@ -240,7 +240,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
@Override
|
@Override
|
||||||
public void deleteWorkbasketAccessItem(String accessItemId) throws NotAuthorizedException {
|
public void deleteWorkbasketAccessItem(String accessItemId) throws NotAuthorizedException {
|
||||||
LOGGER.debug("entry to deleteWorkbasketAccessItem(id = {})", accessItemId);
|
LOGGER.debug("entry to deleteWorkbasketAccessItem(id = {})", accessItemId);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
workbasketAccessMapper.delete(accessItemId);
|
workbasketAccessMapper.delete(accessItemId);
|
||||||
|
@ -254,7 +254,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
@Override
|
@Override
|
||||||
public void deleteWorkbasketAccessItemsForAccessId(String accessId) throws NotAuthorizedException {
|
public void deleteWorkbasketAccessItemsForAccessId(String accessId) throws NotAuthorizedException {
|
||||||
LOGGER.debug("entry to deleteWorkbasketAccessItemsForAccessId(accessId = {})", accessId);
|
LOGGER.debug("entry to deleteWorkbasketAccessItemsForAccessId(accessId = {})", accessId);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
workbasketAccessMapper.deleteAccessItemsForAccessId(accessId);
|
workbasketAccessMapper.deleteAccessItemsForAccessId(accessId);
|
||||||
|
@ -350,12 +350,12 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
private boolean skipAuthorizationCheck() {
|
private boolean skipAuthorizationCheck() {
|
||||||
|
|
||||||
// Skip permission check is security is not enabled
|
// Skip permission check is security is not enabled
|
||||||
if (!taskanaEngine.getConfiguration().isSecurityEnabled()) {
|
if (!taskanaEngine.getEngine().getConfiguration().isSecurityEnabled()) {
|
||||||
LOGGER.debug("Skipping permissions check since security is disabled.");
|
LOGGER.debug("Skipping permissions check since security is disabled.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taskanaEngine.isUserInRole(TaskanaRole.ADMIN)) {
|
if (taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN)) {
|
||||||
LOGGER.debug("Skipping permissions check since user is in role ADMIN.");
|
LOGGER.debug("Skipping permissions check since user is in role ADMIN.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -367,7 +367,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
public WorkbasketAccessItem updateWorkbasketAccessItem(WorkbasketAccessItem workbasketAccessItem)
|
public WorkbasketAccessItem updateWorkbasketAccessItem(WorkbasketAccessItem workbasketAccessItem)
|
||||||
throws InvalidArgumentException, NotAuthorizedException {
|
throws InvalidArgumentException, NotAuthorizedException {
|
||||||
LOGGER.debug("entry to updateWorkbasketAccessItem(workbasketAccessItem = {}", workbasketAccessItem);
|
LOGGER.debug("entry to updateWorkbasketAccessItem(workbasketAccessItem = {}", workbasketAccessItem);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
WorkbasketAccessItemImpl accessItem = (WorkbasketAccessItemImpl) workbasketAccessItem;
|
WorkbasketAccessItemImpl accessItem = (WorkbasketAccessItemImpl) workbasketAccessItem;
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
|
@ -394,7 +394,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
@Override
|
@Override
|
||||||
public List<WorkbasketAccessItem> getWorkbasketAccessItems(String workbasketId) throws NotAuthorizedException {
|
public List<WorkbasketAccessItem> getWorkbasketAccessItems(String workbasketId) throws NotAuthorizedException {
|
||||||
LOGGER.debug("entry to getWorkbasketAccessItems(workbasketId = {})", workbasketId);
|
LOGGER.debug("entry to getWorkbasketAccessItems(workbasketId = {})", workbasketId);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
List<WorkbasketAccessItem> result = new ArrayList<>();
|
List<WorkbasketAccessItem> result = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
|
@ -521,7 +521,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
// check that source workbasket exists
|
// check that source workbasket exists
|
||||||
getWorkbasket(workbasketId);
|
getWorkbasket(workbasketId);
|
||||||
if (!taskanaEngine.isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) {
|
if (!taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) {
|
||||||
checkAuthorization(workbasketId, WorkbasketPermission.READ);
|
checkAuthorization(workbasketId, WorkbasketPermission.READ);
|
||||||
}
|
}
|
||||||
List<WorkbasketSummaryImpl> distributionTargets = workbasketMapper
|
List<WorkbasketSummaryImpl> distributionTargets = workbasketMapper
|
||||||
|
@ -547,7 +547,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
// check that source workbasket exists
|
// check that source workbasket exists
|
||||||
Workbasket workbasket = getWorkbasket(workbasketKey, domain);
|
Workbasket workbasket = getWorkbasket(workbasketKey, domain);
|
||||||
if (!taskanaEngine.isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) {
|
if (!taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) {
|
||||||
checkAuthorization(workbasket.getId(), WorkbasketPermission.READ);
|
checkAuthorization(workbasket.getId(), WorkbasketPermission.READ);
|
||||||
}
|
}
|
||||||
List<WorkbasketSummaryImpl> distributionTargets = workbasketMapper
|
List<WorkbasketSummaryImpl> distributionTargets = workbasketMapper
|
||||||
|
@ -574,7 +574,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
// check that source workbasket exists
|
// check that source workbasket exists
|
||||||
getWorkbasket(workbasketId);
|
getWorkbasket(workbasketId);
|
||||||
if (!taskanaEngine.isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) {
|
if (!taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) {
|
||||||
checkAuthorization(workbasketId, WorkbasketPermission.READ);
|
checkAuthorization(workbasketId, WorkbasketPermission.READ);
|
||||||
}
|
}
|
||||||
List<WorkbasketSummaryImpl> distributionSources = workbasketMapper
|
List<WorkbasketSummaryImpl> distributionSources = workbasketMapper
|
||||||
|
@ -600,7 +600,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
// check that source workbasket exists
|
// check that source workbasket exists
|
||||||
Workbasket workbasket = getWorkbasket(workbasketKey, domain);
|
Workbasket workbasket = getWorkbasket(workbasketKey, domain);
|
||||||
if (!taskanaEngine.isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) {
|
if (!taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) {
|
||||||
checkAuthorization(workbasket.getId(), WorkbasketPermission.READ);
|
checkAuthorization(workbasket.getId(), WorkbasketPermission.READ);
|
||||||
}
|
}
|
||||||
List<WorkbasketSummaryImpl> distributionSources = workbasketMapper
|
List<WorkbasketSummaryImpl> distributionSources = workbasketMapper
|
||||||
|
@ -625,7 +625,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
sourceWorkbasketId,
|
sourceWorkbasketId,
|
||||||
LoggerUtils.listToString(targetWorkbasketIds));
|
LoggerUtils.listToString(targetWorkbasketIds));
|
||||||
}
|
}
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
// check existence of source workbasket
|
// check existence of source workbasket
|
||||||
|
@ -660,7 +660,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
throws NotAuthorizedException, WorkbasketNotFoundException {
|
throws NotAuthorizedException, WorkbasketNotFoundException {
|
||||||
LOGGER.debug("entry to addDistributionTarget(sourceWorkbasketId = {}, targetWorkbasketId = {})",
|
LOGGER.debug("entry to addDistributionTarget(sourceWorkbasketId = {}, targetWorkbasketId = {})",
|
||||||
sourceWorkbasketId, targetWorkbasketId);
|
sourceWorkbasketId, targetWorkbasketId);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
// check existence of source workbasket
|
// check existence of source workbasket
|
||||||
|
@ -693,7 +693,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
throws NotAuthorizedException {
|
throws NotAuthorizedException {
|
||||||
LOGGER.debug("entry to removeDistributionTarget(sourceWorkbasketId = {}, targetWorkbasketId = {})",
|
LOGGER.debug("entry to removeDistributionTarget(sourceWorkbasketId = {}, targetWorkbasketId = {})",
|
||||||
sourceWorkbasketId, targetWorkbasketId);
|
sourceWorkbasketId, targetWorkbasketId);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
// don't check existence of source / target workbasket to enable cleanup even if the db is corrupted
|
// don't check existence of source / target workbasket to enable cleanup even if the db is corrupted
|
||||||
|
@ -729,7 +729,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
public boolean deleteWorkbasket(String workbasketId)
|
public boolean deleteWorkbasket(String workbasketId)
|
||||||
throws NotAuthorizedException, WorkbasketNotFoundException, WorkbasketInUseException, InvalidArgumentException {
|
throws NotAuthorizedException, WorkbasketNotFoundException, WorkbasketInUseException, InvalidArgumentException {
|
||||||
LOGGER.debug("entry to deleteWorkbasket(workbasketId = {})", workbasketId);
|
LOGGER.debug("entry to deleteWorkbasket(workbasketId = {})", workbasketId);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
|
@ -740,7 +740,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
// check if the workbasket does exist and is empty (Task)
|
// check if the workbasket does exist and is empty (Task)
|
||||||
this.getWorkbasket(workbasketId);
|
this.getWorkbasket(workbasketId);
|
||||||
|
|
||||||
long numTasksNotCompletedInWorkbasket = taskanaEngine.getTaskService()
|
long numTasksNotCompletedInWorkbasket = taskanaEngine.getEngine().getTaskService()
|
||||||
.createTaskQuery()
|
.createTaskQuery()
|
||||||
.workbasketIdIn(workbasketId)
|
.workbasketIdIn(workbasketId)
|
||||||
.stateNotIn(
|
.stateNotIn(
|
||||||
|
@ -752,7 +752,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
"Workbasket " + workbasketId + " contains non-completed tasks and can´t be marked for deletion.");
|
"Workbasket " + workbasketId + " contains non-completed tasks and can´t be marked for deletion.");
|
||||||
}
|
}
|
||||||
|
|
||||||
long numTasksInWorkbasket = taskanaEngine.getTaskService()
|
long numTasksInWorkbasket = taskanaEngine.getEngine().getTaskService()
|
||||||
.createTaskQuery()
|
.createTaskQuery()
|
||||||
.workbasketIdIn(workbasketId)
|
.workbasketIdIn(workbasketId)
|
||||||
.count();
|
.count();
|
||||||
|
@ -774,7 +774,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
private void markWorkbasketForDeletion(String workbasketId)
|
private void markWorkbasketForDeletion(String workbasketId)
|
||||||
throws NotAuthorizedException, InvalidArgumentException {
|
throws NotAuthorizedException, InvalidArgumentException {
|
||||||
LOGGER.debug("entry to markWorkbasketForDeletion(workbasketId = {})", workbasketId);
|
LOGGER.debug("entry to markWorkbasketForDeletion(workbasketId = {})", workbasketId);
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
|
|
||||||
|
@ -797,7 +797,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
LOGGER.debug("entry to deleteWorkbaskets(workbasketId = {})", LoggerUtils.listToString(workbasketsIds));
|
LOGGER.debug("entry to deleteWorkbaskets(workbasketId = {})", LoggerUtils.listToString(workbasketsIds));
|
||||||
}
|
}
|
||||||
|
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
taskanaEngine.openConnection();
|
taskanaEngine.openConnection();
|
||||||
|
@ -834,7 +834,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkbasketAccessItemQuery createWorkbasketAccessItemQuery() throws NotAuthorizedException {
|
public WorkbasketAccessItemQuery createWorkbasketAccessItemQuery() throws NotAuthorizedException {
|
||||||
taskanaEngine.checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN);
|
taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN);
|
||||||
return new WorkbasketAccessItemQueryImpl(this.taskanaEngine);
|
return new WorkbasketAccessItemQueryImpl(this.taskanaEngine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
package acceptance.history;
|
package acceptance.history;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import acceptance.AbstractAccTest;
|
import acceptance.AbstractAccTest;
|
||||||
import pro.taskana.history.HistoryEventProducer;
|
import pro.taskana.history.HistoryEventProducer;
|
||||||
import pro.taskana.impl.TaskanaEngineImpl;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Acceptance test for historyEventProducer class.
|
* Acceptance test for historyEventProducer class.
|
||||||
|
@ -15,7 +14,7 @@ public class TaskEventProducerTest extends AbstractAccTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testHistoryEventProducerIsNotEnabled() {
|
public void testHistoryEventProducerIsNotEnabled() {
|
||||||
HistoryEventProducer historyEventProducer = ((TaskanaEngineImpl) taskanaEngine).getHistoryEventProducer();
|
HistoryEventProducer historyEventProducer = taskanaEngine.getHistoryEventProducer();
|
||||||
assertEquals(false, historyEventProducer.isEnabled());
|
assertFalse(historyEventProducer.isEnabled());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,6 @@ import pro.taskana.exceptions.TaskAlreadyExistException;
|
||||||
import pro.taskana.exceptions.TaskNotFoundException;
|
import pro.taskana.exceptions.TaskNotFoundException;
|
||||||
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
||||||
import pro.taskana.impl.DaysToWorkingDaysConverter;
|
import pro.taskana.impl.DaysToWorkingDaysConverter;
|
||||||
import pro.taskana.impl.TaskanaEngineImpl;
|
|
||||||
import pro.taskana.impl.TaskanaEngineProxyForTest;
|
import pro.taskana.impl.TaskanaEngineProxyForTest;
|
||||||
import pro.taskana.impl.report.header.TimeIntervalColumnHeader;
|
import pro.taskana.impl.report.header.TimeIntervalColumnHeader;
|
||||||
import pro.taskana.mappings.AttachmentMapper;
|
import pro.taskana.mappings.AttachmentMapper;
|
||||||
|
@ -63,7 +62,8 @@ public class CreateTaskAccTest extends AbstractAccTest {
|
||||||
TaskService taskService = taskanaEngine.getTaskService();
|
TaskService taskService = taskanaEngine.getTaskService();
|
||||||
Task newTask = taskService.newTask("USER_1_1", "DOMAIN_A");
|
Task newTask = taskService.newTask("USER_1_1", "DOMAIN_A");
|
||||||
newTask.setClassificationKey("T2100");
|
newTask.setClassificationKey("T2100");
|
||||||
ObjectReference objectReference = createObjectReference("COMPANY_A", "SYSTEM_A", "INSTANCE_A", "VNR", "1234567");
|
ObjectReference objectReference = createObjectReference("COMPANY_A", "SYSTEM_A", "INSTANCE_A", "VNR",
|
||||||
|
"1234567");
|
||||||
newTask.setPrimaryObjRef(objectReference);
|
newTask.setPrimaryObjRef(objectReference);
|
||||||
newTask.setOwner("user_1_1");
|
newTask.setOwner("user_1_1");
|
||||||
Task createdTask = taskService.createTask(newTask);
|
Task createdTask = taskService.createTask(newTask);
|
||||||
|
@ -90,7 +90,7 @@ public class CreateTaskAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
@WithAccessId(
|
@WithAccessId(
|
||||||
userName = "user_1_1",
|
userName = "user_1_1",
|
||||||
groupNames = { "group_1" })
|
groupNames = {"group_1"})
|
||||||
@Test
|
@Test
|
||||||
public void testCreateTaskWithPlanned()
|
public void testCreateTaskWithPlanned()
|
||||||
throws NotAuthorizedException, InvalidArgumentException,
|
throws NotAuthorizedException, InvalidArgumentException,
|
||||||
|
@ -108,7 +108,7 @@ public class CreateTaskAccTest extends AbstractAccTest {
|
||||||
assertNotNull(createdTask.getCreated());
|
assertNotNull(createdTask.getCreated());
|
||||||
assertNotNull(createdTask.getPlanned());
|
assertNotNull(createdTask.getPlanned());
|
||||||
assertEquals(createdTask.getCreated().plus(2, ChronoUnit.HOURS).truncatedTo(ChronoUnit.SECONDS),
|
assertEquals(createdTask.getCreated().plus(2, ChronoUnit.HOURS).truncatedTo(ChronoUnit.SECONDS),
|
||||||
createdTask.getPlanned().truncatedTo(ChronoUnit.SECONDS));
|
createdTask.getPlanned().truncatedTo(ChronoUnit.SECONDS));
|
||||||
}
|
}
|
||||||
|
|
||||||
@WithAccessId(
|
@WithAccessId(
|
||||||
|
@ -157,7 +157,8 @@ public class CreateTaskAccTest extends AbstractAccTest {
|
||||||
@Test
|
@Test
|
||||||
public void testCreateSimpleTaskWithCustomAttributes()
|
public void testCreateSimpleTaskWithCustomAttributes()
|
||||||
throws NotAuthorizedException, InvalidArgumentException, ClassificationNotFoundException,
|
throws NotAuthorizedException, InvalidArgumentException, ClassificationNotFoundException,
|
||||||
WorkbasketNotFoundException, TaskAlreadyExistException, TaskNotFoundException {
|
WorkbasketNotFoundException, TaskAlreadyExistException, TaskNotFoundException, NoSuchFieldException,
|
||||||
|
IllegalAccessException {
|
||||||
|
|
||||||
TaskService taskService = taskanaEngine.getTaskService();
|
TaskService taskService = taskanaEngine.getTaskService();
|
||||||
Task newTask = taskService.newTask("USER_1_1", "DOMAIN_A");
|
Task newTask = taskService.newTask("USER_1_1", "DOMAIN_A");
|
||||||
|
@ -183,7 +184,7 @@ public class CreateTaskAccTest extends AbstractAccTest {
|
||||||
assertEquals(false, createdTask.isRead());
|
assertEquals(false, createdTask.isRead());
|
||||||
assertEquals(false, createdTask.isTransferred());
|
assertEquals(false, createdTask.isTransferred());
|
||||||
// verify that the database content is as expected
|
// verify that the database content is as expected
|
||||||
TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest((TaskanaEngineImpl) taskanaEngine);
|
TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest(taskanaEngine);
|
||||||
try {
|
try {
|
||||||
SqlSession session = engineProxy.getSqlSession();
|
SqlSession session = engineProxy.getSqlSession();
|
||||||
Configuration config = session.getConfiguration();
|
Configuration config = session.getConfiguration();
|
||||||
|
@ -224,7 +225,8 @@ public class CreateTaskAccTest extends AbstractAccTest {
|
||||||
@Test
|
@Test
|
||||||
public void testCreateExternalTaskWithAttachment()
|
public void testCreateExternalTaskWithAttachment()
|
||||||
throws NotAuthorizedException, InvalidArgumentException, ClassificationNotFoundException,
|
throws NotAuthorizedException, InvalidArgumentException, ClassificationNotFoundException,
|
||||||
WorkbasketNotFoundException, TaskAlreadyExistException, TaskNotFoundException {
|
WorkbasketNotFoundException, TaskAlreadyExistException, TaskNotFoundException, NoSuchFieldException,
|
||||||
|
IllegalAccessException {
|
||||||
|
|
||||||
TaskService taskService = taskanaEngine.getTaskService();
|
TaskService taskService = taskanaEngine.getTaskService();
|
||||||
Task newTask = taskService.newTask("USER_1_1", "DOMAIN_A");
|
Task newTask = taskService.newTask("USER_1_1", "DOMAIN_A");
|
||||||
|
@ -240,7 +242,7 @@ public class CreateTaskAccTest extends AbstractAccTest {
|
||||||
assertThat(createdTask.getCreator(), equalTo(CurrentUserContext.getUserid()));
|
assertThat(createdTask.getCreator(), equalTo(CurrentUserContext.getUserid()));
|
||||||
|
|
||||||
// verify that the database content is as expected
|
// verify that the database content is as expected
|
||||||
TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest((TaskanaEngineImpl) taskanaEngine);
|
TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest(taskanaEngine);
|
||||||
try {
|
try {
|
||||||
SqlSession session = engineProxy.getSqlSession();
|
SqlSession session = engineProxy.getSqlSession();
|
||||||
AttachmentMapper mapper = session.getMapper(AttachmentMapper.class);
|
AttachmentMapper mapper = session.getMapper(AttachmentMapper.class);
|
||||||
|
|
|
@ -5,13 +5,12 @@ import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertThat;
|
import static org.junit.Assert.assertThat;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static pro.taskana.TaskQueryColumnName.A_CHANNEL;
|
||||||
|
import static pro.taskana.TaskQueryColumnName.A_CLASSIFICATION_ID;
|
||||||
|
import static pro.taskana.TaskQueryColumnName.A_REF_VALUE;
|
||||||
|
import static pro.taskana.TaskQueryColumnName.CLASSIFICATION_KEY;
|
||||||
import static pro.taskana.TaskQueryColumnName.OWNER;
|
import static pro.taskana.TaskQueryColumnName.OWNER;
|
||||||
import static pro.taskana.TaskQueryColumnName.STATE;
|
import static pro.taskana.TaskQueryColumnName.STATE;
|
||||||
import static pro.taskana.TaskQueryColumnName.A_CHANNEL;
|
|
||||||
import static pro.taskana.TaskQueryColumnName.A_REF_VALUE;
|
|
||||||
import static pro.taskana.TaskQueryColumnName.A_CLASSIFICATION_ID;
|
|
||||||
import static pro.taskana.TaskQueryColumnName.CLASSIFICATION_KEY;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -43,7 +42,6 @@ import pro.taskana.exceptions.TaskAlreadyExistException;
|
||||||
import pro.taskana.exceptions.TaskNotFoundException;
|
import pro.taskana.exceptions.TaskNotFoundException;
|
||||||
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
||||||
import pro.taskana.impl.TaskImpl;
|
import pro.taskana.impl.TaskImpl;
|
||||||
import pro.taskana.impl.TaskanaEngineImpl;
|
|
||||||
import pro.taskana.impl.TaskanaEngineProxyForTest;
|
import pro.taskana.impl.TaskanaEngineProxyForTest;
|
||||||
import pro.taskana.mappings.TaskTestMapper;
|
import pro.taskana.mappings.TaskTestMapper;
|
||||||
import pro.taskana.security.JAASRunner;
|
import pro.taskana.security.JAASRunner;
|
||||||
|
@ -63,8 +61,8 @@ public class QueryTasksAccTest extends AbstractAccTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@WithAccessId(
|
@WithAccessId(
|
||||||
userName = "teamlead_1",
|
userName = "teamlead_1",
|
||||||
groupNames = {"admin"})
|
groupNames = {"admin"})
|
||||||
@Test
|
@Test
|
||||||
public void testQueryTaskValuesForEveryColumn() {
|
public void testQueryTaskValuesForEveryColumn() {
|
||||||
TaskService taskService = taskanaEngine.getTaskService();
|
TaskService taskService = taskanaEngine.getTaskService();
|
||||||
|
@ -281,7 +279,7 @@ public class QueryTasksAccTest extends AbstractAccTest {
|
||||||
.count();
|
.count();
|
||||||
long countAllIds = taskService.createTaskQuery().count();
|
long countAllIds = taskService.createTaskQuery().count();
|
||||||
assertEquals(countAllIds, countAllExternalIds);
|
assertEquals(countAllIds, countAllExternalIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
@WithAccessId(
|
@WithAccessId(
|
||||||
userName = "teamlead_1",
|
userName = "teamlead_1",
|
||||||
|
@ -824,7 +822,7 @@ public class QueryTasksAccTest extends AbstractAccTest {
|
||||||
@Test
|
@Test
|
||||||
public void testQueryTaskByCustomAttributes()
|
public void testQueryTaskByCustomAttributes()
|
||||||
throws NotAuthorizedException, InvalidArgumentException, ClassificationNotFoundException,
|
throws NotAuthorizedException, InvalidArgumentException, ClassificationNotFoundException,
|
||||||
WorkbasketNotFoundException, TaskAlreadyExistException {
|
WorkbasketNotFoundException, TaskAlreadyExistException, NoSuchFieldException, IllegalAccessException {
|
||||||
|
|
||||||
TaskService taskService = taskanaEngine.getTaskService();
|
TaskService taskService = taskanaEngine.getTaskService();
|
||||||
Task newTask = taskService.newTask("USER_1_1", "DOMAIN_A");
|
Task newTask = taskService.newTask("USER_1_1", "DOMAIN_A");
|
||||||
|
@ -836,7 +834,7 @@ public class QueryTasksAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
assertNotNull(createdTask);
|
assertNotNull(createdTask);
|
||||||
// query the task by custom attributes
|
// query the task by custom attributes
|
||||||
TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest((TaskanaEngineImpl) taskanaEngine);
|
TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest(taskanaEngine);
|
||||||
try {
|
try {
|
||||||
SqlSession session = engineProxy.getSqlSession();
|
SqlSession session = engineProxy.getSqlSession();
|
||||||
Configuration config = session.getConfiguration();
|
Configuration config = session.getConfiguration();
|
||||||
|
@ -1526,5 +1524,4 @@ public class QueryTasksAccTest extends AbstractAccTest {
|
||||||
assertThat(result2.size(), equalTo(10));
|
assertThat(result2.size(), equalTo(10));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,12 +21,12 @@ import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.Mockito;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import pro.taskana.CustomField;
|
import pro.taskana.CustomField;
|
||||||
import pro.taskana.TaskState;
|
import pro.taskana.TaskState;
|
||||||
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
|
@ -45,7 +45,10 @@ public class CategoryReportBuilderImplTest {
|
||||||
private TaskMonitorServiceImpl cut;
|
private TaskMonitorServiceImpl cut;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineImpl taskanaEngineImplMock;
|
private TaskanaEngine.Internal taskanaEngineInternalMock;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private TaskanaEngine taskanaEngineMock;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineConfiguration taskanaEngineConfiguration;
|
private TaskanaEngineConfiguration taskanaEngineConfiguration;
|
||||||
|
@ -56,9 +59,8 @@ public class CategoryReportBuilderImplTest {
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
Mockito.doNothing().when(taskanaEngineImplMock).openConnection();
|
when(taskanaEngineMock.getConfiguration()).thenReturn(taskanaEngineConfiguration);
|
||||||
Mockito.doNothing().when(taskanaEngineImplMock).returnConnection();
|
when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock);
|
||||||
when(taskanaEngineImplMock.getConfiguration()).thenReturn(taskanaEngineConfiguration);
|
|
||||||
when(taskanaEngineConfiguration.isGermanPublicHolidaysEnabled()).thenReturn(true);
|
when(taskanaEngineConfiguration.isGermanPublicHolidaysEnabled()).thenReturn(true);
|
||||||
when(taskanaEngineConfiguration.getCustomHolidays()).thenReturn(null);
|
when(taskanaEngineConfiguration.getCustomHolidays()).thenReturn(null);
|
||||||
}
|
}
|
||||||
|
@ -92,15 +94,17 @@ public class CategoryReportBuilderImplTest {
|
||||||
.customAttributeFilterIn(customAttributeFilter)
|
.customAttributeFilterIn(customAttributeFilter)
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1)).getTaskCountOfCategories(any(), any(), any(), any(), any(), any(),
|
verify(taskMonitorMapperMock, times(1)).getTaskCountOfCategories(any(), any(), any(), any(), any(), any(),
|
||||||
any());
|
any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(actualResult.getRow("EXTERN").getTotalValue(), 1);
|
assertEquals(actualResult.getRow("EXTERN").getTotalValue(), 1);
|
||||||
|
@ -142,15 +146,17 @@ public class CategoryReportBuilderImplTest {
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1)).getTaskCountOfCategories(any(), any(), any(), any(), any(), any(),
|
verify(taskMonitorMapperMock, times(1)).getTaskCountOfCategories(any(), any(), any(), any(), any(), any(),
|
||||||
any());
|
any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(actualResult.getRow("EXTERN").getTotalValue(), 1);
|
assertEquals(actualResult.getRow("EXTERN").getTotalValue(), 1);
|
||||||
|
@ -194,15 +200,17 @@ public class CategoryReportBuilderImplTest {
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.listTaskIdsForSelectedItems(selectedItems);
|
.listTaskIdsForSelectedItems(selectedItems);
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1))
|
verify(taskMonitorMapperMock, times(1))
|
||||||
.getTaskIdsForSelectedItems(any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false));
|
.getTaskIdsForSelectedItems(any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false));
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(expectedResult, actualResult);
|
assertEquals(expectedResult, actualResult);
|
||||||
|
@ -253,15 +261,17 @@ public class CategoryReportBuilderImplTest {
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1);
|
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1);
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1))
|
verify(taskMonitorMapperMock, times(1))
|
||||||
.getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any());
|
.getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(expectedResult, actualResult);
|
assertEquals(expectedResult, actualResult);
|
||||||
|
|
|
@ -8,13 +8,14 @@ import java.util.List;
|
||||||
|
|
||||||
import org.apache.ibatis.session.SqlSession;
|
import org.apache.ibatis.session.SqlSession;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import pro.taskana.ClassificationSummary;
|
import pro.taskana.ClassificationSummary;
|
||||||
|
import pro.taskana.TaskanaEngine;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for ClassificationQueryImpl.
|
* Test for ClassificationQueryImpl.
|
||||||
|
@ -24,22 +25,18 @@ import pro.taskana.ClassificationSummary;
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class ClassificationQueryImplTest {
|
public class ClassificationQueryImplTest {
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
private ClassificationQueryImpl classificationQueryImpl;
|
private ClassificationQueryImpl classificationQueryImpl;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngineInternal;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private SqlSession sqlSession;
|
private SqlSession sqlSession;
|
||||||
|
|
||||||
@Before
|
|
||||||
public void setup() {
|
|
||||||
classificationQueryImpl = new ClassificationQueryImpl(taskanaEngine);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void should_ReturnList_when_BuilderIsUsed() {
|
public void should_ReturnList_when_BuilderIsUsed() {
|
||||||
when(taskanaEngine.getSqlSession()).thenReturn(sqlSession);
|
when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession);
|
||||||
when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>());
|
when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>());
|
||||||
|
|
||||||
List<ClassificationSummary> result = classificationQueryImpl.nameIn("test", "asd", "blubber")
|
List<ClassificationSummary> result = classificationQueryImpl.nameIn("test", "asd", "blubber")
|
||||||
|
@ -52,7 +49,7 @@ public class ClassificationQueryImplTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void should_ReturnListWithOffset_when_BuilderIsUsed() {
|
public void should_ReturnListWithOffset_when_BuilderIsUsed() {
|
||||||
when(taskanaEngine.getSqlSession()).thenReturn(sqlSession);
|
when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession);
|
||||||
when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>());
|
when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>());
|
||||||
|
|
||||||
List<ClassificationSummary> result = classificationQueryImpl.nameIn("test", "asd", "blubber")
|
List<ClassificationSummary> result = classificationQueryImpl.nameIn("test", "asd", "blubber")
|
||||||
|
@ -65,7 +62,7 @@ public class ClassificationQueryImplTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void should_ReturnOneItem_when_BuilderIsUsed() {
|
public void should_ReturnOneItem_when_BuilderIsUsed() {
|
||||||
when(taskanaEngine.getSqlSession()).thenReturn(sqlSession);
|
when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession);
|
||||||
when(sqlSession.selectOne(any(), any())).thenReturn(new ClassificationSummaryImpl());
|
when(sqlSession.selectOne(any(), any())).thenReturn(new ClassificationSummaryImpl());
|
||||||
|
|
||||||
ClassificationSummary result = classificationQueryImpl.nameIn("test", "asd", "blubber")
|
ClassificationSummary result = classificationQueryImpl.nameIn("test", "asd", "blubber")
|
||||||
|
|
|
@ -21,12 +21,12 @@ import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.Mockito;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import pro.taskana.CustomField;
|
import pro.taskana.CustomField;
|
||||||
import pro.taskana.TaskState;
|
import pro.taskana.TaskState;
|
||||||
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
|
@ -48,7 +48,10 @@ public class ClassificationReportBuilderImplTest {
|
||||||
private TaskMonitorServiceImpl cut;
|
private TaskMonitorServiceImpl cut;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineImpl taskanaEngineImplMock;
|
private TaskanaEngine.Internal taskanaEngineInternalMock;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private TaskanaEngine taskanaEngineMock;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineConfiguration taskanaEngineConfiguration;
|
private TaskanaEngineConfiguration taskanaEngineConfiguration;
|
||||||
|
@ -59,9 +62,8 @@ public class ClassificationReportBuilderImplTest {
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
Mockito.doNothing().when(taskanaEngineImplMock).openConnection();
|
when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock);
|
||||||
Mockito.doNothing().when(taskanaEngineImplMock).returnConnection();
|
when(taskanaEngineMock.getConfiguration()).thenReturn(taskanaEngineConfiguration);
|
||||||
when(taskanaEngineImplMock.getConfiguration()).thenReturn(taskanaEngineConfiguration);
|
|
||||||
when(taskanaEngineConfiguration.isGermanPublicHolidaysEnabled()).thenReturn(true);
|
when(taskanaEngineConfiguration.isGermanPublicHolidaysEnabled()).thenReturn(true);
|
||||||
when(taskanaEngineConfiguration.getCustomHolidays()).thenReturn(null);
|
when(taskanaEngineConfiguration.getCustomHolidays()).thenReturn(null);
|
||||||
}
|
}
|
||||||
|
@ -95,15 +97,17 @@ public class ClassificationReportBuilderImplTest {
|
||||||
.customAttributeFilterIn(customAttributeFilter)
|
.customAttributeFilterIn(customAttributeFilter)
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1)).getTaskCountOfClassifications(any(), any(), any(), any(), any(), any(),
|
verify(taskMonitorMapperMock, times(1)).getTaskCountOfClassifications(any(), any(), any(), any(), any(), any(),
|
||||||
any());
|
any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(
|
assertEquals(
|
||||||
|
@ -146,15 +150,18 @@ public class ClassificationReportBuilderImplTest {
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
|
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1)).getTaskCountOfClassifications(any(), any(), any(), any(), any(), any(),
|
verify(taskMonitorMapperMock, times(1)).getTaskCountOfClassifications(any(), any(), any(), any(), any(), any(),
|
||||||
any());
|
any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(
|
assertEquals(
|
||||||
|
@ -194,16 +201,18 @@ public class ClassificationReportBuilderImplTest {
|
||||||
.customAttributeFilterIn(customAttributeFilter)
|
.customAttributeFilterIn(customAttributeFilter)
|
||||||
.buildDetailedReport();
|
.buildDetailedReport();
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1)).getTaskCountOfDetailedClassifications(any(), any(), any(), any(), any(),
|
verify(taskMonitorMapperMock, times(1)).getTaskCountOfDetailedClassifications(any(), any(), any(), any(), any(),
|
||||||
any(),
|
any(),
|
||||||
any());
|
any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
FoldableRow<DetailedMonitorQueryItem> line = actualResult.getRow("CLI:000000000000000000000000000000000001");
|
FoldableRow<DetailedMonitorQueryItem> line = actualResult.getRow("CLI:000000000000000000000000000000000001");
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
|
@ -247,16 +256,18 @@ public class ClassificationReportBuilderImplTest {
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.buildDetailedReport();
|
.buildDetailedReport();
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1)).getTaskCountOfDetailedClassifications(any(), any(), any(), any(), any(),
|
verify(taskMonitorMapperMock, times(1)).getTaskCountOfDetailedClassifications(any(), any(), any(), any(), any(),
|
||||||
any(),
|
any(),
|
||||||
any());
|
any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
FoldableRow<DetailedMonitorQueryItem> line = actualResult.getRow("CLI:000000000000000000000000000000000001");
|
FoldableRow<DetailedMonitorQueryItem> line = actualResult.getRow("CLI:000000000000000000000000000000000001");
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
|
@ -303,15 +314,17 @@ public class ClassificationReportBuilderImplTest {
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.listTaskIdsForSelectedItems(selectedItems);
|
.listTaskIdsForSelectedItems(selectedItems);
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1))
|
verify(taskMonitorMapperMock, times(1))
|
||||||
.getTaskIdsForSelectedItems(any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false));
|
.getTaskIdsForSelectedItems(any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false));
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(expectedResult, actualResult);
|
assertEquals(expectedResult, actualResult);
|
||||||
|
@ -364,15 +377,17 @@ public class ClassificationReportBuilderImplTest {
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1);
|
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1);
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1))
|
verify(taskMonitorMapperMock, times(1))
|
||||||
.getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any());
|
.getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(expectedResult, actualResult);
|
assertEquals(expectedResult, actualResult);
|
||||||
|
@ -382,7 +397,7 @@ public class ClassificationReportBuilderImplTest {
|
||||||
public void testListCustomAttributeValuesForCustomAttributeNameIsEmptyResult()
|
public void testListCustomAttributeValuesForCustomAttributeNameIsEmptyResult()
|
||||||
throws NotAuthorizedException {
|
throws NotAuthorizedException {
|
||||||
List<String> result = cut.createClassificationReportBuilder()
|
List<String> result = cut.createClassificationReportBuilder()
|
||||||
.workbasketIdIn(Arrays.asList("DieGibtsGarantiertNed"))
|
.workbasketIdIn(Collections.singletonList("DieGibtsGarantiertNed"))
|
||||||
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_10);
|
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_10);
|
||||||
assertNotNull(result);
|
assertNotNull(result);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,13 +2,9 @@ package pro.taskana.impl;
|
||||||
|
|
||||||
import static junit.framework.TestCase.assertEquals;
|
import static junit.framework.TestCase.assertEquals;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.doNothing;
|
|
||||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.ibatis.session.SqlSession;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
@ -18,14 +14,12 @@ import org.mockito.Spy;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import pro.taskana.Classification;
|
import pro.taskana.Classification;
|
||||||
import pro.taskana.JobService;
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.exceptions.ClassificationAlreadyExistException;
|
import pro.taskana.exceptions.ClassificationAlreadyExistException;
|
||||||
import pro.taskana.exceptions.DomainNotFoundException;
|
import pro.taskana.exceptions.DomainNotFoundException;
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.jobs.ScheduledJob;
|
|
||||||
import pro.taskana.mappings.ClassificationMapper;
|
import pro.taskana.mappings.ClassificationMapper;
|
||||||
import pro.taskana.mappings.JobMapper;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit Test for ClassificationServiceImpl.
|
* Unit Test for ClassificationServiceImpl.
|
||||||
|
@ -41,24 +35,22 @@ public class ClassificationServiceImplTest {
|
||||||
@Mock
|
@Mock
|
||||||
private ClassificationMapper classificationMapperMock;
|
private ClassificationMapper classificationMapperMock;
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineImpl taskanaEngineImplMock;
|
private TaskanaEngine taskanaEngineMock;
|
||||||
|
@Mock
|
||||||
|
private TaskanaEngine.Internal taskanaEngineInternalMock;
|
||||||
@Mock
|
@Mock
|
||||||
private ClassificationQueryImpl classificationQueryImplMock;
|
private ClassificationQueryImpl classificationQueryImplMock;
|
||||||
@Mock
|
|
||||||
private SqlSession sqlSessionMock;
|
|
||||||
@Mock
|
|
||||||
private JobService jobServiceMock;
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
doNothing().when(taskanaEngineImplMock).openConnection();
|
when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock);
|
||||||
doNothing().when(taskanaEngineImplMock).returnConnection();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateClassificationQuery() {
|
public void testCreateClassificationQuery() {
|
||||||
cutSpy.createClassificationQuery();
|
cutSpy.createClassificationQuery();
|
||||||
verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock);
|
verifyNoMoreInteractions(classificationMapperMock, taskanaEngineInternalMock, taskanaEngineMock,
|
||||||
|
classificationQueryImplMock);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = InvalidArgumentException.class)
|
@Test(expected = InvalidArgumentException.class)
|
||||||
|
@ -67,7 +59,7 @@ public class ClassificationServiceImplTest {
|
||||||
NotAuthorizedException, ClassificationAlreadyExistException {
|
NotAuthorizedException, ClassificationAlreadyExistException {
|
||||||
try {
|
try {
|
||||||
Classification classification = createDummyClassification();
|
Classification classification = createDummyClassification();
|
||||||
when(taskanaEngineImplMock.domainExists(any())).thenReturn(true);
|
when(taskanaEngineInternalMock.domainExists(any())).thenReturn(true);
|
||||||
cutSpy.createClassification(classification);
|
cutSpy.createClassification(classification);
|
||||||
} catch (InvalidArgumentException e) {
|
} catch (InvalidArgumentException e) {
|
||||||
assertEquals(e.getMessage(), "ClassificationId should be null on creation");
|
assertEquals(e.getMessage(), "ClassificationId should be null on creation");
|
||||||
|
@ -93,29 +85,4 @@ public class ClassificationServiceImplTest {
|
||||||
return classificationImpl;
|
return classificationImpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the mock of a jobRunner.
|
|
||||||
*/
|
|
||||||
private class JobRunnerMock implements JobMapper {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void insertJob(ScheduledJob job) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ScheduledJob> findJobsToRun() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void update(ScheduledJob job) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void delete(ScheduledJob job) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,12 +20,12 @@ import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.Mockito;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import pro.taskana.CustomField;
|
import pro.taskana.CustomField;
|
||||||
import pro.taskana.TaskState;
|
import pro.taskana.TaskState;
|
||||||
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
|
@ -44,7 +44,10 @@ public class CustomFieldValueReportBuilderImplTest {
|
||||||
private TaskMonitorServiceImpl cut;
|
private TaskMonitorServiceImpl cut;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineImpl taskanaEngineImplMock;
|
private TaskanaEngine.Internal taskanaEngineInternalMock;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private TaskanaEngine taskanaEngineMock;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineConfiguration taskanaEngineConfiguration;
|
private TaskanaEngineConfiguration taskanaEngineConfiguration;
|
||||||
|
@ -55,9 +58,8 @@ public class CustomFieldValueReportBuilderImplTest {
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
Mockito.doNothing().when(taskanaEngineImplMock).openConnection();
|
when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock);
|
||||||
Mockito.doNothing().when(taskanaEngineImplMock).returnConnection();
|
when(taskanaEngineMock.getConfiguration()).thenReturn(taskanaEngineConfiguration);
|
||||||
when(taskanaEngineImplMock.getConfiguration()).thenReturn(taskanaEngineConfiguration);
|
|
||||||
when(taskanaEngineConfiguration.isGermanPublicHolidaysEnabled()).thenReturn(true);
|
when(taskanaEngineConfiguration.isGermanPublicHolidaysEnabled()).thenReturn(true);
|
||||||
when(taskanaEngineConfiguration.getCustomHolidays()).thenReturn(null);
|
when(taskanaEngineConfiguration.getCustomHolidays()).thenReturn(null);
|
||||||
}
|
}
|
||||||
|
@ -92,16 +94,18 @@ public class CustomFieldValueReportBuilderImplTest {
|
||||||
.customAttributeFilterIn(customAttributeFilter)
|
.customAttributeFilterIn(customAttributeFilter)
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1)).getTaskCountOfCustomFieldValues(any(), any(), any(), any(), any(),
|
verify(taskMonitorMapperMock, times(1)).getTaskCountOfCustomFieldValues(any(), any(), any(), any(), any(),
|
||||||
any(), any(),
|
any(), any(),
|
||||||
any());
|
any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(actualResult.getRow("Geschaeftsstelle A").getTotalValue(), 1);
|
assertEquals(actualResult.getRow("Geschaeftsstelle A").getTotalValue(), 1);
|
||||||
|
@ -143,15 +147,17 @@ public class CustomFieldValueReportBuilderImplTest {
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1))
|
verify(taskMonitorMapperMock, times(1))
|
||||||
.getTaskCountOfCustomFieldValues(any(), any(), any(), any(), any(), any(), any(), any());
|
.getTaskCountOfCustomFieldValues(any(), any(), any(), any(), any(), any(), any(), any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(actualResult.getRow("Geschaeftsstelle A").getTotalValue(), 1);
|
assertEquals(actualResult.getRow("Geschaeftsstelle A").getTotalValue(), 1);
|
||||||
|
@ -195,15 +201,16 @@ public class CustomFieldValueReportBuilderImplTest {
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1);
|
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1);
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1))
|
verify(taskMonitorMapperMock, times(1))
|
||||||
.getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any());
|
.getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(expectedResult, actualResult);
|
assertEquals(expectedResult, actualResult);
|
||||||
|
|
|
@ -15,6 +15,7 @@ import org.mockito.Mock;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import pro.taskana.ObjectReference;
|
import pro.taskana.ObjectReference;
|
||||||
|
import pro.taskana.TaskanaEngine;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for ObjectReferenceQueryImpl.
|
* Test for ObjectReferenceQueryImpl.
|
||||||
|
@ -27,7 +28,7 @@ public class ObjectReferenceQueryImplTest {
|
||||||
ObjectReferenceQueryImpl objectReferenceQueryImpl;
|
ObjectReferenceQueryImpl objectReferenceQueryImpl;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
TaskanaEngineImpl taskanaEngine;
|
TaskanaEngine.Internal taskanaEngine;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
SqlSession sqlSession;
|
SqlSession sqlSession;
|
||||||
|
|
|
@ -8,17 +8,16 @@ import java.util.List;
|
||||||
|
|
||||||
import org.apache.ibatis.session.Configuration;
|
import org.apache.ibatis.session.Configuration;
|
||||||
import org.apache.ibatis.session.SqlSession;
|
import org.apache.ibatis.session.SqlSession;
|
||||||
import org.apache.ibatis.session.SqlSessionManager;
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import pro.taskana.TaskState;
|
import pro.taskana.TaskState;
|
||||||
import pro.taskana.TaskSummary;
|
import pro.taskana.TaskSummary;
|
||||||
|
import pro.taskana.TaskanaEngine;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for TaskQueryImpl.
|
* Test for TaskQueryImpl.
|
||||||
|
@ -28,34 +27,32 @@ import pro.taskana.TaskSummary;
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class TaskQueryImplTest {
|
public class TaskQueryImplTest {
|
||||||
|
|
||||||
@Mock
|
|
||||||
ClassificationServiceImpl classificationService;
|
|
||||||
@Mock
|
@Mock
|
||||||
TaskServiceImpl taskServiceMock;
|
TaskServiceImpl taskServiceMock;
|
||||||
@InjectMocks
|
|
||||||
private TaskQueryImpl taskQueryImpl;
|
private TaskQueryImpl taskQueryImpl;
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngineInternal;
|
||||||
|
@Mock
|
||||||
|
private TaskanaEngine taskanaEngine;
|
||||||
@Mock
|
@Mock
|
||||||
private SqlSession sqlSession;
|
private SqlSession sqlSession;
|
||||||
@Mock
|
|
||||||
private SqlSessionManager sqlSessionManager;
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
|
when(taskanaEngineInternal.getEngine()).thenReturn(taskanaEngine);
|
||||||
when(taskanaEngine.getTaskService()).thenReturn(taskServiceMock);
|
when(taskanaEngine.getTaskService()).thenReturn(taskServiceMock);
|
||||||
|
|
||||||
Configuration configuration = new org.apache.ibatis.session.Configuration();
|
Configuration configuration = new org.apache.ibatis.session.Configuration();
|
||||||
configuration.setDatabaseId("h2");
|
configuration.setDatabaseId("h2");
|
||||||
this.taskanaEngine.sessionManager = sqlSessionManager;
|
when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession);
|
||||||
when(taskanaEngine.sessionManager.getConfiguration()).thenReturn(configuration);
|
when(sqlSession.getConfiguration()).thenReturn(configuration);
|
||||||
|
|
||||||
taskQueryImpl = new TaskQueryImpl(taskanaEngine);
|
taskQueryImpl = new TaskQueryImpl(taskanaEngineInternal);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void should_ReturnList_when_BuilderIsUsed() {
|
public void should_ReturnList_when_BuilderIsUsed() {
|
||||||
when(taskanaEngine.getSqlSession()).thenReturn(sqlSession);
|
|
||||||
when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>());
|
when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>());
|
||||||
List<TaskSummary> intermediate = new ArrayList<>();
|
List<TaskSummary> intermediate = new ArrayList<>();
|
||||||
intermediate.add(new TaskSummaryImpl());
|
intermediate.add(new TaskSummaryImpl());
|
||||||
|
@ -70,7 +67,6 @@ public class TaskQueryImplTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void should_ReturnListWithOffset_when_BuilderIsUsed() {
|
public void should_ReturnListWithOffset_when_BuilderIsUsed() {
|
||||||
when(taskanaEngine.getSqlSession()).thenReturn(sqlSession);
|
|
||||||
when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>());
|
when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>());
|
||||||
List<TaskSummary> intermediate = new ArrayList<>();
|
List<TaskSummary> intermediate = new ArrayList<>();
|
||||||
intermediate.add(new TaskSummaryImpl());
|
intermediate.add(new TaskSummaryImpl());
|
||||||
|
@ -85,7 +81,6 @@ public class TaskQueryImplTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void should_ReturnOneItem_when_BuilderIsUsed() {
|
public void should_ReturnOneItem_when_BuilderIsUsed() {
|
||||||
when(taskanaEngine.getSqlSession()).thenReturn(sqlSession);
|
|
||||||
when(sqlSession.selectOne(any(), any())).thenReturn(new TaskSummaryImpl());
|
when(sqlSession.selectOne(any(), any())).thenReturn(new TaskSummaryImpl());
|
||||||
List<TaskSummary> intermediate = new ArrayList<>();
|
List<TaskSummary> intermediate = new ArrayList<>();
|
||||||
intermediate.add(new TaskSummaryImpl());
|
intermediate.add(new TaskSummaryImpl());
|
||||||
|
|
|
@ -5,7 +5,6 @@ import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNotEquals;
|
import static org.junit.Assert.assertNotEquals;
|
||||||
import static org.junit.Assert.assertThat;
|
import static org.junit.Assert.assertThat;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.doNothing;
|
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
@ -15,11 +14,11 @@ import static org.mockito.Mockito.when;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.apache.ibatis.session.SqlSession;
|
import org.apache.ibatis.session.SqlSession;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.Mockito;
|
import org.mockito.Mockito;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
@ -27,12 +26,12 @@ 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.Attachment;
|
|
||||||
import pro.taskana.Classification;
|
import pro.taskana.Classification;
|
||||||
import pro.taskana.ObjectReference;
|
import pro.taskana.ObjectReference;
|
||||||
import pro.taskana.Task;
|
import pro.taskana.Task;
|
||||||
import pro.taskana.TaskState;
|
import pro.taskana.TaskState;
|
||||||
import pro.taskana.TaskSummary;
|
import pro.taskana.TaskSummary;
|
||||||
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.Workbasket;
|
import pro.taskana.Workbasket;
|
||||||
import pro.taskana.WorkbasketPermission;
|
import pro.taskana.WorkbasketPermission;
|
||||||
import pro.taskana.WorkbasketService;
|
import pro.taskana.WorkbasketService;
|
||||||
|
@ -56,14 +55,16 @@ import pro.taskana.security.CurrentUserContext;
|
||||||
@PowerMockIgnore("javax.management.*")
|
@PowerMockIgnore("javax.management.*")
|
||||||
public class TaskServiceImplTest {
|
public class TaskServiceImplTest {
|
||||||
|
|
||||||
@InjectMocks
|
|
||||||
private TaskServiceImpl cut;
|
private TaskServiceImpl cut;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineConfiguration taskanaEngineConfigurationMock;
|
private TaskanaEngineConfiguration taskanaEngineConfigurationMock;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineImpl taskanaEngineMock;
|
private TaskanaEngine.Internal taskanaEngineInternalMock;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private TaskanaEngine taskanaEngineMock;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskMapper taskMapperMock;
|
private TaskMapper taskMapperMock;
|
||||||
|
@ -83,24 +84,16 @@ public class TaskServiceImplTest {
|
||||||
@Mock
|
@Mock
|
||||||
private ClassificationQueryImpl classificationQueryImplMock;
|
private ClassificationQueryImpl classificationQueryImplMock;
|
||||||
|
|
||||||
@Mock
|
|
||||||
private WorkbasketQueryImpl workbasketQueryImplMock;
|
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private SqlSession sqlSessionMock;
|
private SqlSession sqlSessionMock;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws WorkbasketNotFoundException {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock);
|
||||||
when(taskanaEngineMock.getWorkbasketService()).thenReturn(workbasketServiceMock);
|
when(taskanaEngineMock.getWorkbasketService()).thenReturn(workbasketServiceMock);
|
||||||
when(taskanaEngineMock.getClassificationService()).thenReturn(classificationServiceImplMock);
|
when(taskanaEngineMock.getClassificationService()).thenReturn(classificationServiceImplMock);
|
||||||
try {
|
cut = new TaskServiceImpl(taskanaEngineInternalMock, taskMapperMock, attachmentMapperMock);
|
||||||
Mockito.doNothing().when(workbasketServiceMock).checkAuthorization(any(), any());
|
|
||||||
} catch (NotAuthorizedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
Mockito.doNothing().when(taskanaEngineMock).openConnection();
|
|
||||||
Mockito.doNothing().when(taskanaEngineMock).returnConnection();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -118,25 +111,24 @@ public class TaskServiceImplTest {
|
||||||
when(taskanaEngineMock.getConfiguration()).thenReturn(taskanaEngineConfigurationMock);
|
when(taskanaEngineMock.getConfiguration()).thenReturn(taskanaEngineConfigurationMock);
|
||||||
when(taskanaEngineConfigurationMock.isSecurityEnabled()).thenReturn(false);
|
when(taskanaEngineConfigurationMock.isSecurityEnabled()).thenReturn(false);
|
||||||
doReturn(task).when(cutSpy).getTask(task.getId());
|
doReturn(task).when(cutSpy).getTask(task.getId());
|
||||||
doNothing().when(taskMapperMock).update(any());
|
|
||||||
doNothing().when(workbasketServiceMock).checkAuthorization(destinationWorkbasket.getId(),
|
|
||||||
WorkbasketPermission.APPEND);
|
|
||||||
doNothing().when(workbasketServiceMock).checkAuthorization(sourceWorkbasket.getId(),
|
|
||||||
WorkbasketPermission.TRANSFER);
|
|
||||||
|
|
||||||
Task actualTask = cutSpy.transfer(task.getId(), destinationWorkbasket.getId());
|
Task actualTask = cutSpy.transfer(task.getId(), destinationWorkbasket.getId());
|
||||||
|
|
||||||
verify(taskanaEngineMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(workbasketServiceMock, times(1)).checkAuthorization(destinationWorkbasket.getId(),
|
verify(workbasketServiceMock, times(1)).checkAuthorization(destinationWorkbasket.getId(),
|
||||||
WorkbasketPermission.APPEND);
|
WorkbasketPermission.APPEND);
|
||||||
verify(workbasketServiceMock, times(1)).checkAuthorization(sourceWorkbasket.getId(),
|
verify(workbasketServiceMock, times(1)).checkAuthorization(sourceWorkbasket.getId(),
|
||||||
WorkbasketPermission.TRANSFER);
|
WorkbasketPermission.TRANSFER);
|
||||||
verify(workbasketServiceMock, times(1)).getWorkbasket(destinationWorkbasket.getId());
|
verify(workbasketServiceMock, times(1)).getWorkbasket(destinationWorkbasket.getId());
|
||||||
verify(taskMapperMock, times(1)).update(any());
|
verify(taskMapperMock, times(1)).update(any());
|
||||||
verify(taskanaEngineMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
|
verify(taskanaEngineMock).getHistoryEventProducer();
|
||||||
|
verify(taskanaEngineMock).getWorkbasketService();
|
||||||
|
verify(taskanaEngineMock).getClassificationService();
|
||||||
verifyNoMoreInteractions(attachmentMapperMock, taskanaEngineConfigurationMock, taskanaEngineMock,
|
verifyNoMoreInteractions(attachmentMapperMock, taskanaEngineConfigurationMock, taskanaEngineMock,
|
||||||
taskMapperMock, objectReferenceMapperMock, workbasketServiceMock, sqlSessionMock,
|
taskanaEngineInternalMock, taskMapperMock, objectReferenceMapperMock, workbasketServiceMock,
|
||||||
classificationQueryImplMock);
|
sqlSessionMock, classificationQueryImplMock);
|
||||||
|
|
||||||
assertThat(actualTask.isRead(), equalTo(false));
|
assertThat(actualTask.isRead(), equalTo(false));
|
||||||
assertThat(actualTask.getState(), equalTo(TaskState.READY));
|
assertThat(actualTask.getState(), equalTo(TaskState.READY));
|
||||||
|
@ -148,7 +140,6 @@ public class TaskServiceImplTest {
|
||||||
public void testTaskSummaryEqualsHashCode() throws InterruptedException {
|
public void testTaskSummaryEqualsHashCode() throws InterruptedException {
|
||||||
Classification classification = createDummyClassification();
|
Classification classification = createDummyClassification();
|
||||||
Workbasket wb = createWorkbasket("WB-ID", "WB-Key");
|
Workbasket wb = createWorkbasket("WB-ID", "WB-Key");
|
||||||
Attachment attachment = JunitHelper.createDefaultAttachment();
|
|
||||||
ObjectReference objectReference = JunitHelper.createDefaultObjRef();
|
ObjectReference objectReference = JunitHelper.createDefaultObjRef();
|
||||||
TaskImpl taskBefore = createUnitTestTask("ID", "taskName", wb.getKey(), classification);
|
TaskImpl taskBefore = createUnitTestTask("ID", "taskName", wb.getKey(), classification);
|
||||||
taskBefore.setPrimaryObjRef(objectReference);
|
taskBefore.setPrimaryObjRef(objectReference);
|
||||||
|
|
|
@ -5,6 +5,7 @@ import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.inOrder;
|
import static org.mockito.Mockito.inOrder;
|
||||||
|
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||||
import static org.powermock.api.mockito.PowerMockito.when;
|
import static org.powermock.api.mockito.PowerMockito.when;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -17,12 +18,12 @@ import org.junit.runner.RunWith;
|
||||||
import org.mockito.InOrder;
|
import org.mockito.InOrder;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.Mockito;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import pro.taskana.TaskState;
|
import pro.taskana.TaskState;
|
||||||
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
import pro.taskana.TaskanaEngine;
|
||||||
|
import pro.taskana.TaskanaRole;
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.impl.report.item.TaskQueryItem;
|
import pro.taskana.impl.report.item.TaskQueryItem;
|
||||||
|
@ -39,10 +40,10 @@ public class TaskStatusReportBuilderImplTest {
|
||||||
private TaskMonitorServiceImpl cut;
|
private TaskMonitorServiceImpl cut;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineImpl taskanaEngineImplMock;
|
private TaskanaEngine.Internal taskanaEngineInternalMock;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineConfiguration taskanaEngineConfiguration;
|
private TaskanaEngine taskanaEngineMock;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskMonitorMapper taskMonitorMapperMock;
|
private TaskMonitorMapper taskMonitorMapperMock;
|
||||||
|
@ -50,8 +51,7 @@ public class TaskStatusReportBuilderImplTest {
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
Mockito.doNothing().when(taskanaEngineImplMock).openConnection();
|
when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock);
|
||||||
Mockito.doNothing().when(taskanaEngineImplMock).returnConnection();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -72,10 +72,14 @@ public class TaskStatusReportBuilderImplTest {
|
||||||
TaskStatusReport report = cut.createTaskStatusReportBuilder().buildReport();
|
TaskStatusReport report = cut.createTaskStatusReportBuilder().buildReport();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
InOrder inOrder = inOrder(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineImplMock);
|
InOrder inOrder = inOrder(taskanaEngineMock, taskanaEngineInternalMock, taskMonitorMapperMock);
|
||||||
inOrder.verify(taskanaEngineImplMock).openConnection();
|
inOrder.verify(taskanaEngineInternalMock).getEngine();
|
||||||
|
inOrder.verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||||
|
inOrder.verify(taskanaEngineInternalMock).openConnection();
|
||||||
inOrder.verify(taskMonitorMapperMock).getTasksCountByState(eq(null), eq(null));
|
inOrder.verify(taskMonitorMapperMock).getTasksCountByState(eq(null), eq(null));
|
||||||
inOrder.verify(taskanaEngineImplMock).returnConnection();
|
inOrder.verify(taskanaEngineInternalMock).returnConnection();
|
||||||
|
inOrder.verifyNoMoreInteractions();
|
||||||
|
verifyNoMoreInteractions(taskanaEngineMock, taskanaEngineInternalMock, taskMonitorMapperMock);
|
||||||
|
|
||||||
assertNotNull(report);
|
assertNotNull(report);
|
||||||
assertEquals(1, report.rowSize());
|
assertEquals(1, report.rowSize());
|
||||||
|
@ -103,10 +107,14 @@ public class TaskStatusReportBuilderImplTest {
|
||||||
TaskStatusReport report = cut.createTaskStatusReportBuilder().stateIn(Collections.emptyList()).buildReport();
|
TaskStatusReport report = cut.createTaskStatusReportBuilder().stateIn(Collections.emptyList()).buildReport();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
InOrder inOrder = inOrder(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineImplMock);
|
InOrder inOrder = inOrder(taskanaEngineMock, taskMonitorMapperMock, taskanaEngineInternalMock);
|
||||||
inOrder.verify(taskanaEngineImplMock).openConnection();
|
inOrder.verify(taskanaEngineInternalMock).getEngine();
|
||||||
|
inOrder.verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||||
|
inOrder.verify(taskanaEngineInternalMock).openConnection();
|
||||||
inOrder.verify(taskMonitorMapperMock).getTasksCountByState(eq(null), eq(Collections.emptyList()));
|
inOrder.verify(taskMonitorMapperMock).getTasksCountByState(eq(null), eq(Collections.emptyList()));
|
||||||
inOrder.verify(taskanaEngineImplMock).returnConnection();
|
inOrder.verify(taskanaEngineInternalMock).returnConnection();
|
||||||
|
inOrder.verifyNoMoreInteractions();
|
||||||
|
verifyNoMoreInteractions(taskanaEngineMock, taskMonitorMapperMock, taskanaEngineInternalMock);
|
||||||
|
|
||||||
assertNotNull(report);
|
assertNotNull(report);
|
||||||
assertEquals(1, report.rowSize());
|
assertEquals(1, report.rowSize());
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
package pro.taskana.impl;
|
package pro.taskana.impl;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
import org.apache.ibatis.session.SqlSession;
|
import org.apache.ibatis.session.SqlSession;
|
||||||
|
|
||||||
|
import pro.taskana.TaskanaEngine;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility class to enable unit tests to access mappers directly.
|
* Utility class to enable unit tests to access mappers directly.
|
||||||
*
|
*
|
||||||
|
@ -9,14 +13,16 @@ import org.apache.ibatis.session.SqlSession;
|
||||||
*/
|
*/
|
||||||
public class TaskanaEngineProxyForTest {
|
public class TaskanaEngineProxyForTest {
|
||||||
|
|
||||||
TaskanaEngineImpl engine;
|
TaskanaEngine.Internal engine;
|
||||||
|
|
||||||
public TaskanaEngineProxyForTest(TaskanaEngineImpl taskanaEngine) {
|
public TaskanaEngineProxyForTest(TaskanaEngine taskanaEngine) throws NoSuchFieldException, IllegalAccessException {
|
||||||
engine = taskanaEngine;
|
Field internal = TaskanaEngineImpl.class.getDeclaredField("internal");
|
||||||
|
internal.setAccessible(true);
|
||||||
|
engine = (TaskanaEngine.Internal) internal.get(taskanaEngine);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SqlSession getSqlSession() {
|
public SqlSession getSqlSession() {
|
||||||
return engine.sessionManager;
|
return engine.getSqlSession();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void openConnection() {
|
public void openConnection() {
|
||||||
|
|
|
@ -8,12 +8,13 @@ import java.util.List;
|
||||||
|
|
||||||
import org.apache.ibatis.session.SqlSession;
|
import org.apache.ibatis.session.SqlSession;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.WorkbasketAccessItem;
|
import pro.taskana.WorkbasketAccessItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -24,22 +25,18 @@ import pro.taskana.WorkbasketAccessItem;
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class WorkbasketAccessItemQueryImplTest {
|
public class WorkbasketAccessItemQueryImplTest {
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
private WorkbasketAccessItemQueryImpl workbasketAccessItemQueryImpl;
|
private WorkbasketAccessItemQueryImpl workbasketAccessItemQueryImpl;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngineInternal;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private SqlSession sqlSession;
|
private SqlSession sqlSession;
|
||||||
|
|
||||||
@Before
|
|
||||||
public void setup() {
|
|
||||||
workbasketAccessItemQueryImpl = new WorkbasketAccessItemQueryImpl(taskanaEngine);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void should_ReturnList_when_BuilderIsUsed() {
|
public void should_ReturnList_when_BuilderIsUsed() {
|
||||||
when(taskanaEngine.getSqlSession()).thenReturn(sqlSession);
|
when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession);
|
||||||
when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>());
|
when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>());
|
||||||
|
|
||||||
List<WorkbasketAccessItem> result = workbasketAccessItemQueryImpl.accessIdIn("test", "asd")
|
List<WorkbasketAccessItem> result = workbasketAccessItemQueryImpl.accessIdIn("test", "asd")
|
||||||
|
@ -49,7 +46,7 @@ public class WorkbasketAccessItemQueryImplTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void should_ReturnListWithOffset_when_BuilderIsUsed() {
|
public void should_ReturnListWithOffset_when_BuilderIsUsed() {
|
||||||
when(taskanaEngine.getSqlSession()).thenReturn(sqlSession);
|
when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession);
|
||||||
when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>());
|
when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>());
|
||||||
|
|
||||||
List<WorkbasketAccessItem> result = workbasketAccessItemQueryImpl.accessIdIn("test", "asd")
|
List<WorkbasketAccessItem> result = workbasketAccessItemQueryImpl.accessIdIn("test", "asd")
|
||||||
|
@ -59,7 +56,7 @@ public class WorkbasketAccessItemQueryImplTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void should_ReturnOneItem_when_BuilderIsUsed() {
|
public void should_ReturnOneItem_when_BuilderIsUsed() {
|
||||||
when(taskanaEngine.getSqlSession()).thenReturn(sqlSession);
|
when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession);
|
||||||
when(sqlSession.selectOne(any(), any())).thenReturn(new WorkbasketAccessItemImpl());
|
when(sqlSession.selectOne(any(), any())).thenReturn(new WorkbasketAccessItemImpl());
|
||||||
|
|
||||||
WorkbasketAccessItem result = workbasketAccessItemQueryImpl.accessIdIn("test", "asd")
|
WorkbasketAccessItem result = workbasketAccessItemQueryImpl.accessIdIn("test", "asd")
|
||||||
|
|
|
@ -11,9 +11,11 @@ import org.junit.Assert;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.WorkbasketSummary;
|
import pro.taskana.WorkbasketSummary;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -24,22 +26,26 @@ import pro.taskana.WorkbasketSummary;
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class WorkbasketQueryImplTest {
|
public class WorkbasketQueryImplTest {
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
private WorkbasketQueryImpl workbasketQueryImpl;
|
private WorkbasketQueryImpl workbasketQueryImpl;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineImpl taskanaEngine;
|
private TaskanaEngine.Internal taskanaEngineInternal;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private TaskanaEngine taskanaEngine;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private SqlSession sqlSession;
|
private SqlSession sqlSession;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
workbasketQueryImpl = new WorkbasketQueryImpl(taskanaEngine);
|
when(taskanaEngineInternal.getEngine()).thenReturn(taskanaEngine);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void should_ReturnList_when_BuilderIsUsed() {
|
public void should_ReturnList_when_BuilderIsUsed() {
|
||||||
when(taskanaEngine.getSqlSession()).thenReturn(sqlSession);
|
when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession);
|
||||||
when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>());
|
when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>());
|
||||||
|
|
||||||
List<WorkbasketSummary> result = workbasketQueryImpl
|
List<WorkbasketSummary> result = workbasketQueryImpl
|
||||||
|
@ -51,7 +57,7 @@ public class WorkbasketQueryImplTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void should_ReturnListWithOffset_when_BuilderIsUsed() {
|
public void should_ReturnListWithOffset_when_BuilderIsUsed() {
|
||||||
when(taskanaEngine.getSqlSession()).thenReturn(sqlSession);
|
when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession);
|
||||||
when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>());
|
when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>());
|
||||||
|
|
||||||
List<WorkbasketSummary> result = workbasketQueryImpl
|
List<WorkbasketSummary> result = workbasketQueryImpl
|
||||||
|
@ -63,7 +69,7 @@ public class WorkbasketQueryImplTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void should_ReturnOneItem_when_BuilderIsUsed() {
|
public void should_ReturnOneItem_when_BuilderIsUsed() {
|
||||||
when(taskanaEngine.getSqlSession()).thenReturn(sqlSession);
|
when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession);
|
||||||
when(sqlSession.selectOne(any(), any())).thenReturn(new WorkbasketSummaryImpl());
|
when(sqlSession.selectOne(any(), any())).thenReturn(new WorkbasketSummaryImpl());
|
||||||
|
|
||||||
WorkbasketSummary result = workbasketQueryImpl
|
WorkbasketSummary result = workbasketQueryImpl
|
||||||
|
|
|
@ -21,12 +21,12 @@ import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.Mockito;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import pro.taskana.CustomField;
|
import pro.taskana.CustomField;
|
||||||
import pro.taskana.TaskState;
|
import pro.taskana.TaskState;
|
||||||
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.TaskanaRole;
|
import pro.taskana.TaskanaRole;
|
||||||
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
|
@ -47,7 +47,10 @@ public class WorkbasketReportBuilderImplTest {
|
||||||
private TaskMonitorServiceImpl cut;
|
private TaskMonitorServiceImpl cut;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineImpl taskanaEngineImplMock;
|
private TaskanaEngine.Internal taskanaEngineInternalMock;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private TaskanaEngine taskanaEngineMock;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineConfiguration taskanaEngineConfiguration;
|
private TaskanaEngineConfiguration taskanaEngineConfiguration;
|
||||||
|
@ -58,9 +61,8 @@ public class WorkbasketReportBuilderImplTest {
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
Mockito.doNothing().when(taskanaEngineImplMock).openConnection();
|
when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock);
|
||||||
Mockito.doNothing().when(taskanaEngineImplMock).returnConnection();
|
when(taskanaEngineMock.getConfiguration()).thenReturn(taskanaEngineConfiguration);
|
||||||
when(taskanaEngineImplMock.getConfiguration()).thenReturn(taskanaEngineConfiguration);
|
|
||||||
when(taskanaEngineConfiguration.isGermanPublicHolidaysEnabled()).thenReturn(true);
|
when(taskanaEngineConfiguration.isGermanPublicHolidaysEnabled()).thenReturn(true);
|
||||||
when(taskanaEngineConfiguration.getCustomHolidays()).thenReturn(null);
|
when(taskanaEngineConfiguration.getCustomHolidays()).thenReturn(null);
|
||||||
}
|
}
|
||||||
|
@ -76,8 +78,8 @@ public class WorkbasketReportBuilderImplTest {
|
||||||
List<String> excludedClassificationIds = Collections.singletonList("L20000");
|
List<String> excludedClassificationIds = Collections.singletonList("L20000");
|
||||||
Map<CustomField, String> customAttributeFilter = new HashMap<>();
|
Map<CustomField, String> customAttributeFilter = new HashMap<>();
|
||||||
customAttributeFilter.put(CustomField.CUSTOM_1, "Geschaeftsstelle A");
|
customAttributeFilter.put(CustomField.CUSTOM_1, "Geschaeftsstelle A");
|
||||||
List<CombinedClassificationFilter> combinedClassificationFilter = Arrays
|
List<CombinedClassificationFilter> combinedClassificationFilter = Collections.singletonList(
|
||||||
.asList(new CombinedClassificationFilter("CLI:000000000000000000000000000000000003",
|
new CombinedClassificationFilter("CLI:000000000000000000000000000000000003",
|
||||||
"CLI:000000000000000000000000000000000008"));
|
"CLI:000000000000000000000000000000000008"));
|
||||||
|
|
||||||
List<MonitorQueryItem> expectedResult = new ArrayList<>();
|
List<MonitorQueryItem> expectedResult = new ArrayList<>();
|
||||||
|
@ -100,16 +102,18 @@ public class WorkbasketReportBuilderImplTest {
|
||||||
.combinedClassificationFilterIn(combinedClassificationFilter)
|
.combinedClassificationFilterIn(combinedClassificationFilter)
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1))
|
verify(taskanaEngineInternalMock, times(1))
|
||||||
.openConnection();
|
.openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbaskets(any(), any(), any(), any(),
|
verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbaskets(any(), any(), any(), any(),
|
||||||
any(), any(), any(), any());
|
any(), any(), any(), any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(
|
assertEquals(
|
||||||
|
@ -128,8 +132,8 @@ public class WorkbasketReportBuilderImplTest {
|
||||||
List<String> excludedClassificationIds = Collections.singletonList("L20000");
|
List<String> excludedClassificationIds = Collections.singletonList("L20000");
|
||||||
Map<CustomField, String> customAttributeFilter = new HashMap<>();
|
Map<CustomField, String> customAttributeFilter = new HashMap<>();
|
||||||
customAttributeFilter.put(CustomField.CUSTOM_1, "Geschaeftsstelle A");
|
customAttributeFilter.put(CustomField.CUSTOM_1, "Geschaeftsstelle A");
|
||||||
List<CombinedClassificationFilter> combinedClassificationFilter = Arrays
|
List<CombinedClassificationFilter> combinedClassificationFilter = Collections.singletonList(
|
||||||
.asList(new CombinedClassificationFilter("CLI:000000000000000000000000000000000003",
|
new CombinedClassificationFilter("CLI:000000000000000000000000000000000003",
|
||||||
"CLI:000000000000000000000000000000000008"));
|
"CLI:000000000000000000000000000000000008"));
|
||||||
List<TimeIntervalColumnHeader> columnHeaders = Collections.singletonList(
|
List<TimeIntervalColumnHeader> columnHeaders = Collections.singletonList(
|
||||||
new TimeIntervalColumnHeader(0, 0));
|
new TimeIntervalColumnHeader(0, 0));
|
||||||
|
@ -156,15 +160,17 @@ public class WorkbasketReportBuilderImplTest {
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbaskets(any(), any(), any(), any(), any(), any(),
|
verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbaskets(any(), any(), any(), any(), any(), any(),
|
||||||
any(), any());
|
any(), any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(
|
assertEquals(
|
||||||
|
@ -209,15 +215,17 @@ public class WorkbasketReportBuilderImplTest {
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.listTaskIdsForSelectedItems(selectedItems);
|
.listTaskIdsForSelectedItems(selectedItems);
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1))
|
verify(taskMonitorMapperMock, times(1))
|
||||||
.getTaskIdsForSelectedItems(any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false));
|
.getTaskIdsForSelectedItems(any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false));
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(expectedResult, actualResult);
|
assertEquals(expectedResult, actualResult);
|
||||||
|
@ -269,15 +277,17 @@ public class WorkbasketReportBuilderImplTest {
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1);
|
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1);
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1))
|
verify(taskMonitorMapperMock, times(1))
|
||||||
.getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any());
|
.getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(expectedResult, actualResult);
|
assertEquals(expectedResult, actualResult);
|
||||||
|
@ -327,10 +337,11 @@ public class WorkbasketReportBuilderImplTest {
|
||||||
.combinedClassificationFilterIn(combinedClassificationFilter)
|
.combinedClassificationFilterIn(combinedClassificationFilter)
|
||||||
.buildPlannedDateBasedReport();
|
.buildPlannedDateBasedReport();
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(1))
|
verify(taskanaEngineInternalMock, times(1))
|
||||||
.openConnection();
|
.openConnection();
|
||||||
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
verify(taskanaEngineMock, times(1)).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||||
verify(taskanaEngineImplMock, times(2)).getConfiguration();
|
verify(taskanaEngineMock, times(2)).getConfiguration();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).getEngine();
|
||||||
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
|
||||||
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
|
||||||
verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbasketsBasedOnPlannedDate(
|
verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbasketsBasedOnPlannedDate(
|
||||||
|
@ -342,8 +353,9 @@ public class WorkbasketReportBuilderImplTest {
|
||||||
excludedClassificationIds,
|
excludedClassificationIds,
|
||||||
customAttributeFilter,
|
customAttributeFilter,
|
||||||
combinedClassificationFilter);
|
combinedClassificationFilter);
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
|
verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock,
|
||||||
|
taskanaEngineConfiguration);
|
||||||
|
|
||||||
assertNotNull(actualResult);
|
assertNotNull(actualResult);
|
||||||
assertEquals(
|
assertEquals(
|
||||||
|
|
|
@ -5,7 +5,6 @@ import static org.hamcrest.core.IsNot.not;
|
||||||
import static org.hamcrest.core.StringStartsWith.startsWith;
|
import static org.hamcrest.core.StringStartsWith.startsWith;
|
||||||
import static org.junit.Assert.assertThat;
|
import static org.junit.Assert.assertThat;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.doNothing;
|
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.doThrow;
|
import static org.mockito.Mockito.doThrow;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
|
@ -17,20 +16,19 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.ibatis.session.SqlSession;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
|
||||||
import org.mockito.Spy;
|
import org.mockito.Spy;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
import pro.taskana.TaskQuery;
|
import pro.taskana.TaskQuery;
|
||||||
import pro.taskana.TaskService;
|
import pro.taskana.TaskService;
|
||||||
import pro.taskana.TaskSummary;
|
import pro.taskana.TaskSummary;
|
||||||
|
import pro.taskana.TaskanaEngine;
|
||||||
import pro.taskana.Workbasket;
|
import pro.taskana.Workbasket;
|
||||||
import pro.taskana.WorkbasketType;
|
import pro.taskana.WorkbasketType;
|
||||||
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
||||||
|
@ -42,7 +40,6 @@ import pro.taskana.exceptions.WorkbasketAlreadyExistException;
|
||||||
import pro.taskana.exceptions.WorkbasketInUseException;
|
import pro.taskana.exceptions.WorkbasketInUseException;
|
||||||
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
||||||
import pro.taskana.mappings.DistributionTargetMapper;
|
import pro.taskana.mappings.DistributionTargetMapper;
|
||||||
import pro.taskana.mappings.TaskMapper;
|
|
||||||
import pro.taskana.mappings.WorkbasketAccessMapper;
|
import pro.taskana.mappings.WorkbasketAccessMapper;
|
||||||
import pro.taskana.mappings.WorkbasketMapper;
|
import pro.taskana.mappings.WorkbasketMapper;
|
||||||
|
|
||||||
|
@ -61,12 +58,6 @@ public class WorkbasketServiceImplTest {
|
||||||
@Mock
|
@Mock
|
||||||
private WorkbasketMapper workbasketMapperMock;
|
private WorkbasketMapper workbasketMapperMock;
|
||||||
|
|
||||||
@Mock
|
|
||||||
private TaskMapper taskMapperMock;
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private SqlSession sqlSessionMock;
|
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private DistributionTargetMapper distributionTargetMapperMock;
|
private DistributionTargetMapper distributionTargetMapperMock;
|
||||||
|
|
||||||
|
@ -80,14 +71,17 @@ public class WorkbasketServiceImplTest {
|
||||||
private TaskQuery taskQueryMock;
|
private TaskQuery taskQueryMock;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineImpl taskanaEngineImplMock;
|
private TaskanaEngine taskanaEngine;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private TaskanaEngine.Internal taskanaEngineInternalMock;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private TaskanaEngineConfiguration taskanaEngineConfigurationMock;
|
private TaskanaEngineConfiguration taskanaEngineConfigurationMock;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngine);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -96,26 +90,26 @@ public class WorkbasketServiceImplTest {
|
||||||
WorkbasketAlreadyExistException, DomainNotFoundException {
|
WorkbasketAlreadyExistException, DomainNotFoundException {
|
||||||
final int distTargetAmount = 2;
|
final int distTargetAmount = 2;
|
||||||
WorkbasketImpl expectedWb = createTestWorkbasket(null, "Key-1");
|
WorkbasketImpl expectedWb = createTestWorkbasket(null, "Key-1");
|
||||||
doNothing().when(workbasketMapperMock).insert(expectedWb);
|
|
||||||
doReturn(expectedWb).when(cutSpy).getWorkbasket(any());
|
doReturn(expectedWb).when(cutSpy).getWorkbasket(any());
|
||||||
when(taskanaEngineImplMock.domainExists(any())).thenReturn(true);
|
when(taskanaEngineInternalMock.domainExists(any())).thenReturn(true);
|
||||||
|
|
||||||
Workbasket actualWb = cutSpy.createWorkbasket(expectedWb);
|
Workbasket actualWb = cutSpy.createWorkbasket(expectedWb);
|
||||||
cutSpy.setDistributionTargets(expectedWb.getId(), createTestDistributionTargets(distTargetAmount));
|
cutSpy.setDistributionTargets(expectedWb.getId(), createTestDistributionTargets(distTargetAmount));
|
||||||
|
|
||||||
verify(taskanaEngineImplMock, times(4)).openConnection();
|
verify(taskanaEngineInternalMock, times(4)).openConnection();
|
||||||
verify(workbasketMapperMock, times(3)).insert(any());
|
verify(workbasketMapperMock, times(3)).insert(any());
|
||||||
verify(cutSpy, times(distTargetAmount + 1)).getWorkbasket(any());
|
verify(cutSpy, times(distTargetAmount + 1)).getWorkbasket(any());
|
||||||
verify(distributionTargetMapperMock, times(1)).deleteAllDistributionTargetsBySourceId(any());
|
verify(distributionTargetMapperMock, times(1)).deleteAllDistributionTargetsBySourceId(any());
|
||||||
verify(distributionTargetMapperMock, times(distTargetAmount)).insert(any(), any());
|
verify(distributionTargetMapperMock, times(distTargetAmount)).insert(any(), any());
|
||||||
verify(workbasketMapperMock, times(3)).findByKeyAndDomain(any(), any());
|
verify(workbasketMapperMock, times(3)).findByKeyAndDomain(any(), any());
|
||||||
verify(workbasketMapperMock, times(1)).update(any());
|
verify(workbasketMapperMock, times(1)).update(any());
|
||||||
verify(taskanaEngineImplMock, times(4)).returnConnection();
|
verify(taskanaEngineInternalMock, times(4)).returnConnection();
|
||||||
verify(taskanaEngineImplMock, times(4)).checkRoleMembership(any());
|
verify(taskanaEngine, times(4)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(3)).domainExists(any());
|
verify(taskanaEngineInternalMock, times(4)).getEngine();
|
||||||
|
verify(taskanaEngineInternalMock, times(3)).domainExists(any());
|
||||||
verifyNoMoreInteractions(taskQueryMock, taskServiceMock, workbasketMapperMock, workbasketAccessMapperMock,
|
verifyNoMoreInteractions(taskQueryMock, taskServiceMock, workbasketMapperMock, workbasketAccessMapperMock,
|
||||||
distributionTargetMapperMock,
|
distributionTargetMapperMock,
|
||||||
taskanaEngineImplMock, taskanaEngineConfigurationMock);
|
taskanaEngineInternalMock, taskanaEngine, taskanaEngineConfigurationMock);
|
||||||
assertThat(actualWb.getId(), not(equalTo(null)));
|
assertThat(actualWb.getId(), not(equalTo(null)));
|
||||||
assertThat(actualWb.getId(), startsWith("WBI"));
|
assertThat(actualWb.getId(), startsWith("WBI"));
|
||||||
assertThat(actualWb.getCreated(), not(equalTo(null)));
|
assertThat(actualWb.getCreated(), not(equalTo(null)));
|
||||||
|
@ -127,8 +121,7 @@ public class WorkbasketServiceImplTest {
|
||||||
throws WorkbasketNotFoundException, NotAuthorizedException, InvalidWorkbasketException,
|
throws WorkbasketNotFoundException, NotAuthorizedException, InvalidWorkbasketException,
|
||||||
WorkbasketAlreadyExistException, DomainNotFoundException {
|
WorkbasketAlreadyExistException, DomainNotFoundException {
|
||||||
WorkbasketImpl expectedWb = createTestWorkbasket("ID-1", "Key-1");
|
WorkbasketImpl expectedWb = createTestWorkbasket("ID-1", "Key-1");
|
||||||
doNothing().when(workbasketMapperMock).insert(expectedWb);
|
when(taskanaEngineInternalMock.domainExists(any())).thenReturn(true);
|
||||||
when(taskanaEngineImplMock.domainExists(any())).thenReturn(true);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
cutSpy.createWorkbasket(expectedWb);
|
cutSpy.createWorkbasket(expectedWb);
|
||||||
|
@ -138,17 +131,18 @@ public class WorkbasketServiceImplTest {
|
||||||
doThrow(WorkbasketNotFoundException.class).when(cutSpy).getDistributionTargets(expectedWb.getId()).get(0);
|
doThrow(WorkbasketNotFoundException.class).when(cutSpy).getDistributionTargets(expectedWb.getId()).get(0);
|
||||||
|
|
||||||
} catch (WorkbasketNotFoundException e) {
|
} catch (WorkbasketNotFoundException e) {
|
||||||
verify(taskanaEngineImplMock, times(3)).openConnection();
|
verify(taskanaEngineInternalMock, times(3)).openConnection();
|
||||||
verify(workbasketMapperMock, times(1)).insert(expectedWb);
|
verify(workbasketMapperMock, times(1)).insert(expectedWb);
|
||||||
verify(workbasketMapperMock, times(1)).findById(any());
|
verify(workbasketMapperMock, times(1)).findById(any());
|
||||||
verify(workbasketMapperMock, times(1)).findByKeyAndDomain(any(), any());
|
verify(workbasketMapperMock, times(1)).findByKeyAndDomain(any(), any());
|
||||||
verify(cutSpy, times(1)).getWorkbasket(any());
|
verify(cutSpy, times(1)).getWorkbasket(any());
|
||||||
verify(taskanaEngineImplMock, times(3)).returnConnection();
|
verify(taskanaEngineInternalMock, times(3)).returnConnection();
|
||||||
verify(taskanaEngineImplMock, times(2)).checkRoleMembership(any());
|
verify(taskanaEngine, times(2)).checkRoleMembership(any());
|
||||||
verify(taskanaEngineImplMock, times(1)).domainExists(any());
|
verify(taskanaEngineInternalMock, times(2)).getEngine();
|
||||||
|
verify(taskanaEngineInternalMock, times(1)).domainExists(any());
|
||||||
verifyNoMoreInteractions(taskQueryMock, taskServiceMock, workbasketMapperMock, workbasketAccessMapperMock,
|
verifyNoMoreInteractions(taskQueryMock, taskServiceMock, workbasketMapperMock, workbasketAccessMapperMock,
|
||||||
distributionTargetMapperMock,
|
distributionTargetMapperMock,
|
||||||
taskanaEngineImplMock, taskanaEngineConfigurationMock);
|
taskanaEngineInternalMock, taskanaEngine, taskanaEngineConfigurationMock);
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -159,19 +153,18 @@ public class WorkbasketServiceImplTest {
|
||||||
public void testCreateWorkbasket_NotCreated()
|
public void testCreateWorkbasket_NotCreated()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
WorkbasketImpl expectedWb = createTestWorkbasket(null, "Key-1");
|
WorkbasketImpl expectedWb = createTestWorkbasket(null, "Key-1");
|
||||||
doNothing().when(workbasketMapperMock).insert(expectedWb);
|
|
||||||
when(workbasketMapperMock.findById(any())).thenThrow(WorkbasketNotFoundException.class);
|
when(workbasketMapperMock.findById(any())).thenThrow(WorkbasketNotFoundException.class);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
cutSpy.createWorkbasket(expectedWb);
|
cutSpy.createWorkbasket(expectedWb);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
verify(taskanaEngineImplMock, times(1)).openConnection();
|
verify(taskanaEngineInternalMock, times(1)).openConnection();
|
||||||
verify(workbasketMapperMock, times(1)).insert(expectedWb);
|
verify(workbasketMapperMock, times(1)).insert(expectedWb);
|
||||||
verify(workbasketMapperMock, times(1)).findById(expectedWb.getId());
|
verify(workbasketMapperMock, times(1)).findById(expectedWb.getId());
|
||||||
verify(taskanaEngineImplMock, times(1)).returnConnection();
|
verify(taskanaEngineInternalMock, times(1)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskQueryMock, taskServiceMock, workbasketMapperMock, workbasketAccessMapperMock,
|
verifyNoMoreInteractions(taskQueryMock, taskServiceMock, workbasketMapperMock, workbasketAccessMapperMock,
|
||||||
distributionTargetMapperMock,
|
distributionTargetMapperMock,
|
||||||
taskanaEngineImplMock, taskanaEngineConfigurationMock);
|
taskanaEngineInternalMock, taskanaEngineConfigurationMock);
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -185,13 +178,13 @@ public class WorkbasketServiceImplTest {
|
||||||
try {
|
try {
|
||||||
cutSpy.deleteWorkbasket(wb.getId());
|
cutSpy.deleteWorkbasket(wb.getId());
|
||||||
} catch (WorkbasketNotFoundException e) {
|
} catch (WorkbasketNotFoundException e) {
|
||||||
verify(taskanaEngineImplMock, times(2)).openConnection();
|
verify(taskanaEngineInternalMock, times(2)).openConnection();
|
||||||
verify(cutSpy, times(1)).getWorkbasket(wb.getId());
|
verify(cutSpy, times(1)).getWorkbasket(wb.getId());
|
||||||
verify(taskanaEngineImplMock, times(0)).getTaskService();
|
verify(taskanaEngine, times(0)).getTaskService();
|
||||||
verify(taskServiceMock, times(0)).createTaskQuery();
|
verify(taskServiceMock, times(0)).createTaskQuery();
|
||||||
verify(taskQueryMock, times(0)).workbasketIdIn(wb.getId());
|
verify(taskQueryMock, times(0)).workbasketIdIn(wb.getId());
|
||||||
verify(taskQueryMock, times(0)).count();
|
verify(taskQueryMock, times(0)).count();
|
||||||
verify(taskanaEngineImplMock, times(2)).returnConnection();
|
verify(taskanaEngineInternalMock, times(2)).returnConnection();
|
||||||
verifyNoMoreInteractions(taskQueryMock, taskServiceMock, workbasketAccessMapperMock,
|
verifyNoMoreInteractions(taskQueryMock, taskServiceMock, workbasketAccessMapperMock,
|
||||||
distributionTargetMapperMock, taskanaEngineConfigurationMock);
|
distributionTargetMapperMock, taskanaEngineConfigurationMock);
|
||||||
throw e;
|
throw e;
|
||||||
|
|
|
@ -35,7 +35,6 @@ import pro.taskana.exceptions.InvalidWorkbasketException;
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.exceptions.WorkbasketAlreadyExistException;
|
import pro.taskana.exceptions.WorkbasketAlreadyExistException;
|
||||||
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
import pro.taskana.exceptions.WorkbasketNotFoundException;
|
||||||
import pro.taskana.impl.TaskanaEngineImpl;
|
|
||||||
import pro.taskana.impl.TaskanaEngineProxyForTest;
|
import pro.taskana.impl.TaskanaEngineProxyForTest;
|
||||||
import pro.taskana.impl.WorkbasketImpl;
|
import pro.taskana.impl.WorkbasketImpl;
|
||||||
import pro.taskana.impl.configuration.DBCleaner;
|
import pro.taskana.impl.configuration.DBCleaner;
|
||||||
|
@ -54,12 +53,9 @@ import pro.taskana.security.WithAccessId;
|
||||||
public class WorkbasketServiceImplIntAutocommitTest {
|
public class WorkbasketServiceImplIntAutocommitTest {
|
||||||
|
|
||||||
private static final int SLEEP_TIME = 100;
|
private static final int SLEEP_TIME = 100;
|
||||||
private static final int THREE = 3;
|
|
||||||
static int counter = 0;
|
|
||||||
private DataSource dataSource;
|
private DataSource dataSource;
|
||||||
private TaskanaEngineConfiguration taskanaEngineConfiguration;
|
private TaskanaEngineConfiguration taskanaEngineConfiguration;
|
||||||
private TaskanaEngine taskanaEngine;
|
private TaskanaEngine taskanaEngine;
|
||||||
private TaskanaEngineImpl taskanaEngineImpl;
|
|
||||||
private WorkbasketService workBasketService;
|
private WorkbasketService workBasketService;
|
||||||
private Instant now;
|
private Instant now;
|
||||||
|
|
||||||
|
@ -76,8 +72,7 @@ public class WorkbasketServiceImplIntAutocommitTest {
|
||||||
taskanaEngineConfiguration = new TaskanaEngineConfiguration(dataSource, false,
|
taskanaEngineConfiguration = new TaskanaEngineConfiguration(dataSource, false,
|
||||||
TaskanaEngineConfigurationTest.getSchemaName());
|
TaskanaEngineConfigurationTest.getSchemaName());
|
||||||
taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine();
|
taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine();
|
||||||
taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine;
|
taskanaEngine.setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT);
|
||||||
taskanaEngineImpl.setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT);
|
|
||||||
workBasketService = taskanaEngine.getWorkbasketService();
|
workBasketService = taskanaEngine.getWorkbasketService();
|
||||||
DBCleaner cleaner = new DBCleaner();
|
DBCleaner cleaner = new DBCleaner();
|
||||||
cleaner.clearDb(dataSource, false);
|
cleaner.clearDb(dataSource, false);
|
||||||
|
@ -187,11 +182,11 @@ public class WorkbasketServiceImplIntAutocommitTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateModifiedTimestamps(Workbasket basket2, Workbasket basket3, Workbasket basket4,
|
private void updateModifiedTimestamps(Workbasket basket2, Workbasket basket3, Workbasket basket4,
|
||||||
Workbasket basket1) {
|
Workbasket basket1) throws NoSuchFieldException, IllegalAccessException {
|
||||||
// created and modified timestamps are set by WorkbasketServiceImpl to 'now' when the workbasket is created
|
// created and modified timestamps are set by WorkbasketServiceImpl to 'now' when the workbasket is created
|
||||||
// in order to create timestamps distict from the current time, we must use the mapper directly to bypass
|
// in order to create timestamps distict from the current time, we must use the mapper directly to bypass
|
||||||
// WorkbasketServiceImpl
|
// WorkbasketServiceImpl
|
||||||
TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest(taskanaEngineImpl);
|
TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest(taskanaEngine);
|
||||||
SqlSession session = engineProxy.getSqlSession();
|
SqlSession session = engineProxy.getSqlSession();
|
||||||
WorkbasketMapper mapper = session.getMapper(WorkbasketMapper.class);
|
WorkbasketMapper mapper = session.getMapper(WorkbasketMapper.class);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue