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 cbe85c2cc789094d59f993296c5c0bf80e0912c4..b5c7450d7db10896d1236992795e82ebfbbd3024 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 117007751160ad3497bebe5bceeebee71bda9f30..e45cf0c5ea6865c2ac48d04ef2b4659eaef006f5 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 917721bcc2b73067704837a0198a507d9646c066..cbe0b33266a0e4caeb55ff62a33a49d5a118d647 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 1a7096f7e1f2959aa66879fca472a5c7d1c70a7d..d5db673d6d9fd1d1a677ba7b856d078749c4e937 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 ae6da3fb0208c5f278410258ef3eedde4ea20396..101aa3e5d3207034ce5135c79d276f6711c4dbae 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 0000000000000000000000000000000000000000..5350bfe6aec39194a4411b0f70bb6b823401dcd2 --- /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 1fddb7f67d24b41731be1a301bebd1e66f6395dd..b6ccb96e0cbc7f8ce206970c8b46a990ab1133ac 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 64f788c686062f3730126a06c748614f0fe37004..f0a59908e4310f009bab915f55f7342cd59f1b4b 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 0000000000000000000000000000000000000000..0338b6aca632c7cdc3966d4921bd069b221c5daa --- /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 d93e76888e04862ae8bfa011eeb051265e377019..2f3526d0ddb88bafd3ed3ca20fdbe4a8ba7ffce7 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 44d49b6e4be8fa0de5e79417a107503a9954a381..dadb3df633cd0051f47c2f159afdaee928742b55 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 2e1532900d4a030777c1ba85b634c3a7f4e0eb03..e9dcb7ed1d328e0e017cd48f31a2116787d4ed11 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 ------------------------------------------------------------------------------------