Skip to content

Commit

Permalink
adds entities
Browse files Browse the repository at this point in the history
  • Loading branch information
rajadilipkolli committed Jun 25, 2023
1 parent 201aa35 commit 2464060
Show file tree
Hide file tree
Showing 12 changed files with 506 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/* Licensed under Apache-2.0 2021-2022. */
package com.learning.mfscreener.entities;

import jakarta.persistence.EntityListeners;
import jakarta.persistence.MappedSuperclass;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

@Getter
@Setter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class AuditableEntity<T> {

@CreatedBy
protected T createdBy;

@CreatedDate
protected LocalDateTime createdDate;

@LastModifiedBy
protected T lastModifiedBy;

@LastModifiedDate
protected LocalDateTime lastModifiedDate;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/* Licensed under Apache-2.0 2022. */
package com.learning.mfscreener.entities;

public enum CasTypeEnum {
DETAILED,
SUMMARY
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/* Licensed under Apache-2.0 2021-2022. */
package com.learning.mfscreener.entities;

import jakarta.persistence.*;
import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter
@Setter
@Table(name = "error_message")
public class ErrorMessageEntity extends AuditableEntity<String> implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "error_id", nullable = false)
private Long id;

private String message;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/* Licensed under Apache-2.0 2022. */
package com.learning.mfscreener.entities;

public enum FileTypeEnum {
CAMS,
KARVY,
UNKNOWN
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/* Licensed under Apache-2.0 2022. */
package com.learning.mfscreener.entities;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.MapsId;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
import java.io.Serializable;
import java.util.Objects;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.Hibernate;

@Getter
@Setter
@Entity
@Table(name = "investor_info")
public class InvestorInfoEntity extends AuditableEntity<String> implements Serializable {

@Id
@Column(name = "id", nullable = false)
private Long id;

@Column(name = "email")
private String email;

@Column(name = "name")
private String name;

@Column(name = "mobile")
private String mobile;

@Column(name = "address")
private String address;

@OneToOne(fetch = FetchType.LAZY)
@MapsId
@JoinColumn(name = "user_cas_details_id")
private UserCASDetailsEntity userCasDetailsEntity;

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
InvestorInfoEntity that = (InvestorInfoEntity) o;
return id != null && Objects.equals(email, that.email);
}

@Override
public int hashCode() {
return getClass().hashCode();
}
}
48 changes: 48 additions & 0 deletions src/main/java/com/learning/mfscreener/entities/MFSchemeEntity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/* Licensed under Apache-2.0 2021-2022. */
package com.learning.mfscreener.entities;

import jakarta.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.DynamicUpdate;

@Table(name = "mf_scheme")
@Entity
@Getter
@Setter
@DynamicUpdate
public class MFSchemeEntity extends AuditableEntity<String> implements Serializable {

@Id
@Column(name = "scheme_id", nullable = false)
private Long schemeId;

private String payOut;

@Column(name = "fund_house")
private String fundHouse;

@Column(name = "scheme_name", nullable = false)
private String schemeName;

@Column(name = "scheme_name_alias")
private String schemeNameAlias;

@Version
private Long version;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "mf_scheme_type_id")
private MFSchemeTypeEntity mfSchemeTypeEntity = null;

@OneToMany(mappedBy = "mfSchemeEntity", cascade = CascadeType.ALL, orphanRemoval = true)
private List<MFSchemeNavEntity> mfSchemeNavEntities = new ArrayList<>();

public void addSchemeNav(MFSchemeNavEntity mfSchemeNavEntity) {
mfSchemeNavEntities.add(mfSchemeNavEntity);
mfSchemeNavEntity.setMfSchemeEntity(this);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/* Licensed under Apache-2.0 2021-2022. */
package com.learning.mfscreener.entities;

import jakarta.persistence.*;
import java.io.Serializable;
import java.time.LocalDate;
import lombok.Getter;
import lombok.Setter;

@Table(name = "mf_scheme_nav")
@Entity
@Getter
@Setter
public class MFSchemeNavEntity extends AuditableEntity<String> implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "scheme_id_generator")
@SequenceGenerator(name = "scheme_id_generator", sequenceName = "scheme_id_seq", allocationSize = 100)
@Column(name = "id", nullable = false)
private Long id;

private Double nav;

private LocalDate navDate;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "mf_scheme_id")
private MFSchemeEntity mfSchemeEntity;

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof MFSchemeNavEntity)) return false;
return nav.equals(((MFSchemeNavEntity) o).getNav()) && navDate.equals(((MFSchemeNavEntity) o).getNavDate());
}

