http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityEntity.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityEntity.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityEntity.java new file mode 100644 index 0000000..de8abf4 --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityEntity.java @@ -0,0 +1,192 @@ +/* + * + * 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.sharing.registry.db.entities; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.*; +import java.util.Map; + +@Entity +@Table(name = "ENTITY", schema = "") +public class EntityEntity { + private final static Logger logger = LoggerFactory.getLogger(EntityEntity.class); + private String entityId; + private String domainId; + private String entityTypeId; + private String ownerId; + private String parentEntityId; + private String name; + private String description; + private Map<String, String> metadata; + private String fullText; + private Long createdTime; + private Long updatedTime; + + @Id + @Column(name = "ENTITY_ID") + public String getEntityId() { + return entityId; + } + + public void setEntityId(String entityId) { + this.entityId = entityId; + } + + @Basic + @Column(name = "DOMAIN_ID") + public String getDomainId() { + return domainId; + } + + public void setDomainId(String domainId) { + this.domainId = domainId; + } + + @Basic + @Column(name = "ENTITY_TYPE_ID") + public String getEntityTypeId() { + return entityTypeId; + } + + public void setEntityTypeId(String entityTypeId) { + this.entityTypeId = entityTypeId; + } + + @Basic + @Column(name = "OWNER_ID") + public String getOwnerId() { + return ownerId; + } + + public void setOwnerId(String ownerId) { + this.ownerId = ownerId; + } + + @Basic + @Column(name = "PARENT_ENTITY_ID") + public String getParentEntityId() { + return parentEntityId; + } + + public void setParentEntityId(String parentEntityId) { + this.parentEntityId = parentEntityId; + } + + @Basic + @Column(name = "NAME") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Basic + @Column(name = "DESCRIPTION") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @ElementCollection + @CollectionTable( + name="ENTITY_METADATA", + joinColumns=@JoinColumn(name="ENTITY_ID") + ) + @MapKeyColumn(name="META_KEY") + @Column(name="META_VALUE") + public Map<String, String> getMetadata() { + return metadata; + } + + public void setMetadata(Map<String, String> metadata) { + this.metadata = metadata; + } + + @Lob + @Column(name = "FULL_TEXT") + public String getFullText() { + return fullText; + } + + public void setFullText(String fullText) { + this.fullText = fullText; + } + + @Basic + @Column(name = "CREATED_TIME") + public Long getCreatedTime() { + return createdTime; + } + + public void setCreatedTime(Long createdTime) { + this.createdTime = createdTime; + } + + @Basic + @Column(name = "UPDATED_TIME") + public Long getUpdatedTime() { + return updatedTime; + } + + public void setUpdatedTime(Long updatedTime) { + this.updatedTime = updatedTime; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + EntityEntity that = (EntityEntity) o; + + if (entityId != null ? !entityId.equals(that.entityId) : that.entityId != null) return false; + if (domainId != null ? !domainId.equals(that.domainId) : that.domainId != null) return false; + if (parentEntityId != null ? !parentEntityId.equals(that.parentEntityId) : that.parentEntityId != null) return false; + if (name != null ? !name.equals(that.name) : that.name != null) return false; + if (description != null ? !description.equals(that.description) : that.description != null) return false; + if (metadata.equals(that.metadata)) return false; + if (fullText != null ? !fullText.equals(that.fullText) : that.fullText != null) return false; + if (createdTime != null ? !createdTime.equals(that.createdTime) : that.createdTime != null) return false; + if (updatedTime != null ? !updatedTime.equals(that.updatedTime) : that.updatedTime != null) return false; + if (ownerId != null ? !ownerId.equals(that.ownerId) : that.ownerId != null) return false; + + return true; + } + + @Override + public int hashCode() { + int result = entityId != null ? entityId.hashCode() : 0; + result = 31 * result + (name != null ? name.hashCode() : 0); + result = 31 * result + (description != null ? description.hashCode() : 0); + result = 31 * result + (metadata != null ? metadata.hashCode() : 0); + result = 31 * result + (fullText != null ? fullText.hashCode() : 0); + result = 31 * result + (createdTime != null ? createdTime.hashCode() : 0); + result = 31 * result + (updatedTime != null ? updatedTime.hashCode() : 0); + return result; + } +} \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityTypeEntity.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityTypeEntity.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityTypeEntity.java new file mode 100644 index 0000000..0b789ed --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/EntityTypeEntity.java @@ -0,0 +1,125 @@ +/* + * + * 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.sharing.registry.db.entities; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.*; + +@Entity +@Table(name = "ENTITY_TYPE", schema = "") +public class EntityTypeEntity { + private final static Logger logger = LoggerFactory.getLogger(EntityTypeEntity.class); + private String entityTypeId; + private String domainId; + private String name; + private String description; + private Long createdTime; + private Long updatedTime; + + @Id + @Column(name = "ENTITY_TYPE_ID") + public String getEntityTypeId() { + return entityTypeId; + } + + public void setEntityTypeId(String entityTypeId) { + this.entityTypeId = entityTypeId; + } + + @Basic + @Column(name = "DOMAIN_ID") + public String getDomainId() { + return domainId; + } + + public void setDomainId(String domainId) { + this.domainId = domainId; + } + + @Basic + @Column(name = "NAME") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Basic + @Column(name = "DESCRIPTION") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @Basic + @Column(name = "CREATED_TIME") + public Long getCreatedTime() { + return createdTime; + } + + public void setCreatedTime(Long createdTime) { + this.createdTime = createdTime; + } + + @Basic + @Column(name = "UPDATED_TIME") + public Long getUpdatedTime() { + return updatedTime; + } + + public void setUpdatedTime(Long updatedTime) { + this.updatedTime = updatedTime; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + EntityTypeEntity that = (EntityTypeEntity) o; + + if (entityTypeId != null ? !entityTypeId.equals(that.entityTypeId) : that.entityTypeId != null) return false; + if (domainId != null ? !domainId.equals(that.domainId) : that.domainId != null) return false; + if (name != null ? !name.equals(that.name) : that.name != null) return false; + if (description != null ? !description.equals(that.description) : that.description != null) return false; + if (createdTime != null ? !createdTime.equals(that.createdTime) : that.createdTime != null) return false; + if (updatedTime != null ? !updatedTime.equals(that.updatedTime) : that.updatedTime != null) return false; + + return true; + } + + @Override + public int hashCode() { + int result = entityTypeId != null ? entityTypeId.hashCode() : 0; + result = 31 * result + (name != null ? name.hashCode() : 0); + result = 31 * result + (description != null ? description.hashCode() : 0); + result = 31 * result + (createdTime != null ? createdTime.hashCode() : 0); + result = 31 * result + (updatedTime != null ? updatedTime.hashCode() : 0); + return result; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/GroupMembershipEntity.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/GroupMembershipEntity.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/GroupMembershipEntity.java new file mode 100644 index 0000000..c62a52d --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/GroupMembershipEntity.java @@ -0,0 +1,112 @@ +/* + * + * 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.sharing.registry.db.entities; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.*; + +@Entity +@Table(name = "GROUP_MEMBERSHIP", schema = "") +@IdClass(GroupMembershipEntityPK.class) +public class GroupMembershipEntity { + private final static Logger logger = LoggerFactory.getLogger(GroupMembershipEntity.class); + private String parentId; + private String childId; + private String childType; + private Long createdTime; + private Long updatedTime; + + @Id + @Column(name = "PARENT_ID") + public String getParentId() { + return parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + @Id + @Column(name = "CHILD_ID") + public String getChildId() { + return childId; + } + + public void setChildId(String childId) { + this.childId = childId; + } + + @Basic + @Column(name = "CHILD_TYPE") + public String getChildType() { + return childType; + } + + public void setChildType(String childType) { + this.childType = childType; + } + + @Basic + @Column(name = "CREATED_TIME") + public Long getCreatedTime() { + return createdTime; + } + + public void setCreatedTime(Long createdTime) { + this.createdTime = createdTime; + } + + @Basic + @Column(name = "UPDATED_TIME") + public Long getUpdatedTime() { + return updatedTime; + } + + public void setUpdatedTime(Long updatedTime) { + this.updatedTime = updatedTime; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + GroupMembershipEntity that = (GroupMembershipEntity) o; + + if (parentId != null ? !parentId.equals(that.parentId) : that.parentId != null) return false; + if (childId != null ? !childId.equals(that.childId) : that.childId != null) return false; + if (childType != null ? !childType.equals(that.childType) : that.childType != null) return false; + if (createdTime != null ? !createdTime.equals(that.createdTime) : that.createdTime != null) return false; + if (updatedTime != null ? !updatedTime.equals(that.updatedTime) : that.updatedTime != null) return false; + + return true; + } + + @Override + public int hashCode() { + int result = parentId != null ? parentId.hashCode() : 0; + result = 31 * result + (childId != null ? childId.hashCode() : 0); + result = 31 * result + (childType != null ? childType.hashCode() : 0); + return result; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/GroupMembershipEntityPK.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/GroupMembershipEntityPK.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/GroupMembershipEntityPK.java new file mode 100644 index 0000000..be3b1f9 --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/GroupMembershipEntityPK.java @@ -0,0 +1,74 @@ +/* + * + * 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.sharing.registry.db.entities; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.Column; +import javax.persistence.Id; +import java.io.Serializable; + +public class GroupMembershipEntityPK implements Serializable { + private final static Logger logger = LoggerFactory.getLogger(GroupMembershipEntityPK.class); + private String parentId; + private String childId; + + @Column(name = "PARENT_ID") + @Id + public String getParentId() { + return parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + @Column(name = "CHILD_ID") + @Id + public String getChildId() { + return childId; + } + + public void setChildId(String childId) { + this.childId = childId; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + GroupMembershipEntityPK that = (GroupMembershipEntityPK) o; + + if (parentId != null ? !parentId.equals(that.parentId) : that.parentId != null) return false; + if (childId != null ? !childId.equals(that.childId) : that.childId != null) return false; + + return true; + } + + @Override + public int hashCode() { + int result = parentId != null ? parentId.hashCode() : 0; + result = 31 * result + (childId != null ? childId.hashCode() : 0); + return result; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/PermissionTypeEntity.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/PermissionTypeEntity.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/PermissionTypeEntity.java new file mode 100644 index 0000000..c145cbe --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/PermissionTypeEntity.java @@ -0,0 +1,125 @@ +/* + * + * 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.sharing.registry.db.entities; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.*; + +@Entity +@Table(name = "PERMISSION_TYPE", schema = "") +public class PermissionTypeEntity { + private final static Logger logger = LoggerFactory.getLogger(PermissionTypeEntity.class); + private String permissionTypeId; + private String domainId; + private String name; + private String description; + private Long createdTime; + private Long updatedTime; + + @Id + @Column(name = "PERMISSION_TYPE_ID") + public String getPermissionTypeId() { + return permissionTypeId; + } + + public void setPermissionTypeId(String permissionTypeId) { + this.permissionTypeId = permissionTypeId; + } + + @Basic + @Column(name = "DOMAIN_ID") + public String getDomainId() { + return domainId; + } + + public void setDomainId(String domainId) { + this.domainId = domainId; + } + + @Basic + @Column(name = "NAME") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + + @Basic + @Column(name = "DESCRIPTION") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @Basic + @Column(name = "CREATED_TIME") + public Long getCreatedTime() { + return createdTime; + } + + public void setCreatedTime(Long createdTime) { + this.createdTime = createdTime; + } + + @Basic + @Column(name = "UPDATED_TIME") + public Long getUpdatedTime() { + return updatedTime; + } + + public void setUpdatedTime(Long updatedTime) { + this.updatedTime = updatedTime; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + PermissionTypeEntity that = (PermissionTypeEntity) o; + + if (permissionTypeId != null ? !permissionTypeId.equals(that.permissionTypeId) : that.permissionTypeId != null) + return false; + if (domainId != null ? !domainId.equals(that.domainId) : that.domainId != null) return false; + if (name != null ? !name.equals(that.name) : that.name != null) return false; + if (createdTime != null ? !createdTime.equals(that.createdTime) : that.createdTime != null) return false; + if (updatedTime != null ? !updatedTime.equals(that.updatedTime) : that.updatedTime != null) return false; + + return true; + } + + @Override + public int hashCode() { + int result = permissionTypeId != null ? permissionTypeId.hashCode() : 0; + result = 31 * result + (name != null ? name.hashCode() : 0); + result = 31 * result + (createdTime != null ? createdTime.hashCode() : 0); + result = 31 * result + (updatedTime != null ? updatedTime.hashCode() : 0); + return result; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingEntity.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingEntity.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingEntity.java new file mode 100644 index 0000000..b4b74b0 --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingEntity.java @@ -0,0 +1,136 @@ +/* + * + * 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.sharing.registry.db.entities; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.*; + +@Entity +@Table(name = "SHARING", schema = "") +@IdClass(SharingEntityPK.class) +public class SharingEntity { + private final static Logger logger = LoggerFactory.getLogger(SharingEntity.class); + private String permissionTypeId; + private String entityId; + private String groupId; + private String sharingType; + private String inheritedParentId; + private Long createdTime; + private Long updatedTime; + + @Id + @Column(name = "PERMISSION_TYPE_ID") + public String getPermissionTypeId() { + return permissionTypeId; + } + + public void setPermissionTypeId(String permissionTypeId) { + this.permissionTypeId = permissionTypeId; + } + + @Id + @Column(name = "ENTITY_ID") + public String getEntityId() { + return entityId; + } + + public void setEntityId(String entityId) { + this.entityId = entityId; + } + + @Id + @Column(name = "GROUP_ID") + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + + @Id + @Column(name = "INHERITED_PARENT_ID") + public String getInheritedParentId() { + return inheritedParentId; + } + + public void setInheritedParentId(String inheritedParentId) { + this.inheritedParentId = inheritedParentId; + } + + @Basic + @Column(name = "SHARING_TYPE") + public String getSharingType() { + return sharingType; + } + + public void setSharingType(String sharingType) { + this.sharingType = sharingType; + } + + @Basic + @Column(name = "CREATED_TIME") + public Long getCreatedTime() { + return createdTime; + } + + public void setCreatedTime(Long createdTime) { + this.createdTime = createdTime; + } + + @Basic + @Column(name = "UPDATED_TIME") + public Long getUpdatedTime() { + return updatedTime; + } + + public void setUpdatedTime(Long updatedTime) { + this.updatedTime = updatedTime; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + SharingEntity that = (SharingEntity) o; + + if (permissionTypeId != null ? !permissionTypeId.equals(that.permissionTypeId) : that.permissionTypeId != null) + return false; + if (entityId != null ? !entityId.equals(that.entityId) : that.entityId != null) return false; + if (groupId != null ? !groupId.equals(that.groupId) : that.groupId != null) return false; + if (createdTime != null ? !createdTime.equals(that.createdTime) : that.createdTime != null) return false; + if (updatedTime != null ? !updatedTime.equals(that.updatedTime) : that.updatedTime != null) return false; + + return true; + } + + @Override + public int hashCode() { + int result = permissionTypeId != null ? permissionTypeId.hashCode() : 0; + result = 31 * result + (entityId != null ? entityId.hashCode() : 0); + result = 31 * result + (groupId != null ? groupId.hashCode() : 0); + return result; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingEntityPK.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingEntityPK.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingEntityPK.java new file mode 100644 index 0000000..da77a87 --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingEntityPK.java @@ -0,0 +1,99 @@ +/* + * + * 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.sharing.registry.db.entities; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.Column; +import javax.persistence.Id; +import java.io.Serializable; + +public class SharingEntityPK implements Serializable { + private final static Logger logger = LoggerFactory.getLogger(SharingEntityPK.class); + private String permissionTypeId; + private String entityId; + private String groupId; + private String inheritedParentId; + + @Column(name = "PERMISSION_TYPE_ID") + @Id + public String getPermissionTypeId() { + return permissionTypeId; + } + + public void setPermissionTypeId(String permissionTypeId) { + this.permissionTypeId = permissionTypeId; + } + + @Column(name = "ENTITY_ID") + @Id + public String getEntityId() { + return entityId; + } + + public void setEntityId(String entityId) { + this.entityId = entityId; + } + + @Column(name = "GROUP_ID") + @Id + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + @Column(name = "INHERITED_PARENT_ID") + @Id + public String getInheritedParentId() { + return inheritedParentId; + } + + public void setInheritedParentId(String inheritedParentId) { + this.inheritedParentId = inheritedParentId; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + SharingEntityPK that = (SharingEntityPK) o; + + if (permissionTypeId != null ? !permissionTypeId.equals(that.permissionTypeId) : that.permissionTypeId != null) + return false; + if (entityId != null ? !entityId.equals(that.entityId) : that.entityId != null) return false; + if (groupId != null ? !groupId.equals(that.groupId) : that.groupId != null) return false; + + return true; + } + + @Override + public int hashCode() { + int result = permissionTypeId != null ? permissionTypeId.hashCode() : 0; + result = 31 * result + (entityId != null ? entityId.hashCode() : 0); + result = 31 * result + (groupId != null ? groupId.hashCode() : 0); + return result; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingUserEntity.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingUserEntity.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingUserEntity.java new file mode 100644 index 0000000..0d17279 --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/SharingUserEntity.java @@ -0,0 +1,146 @@ +/* + * + * 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.sharing.registry.db.entities; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.*; +import java.nio.ByteBuffer; + +@Entity +@Table(name = "SHARING_USER", schema = "") +public class SharingUserEntity { + private final static Logger logger = LoggerFactory.getLogger(SharingUserEntity.class); + private String userId; + private String domainId; + private String userName; + private String firstName; + private String lastName; + private ByteBuffer icon; + private Long createdTime; + private Long updatedTime; + + @Id + @Column(name = "USER_ID") + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + @Basic + @Column(name = "DOMAIN_ID") + public String getDomainId() { + return domainId; + } + + public void setDomainId(String domainId) { + this.domainId = domainId; + } + + @Basic + @Column(name = "USER_NAME") + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + @Basic + @Column(name = "FIRST_NAME") + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + @Basic + @Column(name = "LAST_NAME") + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + @Lob + @Column(name = "ICON") + public ByteBuffer getIcon() { + return icon; + } + + public void setIcon(ByteBuffer icon) { + this.icon = icon; + } + + @Basic + @Column(name = "CREATED_TIME") + public Long getCreatedTime() { + return createdTime; + } + + public void setCreatedTime(Long createdTime) { + this.createdTime = createdTime; + } + + @Basic + @Column(name = "UPDATED_TIME") + public Long getUpdatedTime() { + return updatedTime; + } + + public void setUpdatedTime(Long updatedTime) { + this.updatedTime = updatedTime; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + SharingUserEntity that = (SharingUserEntity) o; + + if (userId != null ? !userId.equals(that.userId) : that.userId != null) return false; + if (domainId != null ? !domainId.equals(that.domainId) : that.domainId != null) return false; + if (userName != null ? !userName.equals(that.userName) : that.userName != null) return false; + if (createdTime != null ? !createdTime.equals(that.createdTime) : that.createdTime != null) return false; + if (updatedTime != null ? !updatedTime.equals(that.updatedTime) : that.updatedTime != null) return false; + + return true; + } + + @Override + public int hashCode() { + int result = userId != null ? userId.hashCode() : 0; + result = 31 * result + (userName != null ? userName.hashCode() : 0); + result = 31 * result + (createdTime != null ? createdTime.hashCode() : 0); + result = 31 * result + (updatedTime != null ? updatedTime.hashCode() : 0); + return result; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java new file mode 100644 index 0000000..10d901a --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/UserGroupEntity.java @@ -0,0 +1,150 @@ +/* + * + * 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.sharing.registry.db.entities; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.persistence.*; + +@Entity +@Table(name = "USER_GROUP", schema = "") +public class UserGroupEntity { + private final static Logger logger = LoggerFactory.getLogger(UserGroupEntity.class); + private String groupId; + private String domainId; + private String name; + private String description; + private String ownerId; + private String groupType; + private Long createdTime; + private Long updatedTime; + + @Id + @Column(name = "GROUP_ID") + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + @Basic + @Column(name = "DOMAIN_ID") + public String getDomainId() { + return domainId; + } + + public void setDomainId(String domainId) { + this.domainId = domainId; + } + + @Basic + @Column(name = "OWNER_ID") + public String getOwnerId() { + return ownerId; + } + + public void setOwnerId(String ownerId) { + this.ownerId = ownerId; + } + + @Basic + @Column(name = "NAME") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Basic + @Column(name = "DESCRIPTION") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @Basic + @Column(name = "GROUP_TYPE") + public String getGroupType() { + return groupType; + } + + public void setGroupType(String type) { + this.groupType = type; + } + + @Basic + @Column(name = "CREATED_TIME") + public Long getCreatedTime() { + return createdTime; + } + + public void setCreatedTime(Long createdTime) { + this.createdTime = createdTime; + } + + @Basic + @Column(name = "UPDATED_TIME") + public Long getUpdatedTime() { + return updatedTime; + } + + public void setUpdatedTime(Long updatedTime) { + this.updatedTime = updatedTime; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + UserGroupEntity that = (UserGroupEntity) o; + + if (groupId != null ? !groupId.equals(that.groupId) : that.groupId != null) return false; + if (domainId != null ? !domainId.equals(that.domainId) : that.domainId != null) return false; + if (ownerId != null ? !ownerId.equals(that.ownerId) : that.ownerId != null) return false; + if (name != null ? !name.equals(that.name) : that.name != null) return false; + if (description != null ? !description.equals(that.description) : that.description != null) return false; + if (groupType != null ? !groupType.equals(that.groupType) : that.groupType != null) return false; + if (createdTime != null ? !createdTime.equals(that.createdTime) : that.createdTime != null) return false; + if (updatedTime != null ? !updatedTime.equals(that.updatedTime) : that.updatedTime != null) return false; + + return true; + } + + @Override + public int hashCode() { + int result = groupId != null ? groupId.hashCode() : 0; + result = 31 * result + (name != null ? name.hashCode() : 0); + result = 31 * result + (description != null ? description.hashCode() : 0); + result = 31 * result + (groupType != null ? groupType.hashCode() : 0); + result = 31 * result + (createdTime != null ? createdTime.hashCode() : 0); + result = 31 * result + (updatedTime != null ? updatedTime.hashCode() : 0); + return result; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/AbstractRepository.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/AbstractRepository.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/AbstractRepository.java new file mode 100644 index 0000000..a53a6a2 --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/AbstractRepository.java @@ -0,0 +1,138 @@ +/* + * + * 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.sharing.registry.db.repositories; + +import org.apache.airavata.sharing.registry.db.utils.DBConstants; +import org.apache.airavata.sharing.registry.db.utils.JPAUtils; +import org.apache.airavata.sharing.registry.db.utils.ObjectMapperSingleton; +import org.apache.airavata.sharing.registry.models.SharingRegistryException; +import org.dozer.Mapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public abstract class AbstractRepository<T, E, Id> { + private final static Logger logger = LoggerFactory.getLogger(AbstractRepository.class); + + private Class<T> thriftGenericClass; + private Class<E> dbEntityGenericClass; + + public AbstractRepository(Class<T> thriftGenericClass, Class<E> dbEntityGenericClass){ + this.thriftGenericClass = thriftGenericClass; + this.dbEntityGenericClass = dbEntityGenericClass; + } + + public T create(T t) throws SharingRegistryException { + return update(t); + } + + public List<T> create(List<T> tList) throws SharingRegistryException { + return update(tList); + } + + public T update(T t) throws SharingRegistryException { + Mapper mapper = ObjectMapperSingleton.getInstance(); + E entity = mapper.map(t, dbEntityGenericClass); + E persistedCopy = JPAUtils.execute(entityManager -> entityManager.merge(entity)); + return mapper.map(persistedCopy, thriftGenericClass); + } + + public List<T> update(List<T> tList) throws SharingRegistryException { + List<T> returnList = new ArrayList<>(); + for(T temp : tList) + returnList.add(update(temp)); + return returnList; + } + + public boolean delete(Id id) throws SharingRegistryException { + JPAUtils.execute(entityManager -> { + E entity = entityManager.find(dbEntityGenericClass, id); + entityManager.remove(entity); + return entity; + }); + return true; + } + + public boolean delete(List<Id> idList) throws SharingRegistryException { + for(Id id : idList) + delete(id); + return true; + } + + public T get(Id id) throws SharingRegistryException { + E entity = JPAUtils.execute(entityManager -> entityManager + .find(dbEntityGenericClass, id)); + Mapper mapper = ObjectMapperSingleton.getInstance(); + if(entity == null) + return null; + return mapper.map(entity, thriftGenericClass); + } + + public boolean isExists(Id id) throws SharingRegistryException { + return get(id) != null; + } + + public List<T> get(List<Id> idList) throws SharingRegistryException { + List<T> returnList = new ArrayList<>(); + for(Id id : idList) + returnList.add(get(id)); + return returnList; + } + + public List<T> select(Map<String, String> filters, int offset, int limit) throws SharingRegistryException { + String queryString = getSelectQuery(filters); + int newLimit = limit < 0 ? DBConstants.SELECT_MAX_ROWS: limit; + List resultSet = JPAUtils.execute(entityManager -> entityManager.createQuery(queryString).setFirstResult(offset) + .setMaxResults(newLimit).getResultList()); + Mapper mapper = ObjectMapperSingleton.getInstance(); + List<T> gatewayList = new ArrayList<>(); + resultSet.stream().forEach(rs -> gatewayList.add(mapper.map(rs, thriftGenericClass))); + return gatewayList; + } + + public List<T> select(String queryString, int offset, int limit) throws SharingRegistryException { + int newLimit = limit < 0 ? DBConstants.SELECT_MAX_ROWS: limit; + List resultSet = JPAUtils.execute(entityManager -> entityManager.createQuery(queryString).setFirstResult(offset) + .setMaxResults(newLimit).getResultList()); + Mapper mapper = ObjectMapperSingleton.getInstance(); + List<T> gatewayList = new ArrayList<>(); + resultSet.stream().forEach(rs -> gatewayList.add(mapper.map(rs, thriftGenericClass))); + return gatewayList; + } + + private String getSelectQuery(Map<String, String> filters){ + String query = "SELECT p from " + dbEntityGenericClass.getSimpleName() + " as p"; + if(filters != null && filters.size() != 0){ + query += " WHERE "; + for(String k : filters.keySet()){ + query += "p." + k + " = '" + filters.get(k) + "' AND "; + } + query = query.substring(0, query.length()-5); + } + + query += " ORDER BY p.createdTime DESC"; + + return query; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/DomainRepository.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/DomainRepository.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/DomainRepository.java new file mode 100644 index 0000000..8cd44ef --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/DomainRepository.java @@ -0,0 +1,34 @@ +/* + * + * 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.sharing.registry.db.repositories; + +import org.apache.airavata.sharing.registry.db.entities.DomainEntity; +import org.apache.airavata.sharing.registry.models.Domain; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class DomainRepository extends AbstractRepository<Domain, DomainEntity, String> { + private final static Logger logger = LoggerFactory.getLogger(DomainRepository.class); + + public DomainRepository(){ + super(Domain.class, DomainEntity.class); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java new file mode 100644 index 0000000..b7137d2 --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityRepository.java @@ -0,0 +1,86 @@ +/* + * + * 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.sharing.registry.db.repositories; + +import org.apache.airavata.sharing.registry.db.entities.EntityEntity; +import org.apache.airavata.sharing.registry.db.entities.SharingEntity; +import org.apache.airavata.sharing.registry.db.utils.DBConstants; +import org.apache.airavata.sharing.registry.models.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.List; + +public class EntityRepository extends AbstractRepository<Entity, EntityEntity, String> { + private final static Logger logger = LoggerFactory.getLogger(EntityRepository.class); + + public EntityRepository() { + super(Entity.class, EntityEntity.class); + } + + public List<Entity> getChildEntities(String parentId) throws SharingRegistryException { + HashMap<String, String> filters = new HashMap<>(); + filters.put(DBConstants.EntityTable.PARENT_ENTITY_ID, parentId); + return select(filters, 0, -1); + } + + public List<Entity> searchEntities(List<String> groupIds, String entityTypeId, List<SearchCriteria> filters, + int offset, int limit) throws SharingRegistryException { + String groupIdString = "'"; + for(String groupId : groupIds) + groupIdString += groupId + "','"; + groupIdString = groupIdString.substring(0, groupIdString.length()-2); + + String query = "SELECT E FROM " + EntityEntity.class.getSimpleName() + " E, " + SharingEntity.class.getSimpleName() + " S WHERE " + + "E." + DBConstants.EntityTable.ENTITY_ID + " = S." + DBConstants.SharingTable.ENTITY_ID + " AND " + + "S." + DBConstants.SharingTable.GROUP_ID + " IN(" + groupIdString + ") AND E." + DBConstants.EntityTable.ENTITY_TYPE_ID + "='" + + entityTypeId + "' AND "; + + for(SearchCriteria searchCriteria : filters){ + if(searchCriteria.getSearchField().equals(EntitySearchField.NAME)){ + query += "E." + DBConstants.EntityTable.NAME + " LIKE '%" + searchCriteria.getValue() + "%' AND "; + }else if(searchCriteria.getSearchField().equals(EntitySearchField.DESCRIPTION)){ + query += "E." + DBConstants.EntityTable.DESCRIPTION + " LIKE '%" + searchCriteria.getValue() + "%' AND "; + }else if(searchCriteria.getSearchField().equals(EntitySearchField.FULL_TEXT)){ + query += "E." + DBConstants.EntityTable.FULL_TEXT + " LIKE '%" + searchCriteria.getValue() + "%' AND "; + }else if(searchCriteria.getSearchField().equals(EntitySearchField.PRRENT_ENTITY_ID)){ + query += "E." + DBConstants.EntityTable.PARENT_ENTITY_ID + " = '" + searchCriteria.getValue() + "' AND "; + }else if(searchCriteria.getSearchField().equals(EntitySearchField.CREATED_TIME)){ + if(searchCriteria.getSearchCondition().equals(SearchCondition.GTE)){ + query += "E." + DBConstants.EntityTable.CREATED_TIME + " >= " + Integer.parseInt(searchCriteria.getValue().trim()) + " AND "; + }else{ + query += "E." + DBConstants.EntityTable.CREATED_TIME + " <= " + Integer.parseInt(searchCriteria.getValue().trim()) + " AND "; + } + }else if(searchCriteria.getSearchField().equals(EntitySearchField.UPDATED_TIME)){ + if(searchCriteria.getSearchCondition().equals(SearchCondition.GTE)){ + query += "E." + DBConstants.EntityTable.UPDATED_TIME + " >= " + Integer.parseInt(searchCriteria.getValue().trim()) + " AND "; + }else{ + query += "E." + DBConstants.EntityTable.UPDATED_TIME + " <= " + Integer.parseInt(searchCriteria.getValue().trim()) + " AND "; + } + } + } + + query = query.substring(0, query.length() - 5); + return select(query, offset, limit); + + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityTypeRepository.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityTypeRepository.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityTypeRepository.java new file mode 100644 index 0000000..ed2a7e9 --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/EntityTypeRepository.java @@ -0,0 +1,34 @@ +/* + * + * 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.sharing.registry.db.repositories; + +import org.apache.airavata.sharing.registry.db.entities.EntityTypeEntity; +import org.apache.airavata.sharing.registry.models.EntityType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class EntityTypeRepository extends AbstractRepository<EntityType, EntityTypeEntity, String> { + private final static Logger logger = LoggerFactory.getLogger(EntityTypeRepository.class); + + public EntityTypeRepository() { + super(EntityType.class, EntityTypeEntity.class); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/GroupMembershipRepository.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/GroupMembershipRepository.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/GroupMembershipRepository.java new file mode 100644 index 0000000..87d5d4c --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/GroupMembershipRepository.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.sharing.registry.db.repositories; + +import org.apache.airavata.sharing.registry.db.entities.GroupMembershipEntity; +import org.apache.airavata.sharing.registry.db.entities.GroupMembershipEntityPK; +import org.apache.airavata.sharing.registry.db.entities.SharingUserEntity; +import org.apache.airavata.sharing.registry.db.entities.UserGroupEntity; +import org.apache.airavata.sharing.registry.db.utils.DBConstants; +import org.apache.airavata.sharing.registry.models.*; + +import java.util.*; + +public class GroupMembershipRepository extends AbstractRepository<GroupMembership, GroupMembershipEntity, GroupMembershipEntityPK> { + + public GroupMembershipRepository() { + super(GroupMembership.class, GroupMembershipEntity.class); + } + + public List<GroupMembership> getChildMembershipsOfGroup(String parentId) throws SharingRegistryException { + Map<String, String> filters = new HashMap<>(); + filters.put(DBConstants.GroupMembershipTable.PARENT_ID, parentId); + return select(filters, 0, -1); + } + + public List<User> getAllChildUsers(String groupId) throws SharingRegistryException { + String queryString = "SELECT U FROM " + SharingUserEntity.class.getSimpleName() + " U, " + GroupMembershipEntity.class.getSimpleName() + + " GM WHERE GM." + DBConstants.GroupMembershipTable.CHILD_ID + " = U." + DBConstants.UserTable.USER_ID + " AND " + + "gm." + DBConstants.GroupMembershipTable.PARENT_ID+"='"+groupId + "' AND gm." + DBConstants.GroupMembershipTable.CHILD_TYPE + + "='" + GroupChildType.USER.toString() + "'"; + UserRepository userRepository = new UserRepository(); + List<User> users = userRepository.select(queryString, 0, -1); + return users; + } + + public List<UserGroup> getAllChildGroups(String groupId) throws SharingRegistryException { + String queryString = "SELECT G FROM " + UserGroupEntity.class.getSimpleName() + " G, " + GroupMembershipEntity.class.getSimpleName() + + " GM WHERE GM." + DBConstants.GroupMembershipTable.CHILD_ID + " = G." + DBConstants.UserGroupTable.GROUP_ID + " AND " + + "GM." + DBConstants.GroupMembershipTable.PARENT_ID+"='"+groupId + "' AND GM." + DBConstants.GroupMembershipTable.CHILD_TYPE + + "='" + GroupChildType.GROUP.toString() + "'"; + UserGroupRepository userGroupRepository = new UserGroupRepository(); + List<UserGroup> groups = userGroupRepository.select(queryString, 0, -1); + return groups; + } + + public List<GroupMembership> getAllParentMembershipsForChild(String childId) throws SharingRegistryException { + List<GroupMembership> finalParentGroups = new ArrayList<>(); + Map<String, String> filters = new HashMap<>(); + filters.put(DBConstants.GroupMembershipTable.CHILD_ID, childId); + LinkedList<GroupMembership> temp = new LinkedList<>(); + select(filters, 0, -1).stream().forEach(m -> temp.addLast(m)); + while (temp.size() > 0){ + GroupMembership gm = temp.pop(); + filters = new HashMap<>(); + filters.put(DBConstants.GroupMembershipTable.CHILD_ID, gm.parentId); + select(filters, 0, -1).stream().forEach(m -> temp.addLast(m)); + finalParentGroups.add(gm); + } + return finalParentGroups; + } + + public List<UserGroup> getAllParentGroupsForChild(String childId) throws SharingRegistryException { + List<UserGroup> finalParentGroups = new ArrayList<>(); + Map<String, String> filters = new HashMap<>(); + filters.put(DBConstants.GroupMembershipTable.CHILD_ID, childId); + LinkedList<GroupMembership> temp = new LinkedList<>(); + select(filters, 0, -1).stream().forEach(m -> temp.addLast(m)); + UserGroupRepository userGroupRepository = new UserGroupRepository(); + while (temp.size() > 0){ + GroupMembership gm = temp.pop(); + filters = new HashMap<>(); + filters.put(DBConstants.GroupMembershipTable.CHILD_ID, gm.parentId); + select(filters, 0, -1).stream().forEach(m -> temp.addLast(m)); + finalParentGroups.add(userGroupRepository.get(gm.parentId)); + } + return finalParentGroups; + } + + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/PermissionTypeRepository.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/PermissionTypeRepository.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/PermissionTypeRepository.java new file mode 100644 index 0000000..c5d683c --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/PermissionTypeRepository.java @@ -0,0 +1,52 @@ +/* + * + * 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.sharing.registry.db.repositories; + +import org.apache.airavata.sharing.registry.db.entities.PermissionTypeEntity; +import org.apache.airavata.sharing.registry.db.utils.DBConstants; +import org.apache.airavata.sharing.registry.models.SharingRegistryException; +import org.apache.airavata.sharing.registry.models.PermissionType; +import org.apache.airavata.sharing.registry.server.SharingRegistryServerHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.List; + +public class PermissionTypeRepository extends AbstractRepository<PermissionType, PermissionTypeEntity, String> { + private final static Logger logger = LoggerFactory.getLogger(PermissionTypeRepository.class); + + public PermissionTypeRepository() { + super(PermissionType.class, PermissionTypeEntity.class); + } + + public String getGlobalPermissionTypeIdForDomain(String domainId) throws SharingRegistryException { + HashMap<String, String> filters = new HashMap<>(); + filters.put(DBConstants.PermissionTypeTable.DOMAIN_ID, domainId); + filters.put(DBConstants.PermissionTypeTable.NAME, SharingRegistryServerHandler.GLOBAL_PERMISSION_NAME); + List<PermissionType> permissionTypeList = select(filters, 0, -1); + if(permissionTypeList.size() != 1){ + throw new SharingRegistryException("GLOBAL Permission inconsistency. Found " + permissionTypeList.size() + + " records with " + SharingRegistryServerHandler.GLOBAL_PERMISSION_NAME + " name"); + } + return permissionTypeList.get(0).getPermissionTypeId(); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/SharingRepository.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/SharingRepository.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/SharingRepository.java new file mode 100644 index 0000000..9c30fa4 --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/SharingRepository.java @@ -0,0 +1,80 @@ +/* + * + * 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.sharing.registry.db.repositories; + +import org.apache.airavata.sharing.registry.db.entities.SharingEntity; +import org.apache.airavata.sharing.registry.db.entities.SharingEntityPK; +import org.apache.airavata.sharing.registry.db.utils.DBConstants; +import org.apache.airavata.sharing.registry.models.Sharing; +import org.apache.airavata.sharing.registry.models.SharingRegistryException; +import org.apache.airavata.sharing.registry.models.SharingType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.List; + +public class SharingRepository extends AbstractRepository<Sharing, SharingEntity, SharingEntityPK> { + private final static Logger logger = LoggerFactory.getLogger(SharingRepository.class); + + public SharingRepository() { + super(Sharing.class, SharingEntity.class); + } + + public List<Sharing> getIndirectSharedChildren(String parentId, String permissionTypeId) throws SharingRegistryException { + HashMap<String, String> filters = new HashMap<>(); + filters.put(DBConstants.SharingTable.INHERITED_PARENT_ID, parentId); + filters.put(DBConstants.SharingTable.SHARING_TYPE, SharingType.INDIRECT_CASCADING.toString()); + filters.put(DBConstants.SharingTable.PERMISSION_TYPE_ID, permissionTypeId); + + return select(filters, 0, -1); + } + + public List<Sharing> getCascadingPermissionsForEntity(String entityId) throws SharingRegistryException { + HashMap<String, String> filters = new HashMap<>(); + filters.put(DBConstants.SharingTable.ENTITY_ID, entityId); + String query = "SELECT p from " + SharingEntity.class.getSimpleName() + " as p"; + query += " WHERE "; + query += "p." + DBConstants.SharingTable.ENTITY_ID + " = '" + entityId + "' AND "; + query += "p." + DBConstants.SharingTable.SHARING_TYPE + " IN('" + SharingType.DIRECT_CASCADING.toString() + + "', '" + SharingType.INDIRECT_CASCADING + "') "; + query += " ORDER BY p.createdTime DESC"; + return select(query, 0, -1); + } + + public boolean hasAccess(String entityId, List<String> groupIds, List<String> permissionTypeIds) throws SharingRegistryException { + String query = "SELECT p from " + SharingEntity.class.getSimpleName() + " as p"; + query += " WHERE "; + query += "p." + DBConstants.SharingTable.ENTITY_ID + " = '" + entityId + "' AND "; + String permissionTypeIdString = "'"; + for(String permissionId : permissionTypeIds) + permissionTypeIdString += permissionId + "','"; + permissionTypeIdString = permissionTypeIdString.substring(0, permissionTypeIdString.length()-2); + query += "p." + DBConstants.SharingTable.PERMISSION_TYPE_ID + " IN(" + permissionTypeIdString + ") AND "; + String groupIdString = "'"; + for(String groupId : groupIds) + groupIdString += groupId + "','"; + groupIdString = groupIdString.substring(0, groupIdString.length()-2); + query += "p." + DBConstants.SharingTable.GROUP_ID + " IN(" + groupIdString + ") "; + query += " ORDER BY p.createdTime DESC"; + return select(query, 0, -1).size() > 0; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserGroupRepository.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserGroupRepository.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserGroupRepository.java new file mode 100644 index 0000000..ed49c94 --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserGroupRepository.java @@ -0,0 +1,51 @@ +/* + * + * 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.sharing.registry.db.repositories; + +import org.apache.airavata.sharing.registry.db.entities.SharingEntity; +import org.apache.airavata.sharing.registry.db.entities.UserGroupEntity; +import org.apache.airavata.sharing.registry.db.utils.DBConstants; +import org.apache.airavata.sharing.registry.models.GroupType; +import org.apache.airavata.sharing.registry.models.SharingRegistryException; +import org.apache.airavata.sharing.registry.models.UserGroup; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +public class UserGroupRepository extends AbstractRepository<UserGroup, UserGroupEntity, String> { + private final static Logger logger = LoggerFactory.getLogger(UserGroupRepository.class); + + public UserGroupRepository() { + super(UserGroup.class, UserGroupEntity.class); + } + + public List<UserGroup> getAccessibleGroups(String entityId, String permissionTypeId) throws SharingRegistryException { + String query = "SELECT g from " + UserGroupEntity.class.getSimpleName() + " g, " + SharingEntity.class.getSimpleName() + " s"; + query += " WHERE "; + query += "g." + DBConstants.UserGroupTable.GROUP_ID + " = s." + DBConstants.SharingTable.GROUP_ID + " AND "; + query += "s." + DBConstants.SharingTable.ENTITY_ID + " = '" + entityId + "' AND "; + query += "s." + DBConstants.SharingTable.PERMISSION_TYPE_ID + " = '" + permissionTypeId + "' AND "; + query += "g." + DBConstants.UserGroupTable.GROUP_TYPE + " = '" + GroupType.MULTI_USER.toString() + "'"; + query += " ORDER BY s.createdTime DESC"; + return select(query, 0, -1); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserRepository.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserRepository.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserRepository.java new file mode 100644 index 0000000..845c0b9 --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/repositories/UserRepository.java @@ -0,0 +1,51 @@ +/* + * + * 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.sharing.registry.db.repositories; + + +import org.apache.airavata.sharing.registry.db.entities.SharingEntity; +import org.apache.airavata.sharing.registry.db.entities.SharingUserEntity; +import org.apache.airavata.sharing.registry.db.utils.DBConstants; +import org.apache.airavata.sharing.registry.models.SharingRegistryException; +import org.apache.airavata.sharing.registry.models.User; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +public class UserRepository extends AbstractRepository<User, SharingUserEntity, String> { + private final static Logger logger = LoggerFactory.getLogger(UserRepository.class); + + public UserRepository() { + super(User.class, SharingUserEntity.class); + } + + + public List<User> getAccessibleUsers(String entityId, String permissionTypeId) throws SharingRegistryException { + String query = "SELECT u from " + SharingUserEntity.class.getSimpleName() + " u, " + SharingEntity.class.getSimpleName() + " s"; + query += " WHERE "; + query += "u." + DBConstants.UserTable.USER_ID + " = s." + DBConstants.SharingTable.GROUP_ID + " AND "; + query += "s." + DBConstants.SharingTable.ENTITY_ID + " = '" + entityId + "' AND "; + query += "s." + DBConstants.SharingTable.PERMISSION_TYPE_ID + " = '" + permissionTypeId + "'"; + query += " ORDER BY s.createdTime DESC"; + return select(query, 0, -1); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/e36c145d/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/utils/Committer.java ---------------------------------------------------------------------- diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/utils/Committer.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/utils/Committer.java new file mode 100644 index 0000000..ed8c9b3 --- /dev/null +++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/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.sharing.registry.db.utils; + +@FunctionalInterface +public interface Committer<T, R> { + + R commit(T t); +} \ No newline at end of file