package org.onap.portal.domain.db.fn;
import java.time.LocalDateTime;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.List;
+import java.util.Set;
import java.util.stream.Collectors;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
-import javax.persistence.NamedNativeQueries;
-import javax.persistence.NamedNativeQuery;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
+import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
-import javax.validation.Valid;
import javax.validation.constraints.Digits;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
+import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.validator.constraints.SafeHtml;
import org.onap.portal.domain.db.cr.CrReportFileHistory;
import org.onap.portal.domain.db.ep.EpPersUserWidgetPlacement;
)
*/
-@NamedNativeQueries({
- @NamedNativeQuery(
- name = "getUsersByOrgUserId",
- query = "SELECT * FROM FnUser WHERE where org_user_id in :orgIds"
+@NamedQueries({
+ @NamedQuery(
+ name = "FnUser.getUserWithOrgUserId",
+ query = "FROM FnUser WHERE orgUserId = :orgId"),
+ @NamedQuery(
+ name = "FnUser.getActiveUsers",
+ query = "FROM FnUser WHERE activeYn = 'Y'"),
+ @NamedQuery(
+ name = "FnUser.getUsersByOrgIds",
+ query = "FROM FnUser WHERE orgUserId IN :orgIds"
)
})
-
@Table(name = "fn_user", indexes = {
@Index(name = "fn_user_address_id", columnList = "address_id"),
@Index(name = "fn_user_alert_method_cd", columnList = "alert_method_cd"),
uniqueConstraints = {
@UniqueConstraint(name = "fn_user_hrid", columnNames = "hrid"),
@UniqueConstraint(name = "fn_user_login_id", columnNames = "login_id")
+
})
-@NoArgsConstructor
-@AllArgsConstructor
+
@Getter
@Setter
@Entity
+@NoArgsConstructor
+@AllArgsConstructor
+@DynamicUpdate
+@SequenceGenerator(name = "seq", initialValue = 1000, allocationSize = 100000)
public class FnUser extends DomainVo implements UserDetails {
@Id
- @GeneratedValue(strategy = GenerationType.AUTO)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
@Column(name = "user_id", length = 11, nullable = false)
@Digits(integer = 11, fraction = 0)
private Long userId;
- @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
+ @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "org_id", columnDefinition = "int(11) DEFAULT NULL")
- @Valid
private FnOrg orgId;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "manager_id")
- @Valid
private FnUser managerId;
@Column(name = "first_name", length = 50, columnDefinition = "varchar(50) DEFAULT NULL")
@Size(max = 50)
@Column(name = "active_yn", length = 1, columnDefinition = "character varying(1) default 'y'", nullable = false)
@Size(max = 1)
@SafeHtml
- @NotNull
+ @NotNull(message = "activeYn must not be null")
private String activeYn;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "created_id")
- @Valid
private FnUser createdId;
@Column(name = "created_date", columnDefinition = "datetime DEFAULT current_timestamp()", nullable = false)
@PastOrPresent
protected LocalDateTime createdDate;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "modified_id")
- @Valid
private FnUser modifiedId;
@Column(name = "modified_date", nullable = false, columnDefinition = "datetime default now()")
@PastOrPresent
@Column(name = "is_internal_yn", length = 1, columnDefinition = "character varying(1) default 'n'", nullable = false)
@Size(max = 1)
@SafeHtml
- @NotNull
+ @NotNull(message = "isInternalYn must not be null")
private String isInternalYn;
@Column(name = "address_line_1", length = 100, columnDefinition = "varchar(100) DEFAULT NULL")
@Size(max = 100)
private String jobTitle;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "timezone", columnDefinition = "int(11) DEFAULT NULL")
- @Valid
private FnLuTimezone timezone;
@Column(name = "department", length = 25, columnDefinition = "varchar(25) DEFAULT NULL")
@Size(max = 25)
@Size(max = 10)
@SafeHtml
private String siloStatus;
- @Column(name = "language_id", length = 2, columnDefinition = "int(2) default 1", nullable = false)
- @Digits(integer = 2, fraction = 0)
- @NotNull
- private Long language_id;
+ @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+ @JoinColumn(name = "language_id", nullable = false, columnDefinition = "int(11) DEFAULT 1")
+ @NotNull(message = "languageId must not be null")
+ private FnLanguage languageId;
@Column(name = "is_guest", columnDefinition = "boolean default 0", nullable = false)
- @NotNull
+ @NotNull(message = "guest must not be null")
private boolean guest;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "fnUserList")
- private List<CrReportFileHistory> crReportFileHistorie = new ArrayList<>();
+ private Set<CrReportFileHistory> crReportFileHistorie;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
- private List<FnRole> fnRoles = new ArrayList<>();
+ private Set<FnRole> fnRoles;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
- private List<FnMenuFunctional> fnRoleList = new ArrayList<>();
+ private Set<FnMenuFunctional> fnRoleList;
@OneToMany(
targetEntity = FnAuditLog.class,
mappedBy = "userId",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY
)
- private List<FnAuditLog> fnAuditLogs = new ArrayList<>();
+ private Set<FnAuditLog> fnAuditLogs;
@OneToMany(
targetEntity = FnUser.class,
mappedBy = "createdId",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY
)
- private List<FnUser> fnUsersCreatedId = new ArrayList<>();
+ private Set<FnUser> fnUsersCreatedId;
@OneToMany(
targetEntity = FnUser.class,
mappedBy = "managerId",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY
)
- private List<FnUser> fnUsersManagerId = new ArrayList<>();
+ private Set<FnUser> fnUsersManagerId;
@OneToMany(
targetEntity = FnUser.class,
mappedBy = "modifiedId",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY
)
- private List<FnUser> fnUsersModifiedId = new ArrayList<>();
+ private Set<FnUser> fnUsersModifiedId;
@OneToMany(
targetEntity = EpUserRolesRequest.class,
mappedBy = "userId",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY
)
- private List<EpUserRolesRequest> epUserRolesRequests = new ArrayList<>();
+ private Set<EpUserRolesRequest> epUserRolesRequests;
@OneToMany(
targetEntity = FnPersUserAppSel.class,
mappedBy = "userId",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY
)
- private List<FnPersUserAppSel> persUserAppSels = new ArrayList<>();
+ private Set<FnPersUserAppSel> persUserAppSels;
@OneToMany(
targetEntity = EpWidgetCatalogParameter.class,
mappedBy = "userId",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY
)
- private List<EpWidgetCatalogParameter> epWidgetCatalogParameters = new ArrayList<>();
+ private Set<EpWidgetCatalogParameter> epWidgetCatalogParameters;
@OneToMany(
targetEntity = EpPersUserWidgetPlacement.class,
mappedBy = "userId",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY
)
- private List<EpPersUserWidgetPlacement> epPersUserWidgetPlacements = new ArrayList<>();
+ private Set<EpPersUserWidgetPlacement> epPersUserWidgetPlacements;
@OneToMany(
targetEntity = EpPersUserWidgetSel.class,
mappedBy = "userId",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY
)
- private List<EpPersUserWidgetSel> epPersUserWidgetSels = new ArrayList<>();
+ private Set<EpPersUserWidgetSel> epPersUserWidgetSels;
@OneToMany(
targetEntity = FnUserRole.class,
mappedBy = "userId",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY
)
- private List<FnUserRole> fnUserRoles = new ArrayList<>();
+ private Set<FnUserRole> fnUserRoles;
@OneToMany(
targetEntity = EpUserNotification.class,
mappedBy = "userId",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY
)
- private List<EpUserNotification> epUserNotifications = new ArrayList<>();
+ private Set<EpUserNotification> epUserNotifications;
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {