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 {
/** /**

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,16 +1,19 @@
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) {
@ -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);
@ -64,7 +67,7 @@ public class ClassificationServiceImpl implements ClassificationService {
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;
@ -27,6 +27,9 @@ 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;
private ObjectReferenceMapper objectReferenceMapper; private ObjectReferenceMapper objectReferenceMapper;
@ -74,7 +77,7 @@ 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);
@ -86,7 +89,7 @@ public class TaskServiceImpl implements TaskService {
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);

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;
@ -22,6 +22,9 @@ 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;
private WorkbasketMapper workbasketMapper; private WorkbasketMapper workbasketMapper;
@ -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
);