Added prefixes to id definitions and changed varchar(36) to char(40)

This commit is contained in:
Eberhard Mayer 2017-07-05 11:15:16 +02:00
parent cff6901846
commit f444ad3a5d
7 changed files with 70 additions and 38 deletions

View File

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

View File

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

View File

@ -1,18 +1,21 @@
package org.taskana.impl; 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.ClassificationService;
import org.taskana.impl.util.IdGenerator;
import org.taskana.model.Classification; import org.taskana.model.Classification;
import org.taskana.model.mappings.ClassificationMapper; 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 { public class ClassificationServiceImpl implements ClassificationService {
private static final String ID_PREFIX_CLASSIFICATION = "CLI";
private ClassificationMapper classificationMapper; private ClassificationMapper classificationMapper;
public ClassificationServiceImpl(ClassificationMapper classificationMapper) { public ClassificationServiceImpl(ClassificationMapper classificationMapper) {
super(); super();
this.classificationMapper = classificationMapper; this.classificationMapper = classificationMapper;
@ -40,7 +43,7 @@ public class ClassificationServiceImpl implements ClassificationService {
@Override @Override
public void insertClassification(Classification classification) { public void insertClassification(Classification classification) {
classification.setId(UUID.randomUUID().toString()); classification.setId(IdGenerator.generateWithPrefix(ID_PREFIX_CLASSIFICATION));
classification.setCreated(Date.valueOf(LocalDate.now())); classification.setCreated(Date.valueOf(LocalDate.now()));
classification.setModified(Date.valueOf(LocalDate.now())); classification.setModified(Date.valueOf(LocalDate.now()));
this.checkServiceLevel(classification); this.checkServiceLevel(classification);
@ -61,11 +64,11 @@ public class ClassificationServiceImpl implements ClassificationService {
return classificationMapper.findById(id); return classificationMapper.findById(id);
} }
private void checkServiceLevel(Classification classification){ private void checkServiceLevel(Classification classification) {
if(classification.getServiceLevel()!= null){ if (classification.getServiceLevel() != null) {
try { try {
java.time.Duration.parse(classification.getServiceLevel()); Duration.parse(classification.getServiceLevel());
} catch (Exception e){ } catch (Exception e) {
throw new IllegalArgumentException("Invalid timestamp. Please use the format 'PddDThhHmmM'"); 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.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.UUID;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -14,6 +13,7 @@ import org.taskana.TaskanaEngine;
import org.taskana.exceptions.NotAuthorizedException; import org.taskana.exceptions.NotAuthorizedException;
import org.taskana.exceptions.TaskNotFoundException; import org.taskana.exceptions.TaskNotFoundException;
import org.taskana.exceptions.WorkbasketNotFoundException; import org.taskana.exceptions.WorkbasketNotFoundException;
import org.taskana.impl.util.IdGenerator;
import org.taskana.model.DueWorkbasketCounter; import org.taskana.model.DueWorkbasketCounter;
import org.taskana.model.ObjectReference; import org.taskana.model.ObjectReference;
import org.taskana.model.Task; import org.taskana.model.Task;
@ -26,6 +26,9 @@ import org.taskana.model.mappings.TaskMapper;
public class TaskServiceImpl implements TaskService { public class TaskServiceImpl implements TaskService {
private static final Logger logger = LoggerFactory.getLogger(TaskServiceImpl.class); 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 TaskanaEngine taskanaEngine;
private TaskMapper taskMapper; private TaskMapper taskMapper;
@ -74,25 +77,25 @@ public class TaskServiceImpl implements TaskService {
taskanaEngine.getWorkbasketService().checkAuthorization(task.getWorkbasketId(), WorkbasketAuthorization.APPEND); taskanaEngine.getWorkbasketService().checkAuthorization(task.getWorkbasketId(), WorkbasketAuthorization.APPEND);
Timestamp now = new Timestamp(System.currentTimeMillis()); Timestamp now = new Timestamp(System.currentTimeMillis());
task.setId(UUID.randomUUID().toString()); task.setId(IdGenerator.generateWithPrefix(ID_PREFIX_TASK));
task.setState(TaskState.READY); task.setState(TaskState.READY);
task.setCreated(now); task.setCreated(now);
task.setModified(now); task.setModified(now);
task.setRead(false); task.setRead(false);
task.setTransferred(false); task.setTransferred(false);
// insert ObjectReference if needed. // insert ObjectReference if needed.
if (task.getPrimaryObjRef() != null) { if (task.getPrimaryObjRef() != null) {
ObjectReference objectReference = this.objectReferenceMapper.findByObjectReference(task.getPrimaryObjRef()); ObjectReference objectReference = this.objectReferenceMapper.findByObjectReference(task.getPrimaryObjRef());
if (objectReference == null) { if (objectReference == null) {
objectReference = task.getPrimaryObjRef(); objectReference = task.getPrimaryObjRef();
objectReference.setId(UUID.randomUUID().toString()); objectReference.setId(IdGenerator.generateWithPrefix(ID_PREFIX_OBJECTR_EFERENCE));
this.objectReferenceMapper.insert(objectReference); this.objectReferenceMapper.insert(objectReference);
} }
task.setPrimaryObjRef(objectReference); task.setPrimaryObjRef(objectReference);
} }
this.taskMapper.insert(task); this.taskMapper.insert(task);
logger.debug("Task '{}' created.", task.getId()); logger.debug("Task '{}' created.", task.getId());
return task; return task;
} }
@ -157,7 +160,7 @@ public class TaskServiceImpl implements TaskService {
// transfer requires TRANSFER in source and APPEND on destination // transfer requires TRANSFER in source and APPEND on destination
// workbasket // workbasket
taskanaEngine.getWorkbasketService().checkAuthorization(destinationWorkbasketId, WorkbasketAuthorization.APPEND); 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 // if security is disabled, the implicit existance check on the
// destination workbasket has been skipped and needs to be performed // destination workbasket has been skipped and needs to be performed
@ -173,7 +176,7 @@ public class TaskServiceImpl implements TaskService {
task.setWorkbasketId(destinationWorkbasketId); task.setWorkbasketId(destinationWorkbasketId);
task.setModified(Timestamp.valueOf(LocalDateTime.now())); task.setModified(Timestamp.valueOf(LocalDateTime.now()));
taskMapper.update(task); taskMapper.update(task);
return getTaskById(taskId); return getTaskById(taskId);
} }

View File

@ -2,7 +2,6 @@ package org.taskana.impl;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.List; import java.util.List;
import java.util.UUID;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -10,6 +9,7 @@ import org.taskana.TaskanaEngine;
import org.taskana.WorkbasketService; import org.taskana.WorkbasketService;
import org.taskana.exceptions.NotAuthorizedException; import org.taskana.exceptions.NotAuthorizedException;
import org.taskana.exceptions.WorkbasketNotFoundException; import org.taskana.exceptions.WorkbasketNotFoundException;
import org.taskana.impl.util.IdGenerator;
import org.taskana.model.Workbasket; import org.taskana.model.Workbasket;
import org.taskana.model.WorkbasketAccessItem; import org.taskana.model.WorkbasketAccessItem;
import org.taskana.model.WorkbasketAuthorization; import org.taskana.model.WorkbasketAuthorization;
@ -21,6 +21,9 @@ import org.taskana.security.CurrentUserContext;
public class WorkbasketServiceImpl implements WorkbasketService { 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_AUTHORIZATION = "WAI";
private TaskanaEngine taskanaEngine; private TaskanaEngine taskanaEngine;
@ -64,7 +67,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
workbasket.setCreated(now); workbasket.setCreated(now);
workbasket.setModified(now); workbasket.setModified(now);
if (workbasket.getId() == null || workbasket.getId().isEmpty()) { if (workbasket.getId() == null || workbasket.getId().isEmpty()) {
workbasket.setId(UUID.randomUUID().toString()); workbasket.setId(IdGenerator.generateWithPrefix(ID_PREFIX_WORKBASKET));
} }
workbasketMapper.insert(workbasket); workbasketMapper.insert(workbasket);
logger.debug("Workbasket '{}' created", workbasket.getId()); logger.debug("Workbasket '{}' created", workbasket.getId());
@ -106,7 +109,7 @@ public class WorkbasketServiceImpl implements WorkbasketService {
@Override @Override
public WorkbasketAccessItem createWorkbasketAuthorization(WorkbasketAccessItem workbasketAccessItem) { public WorkbasketAccessItem createWorkbasketAuthorization(WorkbasketAccessItem workbasketAccessItem) {
workbasketAccessItem.setId(UUID.randomUUID().toString()); workbasketAccessItem.setId(IdGenerator.generateWithPrefix(ID_PREFIX_WORKBASKET_AUTHORIZATION));
workbasketAccessMapper.insert(workbasketAccessItem); workbasketAccessMapper.insert(workbasketAccessItem);
return 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( CREATE TABLE TASKANA_SCHEMA_VERSION(
ID VARCHAR(36) NOT NULL, ID CHAR(40) NOT NULL,
VERSION VARCHAR(255) NOT NULL, VERSION VARCHAR(255) NOT NULL,
PRIMARY KEY (ID) PRIMARY KEY (ID)
); );
INSERT INTO TASKANA_SCHEMA_VERSION VALUES ('1', '0.0.1'); INSERT INTO TASKANA_SCHEMA_VERSION VALUES ('1', '0.0.1');
CREATE TABLE TASK( CREATE TABLE TASK(
ID VARCHAR(36) NOT NULL, ID CHAR(40) NOT NULL,
TENANT_ID VARCHAR(36) NULL, TENANT_ID VARCHAR(32) NULL,
CREATED TIMESTAMP NULL, CREATED TIMESTAMP NULL,
CLAIMED TIMESTAMP NULL, CLAIMED TIMESTAMP NULL,
COMPLETED TIMESTAMP NULL, COMPLETED TIMESTAMP NULL,
@ -19,17 +19,17 @@ CREATE TABLE TASK(
PRIORITY INT NULL, PRIORITY INT NULL,
STATE VARCHAR(20) NULL, STATE VARCHAR(20) NULL,
TYPE VARCHAR(255) NULL, TYPE VARCHAR(255) NULL,
WORKBASKETID VARCHAR(36) NULL, WORKBASKETID CHAR(40) NULL,
OWNER VARCHAR(255) 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_READ BOOLEAN NOT NULL,
IS_TRANSFERRED BOOLEAN NOT NULL, IS_TRANSFERRED BOOLEAN NOT NULL,
PRIMARY KEY (ID) PRIMARY KEY (ID)
); );
CREATE TABLE WORKBASKET( CREATE TABLE WORKBASKET(
ID VARCHAR(36) NOT NULL, ID CHAR(40) NOT NULL,
TENANT_ID VARCHAR(36) NULL, TENANT_ID VARCHAR(32) NULL,
CREATED TIMESTAMP NULL, CREATED TIMESTAMP NULL,
MODIFIED TIMESTAMP NULL, MODIFIED TIMESTAMP NULL,
NAME VARCHAR(255) NOT NULL, NAME VARCHAR(255) NOT NULL,
@ -40,14 +40,14 @@ CREATE TABLE WORKBASKET(
); );
CREATE TABLE DISTRIBUTION_TARGETS( CREATE TABLE DISTRIBUTION_TARGETS(
SOURCE_ID VARCHAR(36) NOT NULL, SOURCE_ID CHAR(40) NOT NULL,
TARGET_ID VARCHAR(36) NOT NULL, TARGET_ID CHAR(40) NOT NULL,
PRIMARY KEY (SOURCE_ID, TARGET_ID) PRIMARY KEY (SOURCE_ID, TARGET_ID)
); );
CREATE TABLE CLASSIFICATION( CREATE TABLE CLASSIFICATION(
ID VARCHAR(36) NOT NULL, ID CHAR(40) NOT NULL,
TENANT_ID VARCHAR(36) NULL, TENANT_ID VARCHAR(32) NULL,
PARENT_CLASSIFICATION_ID VARCHAR(255), PARENT_CLASSIFICATION_ID VARCHAR(255),
CATEGORY VARCHAR(255), CATEGORY VARCHAR(255),
TYPE VARCHAR(255), TYPE VARCHAR(255),
@ -61,8 +61,8 @@ CREATE TABLE CLASSIFICATION(
); );
CREATE TABLE WORKBASKET_ACCESS_LIST( CREATE TABLE WORKBASKET_ACCESS_LIST(
ID VARCHAR(36) NOT NULL, ID CHAR(40) NOT NULL,
WORKBASKET_ID VARCHAR(36) NOT NULL, WORKBASKET_ID CHAR(40) NOT NULL,
USER_ID VARCHAR(255) NULL, USER_ID VARCHAR(255) NULL,
GROUP_ID VARCHAR(255) NULL, GROUP_ID VARCHAR(255) NULL,
READ BOOLEAN NOT NULL, READ BOOLEAN NOT NULL,
@ -72,3 +72,13 @@ CREATE TABLE WORKBASKET_ACCESS_LIST(
DISTRIBUTE BOOLEAN NOT NULL, DISTRIBUTE BOOLEAN NOT NULL,
PRIMARY KEY (ID) 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
);