diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index a508772bc..886c943f8 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -6,6 +6,7 @@ on:
branches:
- master
- develop
+ - feature/orgs
paths-ignore:
- '.github/**'
- README.md
diff --git a/build.gradle b/build.gradle
index c496469be..3f2893657 100644
--- a/build.gradle
+++ b/build.gradle
@@ -54,7 +54,7 @@ dependencies {
} else {
compile 'com.github.reportportal:commons:07566b8e'
compile 'com.github.reportportal:commons-rules:42d4dd5634'
- compile 'com.github.reportportal:commons-model:3072286352'
+ compile 'com.github.reportportal:commons-model:23adba8'
}
//https://nvd.nist.gov/vuln/detail/CVE-2020-10683 (dom4j 2.1.3 version dependency) AND https://nvd.nist.gov/vuln/detail/CVE-2019-14900
diff --git a/codecov.yml b/codecov.yml
index 78b7df448..562620472 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -7,4 +7,5 @@ ignore:
- 'com/epam/ta/reportportal/entity/oauth',
- 'com/epam/ta/reportportal/entity/bts',
- 'com/epam/ta/reportportal/entity/ldap',
- - 'com/epam/ta/reportportal/entity/widget/content/**'
\ No newline at end of file
+ - 'com/epam/ta/reportportal/entity/widget/content/**',
+ - 'com/epam/ta/reportportal/entity/organization'
diff --git a/jooq.gradle b/jooq.gradle
index b2033abed..24e729999 100644
--- a/jooq.gradle
+++ b/jooq.gradle
@@ -36,4 +36,4 @@ jooq {
generateSampleJooqSchemaSource {
enabled = false
-}
\ No newline at end of file
+}
diff --git a/project-properties.gradle b/project-properties.gradle
index f67d3868e..778fe9564 100755
--- a/project-properties.gradle
+++ b/project-properties.gradle
@@ -78,6 +78,8 @@ project.ext {
(migrationsUrl + '/migrations/76_user_bid_extension.up.sql') : 'V076__user_bid_extension.sql',
(migrationsUrl + '/migrations/77_email_server_documentation_link.up.sql') : 'V077__email_server_documentation_link.sql',
(migrationsUrl + '/migrations/78_drop_redundant_index.up.sql') : 'V078__drop_redundant_index.sql',
+ (migrationsUrl + '/migrations/83_add_slugify_function.up.sql') : 'V083__add_slugify_function.sql',
+ (migrationsUrl + '/migrations/84_organization_tables.up.sql') : 'V084__organization_tables.sql',
]
excludeTests = [
@@ -86,10 +88,7 @@ project.ext {
'com/epam/ta/reportportal/commons/accessible',
'com/epam/ta/reportportal/commons/querygen/constant',
'com/epam/ta/reportportal/exception',
- 'com/epam/ta/reportportal/entity/oauth',
- 'com/epam/ta/reportportal/entity/bts',
- 'com/epam/ta/reportportal/entity/ldap',
- 'com/epam/ta/reportportal/entity/widget/content/**'
+ 'com/epam/ta/reportportal/entity/**'
]
limits = [
'instruction': 70,
diff --git a/src/main/java/com/epam/ta/reportportal/commons/ReportPortalUser.java b/src/main/java/com/epam/ta/reportportal/commons/ReportPortalUser.java
index 7dc6c7106..02e41235f 100644
--- a/src/main/java/com/epam/ta/reportportal/commons/ReportPortalUser.java
+++ b/src/main/java/com/epam/ta/reportportal/commons/ReportPortalUser.java
@@ -18,6 +18,7 @@
import static java.util.Optional.ofNullable;
+import com.epam.ta.reportportal.entity.organization.OrganizationRole;
import com.epam.ta.reportportal.entity.project.ProjectRole;
import com.epam.ta.reportportal.entity.user.UserRole;
import com.epam.ta.reportportal.exception.ReportPortalException;
@@ -28,6 +29,10 @@
import java.util.Collections;
import java.util.Map;
import java.util.stream.Collectors;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
@@ -38,6 +43,9 @@
*
* @author Andrei Varabyeu
*/
+@Getter
+@Setter
+@EqualsAndHashCode(callSuper = false)
public class ReportPortalUser extends User {
private Long userId;
@@ -47,6 +55,8 @@ public class ReportPortalUser extends User {
private String email;
private Map projectDetails;
+ private Map organizationDetails;
+
private ReportPortalUser(String username, String password,
Collection extends GrantedAuthority> authorities, Long userId,
@@ -62,38 +72,8 @@ public static ReportPortalUserBuilder userBuilder() {
return new ReportPortalUserBuilder();
}
- public Long getUserId() {
- return userId;
- }
-
- public void setUserId(Long userId) {
- this.userId = userId;
- }
-
- public UserRole getUserRole() {
- return userRole;
- }
-
- public void setUserRole(UserRole userRole) {
- this.userRole = userRole;
- }
-
- public String getEmail() {
- return email;
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-
- public Map getProjectDetails() {
- return projectDetails;
- }
-
- public void setProjectDetails(Map projectDetails) {
- this.projectDetails = projectDetails;
- }
-
+ @Getter
+ @Setter
public static class ProjectDetails implements Serializable {
@JsonProperty(value = "id")
@@ -102,35 +82,29 @@ public static class ProjectDetails implements Serializable {
@JsonProperty(value = "name")
private String projectName;
+ @JsonProperty(value = "key")
+ private String projectKey;
+
@JsonProperty("role")
private ProjectRole projectRole;
- public ProjectDetails(Long projectId, String projectName, ProjectRole projectRole) {
+ public ProjectDetails(Long projectId, String projectName, ProjectRole projectRole,
+ String projectKey) {
this.projectId = projectId;
this.projectName = projectName;
this.projectRole = projectRole;
+ this.projectKey = projectKey;
}
public static ProjectDetailsBuilder builder() {
return new ProjectDetailsBuilder();
}
- public Long getProjectId() {
- return projectId;
- }
-
- public String getProjectName() {
- return projectName;
- }
-
- public ProjectRole getProjectRole() {
- return projectRole;
- }
-
public static class ProjectDetailsBuilder {
private Long projectId;
private String projectName;
+ private String projectKey;
private ProjectRole projectRole;
private ProjectDetailsBuilder() {
@@ -146,6 +120,11 @@ public ProjectDetailsBuilder withProjectName(String projectName) {
return this;
}
+ public ProjectDetailsBuilder withProjectKey(String projectKey) {
+ this.projectKey = projectKey;
+ return this;
+ }
+
public ProjectDetailsBuilder withProjectRole(String projectRole) {
this.projectRole = ProjectRole.forName(projectRole)
.orElseThrow(() -> new ReportPortalException(ErrorType.ROLE_NOT_FOUND, projectRole));
@@ -153,7 +132,56 @@ public ProjectDetailsBuilder withProjectRole(String projectRole) {
}
public ProjectDetails build() {
- return new ProjectDetails(projectId, projectName, projectRole);
+ return new ProjectDetails(projectId, projectName, projectRole, projectKey);
+ }
+ }
+ }
+
+ @Getter
+ @Setter
+ @AllArgsConstructor
+ public static class OrganizationDetails implements Serializable {
+
+ @JsonProperty(value = "id")
+ private Long orgId;
+
+ @JsonProperty(value = "name")
+ private String orgName;
+
+ @JsonProperty("role")
+ private OrganizationRole orgRole;
+
+ public static OrganizationDetailsBuilder builder() {
+ return new OrganizationDetailsBuilder();
+ }
+
+ public static class OrganizationDetailsBuilder {
+
+ private Long orgId;
+ private String orgName;
+ private OrganizationRole orgRole;
+
+ private OrganizationDetailsBuilder() {
+ }
+
+ public OrganizationDetailsBuilder withOrgId(Long orgId) {
+ this.orgId = orgId;
+ return this;
+ }
+
+ public OrganizationDetailsBuilder withOrgName(String orgName) {
+ this.orgName = orgName;
+ return this;
+ }
+
+ public OrganizationDetailsBuilder withProjectRole(String orgRole) {
+ this.orgRole = OrganizationRole.forName(orgRole)
+ .orElseThrow(() -> new ReportPortalException(ErrorType.ROLE_NOT_FOUND, orgRole));
+ return this;
+ }
+
+ public OrganizationDetails build() {
+ return new OrganizationDetails(orgId, orgName, orgRole);
}
}
}
diff --git a/src/main/java/com/epam/ta/reportportal/commons/querygen/FilterTarget.java b/src/main/java/com/epam/ta/reportportal/commons/querygen/FilterTarget.java
index 935f1f703..fbcd395ad 100644
--- a/src/main/java/com/epam/ta/reportportal/commons/querygen/FilterTarget.java
+++ b/src/main/java/com/epam/ta/reportportal/commons/querygen/FilterTarget.java
@@ -68,6 +68,7 @@
import static com.epam.ta.reportportal.commons.querygen.constant.ProjectCriteriaConstant.CRITERIA_ALLOCATED_STORAGE;
import static com.epam.ta.reportportal.commons.querygen.constant.ProjectCriteriaConstant.CRITERIA_PROJECT_ATTRIBUTE_NAME;
import static com.epam.ta.reportportal.commons.querygen.constant.ProjectCriteriaConstant.CRITERIA_PROJECT_CREATION_DATE;
+import static com.epam.ta.reportportal.commons.querygen.constant.ProjectCriteriaConstant.CRITERIA_PROJECT_KEY;
import static com.epam.ta.reportportal.commons.querygen.constant.ProjectCriteriaConstant.CRITERIA_PROJECT_NAME;
import static com.epam.ta.reportportal.commons.querygen.constant.ProjectCriteriaConstant.CRITERIA_PROJECT_ORGANIZATION;
import static com.epam.ta.reportportal.commons.querygen.constant.ProjectCriteriaConstant.CRITERIA_PROJECT_TYPE;
@@ -122,6 +123,7 @@
import static com.epam.ta.reportportal.jooq.Tables.ITEM_ATTRIBUTE;
import static com.epam.ta.reportportal.jooq.Tables.LAUNCH;
import static com.epam.ta.reportportal.jooq.Tables.LOG;
+import static com.epam.ta.reportportal.jooq.Tables.ORGANIZATION;
import static com.epam.ta.reportportal.jooq.Tables.PARAMETER;
import static com.epam.ta.reportportal.jooq.Tables.PATTERN_TEMPLATE;
import static com.epam.ta.reportportal.jooq.Tables.PATTERN_TEMPLATE_TEST_ITEM;
@@ -183,6 +185,8 @@ public enum FilterTarget {
PROJECT.ALLOCATED_STORAGE, Long.class).get(),
new CriteriaHolderBuilder().newBuilder(CRITERIA_PROJECT_NAME, PROJECT.NAME, String.class)
.get(),
+ new CriteriaHolderBuilder().newBuilder(CRITERIA_PROJECT_KEY, PROJECT.KEY, String.class)
+ .get(),
new CriteriaHolderBuilder().newBuilder(CRITERIA_PROJECT_ORGANIZATION,
PROJECT.ORGANIZATION, String.class).get(),
new CriteriaHolderBuilder().newBuilder(CRITERIA_PROJECT_TYPE, PROJECT.PROJECT_TYPE,
@@ -220,7 +224,10 @@ public enum FilterTarget {
protected Collection extends SelectField> selectFields() {
return Lists.newArrayList(PROJECT.ID,
PROJECT.NAME,
+ PROJECT.KEY,
+ PROJECT.SLUG,
PROJECT.ORGANIZATION,
+ PROJECT.ORGANIZATION_ID,
PROJECT.PROJECT_TYPE,
PROJECT.CREATION_DATE,
PROJECT.METADATA,
@@ -265,6 +272,8 @@ protected Field idField() {
new CriteriaHolderBuilder().newBuilder(CRITERIA_ID, PROJECT.ID, Long.class).get(),
new CriteriaHolderBuilder().newBuilder(CRITERIA_PROJECT_NAME, PROJECT.NAME, String.class)
.get(),
+ new CriteriaHolderBuilder().newBuilder(CRITERIA_PROJECT_KEY, PROJECT.KEY, String.class)
+ .get(),
new CriteriaHolderBuilder().newBuilder(CRITERIA_PROJECT_TYPE, PROJECT.PROJECT_TYPE,
String.class).get(),
@@ -293,7 +302,7 @@ protected Field idField() {
public QuerySupplier getQuery() {
SelectQuery extends Record> query = DSL.select(selectFields()).getQuery();
addFrom(query);
- query.addGroupBy(PROJECT.ID, PROJECT.CREATION_DATE, PROJECT.NAME, PROJECT.PROJECT_TYPE);
+ query.addGroupBy(PROJECT.ID, PROJECT.CREATION_DATE, PROJECT.KEY, PROJECT.PROJECT_TYPE);
QuerySupplier querySupplier = new QuerySupplier(query);
joinTables(querySupplier);
return querySupplier;
@@ -309,9 +318,12 @@ protected Collection extends SelectField> selectFields() {
DSL.max(LAUNCH.START_TIME).as(LAST_RUN),
PROJECT.ID,
PROJECT.CREATION_DATE,
+ PROJECT.KEY,
+ PROJECT.SLUG,
PROJECT.NAME,
PROJECT.PROJECT_TYPE,
- PROJECT.ORGANIZATION
+ PROJECT.ORGANIZATION,
+ PROJECT.ORGANIZATION_ID
);
}
@@ -357,6 +369,12 @@ protected Field idField() {
new CriteriaHolderBuilder().newBuilder(CRITERIA_PROJECT, PROJECT.NAME, List.class)
.withAggregateCriteria(DSL.arrayAgg(PROJECT.NAME).toString())
.get(),
+ new CriteriaHolderBuilder().newBuilder(CRITERIA_PROJECT, PROJECT.KEY, List.class)
+ .withAggregateCriteria(DSL.arrayAgg(PROJECT.KEY).toString())
+ .get(),
+ new CriteriaHolderBuilder().newBuilder(CRITERIA_PROJECT, PROJECT.ORGANIZATION_ID, List.class)
+ .withAggregateCriteria(DSL.arrayAgg(PROJECT.ORGANIZATION_ID).toString())
+ .get(),
new CriteriaHolderBuilder().newBuilder(CRITERIA_LAST_LOGIN,
"(" + USERS.METADATA + "-> 'metadata' ->> 'last_login')::DOUBLE PRECISION ",
Long.class
@@ -382,10 +400,15 @@ protected Collection extends SelectField> selectFields() {
USERS.ROLE,
USERS.METADATA,
PROJECT.NAME,
+ PROJECT.KEY,
+ PROJECT.SLUG,
PROJECT.PROJECT_TYPE,
PROJECT_USER.PROJECT_ID,
PROJECT_USER.PROJECT_ROLE,
- PROJECT_USER.USER_ID
+ PROJECT_USER.USER_ID,
+ ORGANIZATION.ID,
+ ORGANIZATION.SLUG,
+ ORGANIZATION.NAME
);
}
@@ -398,6 +421,7 @@ protected void addFrom(SelectQuery extends Record> query) {
protected void joinTables(QuerySupplier query) {
query.addJoin(PROJECT_USER, JoinType.LEFT_OUTER_JOIN, USERS.ID.eq(PROJECT_USER.USER_ID));
query.addJoin(PROJECT, JoinType.LEFT_OUTER_JOIN, PROJECT_USER.PROJECT_ID.eq(PROJECT.ID));
+ query.addJoin(ORGANIZATION, JoinType.LEFT_OUTER_JOIN, ORGANIZATION.ID.eq(PROJECT.ORGANIZATION_ID));
}
@Override
@@ -1194,6 +1218,8 @@ protected Field idField() {
new CriteriaHolderBuilder().newBuilder(CRITERIA_NAME, INTEGRATION_TYPE.NAME, String.class)
.get(),
new CriteriaHolderBuilder().newBuilder(CRITERIA_PROJECT_NAME, PROJECT.NAME, String.class)
+ .get(),
+ new CriteriaHolderBuilder().newBuilder(CRITERIA_PROJECT_KEY, PROJECT.KEY, String.class)
.get()
)) {
@Override
@@ -1207,7 +1233,10 @@ protected Collection extends SelectField> selectFields() {
INTEGRATION.CREATION_DATE,
INTEGRATION_TYPE.NAME,
INTEGRATION_TYPE.GROUP_TYPE,
- PROJECT.NAME
+ PROJECT.NAME,
+ PROJECT.KEY,
+ PROJECT.SLUG,
+ PROJECT.ORGANIZATION_ID
);
}
diff --git a/src/main/java/com/epam/ta/reportportal/commons/querygen/constant/ProjectCriteriaConstant.java b/src/main/java/com/epam/ta/reportportal/commons/querygen/constant/ProjectCriteriaConstant.java
index 59a667720..2b2de0004 100644
--- a/src/main/java/com/epam/ta/reportportal/commons/querygen/constant/ProjectCriteriaConstant.java
+++ b/src/main/java/com/epam/ta/reportportal/commons/querygen/constant/ProjectCriteriaConstant.java
@@ -23,6 +23,8 @@ public final class ProjectCriteriaConstant {
public static final String CRITERIA_PROJECT_TYPE = "type";
public static final String CRITERIA_PROJECT_NAME = "name";
+ public static final String CRITERIA_PROJECT_KEY = "key";
+ public static final String CRITERIA_PROJECT_SLUG = "slug";
public static final String CRITERIA_ALLOCATED_STORAGE = "allocatedStorage";
public static final String CRITERIA_PROJECT_ORGANIZATION = "organization";
public static final String CRITERIA_PROJECT_CREATION_DATE = "creationDate";
diff --git a/src/main/java/com/epam/ta/reportportal/config/DataSourceConfig.java b/src/main/java/com/epam/ta/reportportal/config/DataSourceConfig.java
index 7ce5d6f43..c9906cb15 100644
--- a/src/main/java/com/epam/ta/reportportal/config/DataSourceConfig.java
+++ b/src/main/java/com/epam/ta/reportportal/config/DataSourceConfig.java
@@ -22,6 +22,9 @@
import java.io.File;
import java.io.IOException;
import javax.sql.DataSource;
+import org.postgresql.ds.PGSimpleDataSource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
@@ -36,6 +39,8 @@
@ConfigurationProperties(prefix = "rp.datasource")
public class DataSourceConfig extends HikariConfig {
+ private static final Logger log = LoggerFactory.getLogger(DataSourceConfig.class);
+
@Primary
@Bean
@Profile("!unittest")
@@ -53,6 +58,8 @@ public DataSource testDataSource(@Value("${embedded.datasource.dir}") String dat
.setPort(port)
.setDataDirectory(new File(dataDir))
.setCleanDataDirectory(clean);
- return builder.start().getPostgresDatabase();
+ DataSource dataSource = builder.start().getPostgresDatabase();
+ log.info("Database started on port: {}", ((PGSimpleDataSource) dataSource).getPortNumbers());
+ return dataSource;
}
}
diff --git a/src/main/java/com/epam/ta/reportportal/dao/ProjectRepository.java b/src/main/java/com/epam/ta/reportportal/dao/ProjectRepository.java
index 1600fe21f..2c22ea3bb 100644
--- a/src/main/java/com/epam/ta/reportportal/dao/ProjectRepository.java
+++ b/src/main/java/com/epam/ta/reportportal/dao/ProjectRepository.java
@@ -27,7 +27,9 @@ public interface ProjectRepository extends ReportPortalRepository
Optional findByName(String name);
- boolean existsByName(String name);
+ Optional findByKey(String key);
+
+ boolean existsByName(String name);
@Query(value = "SELECT p.* FROM project p JOIN project_user pu on p.id = pu.project_id JOIN users u on pu.user_id = u.id WHERE u.login = :login", nativeQuery = true)
List findUserProjects(@Param("login") String login);
diff --git a/src/main/java/com/epam/ta/reportportal/dao/ProjectUserRepositoryCustom.java b/src/main/java/com/epam/ta/reportportal/dao/ProjectUserRepositoryCustom.java
index 3e00c5fca..8d87bb837 100644
--- a/src/main/java/com/epam/ta/reportportal/dao/ProjectUserRepositoryCustom.java
+++ b/src/main/java/com/epam/ta/reportportal/dao/ProjectUserRepositoryCustom.java
@@ -5,7 +5,7 @@
public interface ProjectUserRepositoryCustom {
- Optional findDetailsByUserIdAndProjectName(Long userId, String projectName);
+ Optional findDetailsByUserIdAndProjectKey(Long userId, String projectKey);
- Optional findAdminDetailsProjectName(String projectName);
+ Optional findAdminDetailsProjectKey(String projectKey);
}
diff --git a/src/main/java/com/epam/ta/reportportal/dao/ProjectUserRepositoryCustomImpl.java b/src/main/java/com/epam/ta/reportportal/dao/ProjectUserRepositoryCustomImpl.java
index 52565ec54..70cf75af0 100644
--- a/src/main/java/com/epam/ta/reportportal/dao/ProjectUserRepositoryCustomImpl.java
+++ b/src/main/java/com/epam/ta/reportportal/dao/ProjectUserRepositoryCustomImpl.java
@@ -22,23 +22,25 @@ public ProjectUserRepositoryCustomImpl(DSLContext dsl) {
}
@Override
- public Optional findDetailsByUserIdAndProjectName(Long userId, String projectName) {
- return dsl.select(PROJECT_USER.PROJECT_ID, PROJECT_USER.PROJECT_ROLE, PROJECT.NAME)
+ public Optional findDetailsByUserIdAndProjectKey(Long userId, String projectKey) {
+ return dsl.select(PROJECT_USER.PROJECT_ID, PROJECT_USER.PROJECT_ROLE, PROJECT.NAME, PROJECT.KEY)
.from(PROJECT_USER)
.join(PROJECT)
.on(PROJECT_USER.PROJECT_ID.eq(PROJECT.ID))
.where(PROJECT_USER.USER_ID.eq(userId))
- .and(PROJECT.NAME.eq(projectName))
+ .and(PROJECT.KEY.eq(projectKey))
.fetchOptional(PROJECT_DETAILS_MAPPER);
}
@Override
- public Optional findAdminDetailsProjectName(String projectName) {
- return dsl.select(PROJECT.ID.as(PROJECT_USER.PROJECT_ID),
+ public Optional findAdminDetailsProjectKey(String projectKey) {
+ return dsl.select(
+ PROJECT.ID.as(PROJECT_USER.PROJECT_ID),
DSL.val("PROJECT_MANAGER").as(PROJECT_USER.PROJECT_ROLE),
- PROJECT.NAME)
+ PROJECT.NAME,
+ PROJECT.KEY)
.from(PROJECT)
- .where(PROJECT.NAME.eq(projectName))
+ .where(PROJECT.KEY.eq(projectKey))
.fetchOptional(PROJECT_DETAILS_MAPPER);
}
}
diff --git a/src/main/java/com/epam/ta/reportportal/dao/TestItemRepositoryCustomImpl.java b/src/main/java/com/epam/ta/reportportal/dao/TestItemRepositoryCustomImpl.java
index f206725d6..654f0a800 100644
--- a/src/main/java/com/epam/ta/reportportal/dao/TestItemRepositoryCustomImpl.java
+++ b/src/main/java/com/epam/ta/reportportal/dao/TestItemRepositoryCustomImpl.java
@@ -1196,7 +1196,11 @@ private Condition hasContentQuery(JTestItem nested, CommonTableExpression logsCt
}
/**
- * @return Map
+ * Selects and returns a map of PathName objects based on the provided collection of TestItem objects.
+ *
+ * @param testItems the collection of TestItem objects to be used to generate the map of PathNames
+ * @return a map with the test item IDs as keys and the PathName objects as values.
+ * If the provided collection of test items is null or empty, it returns an empty map.
*/
@Override
public Map selectPathNames(Collection testItems) {
diff --git a/src/main/java/com/epam/ta/reportportal/dao/WidgetContentRepositoryImpl.java b/src/main/java/com/epam/ta/reportportal/dao/WidgetContentRepositoryImpl.java
index d05e230ba..2279ab6dc 100644
--- a/src/main/java/com/epam/ta/reportportal/dao/WidgetContentRepositoryImpl.java
+++ b/src/main/java/com/epam/ta/reportportal/dao/WidgetContentRepositoryImpl.java
@@ -865,7 +865,8 @@ public List activityStatistics(Filter filter, Sort sort, int l
ACTIVITY.OBJECT_NAME,
ACTIVITY.SUBJECT_NAME,
USERS.LOGIN,
- PROJECT.NAME
+ PROJECT.NAME,
+ PROJECT.KEY
)
.from(ACTIVITY)
.join(ACTIVITIES)
diff --git a/src/main/java/com/epam/ta/reportportal/dao/organization/OrganizationRepository.java b/src/main/java/com/epam/ta/reportportal/dao/organization/OrganizationRepository.java
new file mode 100644
index 000000000..0ae826939
--- /dev/null
+++ b/src/main/java/com/epam/ta/reportportal/dao/organization/OrganizationRepository.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2024 EPAM Systems
+ *
+ * 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 com.epam.ta.reportportal.dao.organization;
+
+import com.epam.ta.reportportal.dao.ReportPortalRepository;
+import com.epam.ta.reportportal.entity.organization.Organization;
+
+import java.util.Optional;
+
+/**
+ * @author Siarhei Hrabko
+ */
+public interface OrganizationRepository extends ReportPortalRepository {
+
+ /**
+ * @param name name of organization
+ * @return {@link Optional} of {@link Organization}
+ */
+ Optional findByName(String name);
+
+ /**
+ * @param slug slug name of organization
+ * @return {@link Optional} of {@link Organization}
+ */
+ Optional findBySlug(String slug);
+}
diff --git a/src/main/java/com/epam/ta/reportportal/dao/organization/OrganizationUserRepository.java b/src/main/java/com/epam/ta/reportportal/dao/organization/OrganizationUserRepository.java
new file mode 100644
index 000000000..187bd672a
--- /dev/null
+++ b/src/main/java/com/epam/ta/reportportal/dao/organization/OrganizationUserRepository.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2024 EPAM Systems
+ *
+ * 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 com.epam.ta.reportportal.dao.organization;
+
+import com.epam.ta.reportportal.dao.ReportPortalRepository;
+import com.epam.ta.reportportal.entity.organization.OrganizationUser;
+import com.epam.ta.reportportal.entity.organization.OrganizationUserId;
+
+/**
+ * @author Siarhei Hrabko
+ */
+public interface OrganizationUserRepository extends
+ ReportPortalRepository {
+
+}
diff --git a/src/main/java/com/epam/ta/reportportal/dao/util/RecordMappers.java b/src/main/java/com/epam/ta/reportportal/dao/util/RecordMappers.java
index 265eba6c9..b8df3bcb9 100644
--- a/src/main/java/com/epam/ta/reportportal/dao/util/RecordMappers.java
+++ b/src/main/java/com/epam/ta/reportportal/dao/util/RecordMappers.java
@@ -33,6 +33,7 @@
import static com.epam.ta.reportportal.jooq.Tables.ISSUE_TYPE;
import static com.epam.ta.reportportal.jooq.Tables.LAUNCH;
import static com.epam.ta.reportportal.jooq.Tables.LOG;
+import static com.epam.ta.reportportal.jooq.Tables.ORGANIZATION;
import static com.epam.ta.reportportal.jooq.Tables.PATTERN_TEMPLATE;
import static com.epam.ta.reportportal.jooq.Tables.PROJECT;
import static com.epam.ta.reportportal.jooq.Tables.PROJECT_USER;
@@ -80,6 +81,7 @@
import com.epam.ta.reportportal.entity.item.issue.IssueType;
import com.epam.ta.reportportal.entity.launch.Launch;
import com.epam.ta.reportportal.entity.log.Log;
+import com.epam.ta.reportportal.entity.organization.Organization;
import com.epam.ta.reportportal.entity.pattern.PatternTemplate;
import com.epam.ta.reportportal.entity.project.Project;
import com.epam.ta.reportportal.entity.project.ProjectRole;
@@ -115,7 +117,7 @@
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.Function;
-import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.logging.log4j.util.Strings;
import org.jooq.Field;
import org.jooq.Record;
@@ -389,10 +391,16 @@ public class RecordMappers {
ProjectUser projectUser = new ProjectUser();
projectUser.setProjectRole(r.into(PROJECT_USER.PROJECT_ROLE).into(ProjectRole.class));
+ Organization organization = new Organization();
+ organization.setId(r.get(ORGANIZATION.ID));
+
Project project = new Project();
project.setId(r.get(PROJECT_USER.PROJECT_ID));
project.setName(r.get(PROJECT.NAME));
+ project.setKey(r.get(PROJECT.KEY));
+ project.setSlug(r.get(PROJECT.SLUG));
project.setProjectType(ProjectType.valueOf(r.get(PROJECT.PROJECT_TYPE)));
+ project.setOrganization(organization);
User user = new User();
user.setLogin(r.get(USERS.LOGIN));
@@ -407,7 +415,8 @@ public class RecordMappers {
final Long projectId = r.get(PROJECT_USER.PROJECT_ID);
final String projectName = r.get(PROJECT.NAME);
final ProjectRole projectRole = r.into(PROJECT_USER.PROJECT_ROLE).into(ProjectRole.class);
- return new ReportPortalUser.ProjectDetails(projectId, projectName, projectRole);
+ final String projectKey = r.get(PROJECT.KEY);
+ return new ReportPortalUser.ProjectDetails(projectId, projectName, projectRole, projectKey);
};
public static final RecordMapper super Record, Activity> ACTIVITY_MAPPER = r -> {
@@ -531,7 +540,7 @@ public class RecordMappers {
}
}
- if (attributeList.size() > 0) {
+ if (CollectionUtils.isNotEmpty(attributeList)) {
return Optional.of(attributeList);
} else {
return Optional.empty();
diff --git a/src/main/java/com/epam/ta/reportportal/dao/util/ResultFetchers.java b/src/main/java/com/epam/ta/reportportal/dao/util/ResultFetchers.java
index 2e98bf560..579ed0298 100644
--- a/src/main/java/com/epam/ta/reportportal/dao/util/ResultFetchers.java
+++ b/src/main/java/com/epam/ta/reportportal/dao/util/ResultFetchers.java
@@ -34,6 +34,7 @@
import static com.epam.ta.reportportal.jooq.Tables.INTEGRATION;
import static com.epam.ta.reportportal.jooq.Tables.LAUNCH;
import static com.epam.ta.reportportal.jooq.Tables.LOG;
+import static com.epam.ta.reportportal.jooq.Tables.OWNED_ENTITY;
import static com.epam.ta.reportportal.jooq.Tables.PARAMETER;
import static com.epam.ta.reportportal.jooq.Tables.PROJECT_ATTRIBUTE;
import static com.epam.ta.reportportal.jooq.tables.JProject.PROJECT;
@@ -67,26 +68,18 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
import org.jooq.Record;
import org.jooq.Result;
import org.springframework.data.domain.Sort;
import org.springframework.util.CollectionUtils;
-import java.util.*;
-import java.util.function.Function;
-
-import static com.epam.ta.reportportal.dao.constant.LogRepositoryConstants.PAGE_NUMBER;
-import static com.epam.ta.reportportal.dao.constant.LogRepositoryConstants.TYPE;
-import static com.epam.ta.reportportal.dao.constant.LogRepositoryConstants.LOG_LEVEL;
-import static com.epam.ta.reportportal.dao.constant.WidgetContentRepositoryConstants.ID;
-import static com.epam.ta.reportportal.dao.util.RecordMappers.*;
-import static com.epam.ta.reportportal.jooq.Tables.*;
-import static com.epam.ta.reportportal.jooq.tables.JProject.PROJECT;
-import static com.epam.ta.reportportal.jooq.tables.JProjectUser.PROJECT_USER;
-import static com.epam.ta.reportportal.jooq.tables.JTestItem.TEST_ITEM;
-import static com.epam.ta.reportportal.jooq.tables.JUsers.USERS;
-import static java.util.Optional.ofNullable;
-
/**
* Fetches results from db by JOOQ queries into Java objects.
*
diff --git a/src/main/java/com/epam/ta/reportportal/dao/util/WidgetContentUtil.java b/src/main/java/com/epam/ta/reportportal/dao/util/WidgetContentUtil.java
index 23e407517..f013a3304 100644
--- a/src/main/java/com/epam/ta/reportportal/dao/util/WidgetContentUtil.java
+++ b/src/main/java/com/epam/ta/reportportal/dao/util/WidgetContentUtil.java
@@ -250,6 +250,7 @@ public static void consumeIfNotNull(K key, V value, BiConsumer cons
: r.get(ACTIVITY.SUBJECT_NAME));
activityResource.setProjectId(r.get(ACTIVITY.PROJECT_ID));
activityResource.setProjectName(r.get(PROJECT.NAME));
+ activityResource.setProjectKey(r.get(PROJECT.KEY));
activityResource.setActionType(r.get(ACTIVITY.EVENT_NAME));
activityResource.setObjectType(r.get(ACTIVITY.OBJECT_TYPE));
activityResource.setObjectName(r.get(ACTIVITY.OBJECT_NAME));
diff --git a/src/main/java/com/epam/ta/reportportal/entity/enums/OrganizationType.java b/src/main/java/com/epam/ta/reportportal/entity/enums/OrganizationType.java
new file mode 100644
index 000000000..1639a1980
--- /dev/null
+++ b/src/main/java/com/epam/ta/reportportal/entity/enums/OrganizationType.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2024 EPAM Systems
+ *
+ * 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 com.epam.ta.reportportal.entity.enums;
+
+import java.util.Arrays;
+import java.util.Optional;
+
+/**
+ * Project Type enumeration
Used for supporting different organization types processing.
+ *
+ * @author Siarhei Hrabko
+ */
+public enum OrganizationType {
+
+ PERSONAL,
+ INTERNAL,
+ UPSA;
+
+ public static Optional findByName(String name) {
+ return Arrays.stream(OrganizationType.values())
+ .filter(type -> type.name().equalsIgnoreCase(name))
+ .findAny();
+ }
+
+ public static boolean isPresent(String name) {
+ return findByName(name).isPresent();
+ }
+}
diff --git a/src/main/java/com/epam/ta/reportportal/entity/enums/converter/OrganizationTypeConverter.java b/src/main/java/com/epam/ta/reportportal/entity/enums/converter/OrganizationTypeConverter.java
new file mode 100644
index 000000000..cecf519d4
--- /dev/null
+++ b/src/main/java/com/epam/ta/reportportal/entity/enums/converter/OrganizationTypeConverter.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2019 EPAM Systems
+ *
+ * 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 com.epam.ta.reportportal.entity.enums.converter;
+
+import com.epam.ta.reportportal.entity.enums.OrganizationType;
+import com.epam.ta.reportportal.exception.ReportPortalException;
+import javax.persistence.AttributeConverter;
+import javax.persistence.Converter;
+
+/**
+ * Organization type converter. Converts from ordinal value to String representations
+ *
+ * @author Siarhei Hrabko
+ */
+@Converter(autoApply = true)
+public class OrganizationTypeConverter implements AttributeConverter {
+
+ @Override
+ public String convertToDatabaseColumn(OrganizationType attribute) {
+ return attribute.toString();
+ }
+
+ @Override
+ public OrganizationType convertToEntityAttribute(String orgType) {
+ return OrganizationType.findByName(orgType)
+ .orElseThrow(
+ () -> new ReportPortalException("Can not convert organization type from database."));
+ }
+}
diff --git a/src/main/java/com/epam/ta/reportportal/entity/organization/Organization.java b/src/main/java/com/epam/ta/reportportal/entity/organization/Organization.java
new file mode 100644
index 000000000..67b5690f4
--- /dev/null
+++ b/src/main/java/com/epam/ta/reportportal/entity/organization/Organization.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2024 EPAM Systems
+ *
+ * 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 com.epam.ta.reportportal.entity.organization;
+
+import com.epam.ta.reportportal.entity.enums.OrganizationType;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author Siarhei Hrabko
+ */
+@Entity
+@Table(name = "organization", schema = "public")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Organization implements Serializable {
+
+ private static final long serialVersionUID = 6730810629133187834L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id", unique = true, nullable = false, precision = 64)
+ private Long id;
+
+ @Column(name = "creation_date", nullable = false)
+ private LocalDateTime creationDate;
+
+ @Column(name = "name")
+ private String name;
+
+ @Column(name = "organization_type")
+ private OrganizationType organizationType;
+
+ @Column(name = "slug")
+ private String slug;
+
+}
diff --git a/src/main/java/com/epam/ta/reportportal/entity/organization/OrganizationRole.java b/src/main/java/com/epam/ta/reportportal/entity/organization/OrganizationRole.java
new file mode 100644
index 000000000..52d7896d6
--- /dev/null
+++ b/src/main/java/com/epam/ta/reportportal/entity/organization/OrganizationRole.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2024 EPAM Systems
+ *
+ * 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 com.epam.ta.reportportal.entity.organization;
+
+import java.util.Arrays;
+import java.util.Optional;
+
+/**
+ * @author Siarhei Hrabko
+ */
+public enum OrganizationRole {
+
+ MANAGER,
+ MEMBER;
+
+ public static Optional forName(final String name) {
+ return Arrays.stream(OrganizationRole.values())
+ .filter(role -> role.name().equalsIgnoreCase(name))
+ .findAny();
+ }
+}
diff --git a/src/main/java/com/epam/ta/reportportal/entity/organization/OrganizationUser.java b/src/main/java/com/epam/ta/reportportal/entity/organization/OrganizationUser.java
new file mode 100644
index 000000000..edcb3e74f
--- /dev/null
+++ b/src/main/java/com/epam/ta/reportportal/entity/organization/OrganizationUser.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2024 EPAM Systems
+ *
+ * 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 com.epam.ta.reportportal.entity.organization;
+
+import com.epam.ta.reportportal.entity.enums.PostgreSQLEnumType;
+import com.epam.ta.reportportal.entity.user.User;
+
+import javax.persistence.Column;
+import javax.persistence.EmbeddedId;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.ManyToOne;
+import javax.persistence.MapsId;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Objects;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Type;
+import org.hibernate.annotations.TypeDef;
+
+/**
+ * @author Siarhei Hrabko
+ */
+@Entity
+@Data
+@TypeDef(name = "pqsql_enum", typeClass = PostgreSQLEnumType.class)
+@Table(name = "organization_user", schema = "public")
+@NoArgsConstructor
+@AllArgsConstructor
+public class OrganizationUser implements Serializable {
+
+ private static final long serialVersionUID = 7313055792392238124L;
+
+ @EmbeddedId
+ private OrganizationUserId id;
+
+ @ManyToOne(fetch = FetchType.EAGER)
+ @MapsId("organizationId")
+ private Organization organization;
+
+ @ManyToOne(fetch = FetchType.EAGER)
+ @MapsId("userId")
+ private User user;
+
+ @Column(name = "organization_role")
+ @Enumerated(EnumType.STRING)
+ @Type(type = "pqsql_enum")
+ private OrganizationRole organizationRole;
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof OrganizationUser)) {
+ return false;
+ }
+ OrganizationUser that = (OrganizationUser) o;
+ return organization.equals(that.organization)
+ && id.equals(that.id)
+ && user.equals(that.user)
+ && organizationRole == that.organizationRole;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, organization, user, organizationRole);
+ }
+}
diff --git a/src/main/java/com/epam/ta/reportportal/entity/organization/OrganizationUserId.java b/src/main/java/com/epam/ta/reportportal/entity/organization/OrganizationUserId.java
new file mode 100644
index 000000000..8d8b4a93c
--- /dev/null
+++ b/src/main/java/com/epam/ta/reportportal/entity/organization/OrganizationUserId.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2024 EPAM Systems
+ *
+ * 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 com.epam.ta.reportportal.entity.organization;
+
+import java.io.Serializable;
+import javax.persistence.Column;
+import javax.persistence.Embeddable;
+import lombok.Data;
+
+/**
+ * @author Siarhei Hrabko
+ */
+@Embeddable
+@Data
+public class OrganizationUserId implements Serializable {
+
+ @Column(name = "organization_id")
+ private Long organizationId;
+
+ @Column(name = "user_id")
+ private Long userId;
+
+}
diff --git a/src/main/java/com/epam/ta/reportportal/entity/project/Project.java b/src/main/java/com/epam/ta/reportportal/entity/project/Project.java
index 75041070d..2639918c3 100644
--- a/src/main/java/com/epam/ta/reportportal/entity/project/Project.java
+++ b/src/main/java/com/epam/ta/reportportal/entity/project/Project.java
@@ -19,6 +19,7 @@
import com.epam.ta.reportportal.entity.Metadata;
import com.epam.ta.reportportal.entity.enums.ProjectType;
import com.epam.ta.reportportal.entity.integration.Integration;
+import com.epam.ta.reportportal.entity.organization.Organization;
import com.epam.ta.reportportal.entity.pattern.PatternTemplate;
import com.epam.ta.reportportal.entity.project.email.SenderCase;
import com.epam.ta.reportportal.entity.user.ProjectUser;
@@ -35,9 +36,14 @@
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.MapsId;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
@@ -47,6 +53,9 @@
@Entity
@TypeDef(name = "json", typeClass = Metadata.class)
@Table(name = "project", schema = "public")
+@Getter
+@Setter
+@NoArgsConstructor
public class Project implements Serializable {
private static final long serialVersionUID = -263516611;
@@ -85,8 +94,19 @@ public class Project implements Serializable {
@Column(name = "metadata")
private Metadata metadata;
+ // TODO: rename to meaningful variable. eg. orgSlug, orgKey or else
@Column(name = "organization")
- private String organization;
+ private String org;
+
+ @ManyToOne(fetch = FetchType.LAZY)
+ @MapsId("organization_id")
+ private Organization organization;
+
+ @Column(name = "key")
+ private String key;
+
+ @Column(name = "slug")
+ private String slug;
@Column(name = "allocated_storage", updatable = false)
private long allocatedStorage;
@@ -99,118 +119,6 @@ public class Project implements Serializable {
@OrderBy
private Set patternTemplates = Sets.newHashSet();
- public Project(Long id, String name) {
- this.id = id;
- this.name = name;
- }
-
- public Project() {
- }
-
- public Date getCreationDate() {
- return creationDate;
- }
-
- public void setCreationDate(Date creationDate) {
- this.creationDate = creationDate;
- }
-
- public Long getId() {
- return this.id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public ProjectType getProjectType() {
- return projectType;
- }
-
- public void setProjectType(ProjectType projectType) {
- this.projectType = projectType;
- }
-
- public Set getUsers() {
- return users;
- }
-
- public void setUsers(Set users) {
- this.users = users;
- }
-
- public long getAllocatedStorage() {
- return allocatedStorage;
- }
-
- public void setAllocatedStorage(long allocatedStorage) {
- this.allocatedStorage = allocatedStorage;
- }
-
- public Set getPatternTemplates() {
- return patternTemplates;
- }
-
- public void setPatternTemplates(Set patternTemplates) {
- this.patternTemplates = patternTemplates;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Set getIntegrations() {
- return integrations;
- }
-
- public void setIntegrations(Set integrations) {
- this.integrations = integrations;
- }
-
- public Set getProjectAttributes() {
- return projectAttributes;
- }
-
- public void setProjectAttributes(Set projectAttributes) {
- this.projectAttributes = projectAttributes;
- }
-
- public Set getProjectIssueTypes() {
- return projectIssueTypes;
- }
-
- public void setProjectIssueTypes(Set projectIssueTypes) {
- this.projectIssueTypes = projectIssueTypes;
- }
-
- public Set getSenderCases() {
- return senderCases;
- }
-
- public void setSenderCases(Set senderCases) {
- this.senderCases = senderCases;
- }
-
- public String getOrganization() {
- return organization;
- }
-
- public void setOrganization(String organization) {
- this.organization = organization;
- }
-
- public Metadata getMetadata() {
- return metadata;
- }
-
- public void setMetadata(Metadata metadata) {
- this.metadata = metadata;
- }
-
@Override
public boolean equals(Object o) {
if (this == o) {
diff --git a/src/main/java/com/epam/ta/reportportal/entity/project/ProjectInfo.java b/src/main/java/com/epam/ta/reportportal/entity/project/ProjectInfo.java
index 1fa9d3fb3..ede38fff8 100644
--- a/src/main/java/com/epam/ta/reportportal/entity/project/ProjectInfo.java
+++ b/src/main/java/com/epam/ta/reportportal/entity/project/ProjectInfo.java
@@ -18,12 +18,20 @@
import java.io.Serializable;
import java.time.LocalDateTime;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
/**
* Not database object. Representation of the result of project info query
*
* @author Pavel Bortnik
*/
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
public class ProjectInfo implements Serializable {
public static final String USERS_QUANTITY = "usersQuantity";
@@ -38,7 +46,11 @@ public class ProjectInfo implements Serializable {
private String projectType;
- private String organization;
+ private String organizationSlug;
+
+ private String projectKey;
+
+ private String projectSlug;
private int usersQuantity;
@@ -46,67 +58,4 @@ public class ProjectInfo implements Serializable {
private LocalDateTime lastRun;
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public LocalDateTime getCreationDate() {
- return creationDate;
- }
-
- public void setCreationDate(LocalDateTime creationDate) {
- this.creationDate = creationDate;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getProjectType() {
- return projectType;
- }
-
- public void setProjectType(String projectType) {
- this.projectType = projectType;
- }
-
- public String getOrganization() {
- return organization;
- }
-
- public void setOrganization(String organization) {
- this.organization = organization;
- }
-
- public int getUsersQuantity() {
- return usersQuantity;
- }
-
- public void setUsersQuantity(int usersQuantity) {
- this.usersQuantity = usersQuantity;
- }
-
- public int getLaunchesQuantity() {
- return launchesQuantity;
- }
-
- public void setLaunchesQuantity(int launchesQuantity) {
- this.launchesQuantity = launchesQuantity;
- }
-
- public LocalDateTime getLastRun() {
- return lastRun;
- }
-
- public void setLastRun(LocalDateTime lastRun) {
- this.lastRun = lastRun;
- }
}
diff --git a/src/main/java/com/epam/ta/reportportal/entity/user/User.java b/src/main/java/com/epam/ta/reportportal/entity/user/User.java
index 2c3e2208a..d7520f686 100644
--- a/src/main/java/com/epam/ta/reportportal/entity/user/User.java
+++ b/src/main/java/com/epam/ta/reportportal/entity/user/User.java
@@ -17,6 +17,7 @@
package com.epam.ta.reportportal.entity.user;
import com.epam.ta.reportportal.entity.Metadata;
+import com.epam.ta.reportportal.entity.organization.OrganizationUser;
import com.google.common.collect.Sets;
import java.io.Serializable;
import java.util.Objects;
@@ -32,6 +33,9 @@
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
@@ -41,6 +45,9 @@
@Entity
@TypeDef(name = "meta", typeClass = Metadata.class)
@Table(name = "users", schema = "public")
+@Getter
+@Setter
+@NoArgsConstructor
public class User implements Serializable {
private static final long serialVersionUID = 923392981;
@@ -86,104 +93,10 @@ public class User implements Serializable {
CascadeType.MERGE, CascadeType.REFRESH})
private Set projects = Sets.newHashSet();
- public User() {
- }
-
- public Long getId() {
- return this.id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getLogin() {
- return this.login;
- }
-
- public void setLogin(String login) {
- this.login = login;
- }
-
- public String getPassword() {
- return this.password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public String getEmail() {
- return this.email;
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-
- public UserRole getRole() {
- return role;
- }
-
- public void setRole(UserRole role) {
- this.role = role;
- }
-
- public Set getProjects() {
- return projects;
- }
-
- public void setProjects(Set projects) {
- this.projects = projects;
- }
-
- public String getFullName() {
- return this.fullName;
- }
-
- public void setFullName(String fullName) {
- this.fullName = fullName;
- }
-
- public boolean isExpired() {
- return isExpired;
- }
-
- public void setExpired(boolean expired) {
- isExpired = expired;
- }
-
- public String getAttachment() {
- return attachment;
- }
-
- public void setAttachment(String attachment) {
- this.attachment = attachment;
- }
-
- public String getAttachmentThumbnail() {
- return attachmentThumbnail;
- }
-
- public void setAttachmentThumbnail(String attachmentThumbnail) {
- this.attachmentThumbnail = attachmentThumbnail;
- }
-
- public UserType getUserType() {
- return userType;
- }
-
- public void setUserType(UserType userType) {
- this.userType = userType;
- }
-
- public Metadata getMetadata() {
- return metadata;
- }
+ @OneToMany(fetch = FetchType.LAZY, mappedBy = "user", cascade = {CascadeType.PERSIST,
+ CascadeType.MERGE, CascadeType.REFRESH})
+ private Set organizationUser = Sets.newHashSet();
- public void setMetadata(Metadata metadata) {
- this.metadata = metadata;
- }
@Override
public boolean equals(Object o) {
@@ -194,14 +107,16 @@ public boolean equals(Object o) {
return false;
}
User user = (User) o;
- return isExpired == user.isExpired && Objects.equals(id, user.id) && Objects.equals(login,
- user.login) && Objects.equals(password,
- user.password
- ) && Objects.equals(email, user.email) && role == user.role && Objects.equals(fullName,
- user.fullName) && Objects.equals(metadata,
- user.metadata
- ) && Objects.equals(attachment, user.attachment) && Objects.equals(attachmentThumbnail,
- user.attachmentThumbnail)
+ return isExpired == user.isExpired
+ && Objects.equals(id, user.id)
+ && Objects.equals(login, user.login)
+ && Objects.equals(password, user.password)
+ && Objects.equals(email, user.email)
+ && role == user.role
+ && Objects.equals(fullName, user.fullName)
+ && Objects.equals(metadata, user.metadata)
+ && Objects.equals(attachment, user.attachment)
+ && Objects.equals(attachmentThumbnail, user.attachmentThumbnail)
&& userType == user.userType;
}
@@ -210,5 +125,4 @@ public int hashCode() {
return Objects.hash(id, login, password, email, role, fullName, isExpired, metadata, attachment,
attachmentThumbnail, userType);
}
-
}
diff --git a/src/main/java/com/epam/ta/reportportal/jooq/Indexes.java b/src/main/java/com/epam/ta/reportportal/jooq/Indexes.java
index d40580b1c..f394b5336 100644
--- a/src/main/java/com/epam/ta/reportportal/jooq/Indexes.java
+++ b/src/main/java/com/epam/ta/reportportal/jooq/Indexes.java
@@ -34,6 +34,8 @@
import com.epam.ta.reportportal.jooq.tables.JOauthRegistrationRestriction;
import com.epam.ta.reportportal.jooq.tables.JOauthRegistrationScope;
import com.epam.ta.reportportal.jooq.tables.JOnboarding;
+import com.epam.ta.reportportal.jooq.tables.JOrganization;
+import com.epam.ta.reportportal.jooq.tables.JOrganizationUser;
import com.epam.ta.reportportal.jooq.tables.JOwnedEntity;
import com.epam.ta.reportportal.jooq.tables.JParameter;
import com.epam.ta.reportportal.jooq.tables.JPatternTemplate;
@@ -144,7 +146,6 @@ public class Indexes {
public static final Index LOG_ATTACH_ID_IDX = Indexes0.LOG_ATTACH_ID_IDX;
public static final Index LOG_CLUSTER_IDX = Indexes0.LOG_CLUSTER_IDX;
public static final Index LOG_LAUNCH_ID_IDX = Indexes0.LOG_LAUNCH_ID_IDX;
- public static final Index LOG_MESSAGE_TRGM_IDX = Indexes0.LOG_MESSAGE_TRGM_IDX;
public static final Index LOG_PK = Indexes0.LOG_PK;
public static final Index LOG_PROJECT_ID_LOG_TIME_IDX = Indexes0.LOG_PROJECT_ID_LOG_TIME_IDX;
public static final Index LOG_PROJECT_IDX = Indexes0.LOG_PROJECT_IDX;
@@ -156,6 +157,11 @@ public class Indexes {
public static final Index OAUTH_REGISTRATION_SCOPE_PK = Indexes0.OAUTH_REGISTRATION_SCOPE_PK;
public static final Index OAUTH_REGISTRATION_SCOPE_UNIQUE = Indexes0.OAUTH_REGISTRATION_SCOPE_UNIQUE;
public static final Index ONBOARDING_PK = Indexes0.ONBOARDING_PK;
+ public static final Index ORGANIZATION_NAME_KEY = Indexes0.ORGANIZATION_NAME_KEY;
+ public static final Index ORGANIZATION_PKEY = Indexes0.ORGANIZATION_PKEY;
+ public static final Index ORGANIZATION_SLUG_IDX = Indexes0.ORGANIZATION_SLUG_IDX;
+ public static final Index ORGANIZATION_SLUG_KEY = Indexes0.ORGANIZATION_SLUG_KEY;
+ public static final Index ORGANIZATION_USER_PK = Indexes0.ORGANIZATION_USER_PK;
public static final Index SHAREABLE_PK = Indexes0.SHAREABLE_PK;
public static final Index SHARED_ENTITY_OWNERX = Indexes0.SHARED_ENTITY_OWNERX;
public static final Index SHARED_ENTITY_PROJECT_IDX = Indexes0.SHARED_ENTITY_PROJECT_IDX;
@@ -164,8 +170,11 @@ public class Indexes {
public static final Index UNQ_NAME_PROJECTID = Indexes0.UNQ_NAME_PROJECTID;
public static final Index PATTERN_ITEM_ITEM_ID_IDX = Indexes0.PATTERN_ITEM_ITEM_ID_IDX;
public static final Index PATTERN_ITEM_UNQ = Indexes0.PATTERN_ITEM_UNQ;
+ public static final Index PROJECT_KEY_IDX = Indexes0.PROJECT_KEY_IDX;
+ public static final Index PROJECT_KEY_KEY = Indexes0.PROJECT_KEY_KEY;
public static final Index PROJECT_NAME_KEY = Indexes0.PROJECT_NAME_KEY;
public static final Index PROJECT_PK = Indexes0.PROJECT_PK;
+ public static final Index PROJECT_SLUG_KEY = Indexes0.PROJECT_SLUG_KEY;
public static final Index UNIQUE_ATTRIBUTE_PER_PROJECT = Indexes0.UNIQUE_ATTRIBUTE_PER_PROJECT;
public static final Index USERS_PROJECT_PK = Indexes0.USERS_PROJECT_PK;
public static final Index RCPNT_SEND_CASE_IDX = Indexes0.RCPNT_SEND_CASE_IDX;
@@ -276,7 +285,6 @@ private static class Indexes0 {
public static Index LOG_ATTACH_ID_IDX = Internal.createIndex("log_attach_id_idx", JLog.LOG, new OrderField[] { JLog.LOG.ATTACHMENT_ID }, false);
public static Index LOG_CLUSTER_IDX = Internal.createIndex("log_cluster_idx", JLog.LOG, new OrderField[] { JLog.LOG.CLUSTER_ID }, false);
public static Index LOG_LAUNCH_ID_IDX = Internal.createIndex("log_launch_id_idx", JLog.LOG, new OrderField[] { JLog.LOG.LAUNCH_ID }, false);
- public static Index LOG_MESSAGE_TRGM_IDX = Internal.createIndex("log_message_trgm_idx", JLog.LOG, new OrderField[] { JLog.LOG.LOG_MESSAGE }, false);
public static Index LOG_PK = Internal.createIndex("log_pk", JLog.LOG, new OrderField[] { JLog.LOG.ID }, true);
public static Index LOG_PROJECT_ID_LOG_TIME_IDX = Internal.createIndex("log_project_id_log_time_idx", JLog.LOG, new OrderField[] { JLog.LOG.PROJECT_ID, JLog.LOG.LOG_TIME }, false);
public static Index LOG_PROJECT_IDX = Internal.createIndex("log_project_idx", JLog.LOG, new OrderField[] { JLog.LOG.PROJECT_ID }, false);
@@ -288,6 +296,11 @@ private static class Indexes0 {
public static Index OAUTH_REGISTRATION_SCOPE_PK = Internal.createIndex("oauth_registration_scope_pk", JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE, new OrderField[] { JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE.ID }, true);
public static Index OAUTH_REGISTRATION_SCOPE_UNIQUE = Internal.createIndex("oauth_registration_scope_unique", JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE, new OrderField[] { JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE.SCOPE, JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE.OAUTH_REGISTRATION_FK }, true);
public static Index ONBOARDING_PK = Internal.createIndex("onboarding_pk", JOnboarding.ONBOARDING, new OrderField[] { JOnboarding.ONBOARDING.ID }, true);
+ public static Index ORGANIZATION_NAME_KEY = Internal.createIndex("organization_name_key", JOrganization.ORGANIZATION, new OrderField[] { JOrganization.ORGANIZATION.NAME }, true);
+ public static Index ORGANIZATION_PKEY = Internal.createIndex("organization_pkey", JOrganization.ORGANIZATION, new OrderField[] { JOrganization.ORGANIZATION.ID }, true);
+ public static Index ORGANIZATION_SLUG_IDX = Internal.createIndex("organization_slug_idx", JOrganization.ORGANIZATION, new OrderField[] { JOrganization.ORGANIZATION.SLUG }, false);
+ public static Index ORGANIZATION_SLUG_KEY = Internal.createIndex("organization_slug_key", JOrganization.ORGANIZATION, new OrderField[] { JOrganization.ORGANIZATION.SLUG }, true);
+ public static Index ORGANIZATION_USER_PK = Internal.createIndex("organization_user_pk", JOrganizationUser.ORGANIZATION_USER, new OrderField[] { JOrganizationUser.ORGANIZATION_USER.USER_ID, JOrganizationUser.ORGANIZATION_USER.ORGANIZATION_ID }, true);
public static Index SHAREABLE_PK = Internal.createIndex("shareable_pk", JOwnedEntity.OWNED_ENTITY, new OrderField[] { JOwnedEntity.OWNED_ENTITY.ID }, true);
public static Index SHARED_ENTITY_OWNERX = Internal.createIndex("shared_entity_ownerx", JOwnedEntity.OWNED_ENTITY, new OrderField[] { JOwnedEntity.OWNED_ENTITY.OWNER }, false);
public static Index SHARED_ENTITY_PROJECT_IDX = Internal.createIndex("shared_entity_project_idx", JOwnedEntity.OWNED_ENTITY, new OrderField[] { JOwnedEntity.OWNED_ENTITY.PROJECT_ID }, false);
@@ -296,8 +309,11 @@ private static class Indexes0 {
public static Index UNQ_NAME_PROJECTID = Internal.createIndex("unq_name_projectid", JPatternTemplate.PATTERN_TEMPLATE, new OrderField[] { JPatternTemplate.PATTERN_TEMPLATE.NAME, JPatternTemplate.PATTERN_TEMPLATE.PROJECT_ID }, true);
public static Index PATTERN_ITEM_ITEM_ID_IDX = Internal.createIndex("pattern_item_item_id_idx", JPatternTemplateTestItem.PATTERN_TEMPLATE_TEST_ITEM, new OrderField[] { JPatternTemplateTestItem.PATTERN_TEMPLATE_TEST_ITEM.ITEM_ID }, false);
public static Index PATTERN_ITEM_UNQ = Internal.createIndex("pattern_item_unq", JPatternTemplateTestItem.PATTERN_TEMPLATE_TEST_ITEM, new OrderField[] { JPatternTemplateTestItem.PATTERN_TEMPLATE_TEST_ITEM.PATTERN_ID, JPatternTemplateTestItem.PATTERN_TEMPLATE_TEST_ITEM.ITEM_ID }, true);
+ public static Index PROJECT_KEY_IDX = Internal.createIndex("project_key_idx", JProject.PROJECT, new OrderField[] { JProject.PROJECT.KEY }, false);
+ public static Index PROJECT_KEY_KEY = Internal.createIndex("project_key_key", JProject.PROJECT, new OrderField[] { JProject.PROJECT.KEY }, true);
public static Index PROJECT_NAME_KEY = Internal.createIndex("project_name_key", JProject.PROJECT, new OrderField[] { JProject.PROJECT.NAME }, true);
public static Index PROJECT_PK = Internal.createIndex("project_pk", JProject.PROJECT, new OrderField[] { JProject.PROJECT.ID }, true);
+ public static Index PROJECT_SLUG_KEY = Internal.createIndex("project_slug_key", JProject.PROJECT, new OrderField[] { JProject.PROJECT.SLUG }, true);
public static Index UNIQUE_ATTRIBUTE_PER_PROJECT = Internal.createIndex("unique_attribute_per_project", JProjectAttribute.PROJECT_ATTRIBUTE, new OrderField[] { JProjectAttribute.PROJECT_ATTRIBUTE.ATTRIBUTE_ID, JProjectAttribute.PROJECT_ATTRIBUTE.PROJECT_ID }, true);
public static Index USERS_PROJECT_PK = Internal.createIndex("users_project_pk", JProjectUser.PROJECT_USER, new OrderField[] { JProjectUser.PROJECT_USER.USER_ID, JProjectUser.PROJECT_USER.PROJECT_ID }, true);
public static Index RCPNT_SEND_CASE_IDX = Internal.createIndex("rcpnt_send_case_idx", JRecipients.RECIPIENTS, new OrderField[] { JRecipients.RECIPIENTS.SENDER_CASE_ID }, false);
diff --git a/src/main/java/com/epam/ta/reportportal/jooq/JPublic.java b/src/main/java/com/epam/ta/reportportal/jooq/JPublic.java
index 8ec2de1f5..ac71b3270 100644
--- a/src/main/java/com/epam/ta/reportportal/jooq/JPublic.java
+++ b/src/main/java/com/epam/ta/reportportal/jooq/JPublic.java
@@ -34,6 +34,8 @@
import com.epam.ta.reportportal.jooq.tables.JOauthRegistrationRestriction;
import com.epam.ta.reportportal.jooq.tables.JOauthRegistrationScope;
import com.epam.ta.reportportal.jooq.tables.JOnboarding;
+import com.epam.ta.reportportal.jooq.tables.JOrganization;
+import com.epam.ta.reportportal.jooq.tables.JOrganizationUser;
import com.epam.ta.reportportal.jooq.tables.JOwnedEntity;
import com.epam.ta.reportportal.jooq.tables.JParameter;
import com.epam.ta.reportportal.jooq.tables.JPatternTemplate;
@@ -88,7 +90,7 @@
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class JPublic extends SchemaImpl {
- private static final long serialVersionUID = -1176761935;
+ private static final long serialVersionUID = 286849201;
/**
* The reference instance of public
@@ -245,6 +247,16 @@ public class JPublic extends SchemaImpl {
*/
public final JOnboarding ONBOARDING = com.epam.ta.reportportal.jooq.tables.JOnboarding.ONBOARDING;
+ /**
+ * The table public.organization
.
+ */
+ public final JOrganization ORGANIZATION = com.epam.ta.reportportal.jooq.tables.JOrganization.ORGANIZATION;
+
+ /**
+ * The table public.organization_user
.
+ */
+ public final JOrganizationUser ORGANIZATION_USER = com.epam.ta.reportportal.jooq.tables.JOrganizationUser.ORGANIZATION_USER;
+
/**
* The table public.owned_entity
.
*/
@@ -427,6 +439,8 @@ private final List> getSequences0() {
Sequences.OAUTH_REGISTRATION_RESTRICTION_ID_SEQ,
Sequences.OAUTH_REGISTRATION_SCOPE_ID_SEQ,
Sequences.ONBOARDING_ID_SEQ,
+ Sequences.ORGANIZATION_ID_SEQ,
+ Sequences.ORGANIZATION_USER_USER_ID_SEQ,
Sequences.PATTERN_TEMPLATE_ID_SEQ,
Sequences.PROJECT_ATTRIBUTE_ATTRIBUTE_ID_SEQ,
Sequences.PROJECT_ATTRIBUTE_PROJECT_ID_SEQ,
@@ -483,6 +497,8 @@ private final List> getTables0() {
JOauthRegistrationRestriction.OAUTH_REGISTRATION_RESTRICTION,
JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE,
JOnboarding.ONBOARDING,
+ JOrganization.ORGANIZATION,
+ JOrganizationUser.ORGANIZATION_USER,
JOwnedEntity.OWNED_ENTITY,
JParameter.PARAMETER,
JPatternTemplate.PATTERN_TEMPLATE,
diff --git a/src/main/java/com/epam/ta/reportportal/jooq/Keys.java b/src/main/java/com/epam/ta/reportportal/jooq/Keys.java
index 266024928..85faf139f 100644
--- a/src/main/java/com/epam/ta/reportportal/jooq/Keys.java
+++ b/src/main/java/com/epam/ta/reportportal/jooq/Keys.java
@@ -34,6 +34,8 @@
import com.epam.ta.reportportal.jooq.tables.JOauthRegistrationRestriction;
import com.epam.ta.reportportal.jooq.tables.JOauthRegistrationScope;
import com.epam.ta.reportportal.jooq.tables.JOnboarding;
+import com.epam.ta.reportportal.jooq.tables.JOrganization;
+import com.epam.ta.reportportal.jooq.tables.JOrganizationUser;
import com.epam.ta.reportportal.jooq.tables.JOwnedEntity;
import com.epam.ta.reportportal.jooq.tables.JParameter;
import com.epam.ta.reportportal.jooq.tables.JPatternTemplate;
@@ -87,6 +89,8 @@
import com.epam.ta.reportportal.jooq.tables.records.JOauthRegistrationRestrictionRecord;
import com.epam.ta.reportportal.jooq.tables.records.JOauthRegistrationScopeRecord;
import com.epam.ta.reportportal.jooq.tables.records.JOnboardingRecord;
+import com.epam.ta.reportportal.jooq.tables.records.JOrganizationRecord;
+import com.epam.ta.reportportal.jooq.tables.records.JOrganizationUserRecord;
import com.epam.ta.reportportal.jooq.tables.records.JOwnedEntityRecord;
import com.epam.ta.reportportal.jooq.tables.records.JParameterRecord;
import com.epam.ta.reportportal.jooq.tables.records.JPatternTemplateRecord;
@@ -156,6 +160,8 @@ public class Keys {
public static final Identity IDENTITY_OAUTH_REGISTRATION_RESTRICTION = Identities0.IDENTITY_OAUTH_REGISTRATION_RESTRICTION;
public static final Identity IDENTITY_OAUTH_REGISTRATION_SCOPE = Identities0.IDENTITY_OAUTH_REGISTRATION_SCOPE;
public static final Identity IDENTITY_ONBOARDING = Identities0.IDENTITY_ONBOARDING;
+ public static final Identity IDENTITY_ORGANIZATION = Identities0.IDENTITY_ORGANIZATION;
+ public static final Identity IDENTITY_ORGANIZATION_USER = Identities0.IDENTITY_ORGANIZATION_USER;
public static final Identity IDENTITY_OWNED_ENTITY = Identities0.IDENTITY_OWNED_ENTITY;
public static final Identity IDENTITY_PATTERN_TEMPLATE = Identities0.IDENTITY_PATTERN_TEMPLATE;
public static final Identity IDENTITY_PROJECT = Identities0.IDENTITY_PROJECT;
@@ -213,12 +219,18 @@ public class Keys {
public static final UniqueKey OAUTH_REGISTRATION_SCOPE_PK = UniqueKeys0.OAUTH_REGISTRATION_SCOPE_PK;
public static final UniqueKey OAUTH_REGISTRATION_SCOPE_UNIQUE = UniqueKeys0.OAUTH_REGISTRATION_SCOPE_UNIQUE;
public static final UniqueKey ONBOARDING_PK = UniqueKeys0.ONBOARDING_PK;
+ public static final UniqueKey ORGANIZATION_PKEY = UniqueKeys0.ORGANIZATION_PKEY;
+ public static final UniqueKey ORGANIZATION_NAME_KEY = UniqueKeys0.ORGANIZATION_NAME_KEY;
+ public static final UniqueKey ORGANIZATION_SLUG_KEY = UniqueKeys0.ORGANIZATION_SLUG_KEY;
+ public static final UniqueKey ORGANIZATION_USER_PK = UniqueKeys0.ORGANIZATION_USER_PK;
public static final UniqueKey SHAREABLE_PK = UniqueKeys0.SHAREABLE_PK;
public static final UniqueKey PATTERN_TEMPLATE_PK = UniqueKeys0.PATTERN_TEMPLATE_PK;
public static final UniqueKey UNQ_NAME_PROJECTID = UniqueKeys0.UNQ_NAME_PROJECTID;
public static final UniqueKey PATTERN_ITEM_UNQ = UniqueKeys0.PATTERN_ITEM_UNQ;
public static final UniqueKey PROJECT_PK = UniqueKeys0.PROJECT_PK;
public static final UniqueKey PROJECT_NAME_KEY = UniqueKeys0.PROJECT_NAME_KEY;
+ public static final UniqueKey PROJECT_SLUG_KEY = UniqueKeys0.PROJECT_SLUG_KEY;
+ public static final UniqueKey PROJECT_KEY_KEY = UniqueKeys0.PROJECT_KEY_KEY;
public static final UniqueKey UNIQUE_ATTRIBUTE_PER_PROJECT = UniqueKeys0.UNIQUE_ATTRIBUTE_PER_PROJECT;
public static final UniqueKey USERS_PROJECT_PK = UniqueKeys0.USERS_PROJECT_PK;
public static final UniqueKey RESTORE_PASSWORD_BID_PK = UniqueKeys0.RESTORE_PASSWORD_BID_PK;
@@ -281,6 +293,8 @@ public class Keys {
public static final ForeignKey LOG__LOG_ATTACHMENT_ID_FKEY = ForeignKeys0.LOG__LOG_ATTACHMENT_ID_FKEY;
public static final ForeignKey OAUTH_REGISTRATION_RESTRICTION__OAUTH_REGISTRATION_RESTRICTION_OAUTH_REGISTRATION_FK_FKEY = ForeignKeys0.OAUTH_REGISTRATION_RESTRICTION__OAUTH_REGISTRATION_RESTRICTION_OAUTH_REGISTRATION_FK_FKEY;
public static final ForeignKey OAUTH_REGISTRATION_SCOPE__OAUTH_REGISTRATION_SCOPE_OAUTH_REGISTRATION_FK_FKEY = ForeignKeys0.OAUTH_REGISTRATION_SCOPE__OAUTH_REGISTRATION_SCOPE_OAUTH_REGISTRATION_FK_FKEY;
+ public static final ForeignKey ORGANIZATION_USER__ORGANIZATION_USER_USER_ID_FKEY = ForeignKeys0.ORGANIZATION_USER__ORGANIZATION_USER_USER_ID_FKEY;
+ public static final ForeignKey ORGANIZATION_USER__ORGANIZATION_USER_ORGANIZATION_ID_FKEY = ForeignKeys0.ORGANIZATION_USER__ORGANIZATION_USER_ORGANIZATION_ID_FKEY;
public static final ForeignKey OWNED_ENTITY__SHAREABLE_ENTITY_PROJECT_ID_FKEY = ForeignKeys0.OWNED_ENTITY__SHAREABLE_ENTITY_PROJECT_ID_FKEY;
public static final ForeignKey PARAMETER__PARAMETER_ITEM_ID_FKEY = ForeignKeys0.PARAMETER__PARAMETER_ITEM_ID_FKEY;
public static final ForeignKey PATTERN_TEMPLATE__PATTERN_TEMPLATE_PROJECT_ID_FKEY = ForeignKeys0.PATTERN_TEMPLATE__PATTERN_TEMPLATE_PROJECT_ID_FKEY;
@@ -331,6 +345,8 @@ private static class Identities0 {
public static Identity IDENTITY_OAUTH_REGISTRATION_RESTRICTION = Internal.createIdentity(JOauthRegistrationRestriction.OAUTH_REGISTRATION_RESTRICTION, JOauthRegistrationRestriction.OAUTH_REGISTRATION_RESTRICTION.ID);
public static Identity IDENTITY_OAUTH_REGISTRATION_SCOPE = Internal.createIdentity(JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE, JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE.ID);
public static Identity IDENTITY_ONBOARDING = Internal.createIdentity(JOnboarding.ONBOARDING, JOnboarding.ONBOARDING.ID);
+ public static Identity IDENTITY_ORGANIZATION = Internal.createIdentity(JOrganization.ORGANIZATION, JOrganization.ORGANIZATION.ID);
+ public static Identity IDENTITY_ORGANIZATION_USER = Internal.createIdentity(JOrganizationUser.ORGANIZATION_USER, JOrganizationUser.ORGANIZATION_USER.USER_ID);
public static Identity IDENTITY_OWNED_ENTITY = Internal.createIdentity(JOwnedEntity.OWNED_ENTITY, JOwnedEntity.OWNED_ENTITY.ID);
public static Identity IDENTITY_PATTERN_TEMPLATE = Internal.createIdentity(JPatternTemplate.PATTERN_TEMPLATE, JPatternTemplate.PATTERN_TEMPLATE.ID);
public static Identity IDENTITY_PROJECT = Internal.createIdentity(JProject.PROJECT, JProject.PROJECT.ID);
@@ -386,12 +402,18 @@ private static class UniqueKeys0 {
public static final UniqueKey OAUTH_REGISTRATION_SCOPE_PK = Internal.createUniqueKey(JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE, "oauth_registration_scope_pk", JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE.ID);
public static final UniqueKey OAUTH_REGISTRATION_SCOPE_UNIQUE = Internal.createUniqueKey(JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE, "oauth_registration_scope_unique", JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE.SCOPE, JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE.OAUTH_REGISTRATION_FK);
public static final UniqueKey ONBOARDING_PK = Internal.createUniqueKey(JOnboarding.ONBOARDING, "onboarding_pk", JOnboarding.ONBOARDING.ID);
+ public static final UniqueKey ORGANIZATION_PKEY = Internal.createUniqueKey(JOrganization.ORGANIZATION, "organization_pkey", JOrganization.ORGANIZATION.ID);
+ public static final UniqueKey ORGANIZATION_NAME_KEY = Internal.createUniqueKey(JOrganization.ORGANIZATION, "organization_name_key", JOrganization.ORGANIZATION.NAME);
+ public static final UniqueKey ORGANIZATION_SLUG_KEY = Internal.createUniqueKey(JOrganization.ORGANIZATION, "organization_slug_key", JOrganization.ORGANIZATION.SLUG);
+ public static final UniqueKey ORGANIZATION_USER_PK = Internal.createUniqueKey(JOrganizationUser.ORGANIZATION_USER, "organization_user_pk", JOrganizationUser.ORGANIZATION_USER.USER_ID, JOrganizationUser.ORGANIZATION_USER.ORGANIZATION_ID);
public static final UniqueKey SHAREABLE_PK = Internal.createUniqueKey(JOwnedEntity.OWNED_ENTITY, "shareable_pk", JOwnedEntity.OWNED_ENTITY.ID);
public static final UniqueKey PATTERN_TEMPLATE_PK = Internal.createUniqueKey(JPatternTemplate.PATTERN_TEMPLATE, "pattern_template_pk", JPatternTemplate.PATTERN_TEMPLATE.ID);
public static final UniqueKey UNQ_NAME_PROJECTID = Internal.createUniqueKey(JPatternTemplate.PATTERN_TEMPLATE, "unq_name_projectid", JPatternTemplate.PATTERN_TEMPLATE.NAME, JPatternTemplate.PATTERN_TEMPLATE.PROJECT_ID);
public static final UniqueKey PATTERN_ITEM_UNQ = Internal.createUniqueKey(JPatternTemplateTestItem.PATTERN_TEMPLATE_TEST_ITEM, "pattern_item_unq", JPatternTemplateTestItem.PATTERN_TEMPLATE_TEST_ITEM.PATTERN_ID, JPatternTemplateTestItem.PATTERN_TEMPLATE_TEST_ITEM.ITEM_ID);
public static final UniqueKey PROJECT_PK = Internal.createUniqueKey(JProject.PROJECT, "project_pk", JProject.PROJECT.ID);
public static final UniqueKey PROJECT_NAME_KEY = Internal.createUniqueKey(JProject.PROJECT, "project_name_key", JProject.PROJECT.NAME);
+ public static final UniqueKey PROJECT_SLUG_KEY = Internal.createUniqueKey(JProject.PROJECT, "project_slug_key", JProject.PROJECT.SLUG);
+ public static final UniqueKey PROJECT_KEY_KEY = Internal.createUniqueKey(JProject.PROJECT, "project_key_key", JProject.PROJECT.KEY);
public static final UniqueKey UNIQUE_ATTRIBUTE_PER_PROJECT = Internal.createUniqueKey(JProjectAttribute.PROJECT_ATTRIBUTE, "unique_attribute_per_project", JProjectAttribute.PROJECT_ATTRIBUTE.ATTRIBUTE_ID, JProjectAttribute.PROJECT_ATTRIBUTE.PROJECT_ID);
public static final UniqueKey USERS_PROJECT_PK = Internal.createUniqueKey(JProjectUser.PROJECT_USER, "users_project_pk", JProjectUser.PROJECT_USER.USER_ID, JProjectUser.PROJECT_USER.PROJECT_ID);
public static final UniqueKey RESTORE_PASSWORD_BID_PK = Internal.createUniqueKey(JRestorePasswordBid.RESTORE_PASSWORD_BID, "restore_password_bid_pk", JRestorePasswordBid.RESTORE_PASSWORD_BID.UUID);
@@ -452,6 +474,8 @@ private static class ForeignKeys0 {
public static final ForeignKey LOG__LOG_ATTACHMENT_ID_FKEY = Internal.createForeignKey(com.epam.ta.reportportal.jooq.Keys.ATTACHMENT_PK, JLog.LOG, "log__log_attachment_id_fkey", JLog.LOG.ATTACHMENT_ID);
public static final ForeignKey OAUTH_REGISTRATION_RESTRICTION__OAUTH_REGISTRATION_RESTRICTION_OAUTH_REGISTRATION_FK_FKEY = Internal.createForeignKey(com.epam.ta.reportportal.jooq.Keys.OAUTH_REGISTRATION_PKEY, JOauthRegistrationRestriction.OAUTH_REGISTRATION_RESTRICTION, "oauth_registration_restriction__oauth_registration_restriction_oauth_registration_fk_fkey", JOauthRegistrationRestriction.OAUTH_REGISTRATION_RESTRICTION.OAUTH_REGISTRATION_FK);
public static final ForeignKey OAUTH_REGISTRATION_SCOPE__OAUTH_REGISTRATION_SCOPE_OAUTH_REGISTRATION_FK_FKEY = Internal.createForeignKey(com.epam.ta.reportportal.jooq.Keys.OAUTH_REGISTRATION_PKEY, JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE, "oauth_registration_scope__oauth_registration_scope_oauth_registration_fk_fkey", JOauthRegistrationScope.OAUTH_REGISTRATION_SCOPE.OAUTH_REGISTRATION_FK);
+ public static final ForeignKey ORGANIZATION_USER__ORGANIZATION_USER_USER_ID_FKEY = Internal.createForeignKey(com.epam.ta.reportportal.jooq.Keys.USERS_PK, JOrganizationUser.ORGANIZATION_USER, "organization_user__organization_user_user_id_fkey", JOrganizationUser.ORGANIZATION_USER.USER_ID);
+ public static final ForeignKey ORGANIZATION_USER__ORGANIZATION_USER_ORGANIZATION_ID_FKEY = Internal.createForeignKey(com.epam.ta.reportportal.jooq.Keys.ORGANIZATION_PKEY, JOrganizationUser.ORGANIZATION_USER, "organization_user__organization_user_organization_id_fkey", JOrganizationUser.ORGANIZATION_USER.ORGANIZATION_ID);
public static final ForeignKey OWNED_ENTITY__SHAREABLE_ENTITY_PROJECT_ID_FKEY = Internal.createForeignKey(com.epam.ta.reportportal.jooq.Keys.PROJECT_PK, JOwnedEntity.OWNED_ENTITY, "owned_entity__shareable_entity_project_id_fkey", JOwnedEntity.OWNED_ENTITY.PROJECT_ID);
public static final ForeignKey PARAMETER__PARAMETER_ITEM_ID_FKEY = Internal.createForeignKey(com.epam.ta.reportportal.jooq.Keys.TEST_ITEM_PK, JParameter.PARAMETER, "parameter__parameter_item_id_fkey", JParameter.PARAMETER.ITEM_ID);
public static final ForeignKey PATTERN_TEMPLATE__PATTERN_TEMPLATE_PROJECT_ID_FKEY = Internal.createForeignKey(com.epam.ta.reportportal.jooq.Keys.PROJECT_PK, JPatternTemplate.PATTERN_TEMPLATE, "pattern_template__pattern_template_project_id_fkey", JPatternTemplate.PATTERN_TEMPLATE.PROJECT_ID);
diff --git a/src/main/java/com/epam/ta/reportportal/jooq/Sequences.java b/src/main/java/com/epam/ta/reportportal/jooq/Sequences.java
index b1c0fc0aa..6eb9a445b 100644
--- a/src/main/java/com/epam/ta/reportportal/jooq/Sequences.java
+++ b/src/main/java/com/epam/ta/reportportal/jooq/Sequences.java
@@ -118,6 +118,16 @@ public class Sequences {
*/
public static final Sequence ONBOARDING_ID_SEQ = new SequenceImpl("onboarding_id_seq", JPublic.PUBLIC, org.jooq.impl.SQLDataType.SMALLINT.nullable(false));
+ /**
+ * The sequence public.organization_id_seq
+ */
+ public static final Sequence ORGANIZATION_ID_SEQ = new SequenceImpl("organization_id_seq", JPublic.PUBLIC, org.jooq.impl.SQLDataType.BIGINT.nullable(false));
+
+ /**
+ * The sequence public.organization_user_user_id_seq
+ */
+ public static final Sequence ORGANIZATION_USER_USER_ID_SEQ = new SequenceImpl("organization_user_user_id_seq", JPublic.PUBLIC, org.jooq.impl.SQLDataType.BIGINT.nullable(false));
+
/**
* The sequence public.pattern_template_id_seq
*/
diff --git a/src/main/java/com/epam/ta/reportportal/jooq/Tables.java b/src/main/java/com/epam/ta/reportportal/jooq/Tables.java
index ab133d143..1c247af11 100644
--- a/src/main/java/com/epam/ta/reportportal/jooq/Tables.java
+++ b/src/main/java/com/epam/ta/reportportal/jooq/Tables.java
@@ -34,6 +34,8 @@
import com.epam.ta.reportportal.jooq.tables.JOauthRegistrationRestriction;
import com.epam.ta.reportportal.jooq.tables.JOauthRegistrationScope;
import com.epam.ta.reportportal.jooq.tables.JOnboarding;
+import com.epam.ta.reportportal.jooq.tables.JOrganization;
+import com.epam.ta.reportportal.jooq.tables.JOrganizationUser;
import com.epam.ta.reportportal.jooq.tables.JOwnedEntity;
import com.epam.ta.reportportal.jooq.tables.JParameter;
import com.epam.ta.reportportal.jooq.tables.JPatternTemplate;
@@ -230,6 +232,16 @@ public class Tables {
*/
public static final JOnboarding ONBOARDING = JOnboarding.ONBOARDING;
+ /**
+ * The table public.organization
.
+ */
+ public static final JOrganization ORGANIZATION = JOrganization.ORGANIZATION;
+
+ /**
+ * The table public.organization_user
.
+ */
+ public static final JOrganizationUser ORGANIZATION_USER = JOrganizationUser.ORGANIZATION_USER;
+
/**
* The table public.owned_entity
.
*/
diff --git a/src/main/java/com/epam/ta/reportportal/jooq/enums/JOrganizationRoleEnum.java b/src/main/java/com/epam/ta/reportportal/jooq/enums/JOrganizationRoleEnum.java
new file mode 100644
index 000000000..b49770127
--- /dev/null
+++ b/src/main/java/com/epam/ta/reportportal/jooq/enums/JOrganizationRoleEnum.java
@@ -0,0 +1,58 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package com.epam.ta.reportportal.jooq.enums;
+
+
+import com.epam.ta.reportportal.jooq.JPublic;
+
+import javax.annotation.processing.Generated;
+
+import org.jooq.Catalog;
+import org.jooq.EnumType;
+import org.jooq.Schema;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@Generated(
+ value = {
+ "http://www.jooq.org",
+ "jOOQ version:3.12.4"
+ },
+ comments = "This class is generated by jOOQ"
+)
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public enum JOrganizationRoleEnum implements EnumType {
+
+ MANAGER("MANAGER"),
+
+ MEMBER("MEMBER");
+
+ private final String literal;
+
+ private JOrganizationRoleEnum(String literal) {
+ this.literal = literal;
+ }
+
+ @Override
+ public Catalog getCatalog() {
+ return getSchema() == null ? null : getSchema().getCatalog();
+ }
+
+ @Override
+ public Schema getSchema() {
+ return JPublic.PUBLIC;
+ }
+
+ @Override
+ public String getName() {
+ return "organization_role_enum";
+ }
+
+ @Override
+ public String getLiteral() {
+ return literal;
+ }
+}
diff --git a/src/main/java/com/epam/ta/reportportal/jooq/tables/JLog.java b/src/main/java/com/epam/ta/reportportal/jooq/tables/JLog.java
index 023f79df7..04ebbd871 100644
--- a/src/main/java/com/epam/ta/reportportal/jooq/tables/JLog.java
+++ b/src/main/java/com/epam/ta/reportportal/jooq/tables/JLog.java
@@ -43,7 +43,7 @@
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class JLog extends TableImpl {
- private static final long serialVersionUID = -198837446;
+ private static final long serialVersionUID = 231270563;
/**
* The reference instance of public.log
@@ -153,7 +153,7 @@ public Schema getSchema() {
@Override
public List getIndexes() {
- return Arrays.asList(Indexes.LOG_ATTACH_ID_IDX, Indexes.LOG_CLUSTER_IDX, Indexes.LOG_LAUNCH_ID_IDX, Indexes.LOG_MESSAGE_TRGM_IDX, Indexes.LOG_PK, Indexes.LOG_PROJECT_ID_LOG_TIME_IDX, Indexes.LOG_PROJECT_IDX, Indexes.LOG_TI_IDX);
+ return Arrays.asList(Indexes.LOG_ATTACH_ID_IDX, Indexes.LOG_CLUSTER_IDX, Indexes.LOG_LAUNCH_ID_IDX, Indexes.LOG_PK, Indexes.LOG_PROJECT_ID_LOG_TIME_IDX, Indexes.LOG_PROJECT_IDX, Indexes.LOG_TI_IDX);
}
@Override
diff --git a/src/main/java/com/epam/ta/reportportal/jooq/tables/JOrganization.java b/src/main/java/com/epam/ta/reportportal/jooq/tables/JOrganization.java
new file mode 100644
index 000000000..7bb07428e
--- /dev/null
+++ b/src/main/java/com/epam/ta/reportportal/jooq/tables/JOrganization.java
@@ -0,0 +1,178 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package com.epam.ta.reportportal.jooq.tables;
+
+
+import com.epam.ta.reportportal.jooq.Indexes;
+import com.epam.ta.reportportal.jooq.JPublic;
+import com.epam.ta.reportportal.jooq.Keys;
+import com.epam.ta.reportportal.jooq.tables.records.JOrganizationRecord;
+
+import java.sql.Timestamp;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.annotation.processing.Generated;
+
+import org.jooq.Field;
+import org.jooq.ForeignKey;
+import org.jooq.Identity;
+import org.jooq.Index;
+import org.jooq.Name;
+import org.jooq.Record;
+import org.jooq.Row5;
+import org.jooq.Schema;
+import org.jooq.Table;
+import org.jooq.TableField;
+import org.jooq.UniqueKey;
+import org.jooq.impl.DSL;
+import org.jooq.impl.TableImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@Generated(
+ value = {
+ "http://www.jooq.org",
+ "jOOQ version:3.12.4"
+ },
+ comments = "This class is generated by jOOQ"
+)
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class JOrganization extends TableImpl {
+
+ private static final long serialVersionUID = -816599241;
+
+ /**
+ * The reference instance of public.organization
+ */
+ public static final JOrganization ORGANIZATION = new JOrganization();
+
+ /**
+ * The class holding records for this type
+ */
+ @Override
+ public Class getRecordType() {
+ return JOrganizationRecord.class;
+ }
+
+ /**
+ * The column public.organization.id
.
+ */
+ public final TableField ID = createField(DSL.name("id"), org.jooq.impl.SQLDataType.BIGINT.nullable(false).defaultValue(org.jooq.impl.DSL.field("nextval('organization_id_seq'::regclass)", org.jooq.impl.SQLDataType.BIGINT)), this, "");
+
+ /**
+ * The column public.organization.creation_date
.
+ */
+ public final TableField CREATION_DATE = createField(DSL.name("creation_date"), org.jooq.impl.SQLDataType.TIMESTAMP.nullable(false).defaultValue(org.jooq.impl.DSL.field("now()", org.jooq.impl.SQLDataType.TIMESTAMP)), this, "");
+
+ /**
+ * The column public.organization.name
.
+ */
+ public final TableField NAME = createField(DSL.name("name"), org.jooq.impl.SQLDataType.CLOB.nullable(false), this, "");
+
+ /**
+ * The column public.organization.organization_type
.
+ */
+ public final TableField ORGANIZATION_TYPE = createField(DSL.name("organization_type"), org.jooq.impl.SQLDataType.CLOB.nullable(false), this, "");
+
+ /**
+ * The column public.organization.slug
.
+ */
+ public final TableField SLUG = createField(DSL.name("slug"), org.jooq.impl.SQLDataType.CLOB.nullable(false), this, "");
+
+ /**
+ * Create a public.organization
table reference
+ */
+ public JOrganization() {
+ this(DSL.name("organization"), null);
+ }
+
+ /**
+ * Create an aliased public.organization
table reference
+ */
+ public JOrganization(String alias) {
+ this(DSL.name(alias), ORGANIZATION);
+ }
+
+ /**
+ * Create an aliased public.organization
table reference
+ */
+ public JOrganization(Name alias) {
+ this(alias, ORGANIZATION);
+ }
+
+ private JOrganization(Name alias, Table aliased) {
+ this(alias, aliased, null);
+ }
+
+ private JOrganization(Name alias, Table aliased, Field>[] parameters) {
+ super(alias, null, aliased, parameters, DSL.comment(""));
+ }
+
+ public JOrganization(Table child, ForeignKey key) {
+ super(child, key, ORGANIZATION);
+ }
+
+ @Override
+ public Schema getSchema() {
+ return JPublic.PUBLIC;
+ }
+
+ @Override
+ public List getIndexes() {
+ return Arrays.asList(Indexes.ORGANIZATION_NAME_KEY, Indexes.ORGANIZATION_PKEY, Indexes.ORGANIZATION_SLUG_IDX, Indexes.ORGANIZATION_SLUG_KEY);
+ }
+
+ @Override
+ public Identity getIdentity() {
+ return Keys.IDENTITY_ORGANIZATION;
+ }
+
+ @Override
+ public UniqueKey getPrimaryKey() {
+ return Keys.ORGANIZATION_PKEY;
+ }
+
+ @Override
+ public List> getKeys() {
+ return Arrays.>asList(Keys.ORGANIZATION_PKEY, Keys.ORGANIZATION_NAME_KEY, Keys.ORGANIZATION_SLUG_KEY);
+ }
+
+ @Override
+ public JOrganization as(String alias) {
+ return new JOrganization(DSL.name(alias), this);
+ }
+
+ @Override
+ public JOrganization as(Name alias) {
+ return new JOrganization(alias, this);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public JOrganization rename(String name) {
+ return new JOrganization(DSL.name(name), null);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public JOrganization rename(Name name) {
+ return new JOrganization(name, null);
+ }
+
+ // -------------------------------------------------------------------------
+ // Row5 type methods
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Row5 fieldsRow() {
+ return (Row5) super.fieldsRow();
+ }
+}
diff --git a/src/main/java/com/epam/ta/reportportal/jooq/tables/JOrganizationUser.java b/src/main/java/com/epam/ta/reportportal/jooq/tables/JOrganizationUser.java
new file mode 100644
index 000000000..ba8a6bf94
--- /dev/null
+++ b/src/main/java/com/epam/ta/reportportal/jooq/tables/JOrganizationUser.java
@@ -0,0 +1,181 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package com.epam.ta.reportportal.jooq.tables;
+
+
+import com.epam.ta.reportportal.jooq.Indexes;
+import com.epam.ta.reportportal.jooq.JPublic;
+import com.epam.ta.reportportal.jooq.Keys;
+import com.epam.ta.reportportal.jooq.enums.JOrganizationRoleEnum;
+import com.epam.ta.reportportal.jooq.tables.records.JOrganizationUserRecord;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.annotation.processing.Generated;
+
+import org.jooq.Field;
+import org.jooq.ForeignKey;
+import org.jooq.Identity;
+import org.jooq.Index;
+import org.jooq.Name;
+import org.jooq.Record;
+import org.jooq.Row3;
+import org.jooq.Schema;
+import org.jooq.Table;
+import org.jooq.TableField;
+import org.jooq.UniqueKey;
+import org.jooq.impl.DSL;
+import org.jooq.impl.TableImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@Generated(
+ value = {
+ "http://www.jooq.org",
+ "jOOQ version:3.12.4"
+ },
+ comments = "This class is generated by jOOQ"
+)
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class JOrganizationUser extends TableImpl {
+
+ private static final long serialVersionUID = -453434879;
+
+ /**
+ * The reference instance of public.organization_user
+ */
+ public static final JOrganizationUser ORGANIZATION_USER = new JOrganizationUser();
+
+ /**
+ * The class holding records for this type
+ */
+ @Override
+ public Class getRecordType() {
+ return JOrganizationUserRecord.class;
+ }
+
+ /**
+ * The column public.organization_user.user_id
.
+ */
+ public final TableField USER_ID = createField(DSL.name("user_id"), org.jooq.impl.SQLDataType.BIGINT.nullable(false).defaultValue(org.jooq.impl.DSL.field("nextval('organization_user_user_id_seq'::regclass)", org.jooq.impl.SQLDataType.BIGINT)), this, "");
+
+ /**
+ * The column public.organization_user.organization_id
.
+ */
+ public final TableField ORGANIZATION_ID = createField(DSL.name("organization_id"), org.jooq.impl.SQLDataType.BIGINT.nullable(false), this, "");
+
+ /**
+ * The column public.organization_user.organization_role
.
+ */
+ public final TableField ORGANIZATION_ROLE = createField(DSL.name("organization_role"), org.jooq.impl.SQLDataType.VARCHAR.nullable(false).asEnumDataType(com.epam.ta.reportportal.jooq.enums.JOrganizationRoleEnum.class), this, "");
+
+ /**
+ * Create a public.organization_user
table reference
+ */
+ public JOrganizationUser() {
+ this(DSL.name("organization_user"), null);
+ }
+
+ /**
+ * Create an aliased public.organization_user
table reference
+ */
+ public JOrganizationUser(String alias) {
+ this(DSL.name(alias), ORGANIZATION_USER);
+ }
+
+ /**
+ * Create an aliased public.organization_user
table reference
+ */
+ public JOrganizationUser(Name alias) {
+ this(alias, ORGANIZATION_USER);
+ }
+
+ private JOrganizationUser(Name alias, Table aliased) {
+ this(alias, aliased, null);
+ }
+
+ private JOrganizationUser(Name alias, Table aliased, Field>[] parameters) {
+ super(alias, null, aliased, parameters, DSL.comment(""));
+ }
+
+ public JOrganizationUser(Table child, ForeignKey key) {
+ super(child, key, ORGANIZATION_USER);
+ }
+
+ @Override
+ public Schema getSchema() {
+ return JPublic.PUBLIC;
+ }
+
+ @Override
+ public List getIndexes() {
+ return Arrays.asList(Indexes.ORGANIZATION_USER_PK);
+ }
+
+ @Override
+ public Identity getIdentity() {
+ return Keys.IDENTITY_ORGANIZATION_USER;
+ }
+
+ @Override
+ public UniqueKey getPrimaryKey() {
+ return Keys.ORGANIZATION_USER_PK;
+ }
+
+ @Override
+ public List> getKeys() {
+ return Arrays.>asList(Keys.ORGANIZATION_USER_PK);
+ }
+
+ @Override
+ public List> getReferences() {
+ return Arrays.>asList(Keys.ORGANIZATION_USER__ORGANIZATION_USER_USER_ID_FKEY, Keys.ORGANIZATION_USER__ORGANIZATION_USER_ORGANIZATION_ID_FKEY);
+ }
+
+ public JUsers users() {
+ return new JUsers(this, Keys.ORGANIZATION_USER__ORGANIZATION_USER_USER_ID_FKEY);
+ }
+
+ public JOrganization organization() {
+ return new JOrganization(this, Keys.ORGANIZATION_USER__ORGANIZATION_USER_ORGANIZATION_ID_FKEY);
+ }
+
+ @Override
+ public JOrganizationUser as(String alias) {
+ return new JOrganizationUser(DSL.name(alias), this);
+ }
+
+ @Override
+ public JOrganizationUser as(Name alias) {
+ return new JOrganizationUser(alias, this);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public JOrganizationUser rename(String name) {
+ return new JOrganizationUser(DSL.name(name), null);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public JOrganizationUser rename(Name name) {
+ return new JOrganizationUser(name, null);
+ }
+
+ // -------------------------------------------------------------------------
+ // Row3 type methods
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Row3 fieldsRow() {
+ return (Row3) super.fieldsRow();
+ }
+}
diff --git a/src/main/java/com/epam/ta/reportportal/jooq/tables/JProject.java b/src/main/java/com/epam/ta/reportportal/jooq/tables/JProject.java
index 4f07f222f..29ac5099a 100644
--- a/src/main/java/com/epam/ta/reportportal/jooq/tables/JProject.java
+++ b/src/main/java/com/epam/ta/reportportal/jooq/tables/JProject.java
@@ -22,7 +22,7 @@
import org.jooq.JSONB;
import org.jooq.Name;
import org.jooq.Record;
-import org.jooq.Row7;
+import org.jooq.Row10;
import org.jooq.Schema;
import org.jooq.Table;
import org.jooq.TableField;
@@ -44,7 +44,7 @@
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class JProject extends TableImpl {
- private static final long serialVersionUID = 1584335243;
+ private static final long serialVersionUID = 1992655868;
/**
* The reference instance of public.project
@@ -94,6 +94,21 @@ public Class getRecordType() {
*/
public final TableField ALLOCATED_STORAGE = createField(DSL.name("allocated_storage"), org.jooq.impl.SQLDataType.BIGINT.nullable(false).defaultValue(org.jooq.impl.DSL.field("0", org.jooq.impl.SQLDataType.BIGINT)), this, "");
+ /**
+ * The column public.project.organization_id
.
+ */
+ public final TableField ORGANIZATION_ID = createField(DSL.name("organization_id"), org.jooq.impl.SQLDataType.BIGINT, this, "");
+
+ /**
+ * The column public.project.slug
.
+ */
+ public final TableField SLUG = createField(DSL.name("slug"), org.jooq.impl.SQLDataType.CLOB, this, "");
+
+ /**
+ * The column public.project.key
.
+ */
+ public final TableField KEY = createField(DSL.name("key"), org.jooq.impl.SQLDataType.CLOB, this, "");
+
/**
* Create a public.project
table reference
*/
@@ -134,7 +149,7 @@ public Schema getSchema() {
@Override
public List getIndexes() {
- return Arrays.asList(Indexes.PROJECT_NAME_KEY, Indexes.PROJECT_PK);
+ return Arrays.asList(Indexes.PROJECT_KEY_IDX, Indexes.PROJECT_KEY_KEY, Indexes.PROJECT_NAME_KEY, Indexes.PROJECT_PK, Indexes.PROJECT_SLUG_KEY);
}
@Override
@@ -149,7 +164,7 @@ public UniqueKey getPrimaryKey() {
@Override
public List> getKeys() {
- return Arrays.>asList(Keys.PROJECT_PK, Keys.PROJECT_NAME_KEY);
+ return Arrays.>asList(Keys.PROJECT_PK, Keys.PROJECT_NAME_KEY, Keys.PROJECT_SLUG_KEY, Keys.PROJECT_KEY_KEY);
}
@Override
@@ -179,11 +194,11 @@ public JProject rename(Name name) {
}
// -------------------------------------------------------------------------
- // Row7 type methods
+ // Row10 type methods
// -------------------------------------------------------------------------
@Override
- public Row7 fieldsRow() {
- return (Row7) super.fieldsRow();
+ public Row10 fieldsRow() {
+ return (Row10) super.fieldsRow();
}
}
diff --git a/src/main/java/com/epam/ta/reportportal/jooq/tables/records/JOrganizationRecord.java b/src/main/java/com/epam/ta/reportportal/jooq/tables/records/JOrganizationRecord.java
new file mode 100644
index 000000000..b86cc8dbd
--- /dev/null
+++ b/src/main/java/com/epam/ta/reportportal/jooq/tables/records/JOrganizationRecord.java
@@ -0,0 +1,266 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package com.epam.ta.reportportal.jooq.tables.records;
+
+
+import com.epam.ta.reportportal.jooq.tables.JOrganization;
+
+import java.sql.Timestamp;
+
+import javax.annotation.processing.Generated;
+
+import org.jooq.Field;
+import org.jooq.Record1;
+import org.jooq.Record5;
+import org.jooq.Row5;
+import org.jooq.impl.UpdatableRecordImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@Generated(
+ value = {
+ "http://www.jooq.org",
+ "jOOQ version:3.12.4"
+ },
+ comments = "This class is generated by jOOQ"
+)
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class JOrganizationRecord extends UpdatableRecordImpl implements Record5 {
+
+ private static final long serialVersionUID = 909327136;
+
+ /**
+ * Setter for public.organization.id
.
+ */
+ public void setId(Long value) {
+ set(0, value);
+ }
+
+ /**
+ * Getter for public.organization.id
.
+ */
+ public Long getId() {
+ return (Long) get(0);
+ }
+
+ /**
+ * Setter for public.organization.creation_date
.
+ */
+ public void setCreationDate(Timestamp value) {
+ set(1, value);
+ }
+
+ /**
+ * Getter for public.organization.creation_date
.
+ */
+ public Timestamp getCreationDate() {
+ return (Timestamp) get(1);
+ }
+
+ /**
+ * Setter for public.organization.name
.
+ */
+ public void setName(String value) {
+ set(2, value);
+ }
+
+ /**
+ * Getter for public.organization.name
.
+ */
+ public String getName() {
+ return (String) get(2);
+ }
+
+ /**
+ * Setter for public.organization.organization_type
.
+ */
+ public void setOrganizationType(String value) {
+ set(3, value);
+ }
+
+ /**
+ * Getter for public.organization.organization_type
.
+ */
+ public String getOrganizationType() {
+ return (String) get(3);
+ }
+
+ /**
+ * Setter for public.organization.slug
.
+ */
+ public void setSlug(String value) {
+ set(4, value);
+ }
+
+ /**
+ * Getter for public.organization.slug
.
+ */
+ public String getSlug() {
+ return (String) get(4);
+ }
+
+ // -------------------------------------------------------------------------
+ // Primary key information
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Record1 key() {
+ return (Record1) super.key();
+ }
+
+ // -------------------------------------------------------------------------
+ // Record5 type implementation
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Row5 fieldsRow() {
+ return (Row5) super.fieldsRow();
+ }
+
+ @Override
+ public Row5 valuesRow() {
+ return (Row5) super.valuesRow();
+ }
+
+ @Override
+ public Field field1() {
+ return JOrganization.ORGANIZATION.ID;
+ }
+
+ @Override
+ public Field field2() {
+ return JOrganization.ORGANIZATION.CREATION_DATE;
+ }
+
+ @Override
+ public Field field3() {
+ return JOrganization.ORGANIZATION.NAME;
+ }
+
+ @Override
+ public Field field4() {
+ return JOrganization.ORGANIZATION.ORGANIZATION_TYPE;
+ }
+
+ @Override
+ public Field field5() {
+ return JOrganization.ORGANIZATION.SLUG;
+ }
+
+ @Override
+ public Long component1() {
+ return getId();
+ }
+
+ @Override
+ public Timestamp component2() {
+ return getCreationDate();
+ }
+
+ @Override
+ public String component3() {
+ return getName();
+ }
+
+ @Override
+ public String component4() {
+ return getOrganizationType();
+ }
+
+ @Override
+ public String component5() {
+ return getSlug();
+ }
+
+ @Override
+ public Long value1() {
+ return getId();
+ }
+
+ @Override
+ public Timestamp value2() {
+ return getCreationDate();
+ }
+
+ @Override
+ public String value3() {
+ return getName();
+ }
+
+ @Override
+ public String value4() {
+ return getOrganizationType();
+ }
+
+ @Override
+ public String value5() {
+ return getSlug();
+ }
+
+ @Override
+ public JOrganizationRecord value1(Long value) {
+ setId(value);
+ return this;
+ }
+
+ @Override
+ public JOrganizationRecord value2(Timestamp value) {
+ setCreationDate(value);
+ return this;
+ }
+
+ @Override
+ public JOrganizationRecord value3(String value) {
+ setName(value);
+ return this;
+ }
+
+ @Override
+ public JOrganizationRecord value4(String value) {
+ setOrganizationType(value);
+ return this;
+ }
+
+ @Override
+ public JOrganizationRecord value5(String value) {
+ setSlug(value);
+ return this;
+ }
+
+ @Override
+ public JOrganizationRecord values(Long value1, Timestamp value2, String value3, String value4, String value5) {
+ value1(value1);
+ value2(value2);
+ value3(value3);
+ value4(value4);
+ value5(value5);
+ return this;
+ }
+
+ // -------------------------------------------------------------------------
+ // Constructors
+ // -------------------------------------------------------------------------
+
+ /**
+ * Create a detached JOrganizationRecord
+ */
+ public JOrganizationRecord() {
+ super(JOrganization.ORGANIZATION);
+ }
+
+ /**
+ * Create a detached, initialised JOrganizationRecord
+ */
+ public JOrganizationRecord(Long id, Timestamp creationDate, String name, String organizationType, String slug) {
+ super(JOrganization.ORGANIZATION);
+
+ set(0, id);
+ set(1, creationDate);
+ set(2, name);
+ set(3, organizationType);
+ set(4, slug);
+ }
+}
diff --git a/src/main/java/com/epam/ta/reportportal/jooq/tables/records/JOrganizationUserRecord.java b/src/main/java/com/epam/ta/reportportal/jooq/tables/records/JOrganizationUserRecord.java
new file mode 100644
index 000000000..73d5f60df
--- /dev/null
+++ b/src/main/java/com/epam/ta/reportportal/jooq/tables/records/JOrganizationUserRecord.java
@@ -0,0 +1,191 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package com.epam.ta.reportportal.jooq.tables.records;
+
+
+import com.epam.ta.reportportal.jooq.enums.JOrganizationRoleEnum;
+import com.epam.ta.reportportal.jooq.tables.JOrganizationUser;
+
+import javax.annotation.processing.Generated;
+
+import org.jooq.Field;
+import org.jooq.Record2;
+import org.jooq.Record3;
+import org.jooq.Row3;
+import org.jooq.impl.UpdatableRecordImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@Generated(
+ value = {
+ "http://www.jooq.org",
+ "jOOQ version:3.12.4"
+ },
+ comments = "This class is generated by jOOQ"
+)
+@SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class JOrganizationUserRecord extends UpdatableRecordImpl implements Record3 {
+
+ private static final long serialVersionUID = -1276662636;
+
+ /**
+ * Setter for public.organization_user.user_id
.
+ */
+ public void setUserId(Long value) {
+ set(0, value);
+ }
+
+ /**
+ * Getter for public.organization_user.user_id
.
+ */
+ public Long getUserId() {
+ return (Long) get(0);
+ }
+
+ /**
+ * Setter for public.organization_user.organization_id
.
+ */
+ public void setOrganizationId(Long value) {
+ set(1, value);
+ }
+
+ /**
+ * Getter for public.organization_user.organization_id
.
+ */
+ public Long getOrganizationId() {
+ return (Long) get(1);
+ }
+
+ /**
+ * Setter for public.organization_user.organization_role
.
+ */
+ public void setOrganizationRole(JOrganizationRoleEnum value) {
+ set(2, value);
+ }
+
+ /**
+ * Getter for public.organization_user.organization_role
.
+ */
+ public JOrganizationRoleEnum getOrganizationRole() {
+ return (JOrganizationRoleEnum) get(2);
+ }
+
+ // -------------------------------------------------------------------------
+ // Primary key information
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Record2 key() {
+ return (Record2) super.key();
+ }
+
+ // -------------------------------------------------------------------------
+ // Record3 type implementation
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Row3 fieldsRow() {
+ return (Row3) super.fieldsRow();
+ }
+
+ @Override
+ public Row3 valuesRow() {
+ return (Row3) super.valuesRow();
+ }
+
+ @Override
+ public Field field1() {
+ return JOrganizationUser.ORGANIZATION_USER.USER_ID;
+ }
+
+ @Override
+ public Field field2() {
+ return JOrganizationUser.ORGANIZATION_USER.ORGANIZATION_ID;
+ }
+
+ @Override
+ public Field field3() {
+ return JOrganizationUser.ORGANIZATION_USER.ORGANIZATION_ROLE;
+ }
+
+ @Override
+ public Long component1() {
+ return getUserId();
+ }
+
+ @Override
+ public Long component2() {
+ return getOrganizationId();
+ }
+
+ @Override
+ public JOrganizationRoleEnum component3() {
+ return getOrganizationRole();
+ }
+
+ @Override
+ public Long value1() {
+ return getUserId();
+ }
+
+ @Override
+ public Long value2() {
+ return getOrganizationId();
+ }
+
+ @Override
+ public JOrganizationRoleEnum value3() {
+ return getOrganizationRole();
+ }
+
+ @Override
+ public JOrganizationUserRecord value1(Long value) {
+ setUserId(value);
+ return this;
+ }
+
+ @Override
+ public JOrganizationUserRecord value2(Long value) {
+ setOrganizationId(value);
+ return this;
+ }
+
+ @Override
+ public JOrganizationUserRecord value3(JOrganizationRoleEnum value) {
+ setOrganizationRole(value);
+ return this;
+ }
+
+ @Override
+ public JOrganizationUserRecord values(Long value1, Long value2, JOrganizationRoleEnum value3) {
+ value1(value1);
+ value2(value2);
+ value3(value3);
+ return this;
+ }
+
+ // -------------------------------------------------------------------------
+ // Constructors
+ // -------------------------------------------------------------------------
+
+ /**
+ * Create a detached JOrganizationUserRecord
+ */
+ public JOrganizationUserRecord() {
+ super(JOrganizationUser.ORGANIZATION_USER);
+ }
+
+ /**
+ * Create a detached, initialised JOrganizationUserRecord
+ */
+ public JOrganizationUserRecord(Long userId, Long organizationId, JOrganizationRoleEnum organizationRole) {
+ super(JOrganizationUser.ORGANIZATION_USER);
+
+ set(0, userId);
+ set(1, organizationId);
+ set(2, organizationRole);
+ }
+}
diff --git a/src/main/java/com/epam/ta/reportportal/jooq/tables/records/JProjectRecord.java b/src/main/java/com/epam/ta/reportportal/jooq/tables/records/JProjectRecord.java
index 164b64e73..6a21631ee 100644
--- a/src/main/java/com/epam/ta/reportportal/jooq/tables/records/JProjectRecord.java
+++ b/src/main/java/com/epam/ta/reportportal/jooq/tables/records/JProjectRecord.java
@@ -13,8 +13,8 @@
import org.jooq.Field;
import org.jooq.JSONB;
import org.jooq.Record1;
-import org.jooq.Record7;
-import org.jooq.Row7;
+import org.jooq.Record10;
+import org.jooq.Row10;
import org.jooq.impl.UpdatableRecordImpl;
@@ -29,9 +29,9 @@
comments = "This class is generated by jOOQ"
)
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
-public class JProjectRecord extends UpdatableRecordImpl implements Record7 {
+public class JProjectRecord extends UpdatableRecordImpl implements Record10 {
- private static final long serialVersionUID = 832057346;
+ private static final long serialVersionUID = 2145940380;
/**
* Setter for public.project.id
.
@@ -131,6 +131,48 @@ public Long getAllocatedStorage() {
return (Long) get(6);
}
+ /**
+ * Setter for public.project.organization_id
.
+ */
+ public void setOrganizationId(Long value) {
+ set(7, value);
+ }
+
+ /**
+ * Getter for public.project.organization_id
.
+ */
+ public Long getOrganizationId() {
+ return (Long) get(7);
+ }
+
+ /**
+ * Setter for public.project.slug
.
+ */
+ public void setSlug(String value) {
+ set(8, value);
+ }
+
+ /**
+ * Getter for public.project.slug
.
+ */
+ public String getSlug() {
+ return (String) get(8);
+ }
+
+ /**
+ * Setter for public.project.key
.
+ */
+ public void setKey(String value) {
+ set(9, value);
+ }
+
+ /**
+ * Getter for public.project.key
.
+ */
+ public String getKey() {
+ return (String) get(9);
+ }
+
// -------------------------------------------------------------------------
// Primary key information
// -------------------------------------------------------------------------
@@ -141,17 +183,17 @@ public Record1 key() {
}
// -------------------------------------------------------------------------
- // Record7 type implementation
+ // Record10 type implementation
// -------------------------------------------------------------------------
@Override
- public Row7 fieldsRow() {
- return (Row7) super.fieldsRow();
+ public Row10 fieldsRow() {
+ return (Row10) super.fieldsRow();
}
@Override
- public Row7 valuesRow() {
- return (Row7) super.valuesRow();
+ public Row10 valuesRow() {
+ return (Row10) super.valuesRow();
}
@Override
@@ -189,6 +231,21 @@ public Field field7() {
return JProject.PROJECT.ALLOCATED_STORAGE;
}
+ @Override
+ public Field field8() {
+ return JProject.PROJECT.ORGANIZATION_ID;
+ }
+
+ @Override
+ public Field field9() {
+ return JProject.PROJECT.SLUG;
+ }
+
+ @Override
+ public Field field10() {
+ return JProject.PROJECT.KEY;
+ }
+
@Override
public Long component1() {
return getId();
@@ -224,6 +281,21 @@ public Long component7() {
return getAllocatedStorage();
}
+ @Override
+ public Long component8() {
+ return getOrganizationId();
+ }
+
+ @Override
+ public String component9() {
+ return getSlug();
+ }
+
+ @Override
+ public String component10() {
+ return getKey();
+ }
+
@Override
public Long value1() {
return getId();
@@ -259,6 +331,21 @@ public Long value7() {
return getAllocatedStorage();
}
+ @Override
+ public Long value8() {
+ return getOrganizationId();
+ }
+
+ @Override
+ public String value9() {
+ return getSlug();
+ }
+
+ @Override
+ public String value10() {
+ return getKey();
+ }
+
@Override
public JProjectRecord value1(Long value) {
setId(value);
@@ -302,7 +389,25 @@ public JProjectRecord value7(Long value) {
}
@Override
- public JProjectRecord values(Long value1, String value2, String value3, String value4, Timestamp value5, JSONB value6, Long value7) {
+ public JProjectRecord value8(Long value) {
+ setOrganizationId(value);
+ return this;
+ }
+
+ @Override
+ public JProjectRecord value9(String value) {
+ setSlug(value);
+ return this;
+ }
+
+ @Override
+ public JProjectRecord value10(String value) {
+ setKey(value);
+ return this;
+ }
+
+ @Override
+ public JProjectRecord values(Long value1, String value2, String value3, String value4, Timestamp value5, JSONB value6, Long value7, Long value8, String value9, String value10) {
value1(value1);
value2(value2);
value3(value3);
@@ -310,6 +415,9 @@ public JProjectRecord values(Long value1, String value2, String value3, String v
value5(value5);
value6(value6);
value7(value7);
+ value8(value8);
+ value9(value9);
+ value10(value10);
return this;
}
@@ -327,7 +435,7 @@ public JProjectRecord() {
/**
* Create a detached, initialised JProjectRecord
*/
- public JProjectRecord(Long id, String name, String projectType, String organization, Timestamp creationDate, JSONB metadata, Long allocatedStorage) {
+ public JProjectRecord(Long id, String name, String projectType, String organization, Timestamp creationDate, JSONB metadata, Long allocatedStorage, Long organizationId, String slug, String key) {
super(JProject.PROJECT);
set(0, id);
@@ -337,5 +445,8 @@ public JProjectRecord(Long id, String name, String projectType, String organizat
set(4, creationDate);
set(5, metadata);
set(6, allocatedStorage);
+ set(7, organizationId);
+ set(8, slug);
+ set(9, key);
}
}
diff --git a/src/test/java/com/epam/ta/reportportal/dao/ProjectRepositoryTest.java b/src/test/java/com/epam/ta/reportportal/dao/ProjectRepositoryTest.java
index 574815abd..13ac5b0f8 100644
--- a/src/test/java/com/epam/ta/reportportal/dao/ProjectRepositoryTest.java
+++ b/src/test/java/com/epam/ta/reportportal/dao/ProjectRepositoryTest.java
@@ -80,6 +80,16 @@ void findByName() {
assertEquals(projectName, projectOptional.get().getName());
}
+ @Test
+ void findByKey() {
+ final String projectKey = "default_personal";
+
+ final Optional projectOptional = projectRepository.findByKey(projectKey);
+
+ assertTrue(projectOptional.isPresent());
+ assertEquals(projectKey, projectOptional.get().getKey());
+ }
+
@Test
void existsByName() {
assertTrue(projectRepository.existsByName("default_personal"));
@@ -166,7 +176,7 @@ void findProjectInfoByFilterWithPagination() {
void deleteOneByTypeAndLastRunBefore() {
int count = projectRepository.deleteByTypeAndLastLaunchRunBefore(ProjectType.UPSA,
LocalDateTime.now().minusDays(11), 1);
- assertEquals(count, 1);
+ assertEquals(1, count);
assertFalse(projectRepository.findById(100L).isPresent());
}
}
diff --git a/src/test/java/com/epam/ta/reportportal/dao/ProjectUserRepositoryTest.java b/src/test/java/com/epam/ta/reportportal/dao/ProjectUserRepositoryTest.java
index 0a64cfd29..a5d8f748e 100644
--- a/src/test/java/com/epam/ta/reportportal/dao/ProjectUserRepositoryTest.java
+++ b/src/test/java/com/epam/ta/reportportal/dao/ProjectUserRepositoryTest.java
@@ -8,37 +8,37 @@
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
-public class ProjectUserRepositoryTest extends BaseTest {
+class ProjectUserRepositoryTest extends BaseTest {
@Autowired
private ProjectUserRepository projectUserRepository;
@Test
- void shouldFindDetailsByUserIdAndProjectName() {
+ void shouldFindDetailsByUserIdAndProjectKey() {
- final String projectName = "superadmin_personal";
- final Optional projectDetails = projectUserRepository.findDetailsByUserIdAndProjectName(
+ final String projectKey = "superadmin_personal";
+ final Optional projectDetails = projectUserRepository.findDetailsByUserIdAndProjectKey(
1L,
- projectName
+ projectKey
);
Assertions.assertTrue(projectDetails.isPresent());
- Assertions.assertEquals(projectName, projectDetails.get().getProjectName());
+ Assertions.assertEquals(projectKey, projectDetails.get().getProjectName());
Assertions.assertEquals(1L, projectDetails.get().getProjectId());
Assertions.assertEquals(ProjectRole.PROJECT_MANAGER, projectDetails.get().getProjectRole());
}
@Test
- void shouldNotFindDetailsByUserIdAndProjectNameWhenNotExists() {
+ void shouldNotFindDetailsByUserIdAndProjectKeyWhenNotExists() {
- final String projectName = "superadmin_personal";
- final Optional projectDetails = projectUserRepository.findDetailsByUserIdAndProjectName(
+ final String projectKey = "falcon-key";
+ final Optional projectDetails = projectUserRepository.findDetailsByUserIdAndProjectKey(
2L,
- projectName
+ projectKey
);
Assertions.assertFalse(projectDetails.isPresent());
}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/com/epam/ta/reportportal/dao/UserRepositoryTest.java b/src/test/java/com/epam/ta/reportportal/dao/UserRepositoryTest.java
index c3b3ffb8b..ecd988375 100644
--- a/src/test/java/com/epam/ta/reportportal/dao/UserRepositoryTest.java
+++ b/src/test/java/com/epam/ta/reportportal/dao/UserRepositoryTest.java
@@ -380,8 +380,7 @@ void findUsernamesWithProjectRolesByProjectIdTest() {
@Test
void findAllMembersByProjectManagerRole() {
- List emails = userRepository.findEmailsByProjectAndRole(1L,
- ProjectRole.PROJECT_MANAGER);
+ List emails = userRepository.findEmailsByProjectAndRole(1L, ProjectRole.PROJECT_MANAGER);
assertFalse(emails.isEmpty());
@@ -420,4 +419,4 @@ private Filter buildDefaultUserFilter() {
new FilterCondition(Condition.LOWER_THAN_OR_EQUALS, false, "1000", CRITERIA_ID))
.build();
}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/com/epam/ta/reportportal/dao/organization/OrganizationRepositoryTest.java b/src/test/java/com/epam/ta/reportportal/dao/organization/OrganizationRepositoryTest.java
new file mode 100644
index 000000000..46c325c34
--- /dev/null
+++ b/src/test/java/com/epam/ta/reportportal/dao/organization/OrganizationRepositoryTest.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2024 EPAM Systems
+ *
+ * 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 com.epam.ta.reportportal.dao.organization;
+
+import static org.springframework.test.util.AssertionErrors.assertTrue;
+
+import com.epam.ta.reportportal.BaseTest;
+import com.epam.ta.reportportal.entity.organization.Organization;
+import java.util.Optional;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @author Siarhei Hrabko
+ */
+class OrganizationRepositoryTest extends BaseTest {
+
+ @Autowired
+ private OrganizationRepository organizationRepository;
+
+ @Test
+ void findByNameTest() {
+ //given
+ String name = "My organization";
+
+ //when
+ Optional organization = organizationRepository.findByName(name);
+
+ //then
+ assertTrue("Organization found", organization.isPresent());
+ }
+
+ @Test
+ void findBySlugTest() {
+ //given
+ String slug = "my-organization";
+
+ //when
+ Optional organization = organizationRepository.findBySlug(slug);
+
+ //then
+ assertTrue("Organization found", organization.isPresent());
+ }
+}
diff --git a/src/test/java/com/epam/ta/reportportal/entity/enums/converter/OrganizationTypeConverterTest.java b/src/test/java/com/epam/ta/reportportal/entity/enums/converter/OrganizationTypeConverterTest.java
new file mode 100644
index 000000000..5ae1b096c
--- /dev/null
+++ b/src/test/java/com/epam/ta/reportportal/entity/enums/converter/OrganizationTypeConverterTest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2024 EPAM Systems
+ *
+ * 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 com.epam.ta.reportportal.entity.enums.converter;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.epam.ta.reportportal.entity.enums.OrganizationType;
+import java.util.Arrays;
+import java.util.stream.Collectors;
+import org.junit.jupiter.api.BeforeEach;
+
+/**
+ * Organization type converter. Converts from ordinal value to String representations
+ *
+ * @author Siarhei Hrabko
+ */
+public class OrganizationTypeConverterTest extends AttributeConverterTest {
+
+ @BeforeEach
+ void setUp() {
+ this.converter = new OrganizationTypeConverter();
+ allowedValues = Arrays.stream(OrganizationType.values())
+ .collect(Collectors.toMap(it -> it,
+ it -> Arrays.asList(it.name(), it.name().toUpperCase(), it.name().toLowerCase())));
+ }
+
+ @Override
+ protected void convertToColumnTest() {
+ Arrays.stream(OrganizationType.values())
+ .forEach(it -> assertEquals(it.name(), converter.convertToDatabaseColumn(it)));
+ }
+}
diff --git a/src/test/resources/db/migration/V001008__add_organizations.sql b/src/test/resources/db/migration/V001008__add_organizations.sql
new file mode 100644
index 000000000..d6f40cbf1
--- /dev/null
+++ b/src/test/resources/db/migration/V001008__add_organizations.sql
@@ -0,0 +1,24 @@
+-- Update 'project' table
+WITH org_id AS (INSERT INTO public.organization (name, slug, organization_type)
+VALUES ('My organization', 'my-organization', 'INTERNAL') RETURNING id)
+UPDATE public.project AS prj SET
+ "organization_id" = 1,
+ "key" = slugify(name);
+
+UPDATE project SET "slug" = "key";
+
+INSERT INTO organization_user (user_id, organization_id, organization_role)
+(SELECT pu.user_id, (SELECT o.id FROM organization o LIMIT 1), (SELECT 'MEMBER'::public."organization_role_enum")
+FROM project_user pu
+WHERE pu."project_role" IN
+ ('OPERATOR'::public."project_role_enum",
+ 'CUSTOMER'::public."project_role_enum",
+ 'MEMBER'::public."project_role_enum"
+ )
+);
+
+
+INSERT INTO organization_user (user_id, organization_id, organization_role )
+(SELECT pu.user_id, (SELECT o.id FROM organization o LIMIT 1), (SELECT 'MANAGER'::public."organization_role_enum")
+FROM project_user pu
+WHERE pu.project_role = 'PROJECT_MANAGER'::public."project_role_enum");