From ff30969577288ff2efcb1c67f2bbbaf1cc6ab43c Mon Sep 17 00:00:00 2001 From: mlm483 <128052931+mlm483@users.noreply.github.com> Date: Wed, 24 Jul 2024 17:28:10 -0400 Subject: [PATCH 1/5] [BI-2254] - added migration, DAO, service --- .../daos/ExperimentProgramUserRoleDAO.java | 29 +++++++++++++++++++ .../ExperimentProgramUserRoleService.java | 24 +++++++++++++++ ...26.0__add_experiment_program_user_role.sql | 27 +++++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 src/main/java/org/breedinginsight/daos/ExperimentProgramUserRoleDAO.java create mode 100644 src/main/java/org/breedinginsight/services/ExperimentProgramUserRoleService.java create mode 100644 src/main/resources/db/migration/V1.26.0__add_experiment_program_user_role.sql diff --git a/src/main/java/org/breedinginsight/daos/ExperimentProgramUserRoleDAO.java b/src/main/java/org/breedinginsight/daos/ExperimentProgramUserRoleDAO.java new file mode 100644 index 000000000..ceb361319 --- /dev/null +++ b/src/main/java/org/breedinginsight/daos/ExperimentProgramUserRoleDAO.java @@ -0,0 +1,29 @@ +package org.breedinginsight.daos; + +import lombok.extern.slf4j.Slf4j; +import org.breedinginsight.dao.db.tables.daos.ExperimentProgramUserRoleDao; +import org.breedinginsight.dao.db.tables.pojos.ExperimentProgramUserRoleEntity; +import org.jooq.Configuration; +import org.jooq.DSLContext; + +import javax.inject.Inject; +import javax.inject.Singleton; +import java.util.List; +import java.util.UUID; + +@Slf4j +@Singleton +public class ExperimentProgramUserRoleDAO extends ExperimentProgramUserRoleDao { + + private DSLContext dsl; + + @Inject + public ExperimentProgramUserRoleDAO(Configuration config, DSLContext dsl) { + super(config); + this.dsl = dsl; + } + + public List getProgramUserRoleExperimentIds(UUID programUserRoleId){ + return fetchByProgramUserRoleId(programUserRoleId); + } +} diff --git a/src/main/java/org/breedinginsight/services/ExperimentProgramUserRoleService.java b/src/main/java/org/breedinginsight/services/ExperimentProgramUserRoleService.java new file mode 100644 index 000000000..727fe2654 --- /dev/null +++ b/src/main/java/org/breedinginsight/services/ExperimentProgramUserRoleService.java @@ -0,0 +1,24 @@ +package org.breedinginsight.services; + +import lombok.extern.slf4j.Slf4j; +import org.breedinginsight.dao.db.tables.pojos.ExperimentProgramUserRoleEntity; +import org.breedinginsight.daos.ExperimentProgramUserRoleDAO; + +import javax.inject.Inject; +import java.util.*; + +@Slf4j +public class ExperimentProgramUserRoleService { + + private final ExperimentProgramUserRoleDAO experimentProgramUserRoleDAO; + + @Inject + public ExperimentProgramUserRoleService(ExperimentProgramUserRoleDAO experimentProgramUserRoleDAO) { + this.experimentProgramUserRoleDAO = experimentProgramUserRoleDAO; + } + + public List getExperimentIdsForProgramUserRole(UUID programUserRoleId) { + return experimentProgramUserRoleDAO.getProgramUserRoleExperimentIds(programUserRoleId); + } + +} diff --git a/src/main/resources/db/migration/V1.26.0__add_experiment_program_user_role.sql b/src/main/resources/db/migration/V1.26.0__add_experiment_program_user_role.sql new file mode 100644 index 000000000..0606109b7 --- /dev/null +++ b/src/main/resources/db/migration/V1.26.0__add_experiment_program_user_role.sql @@ -0,0 +1,27 @@ +/* + * See the NOTICE file distributed with this work for additional information + * regarding copyright ownership. + * + * 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. + */ + +-- experiment_id is not tracked in bidb as seperate experiment entities, only in this linking table +CREATE TABLE experiment_program_user_role ( + like base_entity INCLUDING DEFAULTS INCLUDING CONSTRAINTS INCLUDING INDEXES, + experiment_id UUID NOT NULL, + program_user_role_id UUID NOT NULL, + like base_edit_track_entity INCLUDING DEFAULTS INCLUDING CONSTRAINTS INCLUDING INDEXES +); +ALTER TABLE experiment_program_user_role ADD FOREIGN KEY (created_by) REFERENCES bi_user (id); +ALTER TABLE experiment_program_user_role ADD FOREIGN KEY (updated_by) REFERENCES bi_user (id); +ALTER TABLE experiment_program_user_role ADD FOREIGN KEY (program_user_role_id) REFERENCES program_user_role (id); From bacccb72e9617d1bb12703650495e3cd82ea0acc Mon Sep 17 00:00:00 2001 From: mlm483 <128052931+mlm483@users.noreply.github.com> Date: Thu, 25 Jul 2024 14:53:12 -0400 Subject: [PATCH 2/5] [BI-2254] - updated naming, added method --- .../api/auth/ProgramSecuredRole.java | 3 +- .../daos/ExperimentProgramUserRoleDAO.java | 16 ++++++++++ .../ExperimentProgramUserRoleService.java | 4 +++ ....1__add_experimental_collaborator_role.sql | 31 +++++++++++++++++++ 4 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/db/migration/V1.26.1__add_experimental_collaborator_role.sql diff --git a/src/main/java/org/breedinginsight/api/auth/ProgramSecuredRole.java b/src/main/java/org/breedinginsight/api/auth/ProgramSecuredRole.java index 4294a1f7e..b2f403ac2 100644 --- a/src/main/java/org/breedinginsight/api/auth/ProgramSecuredRole.java +++ b/src/main/java/org/breedinginsight/api/auth/ProgramSecuredRole.java @@ -20,7 +20,8 @@ public enum ProgramSecuredRole { MEMBER("member"), BREEDER("breeder"), - SYSTEM_ADMIN("admin"); + SYSTEM_ADMIN("admin"), + EXPERIMENTAL_COLLABORATOR("Experimental Collaborator"); private String domain; diff --git a/src/main/java/org/breedinginsight/daos/ExperimentProgramUserRoleDAO.java b/src/main/java/org/breedinginsight/daos/ExperimentProgramUserRoleDAO.java index ceb361319..e9f2fa863 100644 --- a/src/main/java/org/breedinginsight/daos/ExperimentProgramUserRoleDAO.java +++ b/src/main/java/org/breedinginsight/daos/ExperimentProgramUserRoleDAO.java @@ -8,9 +8,12 @@ import javax.inject.Inject; import javax.inject.Singleton; +import java.time.OffsetDateTime; import java.util.List; import java.util.UUID; +import static org.breedinginsight.dao.db.Tables.EXPERIMENT_PROGRAM_USER_ROLE; + @Slf4j @Singleton public class ExperimentProgramUserRoleDAO extends ExperimentProgramUserRoleDao { @@ -26,4 +29,17 @@ public ExperimentProgramUserRoleDAO(Configuration config, DSLContext dsl) { public List getProgramUserRoleExperimentIds(UUID programUserRoleId){ return fetchByProgramUserRoleId(programUserRoleId); } + + public ExperimentProgramUserRoleEntity createExperimentProgramUserRole(UUID experimentId, UUID programUserRoleId, UUID userId){ + return dsl.insertInto(EXPERIMENT_PROGRAM_USER_ROLE) + .columns(EXPERIMENT_PROGRAM_USER_ROLE.EXPERIMENT_ID, + EXPERIMENT_PROGRAM_USER_ROLE.PROGRAM_USER_ROLE_ID, + EXPERIMENT_PROGRAM_USER_ROLE.CREATED_BY, + EXPERIMENT_PROGRAM_USER_ROLE.UPDATED_BY, + EXPERIMENT_PROGRAM_USER_ROLE.CREATED_AT, + EXPERIMENT_PROGRAM_USER_ROLE.UPDATED_AT) + .values(experimentId, programUserRoleId, userId, userId, OffsetDateTime.now(), OffsetDateTime.now()) + .returning(EXPERIMENT_PROGRAM_USER_ROLE.fields()) + .fetchOneInto(ExperimentProgramUserRoleEntity.class); + } } diff --git a/src/main/java/org/breedinginsight/services/ExperimentProgramUserRoleService.java b/src/main/java/org/breedinginsight/services/ExperimentProgramUserRoleService.java index 727fe2654..25f5525f3 100644 --- a/src/main/java/org/breedinginsight/services/ExperimentProgramUserRoleService.java +++ b/src/main/java/org/breedinginsight/services/ExperimentProgramUserRoleService.java @@ -21,4 +21,8 @@ public List getExperimentIdsForProgramUserRole( return experimentProgramUserRoleDAO.getProgramUserRoleExperimentIds(programUserRoleId); } + public ExperimentProgramUserRoleEntity createExperimentProgramUserRole(UUID experimentId, UUID programUserRoleId, UUID userId) { + return experimentProgramUserRoleDAO.createExperimentProgramUserRole(experimentId, programUserRoleId, userId); + } + } diff --git a/src/main/resources/db/migration/V1.26.1__add_experimental_collaborator_role.sql b/src/main/resources/db/migration/V1.26.1__add_experimental_collaborator_role.sql new file mode 100644 index 000000000..495cab4db --- /dev/null +++ b/src/main/resources/db/migration/V1.26.1__add_experimental_collaborator_role.sql @@ -0,0 +1,31 @@ +/* + * See the NOTICE file distributed with this work for additional information + * regarding copyright ownership. + * + * 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. + */ + +DO $$ +DECLARE + user_id UUID; +BEGIN + + user_id := (SELECT id FROM bi_user WHERE name = 'system'); + + INSERT INTO role + (domain, created_by, updated_by) + VALUES + ('Experimental Collaborator', user_id, user_id) + ; + +END $$; From 84d0c53687a577cae2dcc8e2a7f470c6a0dbd8e3 Mon Sep 17 00:00:00 2001 From: mlm483 <128052931+mlm483@users.noreply.github.com> Date: Fri, 26 Jul 2024 11:21:35 -0400 Subject: [PATCH 3/5] [BI-2254] - renamed DAO and service --- .../daos/ExperimentProgramUserRoleDAO.java | 45 ------------------- .../daos/ExperimentalCollaboratorDAO.java | 22 +++++++++ .../ExperimentProgramUserRoleService.java | 28 ------------ .../ExperimentalCollaboratorService.java | 17 +++++++ 4 files changed, 39 insertions(+), 73 deletions(-) delete mode 100644 src/main/java/org/breedinginsight/daos/ExperimentProgramUserRoleDAO.java create mode 100644 src/main/java/org/breedinginsight/daos/ExperimentalCollaboratorDAO.java delete mode 100644 src/main/java/org/breedinginsight/services/ExperimentProgramUserRoleService.java create mode 100644 src/main/java/org/breedinginsight/services/ExperimentalCollaboratorService.java diff --git a/src/main/java/org/breedinginsight/daos/ExperimentProgramUserRoleDAO.java b/src/main/java/org/breedinginsight/daos/ExperimentProgramUserRoleDAO.java deleted file mode 100644 index e9f2fa863..000000000 --- a/src/main/java/org/breedinginsight/daos/ExperimentProgramUserRoleDAO.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.breedinginsight.daos; - -import lombok.extern.slf4j.Slf4j; -import org.breedinginsight.dao.db.tables.daos.ExperimentProgramUserRoleDao; -import org.breedinginsight.dao.db.tables.pojos.ExperimentProgramUserRoleEntity; -import org.jooq.Configuration; -import org.jooq.DSLContext; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.time.OffsetDateTime; -import java.util.List; -import java.util.UUID; - -import static org.breedinginsight.dao.db.Tables.EXPERIMENT_PROGRAM_USER_ROLE; - -@Slf4j -@Singleton -public class ExperimentProgramUserRoleDAO extends ExperimentProgramUserRoleDao { - - private DSLContext dsl; - - @Inject - public ExperimentProgramUserRoleDAO(Configuration config, DSLContext dsl) { - super(config); - this.dsl = dsl; - } - - public List getProgramUserRoleExperimentIds(UUID programUserRoleId){ - return fetchByProgramUserRoleId(programUserRoleId); - } - - public ExperimentProgramUserRoleEntity createExperimentProgramUserRole(UUID experimentId, UUID programUserRoleId, UUID userId){ - return dsl.insertInto(EXPERIMENT_PROGRAM_USER_ROLE) - .columns(EXPERIMENT_PROGRAM_USER_ROLE.EXPERIMENT_ID, - EXPERIMENT_PROGRAM_USER_ROLE.PROGRAM_USER_ROLE_ID, - EXPERIMENT_PROGRAM_USER_ROLE.CREATED_BY, - EXPERIMENT_PROGRAM_USER_ROLE.UPDATED_BY, - EXPERIMENT_PROGRAM_USER_ROLE.CREATED_AT, - EXPERIMENT_PROGRAM_USER_ROLE.UPDATED_AT) - .values(experimentId, programUserRoleId, userId, userId, OffsetDateTime.now(), OffsetDateTime.now()) - .returning(EXPERIMENT_PROGRAM_USER_ROLE.fields()) - .fetchOneInto(ExperimentProgramUserRoleEntity.class); - } -} diff --git a/src/main/java/org/breedinginsight/daos/ExperimentalCollaboratorDAO.java b/src/main/java/org/breedinginsight/daos/ExperimentalCollaboratorDAO.java new file mode 100644 index 000000000..440a576c6 --- /dev/null +++ b/src/main/java/org/breedinginsight/daos/ExperimentalCollaboratorDAO.java @@ -0,0 +1,22 @@ +package org.breedinginsight.daos; + +import lombok.extern.slf4j.Slf4j; +import org.breedinginsight.dao.db.tables.daos.ExperimentProgramUserRoleDao; +import org.jooq.Configuration; +import org.jooq.DSLContext; + +import javax.inject.Inject; +import javax.inject.Singleton; + +@Slf4j +@Singleton +public class ExperimentalCollaboratorDAO extends ExperimentProgramUserRoleDao { + + private DSLContext dsl; + + @Inject + public ExperimentalCollaboratorDAO(Configuration config, DSLContext dsl) { + super(config); + this.dsl = dsl; + } +} diff --git a/src/main/java/org/breedinginsight/services/ExperimentProgramUserRoleService.java b/src/main/java/org/breedinginsight/services/ExperimentProgramUserRoleService.java deleted file mode 100644 index 25f5525f3..000000000 --- a/src/main/java/org/breedinginsight/services/ExperimentProgramUserRoleService.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.breedinginsight.services; - -import lombok.extern.slf4j.Slf4j; -import org.breedinginsight.dao.db.tables.pojos.ExperimentProgramUserRoleEntity; -import org.breedinginsight.daos.ExperimentProgramUserRoleDAO; - -import javax.inject.Inject; -import java.util.*; - -@Slf4j -public class ExperimentProgramUserRoleService { - - private final ExperimentProgramUserRoleDAO experimentProgramUserRoleDAO; - - @Inject - public ExperimentProgramUserRoleService(ExperimentProgramUserRoleDAO experimentProgramUserRoleDAO) { - this.experimentProgramUserRoleDAO = experimentProgramUserRoleDAO; - } - - public List getExperimentIdsForProgramUserRole(UUID programUserRoleId) { - return experimentProgramUserRoleDAO.getProgramUserRoleExperimentIds(programUserRoleId); - } - - public ExperimentProgramUserRoleEntity createExperimentProgramUserRole(UUID experimentId, UUID programUserRoleId, UUID userId) { - return experimentProgramUserRoleDAO.createExperimentProgramUserRole(experimentId, programUserRoleId, userId); - } - -} diff --git a/src/main/java/org/breedinginsight/services/ExperimentalCollaboratorService.java b/src/main/java/org/breedinginsight/services/ExperimentalCollaboratorService.java new file mode 100644 index 000000000..42c92fe74 --- /dev/null +++ b/src/main/java/org/breedinginsight/services/ExperimentalCollaboratorService.java @@ -0,0 +1,17 @@ +package org.breedinginsight.services; + +import lombok.extern.slf4j.Slf4j; +import org.breedinginsight.daos.ExperimentalCollaboratorDAO; + +import javax.inject.Inject; + +@Slf4j +public class ExperimentalCollaboratorService { + + private final ExperimentalCollaboratorDAO experimentalCollaboratorDAO; + + @Inject + public ExperimentalCollaboratorService(ExperimentalCollaboratorDAO experimentalCollaboratorDAO) { + this.experimentalCollaboratorDAO = experimentalCollaboratorDAO; + } +} From e54e7b7133a4502098a4debec06bd9310b093e4e Mon Sep 17 00:00:00 2001 From: Nick <53413353+nickpalladino@users.noreply.github.com> Date: Mon, 29 Jul 2024 14:45:30 -0400 Subject: [PATCH 4/5] Added file header to ExperimentCollaboratorDao --- .../daos/ExperimentalCollaboratorDAO.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/org/breedinginsight/daos/ExperimentalCollaboratorDAO.java b/src/main/java/org/breedinginsight/daos/ExperimentalCollaboratorDAO.java index 440a576c6..b3ac8bbaf 100644 --- a/src/main/java/org/breedinginsight/daos/ExperimentalCollaboratorDAO.java +++ b/src/main/java/org/breedinginsight/daos/ExperimentalCollaboratorDAO.java @@ -1,3 +1,20 @@ +/* + * See the NOTICE file distributed with this work for additional information + * regarding copyright ownership. + * + * 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 org.breedinginsight.daos; import lombok.extern.slf4j.Slf4j; From 7e0ec54d36fb11f21568f8cbd7dd2dfe364e5141 Mon Sep 17 00:00:00 2001 From: Nick <53413353+nickpalladino@users.noreply.github.com> Date: Mon, 29 Jul 2024 14:46:35 -0400 Subject: [PATCH 5/5] Added file header to ExperimentalCollaboratorService --- .../ExperimentalCollaboratorService.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/org/breedinginsight/services/ExperimentalCollaboratorService.java b/src/main/java/org/breedinginsight/services/ExperimentalCollaboratorService.java index 42c92fe74..c8aaddf07 100644 --- a/src/main/java/org/breedinginsight/services/ExperimentalCollaboratorService.java +++ b/src/main/java/org/breedinginsight/services/ExperimentalCollaboratorService.java @@ -1,3 +1,20 @@ +/* + * See the NOTICE file distributed with this work for additional information + * regarding copyright ownership. + * + * 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 org.breedinginsight.services; import lombok.extern.slf4j.Slf4j;