@Override
public int hashCode() {
return getClass().hashCode();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/* Licensed under Apache-2.0 2021-2022. */
package com.learning.mfscreener.entities;

import jakarta.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Entity
@Getter
@Setter
@NoArgsConstructor
@Table(
name = "mf_scheme_types",
uniqueConstraints = @UniqueConstraint(columnNames = {"scheme_type", "scheme_category"}))
public class MFSchemeTypeEntity extends AuditableEntity<String> implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "scheme_type_id_generator")
@SequenceGenerator(name = "scheme_type_id_generator", sequenceName = "scheme_type_id_seq", allocationSize = 2)
@Column(name = "scheme_type_id", nullable = false)
private Integer schemeTypeId;

@Column(name = "scheme_type", nullable = false)
private String schemeType;

@Column(name = "scheme_category", nullable = false)
private String schemeCategory;

@OneToMany(mappedBy = "mfSchemeTypeEntity", cascade = CascadeType.ALL, orphanRemoval = true)
private List<MFSchemeEntity> mfSchemeEntities = new ArrayList<>();

public void addMFScheme(MFSchemeEntity mfSchemeEntity) {
mfSchemeEntities.add(mfSchemeEntity);
mfSchemeEntity.setMfSchemeTypeEntity(this);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/* Licensed under Apache-2.0 2022. */
package com.learning.mfscreener.entities;

import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Entity
@Table(name = "user_cas_details")
public class UserCASDetailsEntity extends AuditableEntity<String> implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id", nullable = false)
private Long id;

@Enumerated(EnumType.STRING)
@Column(name = "cas_type", nullable = false)
private CasTypeEnum casTypeEnum;

@Enumerated(EnumType.STRING)
@Column(name = "file_type", nullable = false)
private FileTypeEnum fileTypeEnum;

@OneToOne(mappedBy = "userCasDetailsEntity", cascade = CascadeType.ALL, optional = false)
private InvestorInfoEntity investorInfoEntity;

@OneToMany(mappedBy = "userCasDetailsEntity", cascade = CascadeType.ALL, orphanRemoval = true)
private List<UserFolioDetailsEntity> folioEntities = new ArrayList<>();

public void setInvestorInfoEntity(InvestorInfoEntity investorInfoEntity) {
if (investorInfoEntity == null) {
if (this.investorInfoEntity != null) {
this.investorInfoEntity.setUserCasDetailsEntity(null);
}
} else {
investorInfoEntity.setUserCasDetailsEntity(this);
}
this.investorInfoEntity = investorInfoEntity;
}

public void addFolioEntity(UserFolioDetailsEntity userFolioDetailsEntity) {
this.folioEntities.add(userFolioDetailsEntity);
userFolioDetailsEntity.setUserCasDetailsEntity(this);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/* Licensed under Apache-2.0 2022. */
package com.learning.mfscreener.entities;

import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Entity
@Table(name = "user_folio_details")
public class UserFolioDetailsEntity extends AuditableEntity<String> implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id", nullable = false)
private Long id;

@Column(name = "folio")
private String folio;

@Column(name = "amc")
private String amc;

@Column(name = "pan")
private String pan;

@Column(name = "kyc")
private String kyc;

@Column(name = "pan_kyc")
private String panKyc;

@OneToMany(mappedBy = "userFolioDetailsEntity", cascade = CascadeType.ALL, orphanRemoval = true)
private List<UserSchemeDetailsEntity> schemeEntities = new ArrayList<>();

@ManyToOne
@JoinColumn(name = "user_cas_details_id")
private UserCASDetailsEntity userCasDetailsEntity;

public void addSchemeEntity(UserSchemeDetailsEntity userSchemeDetailsEntity) {
this.schemeEntities.add(userSchemeDetailsEntity);
userSchemeDetailsEntity.setUserFolioDetailsEntity(this);
}
}
Loading

0 comments on commit 2464060

Please sign in to comment.