package org.onap.portal.domain.db.ep;
import java.io.Serializable;
+import java.time.LocalDateTime;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.IdClass;
import javax.persistence.Index;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedNativeQuery;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.Valid;
+import javax.validation.constraints.Digits;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.AllArgsConstructor;
-import lombok.EqualsAndHashCode;
+import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.validator.constraints.SafeHtml;
-import org.onap.portal.domain.db.ep.EpAppFunction.EpAppFunctionId;
+import org.onap.portal.domain.db.DomainVo;
import org.onap.portal.domain.db.fn.FnApp;
/*
)
*/
-@Table(name = "ep_app_function", indexes = {@Index(name = "fk_ep_app_function_app_id", columnList = "app_id")})
+@NamedQueries({
+ @NamedQuery(
+ name = "EpAppFunction.getAppRoleFunctionList",
+ query = "SELECT DISTINCT f from\n"
+ + " EpAppRoleFunction rf,\n"
+ + " EpAppFunction f\n"
+ + " where\n"
+ + " rf.fnRole.id = :roleId\n"
+ + " and rf.appId.id = :appId\n"
+ + " and rf.appId.id = f.appId.id\n"
+ + " and rf.epAppFunction.functionCd = f.functionCd"
+ ),
+ @NamedQuery(
+ name = "EpAppFunction.getAllRoleFunctions",
+ query = "from EpAppFunction where appId.id =:appId"
+ ),
+ @NamedQuery(
+ name = "EpAppFunction.getAppFunctionOnCodeAndAppId",
+ query = "from EpAppFunction where appId.id =:appId and functionCd =:functionCd "
+ ),
+ @NamedQuery(
+ name = "EpAppFunction.getRoleFunction",
+ query = "from EpAppFunction where functionCd like CONCAT('%', :functionCode,'%') and appId.id =:appId"
+ )
+})
+
+@Table(name = "ep_app_function", indexes = {
+ @Index(name = "fk_ep_app_function_app_id", columnList = "app_id"),
+ @Index(name = "fk_ep_app_id_function_cd", columnList = "app_id, function_cd", unique = true)})
@Getter
@Setter
@Entity
-@IdClass(EpAppFunctionId.class)
@NoArgsConstructor
@AllArgsConstructor
-public class EpAppFunction {
- @Id
- @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
- @JoinColumn(name = "app_id")
- @Valid
- private FnApp appId;
- @Id
- @Column(name = "function_cd", length = 250, nullable = false)
- @Size(max = 250)
- @NotNull
- @SafeHtml
- private String functionCd;
- @Column(name = "function_name", length = 250, nullable = false)
- @Size(max = 250)
- @NotNull
- @SafeHtml
- private String functionName;
- @OneToMany(
- targetEntity = EpAppRoleFunction.class,
- mappedBy = "epAppFunction",
- cascade = CascadeType.ALL,
- fetch = FetchType.LAZY
- )
- private Set<EpAppRoleFunction> epAppRoleFunctions;
+public class EpAppFunction extends DomainVo implements Serializable {
+
+ @ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
+ @JoinColumn(name = "app_id", columnDefinition = "bigint")
+ @Valid
+ private FnApp appId;
+ @Column(name = "function_cd", length = 250, nullable = false)
+ @Size(max = 250)
+ @NotNull
+ @SafeHtml
+ private String functionCd;
+ @Column(name = "function_name", length = 250, nullable = false)
+ @Size(max = 250)
+ @NotNull
+ @SafeHtml
+ private String functionName;
+
+ private Long roleId;
+ private String type;
+ @SafeHtml
+ private String action;
+ @SafeHtml
+ private String editUrl;
+
+ @OneToMany(
+ targetEntity = EpAppRoleFunction.class,
+ mappedBy = "epAppFunction",
+ cascade = CascadeType.MERGE,
+ fetch = FetchType.LAZY
+ )
+ private Set<EpAppRoleFunction> epAppRoleFunctions;
+
+ public EpAppFunction(Long id, String code, String name, FnApp appId, String type, String action, String editUrl) {
+ super();
+ super.setId(id);
+ this.functionCd = code;
+ this.functionName = name;
+ this.appId = appId;
+ this.type = type;
+ this.action = action;
+ this.editUrl = editUrl;
+ }
- @Getter
- @Setter
- @EqualsAndHashCode
- @NoArgsConstructor
- @AllArgsConstructor
- public static class EpAppFunctionId implements Serializable {
- @Valid
- private FnApp appId;
- @Size(max = 250)
- @NotNull
- @SafeHtml
- private String functionCd;
- }
+ @Builder
+ public EpAppFunction(@Digits(integer = 11, fraction = 0) Long id, LocalDateTime created,
+ LocalDateTime modified, Long rowNum, Serializable auditUserId, DomainVo createdId,
+ DomainVo modifiedId, Set<DomainVo> fnUsersCreatedId,
+ Set<DomainVo> fnUsersModifiedId, @Valid FnApp appId,
+ @Size(max = 250) @NotNull String functionCd,
+ @Size(max = 250) @NotNull String functionName, Long roleId, String type, String action, String editUrl,
+ Set<EpAppRoleFunction> epAppRoleFunctions) {
+ super(id, created, modified, rowNum, auditUserId, createdId, modifiedId, fnUsersCreatedId, fnUsersModifiedId);
+ this.appId = appId;
+ this.functionCd = functionCd;
+ this.functionName = functionName;
+ this.roleId = roleId;
+ this.type = type;
+ this.action = action;
+ this.editUrl = editUrl;
+ this.epAppRoleFunctions = epAppRoleFunctions;
+ }
}