From e3e87a618f35d9b0778e9d6573f74cf6685ab760 Mon Sep 17 00:00:00 2001 From: kaloyane <kaloyane> Date: Fri, 6 May 2011 12:30:53 +0000 Subject: [PATCH] [LMS-2104] database changes for Virtual Datasets SVN: 21158 --- .../generic/shared/dto/ColumnNames.java | 6 ++ .../openbis/generic/shared/dto/DataPE.java | 68 +++++++++++++++++++ openbis/source/sql/generic/071/schema-071.sql | 3 +- .../migration/migration-070-071.sql | 9 +++ .../sql/postgresql/071/007=data.tsv | 20 +++--- .../071/017=database_version_logs.tsv | 2 +- .../sql/postgresql/071/finish-071.sql | 2 + .../sql/postgresql/071/schema-071.sql | 5 +- 8 files changed, 102 insertions(+), 13 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ColumnNames.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ColumnNames.java index a2f90dc93ba..1e62ff807df 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ColumnNames.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ColumnNames.java @@ -48,6 +48,10 @@ public final class ColumnNames public static final String DATA_PARENT_COLUMN = "data_id_parent"; + public static final String DATA_VIRTUAL_PARENT_COLUMN = "virt_parent_id"; + + public static final String DATA_VIRTUAL_ORDER_COLUMN = "virt_order"; + public static final String DATA_PRODUCER_CODE_COLUMN = "data_producer_code"; public static final String DATA_SET_TYPE_COLUMN = "dsty_id"; @@ -124,6 +128,8 @@ public final class ColumnNames public static final String IS_DERIVED = "is_derived"; + public static final String IS_VIRTUAL = "is_virtual"; + public static final String IS_PUBLIC = "is_public"; public static final String IS_OFFICIAL = "is_official"; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java index 6db58ad0358..fb1c4dde1bb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java @@ -16,8 +16,10 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; +import java.util.ArrayList; import java.util.Date; import java.util.HashSet; +import java.util.List; import java.util.Set; import javax.persistence.CascadeType; @@ -93,6 +95,8 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements private boolean isDerived; + private boolean isVirtual; + private PersonPE registrator; /** Registration date of the database instance. */ @@ -114,6 +118,15 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements private Set<DataPE> children = new HashSet<DataPE>(); + private DataPE virtualParent = null; + + private List<DataPE> virtualChildren = new ArrayList<DataPE>(); + + /** + * the index of this {@link DataPE} within its virtual parent. + */ + private int virtualOrder; + private DataStorePE dataStore; @ManyToOne(fetch = FetchType.LAZY) @@ -179,6 +192,7 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements return isDerived; } + /** * Set to <code>true</code> if this data set is data set is derived from a sample (otherwise it * is measured from a sample). @@ -188,6 +202,34 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements this.isDerived = isDerived; } + /** + * Returns <code>true</code> if this data set is data set is virtual data set. + */ + @Column(name = ColumnNames.IS_VIRTUAL) + public boolean isVirtual() + { + return isVirtual; + } + + /** + * Set to <code>true</code> if this data set is virtual data set. + */ + public void setVirtual(boolean isVirtual) + { + this.isVirtual = isVirtual; + } + + @Column(name = ColumnNames.DATA_VIRTUAL_ORDER_COLUMN) + public int getVirtualOrder() + { + return virtualOrder; + } + + public void setVirtualOrder(Integer virtualOrder) + { + this.virtualOrder = (virtualOrder != null) ? virtualOrder : 0; + } + /** * Returns <code>true</code> if this data set is data set is measured from a sample (otherwise * it is derived from a sample). @@ -396,6 +438,32 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements this.children.remove(child); } + @SuppressWarnings("unused") + @ManyToOne(fetch = FetchType.EAGER, targetEntity = DataPE.class) + @JoinColumn(name = ColumnNames.DATA_VIRTUAL_PARENT_COLUMN) + private DataPE getVirtualParentInternal() + { + return virtualParent; + } + + @SuppressWarnings("unused") + private void setVirtualParentInternal(final DataPE virtualParent) + { + this.virtualParent = virtualParent; + } + + + @OneToMany(mappedBy = "virtualParentInternal", fetch = FetchType.LAZY) + public List<DataPE> getVirtualChildren() + { + return virtualChildren; + } + + public void setVirtualChildren(List<DataPE> virtualChildren) + { + this.virtualChildren = virtualChildren; + } + // // AbstractIdAndCodeHolder // diff --git a/openbis/source/sql/generic/071/schema-071.sql b/openbis/source/sql/generic/071/schema-071.sql index 4505bde0c4f..d22651b0ab7 100644 --- a/openbis/source/sql/generic/071/schema-071.sql +++ b/openbis/source/sql/generic/071/schema-071.sql @@ -2,7 +2,7 @@ CREATE TABLE CONTROLLED_VOCABULARIES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID NOT NULL,IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_INTERNAL_NAMESPACE BOOLEAN_CHAR NOT NULL DEFAULT 'F',DBIN_ID TECH_ID NOT NULL, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, IS_CHOSEN_FROM_LIST BOOLEAN_CHAR NOT NULL DEFAULT TRUE, SOURCE_URI CHARACTER VARYING(250)); CREATE TABLE CONTROLLED_VOCABULARY_TERMS (ID TECH_ID NOT NULL,CODE OBJECT_NAME NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,COVO_ID TECH_ID NOT NULL,PERS_ID_REGISTERER TECH_ID NOT NULL,LABEL COLUMN_LABEL, DESCRIPTION DESCRIPTION_2000, ORDINAL ORDINAL_INT NOT NULL, IS_OFFICIAL BOOLEAN_CHAR NOT NULL DEFAULT 'T'); -CREATE TABLE DATA (ID TECH_ID NOT NULL,CODE CODE,DSTY_ID TECH_ID NOT NULL,DAST_ID TECH_ID NOT NULL,EXPE_ID TECH_ID NOT NULL,DATA_PRODUCER_CODE CODE,PRODUCTION_TIMESTAMP TIME_STAMP,SAMP_ID TECH_ID,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID,IS_PLACEHOLDER BOOLEAN_CHAR DEFAULT 'F',IS_VALID BOOLEAN_CHAR DEFAULT 'T', MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, IS_DERIVED BOOLEAN_CHAR NOT NULL); +CREATE TABLE DATA (ID TECH_ID NOT NULL,CODE CODE,DSTY_ID TECH_ID NOT NULL,DAST_ID TECH_ID NOT NULL,EXPE_ID TECH_ID NOT NULL,DATA_PRODUCER_CODE CODE,PRODUCTION_TIMESTAMP TIME_STAMP,SAMP_ID TECH_ID,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID,IS_PLACEHOLDER BOOLEAN_CHAR DEFAULT 'F',IS_VALID BOOLEAN_CHAR DEFAULT 'T', MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, IS_DERIVED BOOLEAN_CHAR NOT NULL, IS_VIRTUAL BOOLEAN_CHAR DEFAULT FALSE, VIRT_ORDER INTEGER, VIRT_PARENT_ID TECH_ID DEFAULT NULL); CREATE TABLE DATABASE_INSTANCES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,UUID CODE NOT NULL,IS_ORIGINAL_SOURCE BOOLEAN_CHAR NOT NULL DEFAULT 'F',REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP); CREATE TABLE DATA_SET_RELATIONSHIPS (DATA_ID_PARENT TECH_ID NOT NULL,DATA_ID_CHILD TECH_ID NOT NULL); CREATE TABLE DATA_STORES (ID TECH_ID NOT NULL,DBIN_ID TECH_ID NOT NULL,CODE CODE NOT NULL,DOWNLOAD_URL VARCHAR(1024) NOT NULL,REMOTE_URL VARCHAR(250) NOT NULL,SESSION_TOKEN VARCHAR(50) NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, IS_ARCHIVER_CONFIGURED BOOLEAN_CHAR NOT NULL DEFAULT 'F'); @@ -203,6 +203,7 @@ ALTER TABLE DATA ADD CONSTRAINT DATA_EXPE_FK FOREIGN KEY (EXPE_ID) REFERENCES EX ALTER TABLE DATA ADD CONSTRAINT DATA_SAMP_FK FOREIGN KEY (SAMP_ID) REFERENCES SAMPLES(ID); ALTER TABLE DATA ADD CONSTRAINT DATA_DAST_FK FOREIGN KEY (DAST_ID) REFERENCES DATA_STORES(ID); ALTER TABLE DATA ADD CONSTRAINT DATA_PERS_FK FOREIGN KEY (PERS_ID_REGISTERER) REFERENCES PERSONS(ID); +ALTER TABLE DATA ADD CONSTRAINT DATA_VIRT_PARENT_FK FOREIGN KEY (VIRT_PARENT_ID) REFERENCES DATA(ID); ALTER TABLE DATA_SET_RELATIONSHIPS ADD CONSTRAINT DSRE_DATA_FK_CHILD FOREIGN KEY (DATA_ID_CHILD) REFERENCES DATA(ID); ALTER TABLE DATA_SET_RELATIONSHIPS ADD CONSTRAINT DSRE_DATA_FK_PARENT FOREIGN KEY (DATA_ID_PARENT) REFERENCES DATA(ID); ALTER TABLE sample_relationships ADD CONSTRAINT sare_data_fk_child FOREIGN KEY (sample_id_child) REFERENCES samples(id) ON DELETE CASCADE; diff --git a/openbis/source/sql/postgresql/migration/migration-070-071.sql b/openbis/source/sql/postgresql/migration/migration-070-071.sql index 70f06537f3f..21dc4360e15 100644 --- a/openbis/source/sql/postgresql/migration/migration-070-071.sql +++ b/openbis/source/sql/postgresql/migration/migration-070-071.sql @@ -1,2 +1,11 @@ -- Migration from 070 to 071 ALTER TABLE CONTROLLED_VOCABULARY_TERMS ADD COLUMN IS_OFFICIAL BOOLEAN_CHAR NOT NULL DEFAULT 'T'; + +-- +-- Virtual data set related changes +-- +ALTER TABLE DATA ADD COLUMN IS_VIRTUAL BOOLEAN_CHAR DEFAULT false; +ALTER TABLE DATA ADD COLUMN VIRT_ORDER INTEGER; +ALTER TABLE DATA ADD COLUMN VIRT_PARENT_ID TECH_ID DEFAULT NULL; +ALTER TABLE DATA ADD CONSTRAINT DATA_VIRT_PARENT_FK FOREIGN KEY (VIRT_PARENT_ID) REFERENCES DATA(ID); + diff --git a/openbis/sourceTest/sql/postgresql/071/007=data.tsv b/openbis/sourceTest/sql/postgresql/071/007=data.tsv index facf0357eb8..93c42b91e72 100644 --- a/openbis/sourceTest/sql/postgresql/071/007=data.tsv +++ b/openbis/sourceTest/sql/postgresql/071/007=data.tsv @@ -1,10 +1,10 @@ -2 20081105092158673-1 2 \N 2008-11-05 09:21:58.688+01 2008-11-05 09:21:58.798+01 f t 2009-03-23 15:34:44.462776+01 2 1 f 982 \N -4 20081105092159188-3 2 \N 2008-11-05 09:21:59.203+01 2008-11-05 09:21:59.313+01 f t 2009-03-23 15:34:44.462776+01 2 1 t \N \N -5 20081105092159111-1 2 \N 2008-11-05 09:21:59.203+01 2009-02-09 12:20:21.646654+01 f t 2009-03-23 15:34:44.462776+01 18 1 f 1042 \N -6 20081105092159222-2 2 \N 2008-11-05 09:21:59.203+01 2009-02-09 12:21:11.479816+01 f t 2009-03-23 15:34:44.462776+01 19 1 f 1043 \N -7 20081105092159333-3 2 \N 2008-11-05 09:21:59.203+01 2009-02-09 12:21:47.815468+01 f t 2009-03-23 15:34:44.462776+01 20 1 f 1044 \N -8 20081105092259000-8 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N -9 20081105092259000-9 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N -10 20081105092259900-0 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N -11 20081105092259900-1 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N -12 20081105092359990-2 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N +2 20081105092158673-1 2 \N 2008-11-05 09:21:58.688+01 2008-11-05 09:21:58.798+01 f t 2009-03-23 15:34:44.462776+01 2 1 f 982 \N f \N \N +4 20081105092159188-3 2 \N 2008-11-05 09:21:59.203+01 2008-11-05 09:21:59.313+01 f t 2009-03-23 15:34:44.462776+01 2 1 t \N \N f \N \N +5 20081105092159111-1 2 \N 2008-11-05 09:21:59.203+01 2009-02-09 12:20:21.646654+01 f t 2009-03-23 15:34:44.462776+01 18 1 f 1042 \N f \N \N +6 20081105092159222-2 2 \N 2008-11-05 09:21:59.203+01 2009-02-09 12:21:11.479816+01 f t 2009-03-23 15:34:44.462776+01 19 1 f 1043 \N f \N \N +7 20081105092159333-3 2 \N 2008-11-05 09:21:59.203+01 2009-02-09 12:21:47.815468+01 f t 2009-03-23 15:34:44.462776+01 20 1 f 1044 \N f \N \N +8 20081105092259000-8 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N f \N \N +9 20081105092259000-9 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N f \N \N +10 20081105092259900-0 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N f \N \N +11 20081105092259900-1 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N f \N \N +12 20081105092359990-2 2 \N 2008-11-05 09:22:59.203+01 2008-11-05 09:22:59.313+01 f t 2009-03-23 15:34:44.462776+01 8 1 t \N \N f \N \N diff --git a/openbis/sourceTest/sql/postgresql/071/017=database_version_logs.tsv b/openbis/sourceTest/sql/postgresql/071/017=database_version_logs.tsv index c4dd7d4dd63..95c0ae77add 100644 --- a/openbis/sourceTest/sql/postgresql/071/017=database_version_logs.tsv +++ b/openbis/sourceTest/sql/postgresql/071/017=database_version_logs.tsv @@ -44,4 +44,4 @@ 068 source/sql/postgresql/migration/migration-067-068.sql SUCCESS 2011-03-18 14:04:55.005 \\x2d2d204d6967726174696f6e2066726f6d2030363720746f203036380a414c54455220444f4d41494e20415243484956494e475f5354415455532044524f5020434f4e53545241494e5420415243484956494e475f5354415455535f434845434b3b0a414c54455220444f4d41494e20415243484956494e475f5354415455532041444420434f4e53545241494e5420415243484956494e475f5354415455535f434845434b20434845434b202856414c554520494e2028274c4f434b4544272c2027415641494c41424c45272c20274152434849564544272c2027415243484956455f50454e44494e47272c2027554e415243484956455f50454e44494e47272c20274241434b55505f50454e44494e472729293b0a0a0a \N 069 source/sql/postgresql/migration/migration-068-069.sql SUCCESS 2011-04-04 14:23:35.016 \\x2d2d204d6967726174696f6e2066726f6d2030363820746f203036390a0a43524541544520494e44455820534150525f4d4150525f464b5f49204f4e2053414d504c455f50524f5045525449455320284d4154455f50524f505f4944293b0a43524541544520494e44455820455850525f4d4150525f464b5f49204f4e204558504552494d454e545f50524f5045525449455320284d4154455f50524f505f4944293b0a43524541544520494e444558204d4150525f4d4150525f464b5f49204f4e204d4154455249414c5f50524f5045525449455320284d4154455f50524f505f4944293b0a43524541544520494e44455820445350525f4d4150525f464b5f49204f4e20444154415f5345545f50524f5045525449455320284d4154455f50524f505f4944293b0a \N 070 source/sql/postgresql/migration/migration-069-070.sql SUCCESS 2011-04-19 14:47:34.742 \\x0a2d2d204d6967726174696f6e2066726f6d2030363920746f203037300a414c544552205441424c452045585445524e414c5f444154412041444420434f4c554d4e2053504545445f48494e5420494e54454745523b0a \N -071 source/sql/postgresql/migration/migration-070-071.sql SUCCESS 2011-05-04 14:57:37.131 \\x2d2d204d6967726174696f6e2066726f6d2030373020746f203037310a414c544552205441424c4520434f4e54524f4c4c45445f564f434142554c4152595f5445524d532041444420434f4c554d4e2049535f4f4646494349414c20424f4f4c45414e5f43484152204e4f54204e554c4c2044454641554c54202754273b0a \N +071 source/sql/postgresql/migration/migration-070-071.sql SUCCESS 2011-05-06 14:01:57.781 \\x2d2d204d6967726174696f6e2066726f6d2030373020746f203037310a414c544552205441424c4520434f4e54524f4c4c45445f564f434142554c4152595f5445524d532041444420434f4c554d4e2049535f4f4646494349414c20424f4f4c45414e5f43484152204e4f54204e554c4c2044454641554c54202754273b0a0a2d2d200a2d2d205669727475616c2064617461207365742072656c61746564206368616e6765730a2d2d0a414c544552205441424c4520444154412041444420434f4c554d4e2049535f5649525455414c20424f4f4c45414e5f434841522044454641554c542066616c73653b0a414c544552205441424c4520444154412041444420434f4c554d4e20564952545f4f5244455220494e54454745523b0a414c544552205441424c4520444154412041444420434f4c554d4e20564952545f504152454e545f494420544543485f49442044454641554c54204e554c4c3b0a414c544552205441424c4520444154412041444420434f4e53545241494e5420444154415f564952545f504152454e545f464b20464f524549474e204b45592028564952545f504152454e545f494429205245464552454e4345532044415441284944293b0a0a \N diff --git a/openbis/sourceTest/sql/postgresql/071/finish-071.sql b/openbis/sourceTest/sql/postgresql/071/finish-071.sql index db8142135c1..cb507412776 100644 --- a/openbis/sourceTest/sql/postgresql/071/finish-071.sql +++ b/openbis/sourceTest/sql/postgresql/071/finish-071.sql @@ -314,6 +314,8 @@ ALTER TABLE ONLY data ADD CONSTRAINT data_pers_fk FOREIGN KEY (pers_id_registerer) REFERENCES persons(id); ALTER TABLE ONLY data ADD CONSTRAINT data_samp_fk FOREIGN KEY (samp_id) REFERENCES samples(id); +ALTER TABLE ONLY data + ADD CONSTRAINT data_virt_parent_fk FOREIGN KEY (virt_parent_id) REFERENCES data(id); ALTER TABLE ONLY data_set_properties ADD CONSTRAINT dspr_cvte_fk FOREIGN KEY (cvte_id) REFERENCES controlled_vocabulary_terms(id); ALTER TABLE ONLY data_set_properties diff --git a/openbis/sourceTest/sql/postgresql/071/schema-071.sql b/openbis/sourceTest/sql/postgresql/071/schema-071.sql index 2033ecd91db..703050cb04e 100644 --- a/openbis/sourceTest/sql/postgresql/071/schema-071.sql +++ b/openbis/sourceTest/sql/postgresql/071/schema-071.sql @@ -379,7 +379,10 @@ CREATE TABLE data ( dast_id tech_id NOT NULL, is_derived boolean_char NOT NULL, samp_id tech_id, - pers_id_registerer tech_id + pers_id_registerer tech_id, + is_virtual boolean_char DEFAULT false, + virt_order integer, + virt_parent_id tech_id DEFAULT NULL::bigint ); CREATE SEQUENCE data_id_seq START WITH 1 -- GitLab