Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 94DFB200C39 for ; Wed, 1 Mar 2017 21:49:10 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 93849160B70; Wed, 1 Mar 2017 20:49:10 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 9D83F160B56 for ; Wed, 1 Mar 2017 21:49:07 +0100 (CET) Received: (qmail 16915 invoked by uid 500); 1 Mar 2017 20:49:06 -0000 Mailing-List: contact commits-help@airavata.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@airavata.apache.org Delivered-To: mailing list commits@airavata.apache.org Received: (qmail 15984 invoked by uid 99); 1 Mar 2017 20:49:05 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Mar 2017 20:49:05 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D5DA3DF9AF; Wed, 1 Mar 2017 20:49:05 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: machristie@apache.org To: commits@airavata.apache.org Date: Wed, 01 Mar 2017 20:49:34 -0000 Message-Id: In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [31/48] airavata git commit: Moving registry components for user-profile service to respective module archived-at: Wed, 01 Mar 2017 20:49:10 -0000 http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/pom.xml ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/pom.xml b/modules/user-profile/user-profile-core/pom.xml new file mode 100644 index 0000000..2da8994 --- /dev/null +++ b/modules/user-profile/user-profile-core/pom.xml @@ -0,0 +1,130 @@ + + + + org.apache.airavata + airavata + 0.17-SNAPSHOT + ../../../pom.xml + + 4.0.0 + + user-profile-core + + + 10.11.1.1 + 2.18.1 + false + 5.1.34 + + + + + org.apache.airavata + airavata-data-models + ${project.version} + + + net.sf.dozer + dozer + 5.4.0 + + + org.apache.openjpa + openjpa-all + 2.3.0 + + + + mysql + mysql-connector-java + ${mysql.connector.version} + + + org.apache.derby + derby + ${derby.version} + + + org.apache.derby + derbyclient + ${derby.version} + + + org.apache.derby + derbynet + ${derby.version} + + + org.apache.derby + derbytools + ${derby.version} + + + junit + junit + 4.12 + test + + + org.apache.airavata + airavata-commons + ${project.version} + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + + + org.apache.openjpa + openjpa-maven-plugin + 2.2.0 + + **/entities/*.class + **/entities/XML*.class + true + true + + + + enhancer + process-classes + + enhance + + + + + + org.apache.openjpa + openjpa + 2.2.0 + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${surefire.version} + true + + false + + true + ${project.build.testOutputDirectory} + + + + + + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/RegistryException.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/RegistryException.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/RegistryException.java new file mode 100644 index 0000000..8893b34 --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/RegistryException.java @@ -0,0 +1,28 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class RegistryException extends Exception { + private final static Logger logger = LoggerFactory.getLogger(RegistryException.class); +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java new file mode 100644 index 0000000..4490580 --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/GatewayEntity.java @@ -0,0 +1,221 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.entities.workspacecatalog; + +import javax.persistence.*; + +@Entity +@Table(name="GATEWAY")//FIXME removing WORKSPACE prefix so that we can use the Gateway table in exp catalog +public class GatewayEntity { + private String gatewayId; + private String gatewayName; + private String domain; + private String emailAddress; + private String gatewayApprovalStatus; + private String gatewayAcronym; + private String gatewayUrl; + private String gatewayPublicAbstract; + private String reviewProposalDescription; + private String gatewayAdminFirstName; + private String getGatewayAdminLastName; + private String gatewayAdminEmail; + private String identityServerUserName; + private String identityServerPasswordToken; + private String declinedReason; + private String oauthClientId; + private String getOauthClientSecret; + private long requestCreationTime; + private String requesterUsername; + + @Id + @Column(name = "GATEWAY_ID") + public String getGatewayId() { + return gatewayId; + } + + public void setGatewayId(String id) { + this.gatewayId = id; + } + + @Column(name = "GATEWAY_NAME") + public String getGatewayName() { + return gatewayName; + } + + public void setGatewayName(String gatewayName) { + this.gatewayName = gatewayName; + } + + @Column(name = "GATEWAY_DOMAIN") + public String getDomain() { + return domain; + } + + public void setDomain(String domain) { + this.domain = domain; + } + + @Column(name = "EMAIL_ADDRESS") + public String getEmailAddress() { + return emailAddress; + } + + public void setEmailAddress(String emailAddress) { + this.emailAddress = emailAddress; + } + + @Column(name = "GATEWAY_APPROVAL_STATUS") + public String getGatewayApprovalStatus() { + return gatewayApprovalStatus; + } + + public void setGatewayApprovalStatus(String gatewayApprovalStatus) { + this.gatewayApprovalStatus = gatewayApprovalStatus; + } + + @Column(name = "GATEWAY_ACRONYM") + public String getGatewayAcronym() { + return gatewayAcronym; + } + + public void setGatewayAcronym(String gatewayAcronym) { + this.gatewayAcronym = gatewayAcronym; + } + + @Column(name = "GATEWAY_URL") + public String getGatewayUrl() { + return gatewayUrl; + } + + public void setGatewayUrl(String gatewayUrl) { + this.gatewayUrl = gatewayUrl; + } + + @Lob + @Column(name = "GATEWAY_PUBLIC_ABSTRACT") + public String getGatewayPublicAbstract() { + return gatewayPublicAbstract; + } + + public void setGatewayPublicAbstract(String gatewayPublicAbstract) { + this.gatewayPublicAbstract = gatewayPublicAbstract; + } + + @Lob + @Column(name = "REVIEW_PROPOSAL_DESCRIPTION") + public String getReviewProposalDescription() { + return reviewProposalDescription; + } + + public void setReviewProposalDescription(String reviewProposalDescription) { + this.reviewProposalDescription = reviewProposalDescription; + } + + @Column(name = "GATEWAY_ADMIN_FIRST_NAME") + public String getGatewayAdminFirstName() { + return gatewayAdminFirstName; + } + + public void setGatewayAdminFirstName(String gatewayAdminFirstName) { + this.gatewayAdminFirstName = gatewayAdminFirstName; + } + + @Column(name = "GATEWAY_ADMIN_LAST_NAME") + public String getGetGatewayAdminLastName() { + return getGatewayAdminLastName; + } + + public void setGetGatewayAdminLastName(String getGatewayAdminLastName) { + this.getGatewayAdminLastName = getGatewayAdminLastName; + } + + @Column(name = "GATEWAY_ADMIN_EMAIL") + public String getGatewayAdminEmail() { + return gatewayAdminEmail; + } + + public void setGatewayAdminEmail(String gatewayAdminEmail) { + this.gatewayAdminEmail = gatewayAdminEmail; + } + + @Column(name = "IDENTITY_SERVER_USERNAME") + public String getIdentityServerUserName() { + return identityServerUserName; + } + + public void setIdentityServerUserName(String identityServerUserName) { + this.identityServerUserName = identityServerUserName; + } + + @Column(name = "IDENTITY_SERVER_PASSWORD_TOKEN") + public String getIdentityServerPasswordToken() { + return identityServerPasswordToken; + } + + public void setIdentityServerPasswordToken(String identityServerPasswordToken) { + this.identityServerPasswordToken = identityServerPasswordToken; + } + + @Column(name = "REQUESTER_USERNAME") + public String getRequesterUsername() { + return requesterUsername; + } + + public void setRequesterUsername(String requesterUsername) { + this.requesterUsername = requesterUsername; + } + + @Column(name = "DECLINED_REASON") + public String getDeclinedReason() { + return declinedReason; + } + + public void setDeclinedReason(String declinedReason) { + this.declinedReason = declinedReason; + } + + @Column(name = "OAUTH_CLIENT_ID") + public String getOauthClientId() { + return oauthClientId; + } + + public void setOauthClientId(String oauthClientId) { + this.oauthClientId = oauthClientId; + } + + @Column(name = "REQUEST_CREATION_TIME") + public long getRequestCreationTime() { + return requestCreationTime; + } + + public void setRequestCreationTime(long requestCreationTime) { + this.requestCreationTime = requestCreationTime; + } + + @Column(name = "OAUTH_CLIENT_SECRET") + public String getGetOauthClientSecret() { + return getOauthClientSecret; + } + + public void setGetOauthClientSecret(String oauthClientSecret) { + this.getOauthClientSecret = oauthClientSecret; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java new file mode 100644 index 0000000..0bcbafa --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NSFDemographicsEntity.java @@ -0,0 +1,94 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.entities.workspacecatalog; + +import javax.persistence.*; +import java.util.List; + +@Entity +@Table(name = "WORKSPACE_NSF_DEMOGRAPHIC") +public class NSFDemographicsEntity { + private String airavataInternalUserId; + private String gender; + private List ethnicities; + private List races; + private List disabilities; + private UserProfileEntity userProfile; + + @Id + @Column(name = "AIRAVATA_INTERNAL_USER_ID") + public String getAiravataInternalUserId() { + return airavataInternalUserId; + } + + public void setAiravataInternalUserId(String userId) { + this.airavataInternalUserId = userId; + } + + @Column(name = "GENDER") + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + @ElementCollection + @CollectionTable(name="NSF_DEMOGRAPHIC_ETHNICITY", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID")) + public List getEthnicities() { + return ethnicities; + } + + public void setEthnicities(List ethnicities) { + this.ethnicities = ethnicities; + } + + @ElementCollection + @CollectionTable(name="NSF_DEMOGRAPHIC_RACE", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID")) + public List getRaces() { + return races; + } + + public void setRaces(List races) { + this.races = races; + } + + @ElementCollection + @CollectionTable(name="NSF_DEMOGRAPHIC_DISABILITY", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID")) + public List getDisabilities() { + return disabilities; + } + + public void setDisabilities(List disabilities) { + this.disabilities = disabilities; + } + + @OneToOne(targetEntity = UserProfileEntity.class, cascade = CascadeType.ALL) + @PrimaryKeyJoinColumn(name = "AIRAVATA_INTERNAL_USER_ID", referencedColumnName = "AIRAVATA_INTERNAL_USER_ID") + public UserProfileEntity getUserProfile() { + return userProfile; + } + + public void setUserProfile(UserProfileEntity userProfile) { + this.userProfile = userProfile; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java new file mode 100644 index 0000000..67f8af2 --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/NotificationEntity.java @@ -0,0 +1,110 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.entities.workspacecatalog; + +import javax.persistence.*; + +@Entity +@Table(name = "WORKSPACE_NOTIFICATION") +public class NotificationEntity { + private String notificationId; + private String gatewayId; + private String title; + private String notificationMessage; + private long creationTime; + private long publishedTime; + private long expirationTime; + private String priority; + + @Id + @Column(name = "NOTIFICATION_ID") + public String getNotificationId() { + return notificationId; + } + + public void setNotificationId(String notificationId) { + this.notificationId = notificationId; + } + + @Column(name = "GATEWAY_ID") + public String getGatewayId() { + return gatewayId; + } + + public void setGatewayId(String gatewayId) { + this.gatewayId = gatewayId; + } + + @Column(name = "TITLE") + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + @Lob + @Column(name = "NOTIFICATION_MESSAGE") + public String getNotificationMessage() { + return notificationMessage; + } + + public void setNotificationMessage(String notificationMessage) { + this.notificationMessage = notificationMessage; + } + + @Column(name = "CREATION_TIME") + public long getCreationTime() { + return creationTime; + } + + public void setCreationTime(long creationTime) { + this.creationTime = creationTime; + } + + @Column(name = "PUBLISHED_TIME") + public long getPublishedTime() { + return publishedTime; + } + + public void setPublishedTime(long publishedTime) { + this.publishedTime = publishedTime; + } + + @Column(name = "EXPIRATION_TIME") + public long getExpirationTime() { + return expirationTime; + } + + public void setExpirationTime(long expirationTime) { + this.expirationTime = expirationTime; + } + + @Column(name = "PRIORITY") + public String getPriority() { + return priority; + } + + public void setPriority(String priority) { + this.priority = priority; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java new file mode 100644 index 0000000..31e0868 --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/ProjectEntity.java @@ -0,0 +1,92 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.entities.workspacecatalog; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "WORKSPACE_PROJECT") +public class ProjectEntity { + private String projectID; + private String owner; + private String gatewayId; + private String name; + private String description; + private long creationTime; + + @Id + @Column(name = "PROJECT_ID") + public String getProjectID() { + return projectID; + } + + public void setProjectID(String projectID) { + this.projectID = projectID; + } + + @Column(name = "OWNER") + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + @Column(name = "GATEWAY_ID") + public String getGatewayId() { + return gatewayId; + } + + public void setGatewayId(String gatewayId) { + this.gatewayId = gatewayId; + } + + @Column(name = "PROJECT_NAME") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Column(name = "DESCRIPTION") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @Column(name = "CREATION_TIME") + public long getCreationTime() { + return creationTime; + } + + public void setCreationTime(long creationTime) { + this.creationTime = creationTime; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java new file mode 100644 index 0000000..7dd51ed --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/entities/workspacecatalog/UserProfileEntity.java @@ -0,0 +1,247 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.entities.workspacecatalog; + +import javax.persistence.*; +import java.util.List; + +@Entity +@Table(name="WORKSPACE_USER_PROFILE") +public class UserProfileEntity { + private String airavataInternalUserId; + private String userId; + private String gatewayId; + private String userModelVersion; + private String userName; + private String orcidId; + private String country; + private String homeOrganization; + private String orginationAffiliation; + private long creationTime; + private long lastAccessTime; + private long validUntil; + private String state; + private String comments; + private List labeledURI; + private String gpgKey; + private String timeZone; + + private List nationality; + private List emails; + private List phones; + private NSFDemographicsEntity nsfDemographics; + + @Id + @Column(name = "AIRAVATA_INTERNAL_USER_ID") + public String getAiravataInternalUserId() { + return airavataInternalUserId; + } + + public void setAiravataInternalUserId(String id) { + this.airavataInternalUserId = id; + } + + @Column(name = "USER_ID") + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + @Column(name = "GATEWAY_ID") + public String getGatewayId() { + return gatewayId; + } + + public void setGatewayId(String gatewayId) { + this.gatewayId = gatewayId; + } + + @Column(name = "USER_MODEL_VERSION") + public String getUserModelVersion() { + return userModelVersion; + } + + public void setUserModelVersion(String userModelVersion) { + this.userModelVersion = userModelVersion; + } + + @ElementCollection + @CollectionTable(name="USER_PROFILE_EMAIL", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID")) + public List getEmails() { + return emails; + } + + public void setEmails(List emails) { + this.emails = emails; + } + + @Column(name = "USER_NAME") + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + @Column(name = "ORCID_ID") + public String getOrcidId() { + return orcidId; + } + + public void setOrcidId(String orcidId) { + this.orcidId = orcidId; + } + + @ElementCollection + @CollectionTable(name="USER_PROFILE_PHONE", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID")) + public List getPhones() { + return phones; + } + + public void setPhones(List phones) { + this.phones = phones; + } + + @Column(name = "COUNTRY") + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + @ElementCollection + @CollectionTable(name="USER_PROFILE_NATIONALITY", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID")) + public List getNationality() { + return nationality; + } + + public void setNationality(List nationality) { + this.nationality = nationality; + } + + @Column(name = "HOME_ORGANIZATION") + public String getHomeOrganization() { + return homeOrganization; + } + + public void setHomeOrganization(String homeOrganization) { + this.homeOrganization = homeOrganization; + } + + @Column(name = "ORIGINATION_AFFILIATION") + public String getOrginationAffiliation() { + return orginationAffiliation; + } + + public void setOrginationAffiliation(String orginationAffiliation) { + this.orginationAffiliation = orginationAffiliation; + } + + @Column(name="CREATION_TIME") + public long getCreationTime() { + return creationTime; + } + + public void setCreationTime(long creationTime) { + this.creationTime = creationTime; + } + + @Column(name = "LAST_ACCESS_TIME") + public long getLastAccessTime() { + return lastAccessTime; + } + + public void setLastAccessTime(long lastAccessTime) { + this.lastAccessTime = lastAccessTime; + } + + @Column(name = "VALID_UNTIL") + public long getValidUntil() { + return validUntil; + } + + public void setValidUntil(long validUntil) { + this.validUntil = validUntil; + } + + @Column(name = "STATE") + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + @Lob + @Column(name = "COMMENTS") + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } + + @ElementCollection + @CollectionTable(name="USER_PROFILE_LABELED_URI", joinColumns = @JoinColumn(name="AIRAVATA_INTERNAL_USER_ID")) + public List getLabeledURI() { + return labeledURI; + } + + public void setLabeledURI(List labeledURI) { + this.labeledURI = labeledURI; + } + + @Lob + @Column(name = "GPG_KEY") + public String getGpgKey() { + return gpgKey; + } + + public void setGpgKey(String gpgKey) { + this.gpgKey = gpgKey; + } + + @Column(name = "TIME_ZONE") + public String getTimeZone() { + return timeZone; + } + + public void setTimeZone(String timeZone) { + this.timeZone = timeZone; + } + + @OneToOne(targetEntity = NSFDemographicsEntity.class, cascade = CascadeType.ALL, mappedBy = "userProfile") + public NSFDemographicsEntity getNsfDemographics() { + return nsfDemographics; + } + + public void setNsfDemographics(NSFDemographicsEntity nsfDemographics) { + this.nsfDemographics = nsfDemographics; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java new file mode 100644 index 0000000..a83928d --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/AbstractRepository.java @@ -0,0 +1,98 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.repositories; + +import org.apache.airavata.registry.core.utils.JPAUtils; +import org.apache.airavata.registry.core.utils.ObjectMapperSingleton; +import org.dozer.Mapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.Query; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public abstract class AbstractRepository { + private final static Logger logger = LoggerFactory.getLogger(AbstractRepository.class); + + private Class thriftGenericClass; + private Class dbEntityGenericClass; + + public AbstractRepository(Class thriftGenericClass, Class dbEntityGenericClass) { + this.thriftGenericClass = thriftGenericClass; + this.dbEntityGenericClass = dbEntityGenericClass; + } + + public T create(T t) { + return update(t); + } + + public T update(T t) { + Mapper mapper = ObjectMapperSingleton.getInstance(); + E entity = mapper.map(t, dbEntityGenericClass); + E persistedCopy = JPAUtils.execute(entityManager -> entityManager.merge(entity)); + return mapper.map(persistedCopy, thriftGenericClass); + } + + public boolean delete(Id id) { + JPAUtils.execute(entityManager -> { + E entity = entityManager.find(dbEntityGenericClass, id); + entityManager.remove(entity); + return entity; + }); + return true; + } + + public T get(Id id) { + E entity = JPAUtils.execute(entityManager -> entityManager + .find(dbEntityGenericClass, id)); + Mapper mapper = ObjectMapperSingleton.getInstance(); + return mapper.map(entity, thriftGenericClass); + } + + public List select(String query, int limit, int offset) { + List resultSet = (List) JPAUtils.execute(entityManager -> entityManager.createQuery(query).setFirstResult(offset) + .setMaxResults(offset).getResultList()); + Mapper mapper = ObjectMapperSingleton.getInstance(); + List gatewayList = new ArrayList<>(); + resultSet.stream().forEach(rs -> gatewayList.add(mapper.map(rs, thriftGenericClass))); + return gatewayList; + } + + public List select(String query, int limit, int offset, Map queryParams) { + List resultSet = (List) JPAUtils.execute(entityManager -> { + Query jpaQuery = entityManager.createQuery(query); + + for (Map.Entry entry : queryParams.entrySet()) { + + jpaQuery.setParameter(entry.getKey(), entry.getValue()); + } + + return jpaQuery.setFirstResult(offset).setMaxResults(limit).getResultList(); + + }); + Mapper mapper = ObjectMapperSingleton.getInstance(); + List gatewayList = new ArrayList<>(); + resultSet.stream().forEach(rs -> gatewayList.add(mapper.map(rs, thriftGenericClass))); + return gatewayList; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/GatewayRepository.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/GatewayRepository.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/GatewayRepository.java new file mode 100644 index 0000000..9a1c6d6 --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/GatewayRepository.java @@ -0,0 +1,36 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.repositories.workspacecatalog; + +import org.apache.airavata.model.workspace.Gateway; +import org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity; +import org.apache.airavata.registry.core.repositories.AbstractRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class GatewayRepository extends AbstractRepository { + private final static Logger logger = LoggerFactory.getLogger(GatewayRepository.class); + + public GatewayRepository(Class thriftGenericClass, Class dbEntityGenericClass) { + super(thriftGenericClass, dbEntityGenericClass); + + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/NotificationRepository.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/NotificationRepository.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/NotificationRepository.java new file mode 100644 index 0000000..8332024 --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/NotificationRepository.java @@ -0,0 +1,35 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.repositories.workspacecatalog; + +import org.apache.airavata.model.workspace.Notification; +import org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity; +import org.apache.airavata.registry.core.repositories.AbstractRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class NotificationRepository extends AbstractRepository { + private final static Logger logger = LoggerFactory.getLogger(NotificationRepository.class); + + public NotificationRepository(Class thriftGenericClass, Class dbEntityGenericClass) { + super(thriftGenericClass, dbEntityGenericClass); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/ProjectRepository.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/ProjectRepository.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/ProjectRepository.java new file mode 100644 index 0000000..eebf5fb --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/ProjectRepository.java @@ -0,0 +1,35 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.repositories.workspacecatalog; + +import org.apache.airavata.model.workspace.Project; +import org.apache.airavata.registry.core.entities.workspacecatalog.ProjectEntity; +import org.apache.airavata.registry.core.repositories.AbstractRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ProjectRepository extends AbstractRepository { + private final static Logger logger = LoggerFactory.getLogger(ProjectRepository.class); + + public ProjectRepository(Class thriftGenericClass, Class dbEntityGenericClass) { + super(thriftGenericClass, dbEntityGenericClass); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java new file mode 100644 index 0000000..de0f99e --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/repositories/workspacecatalog/UserProfileRepository.java @@ -0,0 +1,88 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.repositories.workspacecatalog; + +import org.apache.airavata.model.user.UserProfile; +import org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity; +import org.apache.airavata.registry.core.repositories.AbstractRepository; +import org.apache.airavata.registry.core.utils.QueryConstants; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class UserProfileRepository extends AbstractRepository { + private final static Logger logger = LoggerFactory.getLogger(UserProfileRepository.class); + + public UserProfileRepository(Class thriftGenericClass, Class dbEntityGenericClass) { + super(thriftGenericClass, dbEntityGenericClass); + } + + @Override + public List select(String query, int offset, int limit) { + throw new UnsupportedOperationException("Due to performance overheads this method is not supported. Instead use" + + " UserProfileSummaryRepository"); + } + + public UserProfile getUserProfileByIdAndGateWay(String userId, String gatewayId) { + + UserProfile userProfile = null; + + Map queryParam = new HashMap(); + queryParam.put(UserProfile._Fields.USER_ID.getFieldName(), userId); + queryParam.put(UserProfile._Fields.GATEWAY_ID.getFieldName(), gatewayId); + List resultList = select(QueryConstants.FIND_USER_PROFILE_BY_USER_ID, 0, 1, queryParam); + + if (resultList != null && resultList.size() > 0) + userProfile = resultList.get(0); + + + return userProfile; + } + + public List getAllUserProfilesInGateway(String gatewayId, int offset, int limit) { + + Map queryParam = new HashMap(); + queryParam.put(UserProfile._Fields.GATEWAY_ID.getFieldName(), gatewayId); + + List resultList = select(QueryConstants.FIND_ALL_USER_PROFILES_BY_GATEWAY_ID, limit, offset, queryParam); + + return resultList; + } + + public UserProfile getUserProfileByNameAndGateWay(String name, String gatewayId) { + + UserProfile userProfile = null; + + Map queryParam = new HashMap(); + queryParam.put(UserProfile._Fields.USER_NAME.getFieldName(), name); + queryParam.put(UserProfile._Fields.GATEWAY_ID.getFieldName(), gatewayId); + List resultList = select(QueryConstants.FIND_USER_PROFILE_BY_USER_NAME, 0, 1, queryParam); + + if (resultList != null && resultList.size() > 0) + userProfile = resultList.get(0); + + + return userProfile; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/Committer.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/Committer.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/Committer.java new file mode 100644 index 0000000..07f8244 --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/Committer.java @@ -0,0 +1,27 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.utils; + +@FunctionalInterface +public interface Committer { + + R commit(T t); +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/JPAConstants.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/JPAConstants.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/JPAConstants.java new file mode 100644 index 0000000..25263e1 --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/JPAConstants.java @@ -0,0 +1,32 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ + +package org.apache.airavata.registry.core.utils; +public class JPAConstants { + public static final String KEY_JDBC_URL = "registry.jdbc.url"; + public static final String KEY_JDBC_USER = "registry.jdbc.user"; + public static final String KEY_JDBC_PASSWORD = "registry.jdbc.password"; + public static final String KEY_JDBC_DRIVER = "registry.jdbc.driver"; + public static final String KEY_DERBY_START_ENABLE = "start.derby.server.mode"; + public static final String VALIDATION_QUERY = "validationQuery"; + public static final String JPA_CACHE_SIZE = "jpa.cache.size"; + public static final String ENABLE_CACHING = "cache.enable"; +} http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtils.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtils.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtils.java new file mode 100644 index 0000000..4f54863 --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtils.java @@ -0,0 +1,83 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.utils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.*; +import java.util.HashMap; +import java.util.Map; + +public class JPAUtils { + private final static Logger logger = LoggerFactory.getLogger(JPAUtils.class); + private static final String PERSISTENCE_UNIT_NAME = "airavata_catalog"; + @PersistenceUnit(unitName = "airavata_catalog") + protected static EntityManagerFactory factory; + @PersistenceContext(unitName = "airavata_catalog") + private static EntityManager entityManager; + + public static EntityManager getEntityManager(){ + + if (factory == null) { + //FIXME + String connectionProperties = "DriverClassName=" + Utils.getJDBCDriver() + "," + "Url=" + + Utils.getJDBCURL() + "?autoReconnect=true," + + "Username=" + Utils.getJDBCUser() + "," + "Password=" + Utils.getJDBCPassword() + + ",validationQuery=" + Utils.getValidationQuery(); + logger.info(connectionProperties); + Map properties = new HashMap(); + properties.put("openjpa.ConnectionDriverName", "org.apache.commons.dbcp.BasicDataSource"); + properties.put("openjpa.ConnectionProperties", connectionProperties); + properties.put("openjpa.DynamicEnhancementAgent", "true"); + properties.put("openjpa.RuntimeUnenhancedClasses", "warn"); + properties.put("openjpa.RemoteCommitProvider", "sjvm"); + properties.put("openjpa.Log", "DefaultLevel=INFO, Runtime=INFO, Tool=INFO, SQL=INFO"); + properties.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)"); + properties.put("openjpa.jdbc.QuerySQLCache", "false"); + properties.put("openjpa.ConnectionFactoryProperties", "PrettyPrint=true, PrettyPrintLineLength=72," + + " PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=31536000, autoReconnect=true"); + factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME, properties); + } + + entityManager = factory.createEntityManager(); + return entityManager; + } + + public static R execute(Committer committer){ + EntityManager entityManager = JPAUtils.getEntityManager(); + try { + entityManager.getTransaction().begin(); + R r = committer.commit(entityManager); + entityManager.getTransaction().commit(); + return r; + }finally { + if (entityManager != null && entityManager.isOpen()) { + if (entityManager.getTransaction().isActive()) { + entityManager.getTransaction().rollback(); + } + entityManager.close(); + } + } + } + + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/ObjectMapperSingleton.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/ObjectMapperSingleton.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/ObjectMapperSingleton.java new file mode 100644 index 0000000..9189460 --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/ObjectMapperSingleton.java @@ -0,0 +1,39 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.utils; + +import org.dozer.DozerBeanMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ObjectMapperSingleton extends DozerBeanMapper{ + private final static Logger logger = LoggerFactory.getLogger(ObjectMapperSingleton.class); + + private static ObjectMapperSingleton instance; + + private ObjectMapperSingleton(){} + + public static ObjectMapperSingleton getInstance(){ + if(instance == null) + instance = new ObjectMapperSingleton(); + return instance; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java new file mode 100644 index 0000000..171317e --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/QueryConstants.java @@ -0,0 +1,22 @@ +package org.apache.airavata.registry.core.utils; + +import org.apache.airavata.model.user.UserProfile; + +/** + * Created by abhij on 11/11/2016. + */ +public interface QueryConstants { + + + + String FIND_USER_PROFILE_BY_USER_ID = "SELECT u FROM UserProfileEntity u " + + "where u.userId LIKE :" + UserProfile._Fields.USER_ID.getFieldName() + " " + + "AND u.gatewayId LIKE :"+ UserProfile._Fields.GATEWAY_ID.getFieldName() + ""; + + String FIND_ALL_USER_PROFILES_BY_GATEWAY_ID = "SELECT u FROM UserProfileEntity u " + + "where u.gatewayId LIKE :"+ UserProfile._Fields.GATEWAY_ID.getFieldName() + ""; + + String FIND_USER_PROFILE_BY_USER_NAME = "SELECT u FROM UserProfileEntity u " + + "where u.userId LIKE :" + UserProfile._Fields.USER_NAME.getFieldName() + " " + + "AND u.gatewayId LIKE :"+ UserProfile._Fields.GATEWAY_ID.getFieldName() + ""; +} http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/Utils.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/Utils.java b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/Utils.java new file mode 100644 index 0000000..7b5c60a --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/java/org/apache/airavata/registry/core/utils/Utils.java @@ -0,0 +1,156 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.airavata.registry.core.utils; + +import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.utils.ServerSettings; +import org.apache.airavata.registry.core.utils.JPAConstants; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.net.URI; + + +public class Utils { + private final static Logger logger = LoggerFactory.getLogger(Utils.class); + + public static String getJDBCFullURL(){ + String jdbcUrl = getJDBCURL(); + String jdbcUser = getJDBCUser(); + String jdbcPassword = getJDBCPassword(); + jdbcUrl = jdbcUrl + "?" + "user=" + jdbcUser + "&" + "password=" + jdbcPassword; + return jdbcUrl; + } + + public static String getJDBCURL(){ + try { + return ServerSettings.getSetting(JPAConstants.KEY_JDBC_URL); + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + return null; + } + } + + public static String getHost(){ + try{ + String jdbcURL = getJDBCURL(); + String cleanURI = jdbcURL.substring(5); + URI uri = URI.create(cleanURI); + return uri.getHost(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + return null; + } + } + + public static int getPort(){ + try{ + String jdbcURL = getJDBCURL(); + String cleanURI = jdbcURL.substring(5); + URI uri = URI.create(cleanURI); + return uri.getPort(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + return -1; + } + } + + public static int getJPACacheSize (){ + try { + String cache = ServerSettings.getSetting(JPAConstants.JPA_CACHE_SIZE, "5000"); + return Integer.parseInt(cache); + }catch (Exception e){ + logger.error(e.getMessage(), e); + return -1; + } + } + + public static String isCachingEnabled (){ + try { + return ServerSettings.getSetting(JPAConstants.ENABLE_CACHING, "true"); + }catch (Exception e){ + logger.error(e.getMessage(), e); + return "true"; + } + } + + public static String getDBType(){ + try{ + String jdbcURL = getJDBCURL(); + String cleanURI = jdbcURL.substring(5); + URI uri = URI.create(cleanURI); + return uri.getScheme(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + return null; + } + } + + public static boolean isDerbyStartEnabled(){ + try { + String s = ServerSettings.getSetting(JPAConstants.KEY_DERBY_START_ENABLE); + if("true".equals(s)){ + return true; + } + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + return false; + } + return false; + } + + public static String getJDBCUser(){ + try { + return ServerSettings.getSetting(JPAConstants.KEY_JDBC_USER); + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + return null; + } + } + + public static String getValidationQuery(){ + try { + return ServerSettings.getSetting(JPAConstants.VALIDATION_QUERY); + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + return null; + } + } + + public static String getJDBCPassword(){ + try { + return ServerSettings.getSetting(JPAConstants.KEY_JDBC_PASSWORD); + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + return null; + } + + } + + public static String getJDBCDriver(){ + try { + return ServerSettings.getSetting(JPAConstants.KEY_JDBC_DRIVER); + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + return null; + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/resources/META-INF/persistence.xml ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/resources/META-INF/persistence.xml b/modules/user-profile/user-profile-core/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000..76c965a --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,32 @@ + + + + + org.apache.openjpa.persistence.PersistenceProviderImpl + org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity + org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity + org.apache.airavata.registry.core.entities.workspacecatalog.NSFDemographicsEntity + org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity + org.apache.airavata.registry.core.entities.workspacecatalog.ProjectEntity + true + + http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/main/resources/workspace_catalog.sql ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/main/resources/workspace_catalog.sql b/modules/user-profile/user-profile-core/src/main/resources/workspace_catalog.sql new file mode 100644 index 0000000..debdba4 --- /dev/null +++ b/modules/user-profile/user-profile-core/src/main/resources/workspace_catalog.sql @@ -0,0 +1,125 @@ + +CREATE TABLE IF NOT EXISTS WORKSPACE_GATEWAY( + GATEWAY_ID VARCHAR (255), + GATEWAY_NAME VARCHAR (255), + GATEWAY_DOMAIN VARCHAR (255), + EMAIL_ADDRESS VARCHAR (255), + GATEWAY_APPROVAL_STATUS VARCHAR (255), + GATEWAY_ACRONYM VARCHAR (255), + GATEWAY_URL VARCHAR (255), + GATEWAY_PUBLIC_ABSTRACT TEXT, + REVIEW_PROPOSAL_DESCRIPTION TEXT, + GATEWAY_ADMIN_FIRST_NAME VARCHAR(255), + GATEWAY_ADMIN_LAST_NAME VARCHAR(255), + GATEWAY_ADMIN_EMAIL VARCHAR(255), + IDENTITY_SERVER_USERNAME VARCHAR(255), + IDENTITY_SERVER_PASSWORD_TOKEN VARCHAR(255), + DECLINED_REASON VARCHAR(255), + OAUTH_CLIENT_ID VARCHAR(255), + OAUTH_CLIENT_SECRET VARCHAR(255), + REQUEST_CREATION_TIME BIGINT, + REQUESTER_USERNAME VARCHAR(255), + PRIMARY KEY (GATEWAY_ID) +); + +CREATE TABLE IF NOT EXISTS WORKSPACE_NOTIFICATION ( + NOTIFICATION_ID VARCHAR (255), + GATEWAY_ID VARCHAR (255), + TITLE VARCHAR (255), + NOTIFICATION_MESSAGE TEXT, + CREATION_TIME BIGINT, + PUBLISHED_TIME BIGINT, + EXPIRATION_TIME BIGINT, + PRIORITY VARCHAR (255), + PRIMARY KEY (NOTIFICATION_ID), + FOREIGN KEY (GATEWAY_ID) REFERENCES WORKSPACE_GATEWAY(GATEWAY_ID) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE ( + AIRAVATA_INTERNAL_USER_ID VARCHAR (255), + USER_ID VARCHAR (255), + GATEWAY_ID VARCHAR (255), + USER_MODEL_VERSION VARCHAR (255), + USER_NAME VARCHAR (255), + ORCID_ID VARCHAR (255), + COUNTRY VARCHAR (255), + HOME_ORGANIZATION VARCHAR (255), + ORIGINATION_AFFILIATION VARCHAR (255), + CREATION_TIME BIGINT, + LAST_ACCESS_TIME BIGINT, + VALID_UNTIL BIGINT, + STATE VARCHAR (255), + COMMENTS TEXT, + GPG_KEY VARCHAR (8192), + TIME_ZONE VARCHAR (255), + PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID), + FOREIGN KEY (GATEWAY_ID) REFERENCES WORKSPACE_GATEWAY(GATEWAY_ID) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE_EMAIL ( + AIRAVATA_INTERNAL_USER_ID VARCHAR (255), + EMAIL VARCHAR (255), + PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, EMAIL), + FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE_PHONE ( + AIRAVATA_INTERNAL_USER_ID VARCHAR (255), + PHONE VARCHAR (255), + PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, PHONE ), + FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE_NATIONALITY ( + AIRAVATA_INTERNAL_USER_ID VARCHAR (255), + NATIONALITY VARCHAR (255), + PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, NATIONALITY ), + FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS WORKSPACE_USER_PROFILE_LABELED_URI ( + AIRAVATA_INTERNAL_USER_ID VARCHAR (255), + LABELED_URI VARCHAR (255), + PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, LABELED_URI ), + FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS WORKSPACE_NSF_DEMOGRAPHIC ( + AIRAVATA_INTERNAL_USER_ID VARCHAR (255), + GENDER VARCHAR (255), + PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID), + FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS WORKSPACE_NSF_DEMOGRAPHIC_ETHNICITY ( + AIRAVATA_INTERNAL_USER_ID VARCHAR (255), + ETHNICITY VARCHAR (255), + PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, ETHNICITY ), + FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS WORKSPACE_NSF_DEMOGRAPHIC_RACE ( + AIRAVATA_INTERNAL_USER_ID VARCHAR (255), + RACE VARCHAR (255), + PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, RACE ), + FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS WORKSPACE_NSF_DEMOGRAPHIC_DISABILITY ( + AIRAVATA_INTERNAL_USER_ID VARCHAR (255), + DISABILITY VARCHAR (255), + PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, DISABILITY ), + FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES WORKSPACE_NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS WORKSPACE_PROJECT( + PROJECT_ID VARCHAR (255), + OWNER VARCHAR (255), + GATEWAY_ID VARCHAR (255), + PROJECT_NAME VARCHAR (255), + DESCRIPTION VARCHAR (255), + CREATION_TIME BIGINT, + PRIMARY KEY (PROJECT_ID), + FOREIGN KEY(OWNER) REFERENCES WORKSPACE_USER_PROFILE(AIRAVATA_INTERNAL_USER_ID), + FOREIGN KEY(GATEWAY_ID) REFERENCES WORKSPACE_GATEWAY(GATEWAY_ID) ON DELETE CASCADE +); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/modules/user-profile/user-profile-core/src/test/java/org/apache/airavata/registry/core/repositories/WorkspaceRepositoryTest.java ---------------------------------------------------------------------- diff --git a/modules/user-profile/user-profile-core/src/test/java/org/apache/airavata/registry/core/repositories/WorkspaceRepositoryTest.java b/modules/user-profile/user-profile-core/src/test/java/org/apache/airavata/registry/core/repositories/WorkspaceRepositoryTest.java new file mode 100644 index 0000000..a168f0d --- /dev/null +++ b/modules/user-profile/user-profile-core/src/test/java/org/apache/airavata/registry/core/repositories/WorkspaceRepositoryTest.java @@ -0,0 +1,197 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.registry.core.repositories; + +import org.apache.airavata.model.user.UserProfile; +import org.apache.airavata.model.workspace.Gateway; +import org.apache.airavata.model.workspace.GatewayApprovalStatus; +import org.apache.airavata.model.workspace.Notification; +import org.apache.airavata.model.workspace.Project; +import org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity; +import org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity; +import org.apache.airavata.registry.core.entities.workspacecatalog.ProjectEntity; +import org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity; +import org.apache.airavata.registry.core.repositories.workspacecatalog.GatewayRepository; +import org.apache.airavata.registry.core.repositories.workspacecatalog.NotificationRepository; +import org.apache.airavata.registry.core.repositories.workspacecatalog.ProjectRepository; +import org.apache.airavata.registry.core.repositories.workspacecatalog.UserProfileRepository; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.UUID; + +public class WorkspaceRepositoryTest { + private final static Logger logger = LoggerFactory.getLogger(WorkspaceRepositoryTest.class); + + private GatewayRepository gatewayRepository; + private NotificationRepository notificationRepository; + private UserProfileRepository userProfileRepository; + private ProjectRepository projectRepository; + private String gatewayId; + private String notificationId; + private String userId; + private String projectId; + + private final String GATEWAY_DOMAIN = "test1.com"; + private final String NOTIFY_MESSAGE = "NotifyMe"; + private final String USER_COMMENT = "TestComment"; + private final String PROJECT_DESCRIPTION = "Test Description"; + + + @Before + public void setupRepository() { + + gatewayRepository = new GatewayRepository(Gateway.class, GatewayEntity.class); + notificationRepository = new NotificationRepository(Notification.class, + NotificationEntity.class); + userProfileRepository = new UserProfileRepository(UserProfile.class, UserProfileEntity.class); + projectRepository = new ProjectRepository(Project.class, ProjectEntity.class); + + gatewayId = "test.com" + System.currentTimeMillis(); + notificationId = UUID.randomUUID().toString(); + userId = "testuser" + System.currentTimeMillis(); + projectId = "project" + System.currentTimeMillis(); + } + + @Test + public void userProfileRepositoryTest() { + + /* + * Creating Gateway required for UserProfile creation + */ + Gateway gateway = new Gateway(); + gateway.setGatewayApprovalStatus(GatewayApprovalStatus.ACTIVE); + gateway.setGatewayId(gatewayId); + gateway.setDomain(GATEWAY_DOMAIN); + gateway = gatewayRepository.create(gateway); + Assert.assertTrue(!gateway.getGatewayId().isEmpty()); + + + + /* + * UserProfile Instance creation + */ + UserProfile userProfile = new UserProfile(); + userProfile.setAiravataInternalUserId(userId); + userProfile.setGatewayId(gateway.getGatewayId()); + + /* + * Workspace UserProfile Repository Insert Operation Test + */ + userProfile = userProfileRepository.create(userProfile); + Assert.assertTrue(!userProfile.getAiravataInternalUserId().isEmpty()); + + /* + * Workspace UserProfile Repository Update Operation Test + */ + userProfile.setComments(USER_COMMENT); + userProfileRepository.update(userProfile); + userProfile = userProfileRepository.get(userId); + System.out.println(userProfile.getComments()); + Assert.assertEquals(userProfile.getComments(), USER_COMMENT); + + /* + * Workspace UserProfile Repository Select Operation Test + */ + userProfile = userProfileRepository.get(userId); + Assert.assertNotNull(userProfile); + + /* + * Workspace UserProfile Repository Delete Operation + */ + boolean deleteResult = userProfileRepository.delete(userId); + Assert.assertTrue(deleteResult); + deleteResult = gatewayRepository.delete(gatewayId); + Assert.assertTrue(deleteResult); + + + } + + @Test + public void projectRepositoryTest() { + + /* + * Creating Gateway required for UserProfile & Project creation + */ + Gateway gateway = new Gateway(); + gateway.setGatewayApprovalStatus(GatewayApprovalStatus.ACTIVE); + gateway.setGatewayId(gatewayId); + gateway.setDomain(GATEWAY_DOMAIN); + gateway = gatewayRepository.create(gateway); + Assert.assertTrue(!gateway.getGatewayId().isEmpty()); + + /* + * UserProfile Instance creation required for Project Creation + */ + UserProfile userProfile = new UserProfile(); + userProfile.setAiravataInternalUserId(userId); + userProfile.setGatewayId(gateway.getGatewayId()); + userProfile = userProfileRepository.create(userProfile); + Assert.assertTrue(!userProfile.getAiravataInternalUserId().isEmpty()); + + /* + * Project Instance creation + */ + Project project = new Project(); + project.setGatewayId(gatewayId); + project.setOwner(userId); + project.setProjectID(projectId); + project.setGatewayIdIsSet(true); + + + /* + * Workspace Project Repository Insert Operation Test + */ + project = projectRepository.create(project); + Assert.assertTrue(!project.getProjectID().isEmpty()); + + /* + * Workspace Project Repository Update Operation Test + */ + project.setDescription(PROJECT_DESCRIPTION); + projectRepository.update(project); + project = projectRepository.get(projectId); + Assert.assertEquals(project.getDescription(), PROJECT_DESCRIPTION); + + /* + * Workspace Project Repository Select Operation Test + */ + project = projectRepository.get(projectId); + Assert.assertNotNull(project); + + /* + * Workspace Project Repository Delete Operation + */ + boolean deleteResult = projectRepository.delete(projectId); + Assert.assertTrue(deleteResult); + + deleteResult = userProfileRepository.delete(userId); + Assert.assertTrue(deleteResult); + + deleteResult = gatewayRepository.delete(gatewayId); + Assert.assertTrue(deleteResult); + + + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/01943baf/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 5f2dcc3..e31cd92 100644 --- a/pom.xml +++ b/pom.xml @@ -651,7 +651,6 @@ modules/workflow modules/sharing-registry modules/cluster-monitoring - modules/registry-refactoring modules/user-profile-migration