From 459fcb72595f12a9d02a15672a3a676c25790d06 Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Wed, 8 Apr 2009 11:57:27 +0000 Subject: [PATCH] [LMS-825] added code generation using sequence (not used yet during registration) SVN: 10629 --- .../business/bo/AbstractBusinessObject.java | 17 ++++ .../server/business/bo/ExperimentBO.java | 5 ++ .../generic/server/business/bo/SampleBO.java | 7 ++ .../server/dataaccess/IDAOFactory.java | 4 + .../server/dataaccess/db/AbstractDAO.java | 16 +++- .../server/dataaccess/db/CodeSequenceDAO.java | 43 ++++++++++ .../server/dataaccess/db/DAOFactory.java | 8 ++ .../server/dataaccess/db/ExternalDataDAO.java | 32 ++++--- .../dataaccess/db/ICodeSequenceDAO.java | 29 +++++++ .../generic/shared/dto/SequenceNames.java | 84 ++++++++++--------- openbis/source/sql/generic/032/schema-032.sql | 1 + .../migration/migration-031-032.sql | 6 ++ 12 files changed, 190 insertions(+), 62 deletions(-) create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/CodeSequenceDAO.java create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ICodeSequenceDAO.java diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBusinessObject.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBusinessObject.java index cbe85c2cc78..b5c7450d7db 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBusinessObject.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBusinessObject.java @@ -39,6 +39,7 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.IRoleAssignmentDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleTypeDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IVocabularyDAO; +import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.ICodeSequenceDAO; import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; @@ -77,6 +78,17 @@ abstract class AbstractBusinessObject implements IDAOFactory DataAccessExceptionTranslator.throwException(exception, subject); } + /** + * @return Generated code for given <var>entityKind</var>. The code has a prefix that depends on + * <var>entityKind</var> and a sufix witch is a unique number. + */ + protected String createCode(EntityKind entityKind) + { + final long id = getCodeSequenceDAO().getNextCodeSequenceId(); + final String code = String.valueOf(entityKind.name().charAt(0)) + id; + return code; + } + // // IDAOFactory // @@ -180,4 +192,9 @@ abstract class AbstractBusinessObject implements IDAOFactory { return daoFactory.getMaterialDAO(); } + + public ICodeSequenceDAO getCodeSequenceDAO() + { + return daoFactory.getCodeSequenceDAO(); + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java index 11700775116..e45cf0c5ea6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java @@ -336,4 +336,9 @@ public final class ExperimentBO extends AbstractBusinessObject implements IExper properties, registrator)); } + public void setGeneratedCode() + { + final String code = createCode(EntityKind.EXPERIMENT); + experiment.setCode(code); + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBO.java index 917721bcc2b..cbe0b33266a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBO.java @@ -39,6 +39,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SourceType; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.IdentifierHelper; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; +import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; /** * The unique {@link ISampleBO} implementation. @@ -298,4 +299,10 @@ public final class SampleBO extends AbstractSampleBusinessObject implements ISam sample.setProperties(entityPropertiesConverter.updateProperties(existingProperties, type, properties, registrator)); } + + public void setGeneratedCode() + { + final String code = createCode(EntityKind.SAMPLE); + sample.setCode(code); + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDAOFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDAOFactory.java index 1a7096f7e1f..d5db673d6d9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDAOFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDAOFactory.java @@ -16,6 +16,7 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess; +import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.ICodeSequenceDAO; import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; /** @@ -88,4 +89,7 @@ public interface IDAOFactory extends IAuthorizationDAOFactory */ public IMaterialDAO getMaterialDAO(); + /** Returns an implementation of {@link ICodeSequenceDAO} */ + public ICodeSequenceDAO getCodeSequenceDAO(); + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAO.java index ae6da3fb020..101aa3e5d32 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAO.java @@ -20,6 +20,8 @@ import java.sql.SQLException; import java.util.Arrays; import java.util.List; +import net.sf.beanlib.hibernate3.Hibernate3SequenceGenerator; + import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.SQLQuery; @@ -104,8 +106,8 @@ public abstract class AbstractDAO extends HibernateDaoSupport /** * Casts given <var>list</var> to specified type. * <p> - * The purpose of this method is to avoid <code>SuppressWarnings("unchecked")</code> in - * calling methods. + * The purpose of this method is to avoid <code>SuppressWarnings("unchecked")</code> in calling + * methods. * </p> */ @SuppressWarnings("unchecked") @@ -117,8 +119,8 @@ public abstract class AbstractDAO extends HibernateDaoSupport /** * Ensures that given {@link List} contains one and only one entity. * - * @throws EmptyResultDataAccessException if given <var>entities</var> are <code>null</code> - * or empty. + * @throws EmptyResultDataAccessException if given <var>entities</var> are <code>null</code> or + * empty. * @throws IncorrectResultSizeDataAccessException if more than one entity is found in given * {@link List}. */ @@ -218,4 +220,10 @@ public abstract class AbstractDAO extends HibernateDaoSupport { return objects; } + + protected final long getNextSequenceId(String sequenceName) + { + return Hibernate3SequenceGenerator.nextval(sequenceName, getSession(true)); + } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/CodeSequenceDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/CodeSequenceDAO.java new file mode 100644 index 00000000000..5350bfe6aec --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/CodeSequenceDAO.java @@ -0,0 +1,43 @@ +/* + * Copyright 2009 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.server.dataaccess.db; + +import org.hibernate.SessionFactory; + +import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SequenceNames; + +/** + * <i>Data Access Object</i> implementation for sequence named {@link SequenceNames#CODE_SEQUENCE}. + * + * @author Piotr Buczek + */ +public class CodeSequenceDAO extends AbstractDAO implements ICodeSequenceDAO +{ + + protected CodeSequenceDAO(final SessionFactory sessionFactory, + final DatabaseInstancePE databaseInstance) + { + super(sessionFactory, databaseInstance); + } + + public long getNextCodeSequenceId() + { + return getNextSequenceId(SequenceNames.CODE_SEQUENCE); + } + +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DAOFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DAOFactory.java index 1fddb7f67d2..b6ccb96e0cb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DAOFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DAOFactory.java @@ -78,6 +78,8 @@ public final class DAOFactory extends AuthorizationDAOFactory implements IDAOFac private final IMaterialDAO materialDAO; + private final ICodeSequenceDAO codeSequenceDAO; + public DAOFactory(final DatabaseConfigurationContext context, final SessionFactory sessionFactory) { @@ -95,6 +97,7 @@ public final class DAOFactory extends AuthorizationDAOFactory implements IDAOFac fileFormatTypeDAO = new FileFormatTypeDAO(sessionFactory, databaseInstance); locatorTypeDAO = new LocatorTypeDAO(sessionFactory, databaseInstance); materialDAO = new MaterialDAO(sessionFactory, databaseInstance); + codeSequenceDAO = new CodeSequenceDAO(sessionFactory, databaseInstance); final EntityKind[] entityKinds = EntityKind.values(); for (final EntityKind entityKind : entityKinds) { @@ -179,4 +182,9 @@ public final class DAOFactory extends AuthorizationDAOFactory implements IDAOFac { return materialDAO; } + + public ICodeSequenceDAO getCodeSequenceDAO() + { + return codeSequenceDAO; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java index 64f788c6860..f0a59908e43 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java @@ -19,8 +19,6 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess.db; import java.util.Date; import java.util.List; -import net.sf.beanlib.hibernate3.Hibernate3SequenceGenerator; - import org.apache.commons.lang.time.DateFormatUtils; import org.apache.log4j.Logger; import org.hibernate.SessionFactory; @@ -54,13 +52,13 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.TableNames; final class ExternalDataDAO extends AbstractDAO implements IExternalDataDAO { private static final String EXTERNAL_DATA_UPDATE_TEMPLATE = - "insert into %s (data_id, location, loty_id, ffty_id, is_complete, cvte_id_stor_fmt) " - + "values (%d, '%s', %d, %d, '%c', %d)"; - + "insert into %s (data_id, location, loty_id, ffty_id, is_complete, cvte_id_stor_fmt) " + + "values (%d, '%s', %d, %d, '%c', %d)"; + private final static String DATA_CODE_DATE_FORMAT_PATTERN = "yyyyMMddHHmmssSSS"; - + private final static Class<ExternalDataPE> ENTITY_CLASS = ExternalDataPE.class; - + private final static Class<DataPE> ENTITY_SUPER_CLASS = DataPE.class; private static final Logger operationLog = @@ -85,8 +83,8 @@ final class ExternalDataDAO extends AbstractDAO implements IExternalDataDAO final List<ExternalDataPE> list = cast(getHibernateTemplate().find( - String.format("from %s e where e.%s = ? and e.deleted = false", TABLE_NAME, sourceType - .getFieldName()), toArray(sample))); + String.format("from %s e where e.%s = ? and e.deleted = false", TABLE_NAME, + sourceType.getFieldName()), toArray(sample))); if (operationLog.isDebugEnabled()) { operationLog.debug(String.format( @@ -134,8 +132,7 @@ final class ExternalDataDAO extends AbstractDAO implements IExternalDataDAO public String createDataSetCode() { - long id = - Hibernate3SequenceGenerator.nextval(SequenceNames.DATA_SEQUENCE, getSession(true)); + long id = getNextSequenceId(SequenceNames.DATA_SEQUENCE); return DateFormatUtils.format(new Date(), DATA_CODE_DATE_FORMAT_PATTERN) + "-" + Long.toString(id); } @@ -143,7 +140,7 @@ final class ExternalDataDAO extends AbstractDAO implements IExternalDataDAO public void createDataSet(DataPE dataset) { assert dataset != null : "Unspecified data set."; - + dataset.setCode(CodeConverter.tryToDatabase(dataset.getCode())); final HibernateTemplate template = getHibernateTemplate(); template.save(dataset); @@ -168,10 +165,8 @@ final class ExternalDataDAO extends AbstractDAO implements IExternalDataDAO if (loaded instanceof ExternalDataPE == false) { String location = externalData.getLocation(); - Long locatorTypeID = externalData - .getLocatorType().getId(); - Long fileFormatTypeID = externalData.getFileFormatType() - .getId(); + Long locatorTypeID = externalData.getLocatorType().getId(); + Long fileFormatTypeID = externalData.getFileFormatType().getId(); char complete = externalData.getComplete().name().charAt(0); Long storageFormatTermID = externalData.getStorageFormatVocabularyTerm().getId(); final String sql = @@ -189,10 +184,11 @@ final class ExternalDataDAO extends AbstractDAO implements IExternalDataDAO } } - public void markAsDeleted(ExternalDataPE dataSet, PersonPE registrator, String description, String reason) + public void markAsDeleted(ExternalDataPE dataSet, PersonPE registrator, String description, + String reason) { assert dataSet != null : "Unspecified data set."; - + dataSet.setDeleted(true); EventPE event = new EventPE(); event.setEventType(EventType.DELETION); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ICodeSequenceDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ICodeSequenceDAO.java new file mode 100644 index 00000000000..0338b6aca63 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ICodeSequenceDAO.java @@ -0,0 +1,29 @@ +/* + * Copyright 2009 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.server.dataaccess.db; + +import ch.systemsx.cisd.openbis.generic.shared.dto.SequenceNames; + +/** + * <i>Data Access Object</i> for sequence named {@link SequenceNames#CODE_SEQUENCE}. + * + * @author Piotr Buczek + */ +public interface ICodeSequenceDAO +{ + public long getNextCodeSequenceId(); +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SequenceNames.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SequenceNames.java index d93e76888e0..2f3526d0ddb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SequenceNames.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SequenceNames.java @@ -21,81 +21,85 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; * * @author Christian Ribeaud */ -public final class SequenceNames { +public final class SequenceNames +{ - public static final String CONTROLLED_VOCABULARY_SEQUENCE = "CONTROLLED_VOCABULARY_ID_SEQ"; + public static final String CONTROLLED_VOCABULARY_SEQUENCE = "CONTROLLED_VOCABULARY_ID_SEQ"; - public static final String CONTROLLED_VOCABULARY_TERM_SEQUENCE = "CVTE_ID_SEQ"; + public static final String CONTROLLED_VOCABULARY_TERM_SEQUENCE = "CVTE_ID_SEQ"; - public static final String DATA_SEQUENCE = "DATA_ID_SEQ"; + public static final String DATA_SEQUENCE = "DATA_ID_SEQ"; - public static final String DATA_SET_RELATIONSHIP_SEQUENCE = "DATA_SET_RELATIONSHIP_ID_SEQ"; + public static final String DATA_SET_RELATIONSHIP_SEQUENCE = "DATA_SET_RELATIONSHIP_ID_SEQ"; - public static final String DATA_SET_TYPE_SEQUENCE = "DATA_SET_TYPE_ID_SEQ"; + public static final String DATA_SET_TYPE_SEQUENCE = "DATA_SET_TYPE_ID_SEQ"; - public static final String DATA_STORE_SEQUENCE = "DATA_STORE_ID_SEQ"; + public static final String DATA_STORE_SEQUENCE = "DATA_STORE_ID_SEQ"; - public static final String DATA_TYPE_SEQUENCE = "DATA_TYPE_ID_SEQ"; + public static final String DATA_TYPE_SEQUENCE = "DATA_TYPE_ID_SEQ"; - public static final String DATABASE_INSTANCE_SEQUENCE = "DATABASE_INSTANCE_ID_SEQ"; + public static final String DATABASE_INSTANCE_SEQUENCE = "DATABASE_INSTANCE_ID_SEQ"; - public static final String ATTACHMENT_CONTENT_SEQUENCE = "ATTACHMENT_CONTENT_ID_SEQ"; + public static final String ATTACHMENT_CONTENT_SEQUENCE = "ATTACHMENT_CONTENT_ID_SEQ"; - public static final String ATTACHMENT_SEQUENCE = "ATTACHMENT_ID_SEQ"; + public static final String ATTACHMENT_SEQUENCE = "ATTACHMENT_ID_SEQ"; - public static final String EXPERIMENT_PROPERTY_SEQUENCE = "EXPERIMENT_PROPERTY_ID_SEQ"; + public static final String EXPERIMENT_PROPERTY_SEQUENCE = "EXPERIMENT_PROPERTY_ID_SEQ"; - public static final String DATA_SET_PROPERTY_SEQUENCE = "DATA_SET_PROPERTY_ID_SEQ"; + public static final String DATA_SET_PROPERTY_SEQUENCE = "DATA_SET_PROPERTY_ID_SEQ"; - public static final String EXPERIMENT_SEQUENCE = "EXPERIMENT_ID_SEQ"; + public static final String EXPERIMENT_SEQUENCE = "EXPERIMENT_ID_SEQ"; - public static final String EXPERIMENT_TYPE_PROPERTY_TYPE_SEQUENCE = "ETPT_ID_SEQ"; + public static final String EXPERIMENT_TYPE_PROPERTY_TYPE_SEQUENCE = "ETPT_ID_SEQ"; - public static final String DATA_SET_TYPE_PROPERTY_TYPE_SEQUENCE = "DSTPT_ID_SEQ"; + public static final String DATA_SET_TYPE_PROPERTY_TYPE_SEQUENCE = "DSTPT_ID_SEQ"; - public static final String EXPERIMENT_TYPE_SEQUENCE = "EXPERIMENT_TYPE_ID_SEQ"; + public static final String EXPERIMENT_TYPE_SEQUENCE = "EXPERIMENT_TYPE_ID_SEQ"; - public static final String FILE_FORMAT_TYPE_SEQUENCE = "FILE_FORMAT_TYPE_ID_SEQ"; + public static final String FILE_FORMAT_TYPE_SEQUENCE = "FILE_FORMAT_TYPE_ID_SEQ"; - public static final String GROUP_SEQUENCE = "GROUP_ID_SEQ"; + public static final String GROUP_SEQUENCE = "GROUP_ID_SEQ"; - public static final String INVALIDATION_SEQUENCE = "INVALIDATION_ID_SEQ"; + public static final String INVALIDATION_SEQUENCE = "INVALIDATION_ID_SEQ"; - public static final String LOCATOR_TYPE_SEQUENCE = "LOCATOR_TYPE_ID_SEQ"; + public static final String LOCATOR_TYPE_SEQUENCE = "LOCATOR_TYPE_ID_SEQ"; - public static final String MATERIAL_BATCH_SEQUENCE = "MATERIAL_BATCH_ID_SEQ"; + public static final String MATERIAL_BATCH_SEQUENCE = "MATERIAL_BATCH_ID_SEQ"; - public static final String MATERIAL_PROPERTY_SEQUENCE = "MATERIAL_PROPERTY_ID_SEQ"; + public static final String MATERIAL_PROPERTY_SEQUENCE = "MATERIAL_PROPERTY_ID_SEQ"; - public static final String MATERIAL_SEQUENCE = "MATERIAL_ID_SEQ"; + public static final String MATERIAL_SEQUENCE = "MATERIAL_ID_SEQ"; - public static final String MATERIAL_TYPE_PROPERTY_TYPE_SEQUENCE = "MTPT_ID_SEQ"; + public static final String MATERIAL_TYPE_PROPERTY_TYPE_SEQUENCE = "MTPT_ID_SEQ"; - public static final String MATERIAL_TYPE_SEQUENCE = "MATERIAL_TYPE_ID_SEQ"; + public static final String MATERIAL_TYPE_SEQUENCE = "MATERIAL_TYPE_ID_SEQ"; - public final static String PERSON_SEQUENCE = "PERSON_ID_SEQ"; + public final static String PERSON_SEQUENCE = "PERSON_ID_SEQ"; - public static final String PROJECT_SEQUENCE = "PROJECT_ID_SEQ"; + public static final String PROJECT_SEQUENCE = "PROJECT_ID_SEQ"; - public static final String PROPERTY_TYPES_SEQUENCE = "PROPERTY_TYPE_ID_SEQ"; + public static final String PROPERTY_TYPES_SEQUENCE = "PROPERTY_TYPE_ID_SEQ"; - public static final String ROLE_ASSIGNMENT_SEQUENCE = "ROLE_ASSIGNMENT_ID_SEQ"; + public static final String ROLE_ASSIGNMENT_SEQUENCE = "ROLE_ASSIGNMENT_ID_SEQ"; - public static final String SAMPLE_INPUT_SEQUENCE = "SAMPLE_INPUT_ID_SEQ"; + public static final String SAMPLE_INPUT_SEQUENCE = "SAMPLE_INPUT_ID_SEQ"; - public static final String SAMPLE_MATERIAL_BATCH_SEQUENCE = "SAMPLE_MATERIAL_BATCH_ID_SEQ"; + public static final String SAMPLE_MATERIAL_BATCH_SEQUENCE = "SAMPLE_MATERIAL_BATCH_ID_SEQ"; - public static final String SAMPLE_PROPERTY_SEQUENCE = "SAMPLE_PROPERTY_ID_SEQ"; + public static final String SAMPLE_PROPERTY_SEQUENCE = "SAMPLE_PROPERTY_ID_SEQ"; - public static final String SAMPLE_SEQUENCE = "SAMPLE_ID_SEQ"; + public static final String SAMPLE_SEQUENCE = "SAMPLE_ID_SEQ"; - public static final String SAMPLE_TYPE_PROPERTY_TYPE_SEQUENCE = "STPT_ID_SEQ"; + public static final String SAMPLE_TYPE_PROPERTY_TYPE_SEQUENCE = "STPT_ID_SEQ"; - public static final String SAMPLE_TYPE_SEQUENCE = "SAMPLE_TYPE_ID_SEQ"; + public static final String SAMPLE_TYPE_SEQUENCE = "SAMPLE_TYPE_ID_SEQ"; - public static final String EVENT_SEQUENCE = "EVENT_ID_SEQ"; + public static final String EVENT_SEQUENCE = "EVENT_ID_SEQ"; - private SequenceNames() { - // Can not be instantiated. - } + public static final String CODE_SEQUENCE = "CODE_SEQ"; + + private SequenceNames() + { + // Can not be instantiated. + } } diff --git a/openbis/source/sql/generic/032/schema-032.sql b/openbis/source/sql/generic/032/schema-032.sql index 44d49b6e4be..dadb3df633c 100644 --- a/openbis/source/sql/generic/032/schema-032.sql +++ b/openbis/source/sql/generic/032/schema-032.sql @@ -128,6 +128,7 @@ CREATE SEQUENCE SAMPLE_TYPE_ID_SEQ; CREATE SEQUENCE STPT_ID_SEQ; CREATE SEQUENCE DATA_SET_PROPERTY_ID_SEQ; CREATE SEQUENCE DSTPT_ID_SEQ; +CREATE SEQUENCE CODE_SEQ; -- Creating primary key constraints diff --git a/openbis/source/sql/postgresql/migration/migration-031-032.sql b/openbis/source/sql/postgresql/migration/migration-031-032.sql index 2e1532900d4..e9dcb7ed1d3 100644 --- a/openbis/source/sql/postgresql/migration/migration-031-032.sql +++ b/openbis/source/sql/postgresql/migration/migration-031-032.sql @@ -57,6 +57,12 @@ DROP TABLE procedure_types; DROP SEQUENCE procedure_id_seq; DROP SEQUENCE procedure_type_id_seq; +-- ------- +-- Add CODE_SEQ +-- ------- + +CREATE SEQUENCE CODE_SEQ; + ------------------------------------------------------------------------------------ -- Purpose: Replace trigger SAMPLE_CODE_UNIQUENESS_CHECK ------------------------------------------------------------------------------------ -- GitLab