Merge pull request #17 from eberhardmayer/master

Added prefixes to id definitions and changed varchar(36) to char(40)
This commit is contained in:
Holger Hagen 2017-07-05 12:59:33 +02:00 committed by GitHub
commit eed76e4518
7 changed files with 70 additions and 38 deletions

View File

@ -1,9 +1,9 @@
package org.taskana;
import org.taskana.model.Classification;
import java.util.List;
import org.taskana.model.Classification;
public interface ClassificationService {
/**
@ -25,7 +25,7 @@ public interface ClassificationService {
/**
* Get a Classification for a given id
*
* @param id
* @param id
* @return the requested Classification
*/
public Classification selectClassificationById(String id);

View File

@ -7,8 +7,8 @@ import org.taskana.exceptions.TaskNotFoundException;
import org.taskana.exceptions.WorkbasketNotFoundException;
import org.taskana.model.DueWorkbasketCounter;
import org.taskana.model.Task;
import org.taskana.model.TaskStateCounter;
import org.taskana.model.TaskState;
import org.taskana.model.TaskStateCounter;
public interface TaskService {

View File

@ -1,18 +1,21 @@
package org.taskana.impl;
import java.sql.Date;
import java.time.Duration;
import java.time.LocalDate;
import java.util.List;
import org.taskana.ClassificationService;
import org.taskana.impl.util.IdGenerator;
import org.taskana.model.Classification;
import org.taskana.model.mappings.ClassificationMapper;
import java.sql.Date;
import java.time.LocalDate;
import java.util.List;
import java.util.UUID;
public class ClassificationServiceImpl implements ClassificationService {
private static final String ID_PREFIX_CLASSIFICATION = "CLI";
private ClassificationMapper classificationMapper;
public ClassificationServiceImpl(ClassificationMapper classificationMapper) {
super();
this.classificationMapper = classificationMapper;
@ -40,7 +43,7 @@ public class ClassificationServiceImpl implements ClassificationService {
@Override
public void insertClassification(Classification classification) {
classification.setId(UUID.randomUUID().toString());
classification.setId(IdGenerator.generateWithPrefix(ID_PREFIX_CLASSIFICATION));
classification.setCreated(Date.valueOf(LocalDate.now()));
classification.setModified(Date.valueOf(LocalDate.now()));
this.checkServiceLevel(classification);
@ -61,11 +64,11 @@ public class ClassificationServiceImpl implements ClassificationService {
return classificationMapper.findById(id);
}
private void checkServiceLevel(Classification classification){
if(classification.getServiceLevel()!= null){
private void checkServiceLevel(Classification classification) {
if (classification.getServiceLevel() != null) {
try {
java.time.Duration.parse(classification.getServiceLevel());
} catch (Exception e){
Duration.parse(classification.getServiceLevel());
} catch (Exception e) {
throw new IllegalArgumentException("Invalid timestamp. Please use the format 'PddDThhHmmM'");
}
}

View File

@ -5,7 +5,6 @@ import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -14,6 +13,7 @@ import org.taskana.TaskanaEngine;
import org.taskana.exceptions.NotAuthorizedException;
import org.taskana.exceptions.TaskNotFoundException;
import org.taskana.exceptions.WorkbasketNotFoundException;
import org.taskana.impl.util.IdGenerator;
import org.taskana.model.DueWorkbasketCounter;
import org.taskana.model.ObjectReference;
import org.taskana.model.Task;
@ -26,6 +26,9 @@ import org.taskana.model.mappings.TaskMapper;
public class TaskServiceImpl implements TaskService {
private static final Logger logger = LoggerFactory.getLogger(TaskServiceImpl.class);
private static final String ID_PREFIX_OBJECTR_EFERENCE = "ORI";
private static final String ID_PREFIX_TASK = "TKI";
private TaskanaEngine taskanaEngine;
private TaskMapper taskMapper;
@ -74,25 +77,25 @@ public class TaskServiceImpl implements TaskService {
taskanaEngine.getWorkbasketService().checkAuthorization(task.getWorkbasketId(), WorkbasketAuthorization.APPEND);
Timestamp now = new Timestamp(System.currentTimeMillis());
task.setId(UUID.randomUUID().toString());
task.setId(IdGenerator.generateWithPrefix(ID_PREFIX_TASK));
task.setState(TaskState.READY);
task.setCreated(now);
task.setModified(now);
task.setRead(false);
task.setTransferred(false);
// insert ObjectReference if needed.
if (task.getPrimaryObjRef() != null) {
ObjectReference objectReference = this.objectReferenceMapper.findByObjectReference(task.getPrimaryObjRef());
if (objectReference == null) {
objectReference = task.getPrimaryObjRef();
objectReference.setId(UUID.randomUUID().toString());
objectReference.setId(IdGenerator.generateWithPrefix(ID_PREFIX_OBJECTR_EFERENCE));
this.objectReferenceMapper.insert(objectReference);
}
task.setPrimaryObjRef(objectReference);
}
this.taskMapper.insert(task);
logger.debug("Task '{}' created.", task.getId());
return task;
}
@ -157,7 +160,7 @@ public class TaskServiceImpl implements TaskService {
// transfer requires TRANSFER in source and APPEND on destination
// workbasket
taskanaEngine.getWorkbasketService().checkAuthorization(destinationWorkbasketId, WorkbasketAuthorization.APPEND);
taskanaEngine.getWorkbasketService().checkAuthorization(task.getWorkbasketId(), WorkbasketAuthorization.TRANSFER);
taskanaEngine.getWorkbasketService().checkAuthorization(task.getWorkbasketId(), WorkbasketAuthorization.TRANSFER);
// if security is disabled, the implicit existance check on the
// destination workbasket has been skipped and needs to be performed
@ -173,7 +176,7 @@ public class TaskServiceImpl implements TaskService {
task.setWorkbasketId(destinationWorkbasketId);
task.setModified(Timestamp.valueOf(LocalDateTime.now()));
taskMapper.update(task);
return getTaskById(taskId);
}

View File

@ -2,7 +2,6 @@ package org.taskana.impl;
import java.sql.Timestamp;
import java.util.List;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -10,6 +9,7 @@ import org.taskana.TaskanaEngine;
import org.taskana.WorkbasketService;
import org.taskana.exceptions.NotAuthorizedException;
import org.taskana.exceptions.WorkbasketNotFoundException;
import org.taskana.impl.util.IdGenerator;
import org.taskana.model.Workbasket;
import org.taskana.model.WorkbasketAccessItem;
import org.taskana.model.WorkbasketAuthorization;
@ -21,6 +21,9 @@ import org.taskana.security.CurrentUserContext;
public class WorkbasketServiceImpl implements WorkbasketService {
private static final Logger logger = LoggerFactory.getLogger(WorkbasketServiceImpl.class);
private static final String ID_PREFIX_WORKBASKET = "WBI";
private static final String ID_PREFIX_WORKBASKET_AUTHORIZATION = "WAI";
private TaskanaEngine taskanaEngine;
@ -64,7 +67,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
workbasket.setCreated(now);
workbasket.setModified(now);
if (workbasket.getId() == null || workbasket.getId().isEmpty()) {
workbasket.setId(UUID.randomUUID().toString());
workbasket.setId(IdGenerator.generateWithPrefix(ID_PREFIX_WORKBASKET));
}
workbasketMapper.insert(workbasket);
logger.debug("Workbasket '{}' created", workbasket.getId());
@ -106,7 +109,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
@Override
public WorkbasketAccessItem createWorkbasketAuthorization(WorkbasketAccessItem workbasketAccessItem) {
workbasketAccessItem.setId(UUID.randomUUID().toString());
workbasketAccessItem.setId(IdGenerator.generateWithPrefix(ID_PREFIX_WORKBASKET_AUTHORIZATION));
workbasketAccessMapper.insert(workbasketAccessItem);
return workbasketAccessItem;
}

View File

@ -0,0 +1,13 @@
package org.taskana.impl.util;
import java.util.UUID;
public class IdGenerator {
private static final String SEPERATOR = ":";
public static String generateWithPrefix(String prefix) {
return new StringBuilder().append(prefix).append(SEPERATOR).append(UUID.randomUUID().toString()).toString();
}
}

View File

@ -1,13 +1,13 @@
CREATE TABLE TASKANA_SCHEMA_VERSION(
ID VARCHAR(36) NOT NULL,
ID CHAR(40) NOT NULL,
VERSION VARCHAR(255) NOT NULL,
PRIMARY KEY (ID)
);
INSERT INTO TASKANA_SCHEMA_VERSION VALUES ('1', '0.0.1');
CREATE TABLE TASK(
ID VARCHAR(36) NOT NULL,
TENANT_ID VARCHAR(36) NULL,
ID CHAR(40) NOT NULL,
TENANT_ID VARCHAR(32) NULL,
CREATED TIMESTAMP NULL,
CLAIMED TIMESTAMP NULL,
COMPLETED TIMESTAMP NULL,
@ -19,17 +19,17 @@ CREATE TABLE TASK(
PRIORITY INT NULL,
STATE VARCHAR(20) NULL,
TYPE VARCHAR(255) NULL,
WORKBASKETID VARCHAR(36) NULL,
WORKBASKETID CHAR(40) NULL,
OWNER VARCHAR(255) NULL,
PRIMARY_OBJ_REF_ID varchar(36) NULL,
PRIMARY_OBJ_REF_ID CHAR(40) NULL,
IS_READ BOOLEAN NOT NULL,
IS_TRANSFERRED BOOLEAN NOT NULL,
PRIMARY KEY (ID)
);
CREATE TABLE WORKBASKET(
ID VARCHAR(36) NOT NULL,
TENANT_ID VARCHAR(36) NULL,
ID CHAR(40) NOT NULL,
TENANT_ID VARCHAR(32) NULL,
CREATED TIMESTAMP NULL,
MODIFIED TIMESTAMP NULL,
NAME VARCHAR(255) NOT NULL,
@ -40,14 +40,14 @@ CREATE TABLE WORKBASKET(
);
CREATE TABLE DISTRIBUTION_TARGETS(
SOURCE_ID VARCHAR(36) NOT NULL,
TARGET_ID VARCHAR(36) NOT NULL,
SOURCE_ID CHAR(40) NOT NULL,
TARGET_ID CHAR(40) NOT NULL,
PRIMARY KEY (SOURCE_ID, TARGET_ID)
);
CREATE TABLE CLASSIFICATION(
ID VARCHAR(36) NOT NULL,
TENANT_ID VARCHAR(36) NULL,
ID CHAR(40) NOT NULL,
TENANT_ID VARCHAR(32) NULL,
PARENT_CLASSIFICATION_ID VARCHAR(255),
CATEGORY VARCHAR(255),
TYPE VARCHAR(255),
@ -61,8 +61,8 @@ CREATE TABLE CLASSIFICATION(
);
CREATE TABLE WORKBASKET_ACCESS_LIST(
ID VARCHAR(36) NOT NULL,
WORKBASKET_ID VARCHAR(36) NOT NULL,
ID CHAR(40) NOT NULL,
WORKBASKET_ID CHAR(40) NOT NULL,
USER_ID VARCHAR(255) NULL,
GROUP_ID VARCHAR(255) NULL,
READ BOOLEAN NOT NULL,
@ -72,3 +72,13 @@ CREATE TABLE WORKBASKET_ACCESS_LIST(
DISTRIBUTE BOOLEAN NOT NULL,
PRIMARY KEY (ID)
);
CREATE TABLE OBJECT_REFERENCE(
ID CHAR(40) NOT NULL,
TENANT_ID VARCHAR(32) NULL,
COMPANY VARCHAR(32) NOT NULL,
SYSTEM VARCHAR(32) NOT NULL,
SYSTEM_INSTANCE VARCHAR(32) NOT NULL,
TYPE VARCHAR(32) NOT NULL,
VALUE VARCHAR(128) NOT NULL
);