From 3550cead33a2b1f55fb6e2bcc1579cb38be18177 Mon Sep 17 00:00:00 2001
From: pkupczyk <pkupczyk>
Date: Tue, 14 Aug 2012 11:38:44 +0000
Subject: [PATCH] SP-159 / BIS-93: YeastLab: Implement a way to download
 template files as part of the Custom Import functionality: - added unique
 constraint on project.perm_id - added some junits

SVN: 26365
---
 openbis/source/sql/generic/117/schema-117.sql     |  1 +
 .../postgresql/migration/migration-116-117.sql    |  1 +
 .../server/dataaccess/db/ProjectDAOTest.java      | 15 +++++++++++++++
 .../sourceTest/sql/postgresql/117/finish-117.sql  |  2 ++
 4 files changed, 19 insertions(+)

diff --git a/openbis/source/sql/generic/117/schema-117.sql b/openbis/source/sql/generic/117/schema-117.sql
index 9a0433cb598..8255a7a00f8 100644
--- a/openbis/source/sql/generic/117/schema-117.sql
+++ b/openbis/source/sql/generic/117/schema-117.sql
@@ -366,6 +366,7 @@ ALTER TABLE MATERIAL_TYPE_PROPERTY_TYPES ADD CONSTRAINT MTPT_BK_UK UNIQUE(MATY_I
 ALTER TABLE DATA_SET_TYPES ADD CONSTRAINT DSTY_BK_UK UNIQUE(CODE,DBIN_ID);
 ALTER TABLE PERSONS ADD CONSTRAINT PERS_BK_UK UNIQUE(DBIN_ID,USER_ID);
 ALTER TABLE PROJECTS ADD CONSTRAINT PROJ_BK_UK UNIQUE(CODE,SPACE_ID);
+ALTER TABLE PROJECTS ADD CONSTRAINT PROJ_PI_UK UNIQUE(PERM_ID);
 ALTER TABLE PROPERTY_TYPES ADD CONSTRAINT PRTY_BK_UK UNIQUE(CODE,IS_INTERNAL_NAMESPACE,DBIN_ID);
 ALTER TABLE ROLE_ASSIGNMENTS ADD CONSTRAINT ROAS_PE_SPACE_BK_UK UNIQUE(PERS_ID_GRANTEE,ROLE_CODE,SPACE_ID);
 ALTER TABLE ROLE_ASSIGNMENTS ADD CONSTRAINT ROAS_PE_INSTANCE_BK_UK UNIQUE(PERS_ID_GRANTEE,ROLE_CODE,DBIN_ID);
diff --git a/openbis/source/sql/postgresql/migration/migration-116-117.sql b/openbis/source/sql/postgresql/migration/migration-116-117.sql
index 956aaa296b3..fba263e510d 100644
--- a/openbis/source/sql/postgresql/migration/migration-116-117.sql
+++ b/openbis/source/sql/postgresql/migration/migration-116-117.sql
@@ -22,3 +22,4 @@ DROP function GENERATE_PROJECT_PERM_IDS();
 
 -- change perm id column to not null
 ALTER TABLE projects ALTER COLUMN perm_id SET NOT NULL;
+ALTER TABLE PROJECTS ADD CONSTRAINT PROJ_PI_UK UNIQUE(PERM_ID);
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ProjectDAOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ProjectDAOTest.java
index 834ffce8231..0469e9e2cd0 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ProjectDAOTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ProjectDAOTest.java
@@ -111,6 +111,7 @@ public class ProjectDAOTest extends AbstractDAOTest
         final List<ProjectPE> allProjects = daoFactory.getProjectDAO().listProjects();
         Collections.sort(allProjects);
         final ProjectPE templateProject = allProjects.get(4);
+
         assertEquals(templateProject.getCode(), TESTPROJ);
 
         ProjectPE found =
@@ -143,6 +144,20 @@ public class ProjectDAOTest extends AbstractDAOTest
                 templateProject.getSpace().getCode(), templateProject.getCode()));
     }
 
+    @Test
+    public void testTryGetByPermID() throws Exception
+    {
+        ProjectPE found = daoFactory.getProjectDAO().tryGetByPermID("20120814110011738-105");
+        assertEquals(TEST_PROJECT, found.getCode());
+    }
+
+    @Test
+    public void testTryGetByPermIDNonexistent() throws Exception
+    {
+        ProjectPE found = daoFactory.getProjectDAO().tryGetByPermID("UNKNOWN-PERM-ID");
+        assertNull(found);
+    }
+
     @Test
     public void testCreateProject() throws Exception
     {
diff --git a/openbis/sourceTest/sql/postgresql/117/finish-117.sql b/openbis/sourceTest/sql/postgresql/117/finish-117.sql
index b2c13baf4d4..e553c4ff4e6 100644
--- a/openbis/sourceTest/sql/postgresql/117/finish-117.sql
+++ b/openbis/sourceTest/sql/postgresql/117/finish-117.sql
@@ -148,6 +148,8 @@ ALTER TABLE ONLY post_registration_dataset_queue
     ADD CONSTRAINT prdq_pk PRIMARY KEY (id);
 ALTER TABLE ONLY projects
     ADD CONSTRAINT proj_bk_uk UNIQUE (code, space_id);
+ALTER TABLE ONLY projects
+    ADD CONSTRAINT proj_pi_uk UNIQUE (perm_id);
 ALTER TABLE ONLY projects
     ADD CONSTRAINT proj_pk PRIMARY KEY (id);
 ALTER TABLE ONLY project_relationships_history
-- 
GitLab