FINERACT-2091: Support for string type primary keys

This commit is contained in:
Marta Jankovics
2024-06-13 20:29:23 +02:00
committed by Adam Saghy
parent 111e28ed1b
commit f48f94c454
216 changed files with 243 additions and 273 deletions
@@ -36,7 +36,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@NoArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
public class FinancialActivityAccount extends AbstractPersistableCustom { public class FinancialActivityAccount extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.EAGER) @ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "gl_account_id") @JoinColumn(name = "gl_account_id")
@@ -38,7 +38,7 @@ import org.apache.fineract.infrastructure.core.service.DateUtils;
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class TrialBalance extends AbstractPersistableCustom { public class TrialBalance extends AbstractPersistableCustom<Long> {
@Column(name = "office_id", nullable = false) @Column(name = "office_id", nullable = false)
private Long officeId; private Long officeId;
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail;
@Entity @Entity
@Getter @Getter
@Table(name = "acc_gl_journal_entry") @Table(name = "acc_gl_journal_entry")
public class JournalEntry extends AbstractAuditableWithUTCDateTimeCustom { public class JournalEntry extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "office_id", nullable = false) @JoinColumn(name = "office_id", nullable = false)
@@ -40,7 +40,7 @@ import org.apache.fineract.portfolio.paymenttype.domain.PaymentType;
@Entity @Entity
@Table(name = "acc_product_mapping", uniqueConstraints = { @UniqueConstraint(columnNames = { "product_id", "product_type", @Table(name = "acc_product_mapping", uniqueConstraints = { @UniqueConstraint(columnNames = { "product_id", "product_type",
"financial_account_type", "payment_type" }, name = "financial_action") }) "financial_account_type", "payment_type" }, name = "financial_action") })
public class ProductToGLAccountMapping extends AbstractPersistableCustom { public class ProductToGLAccountMapping extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = true) @ManyToOne(optional = true)
@JoinColumn(name = "gl_account_id") @JoinColumn(name = "gl_account_id")
@@ -69,5 +69,4 @@ public class ProductToGLAccountMapping extends AbstractPersistableCustom {
return new ProductToGLAccountMapping().setGlAccount(glAccount).setProductId(productId).setProductType(productType) return new ProductToGLAccountMapping().setGlAccount(glAccount).setProductId(productId).setProductType(productType)
.setFinancialAccountType(financialAccountType); .setFinancialAccountType(financialAccountType);
} }
} }
@@ -52,7 +52,7 @@ import org.apache.fineract.organisation.office.domain.Office;
@Entity @Entity
@Table(name = "acc_accounting_rule", uniqueConstraints = { @Table(name = "acc_accounting_rule", uniqueConstraints = {
@UniqueConstraint(columnNames = { "name" }, name = "accounting_rule_name_unique") }) @UniqueConstraint(columnNames = { "name" }, name = "accounting_rule_name_unique") })
public class AccountingRule extends AbstractPersistableCustom { public class AccountingRule extends AbstractPersistableCustom<Long> {
@Column(name = "name", nullable = false, length = 500) @Column(name = "name", nullable = false, length = 500)
private String name; private String name;
@@ -38,7 +38,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "acc_rule_tags", uniqueConstraints = { @Table(name = "acc_rule_tags", uniqueConstraints = {
@UniqueConstraint(columnNames = { "acc_rule_id", "tag_id", "acc_type_enum" }, name = "UNIQUE_ACCOUNT_RULE_TAGS") }) @UniqueConstraint(columnNames = { "acc_rule_id", "tag_id", "acc_type_enum" }, name = "UNIQUE_ACCOUNT_RULE_TAGS") })
public class AccountingTagRule extends AbstractPersistableCustom { public class AccountingTagRule extends AbstractPersistableCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "acc_rule_id", nullable = false) @JoinColumn(name = "acc_rule_id", nullable = false)
@@ -56,7 +56,7 @@ import org.apache.fineract.organisation.staff.domain.Staff;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class Cashier extends AbstractPersistableCustom { public class Cashier extends AbstractPersistableCustom<Long> {
// ManyToOne(fetch = FetchType.LAZY) // ManyToOne(fetch = FetchType.LAZY)
// JoinColumn(name = "office_id", nullable = false) // JoinColumn(name = "office_id", nullable = false)
@@ -47,7 +47,7 @@ import org.apache.fineract.organisation.office.domain.Office;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class CashierTransaction extends AbstractPersistableCustom { public class CashierTransaction extends AbstractPersistableCustom<Long> {
@Transient @Transient
private Office office; private Office office;
@@ -47,7 +47,7 @@ import org.apache.fineract.organisation.office.domain.Office;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class Teller extends AbstractPersistableCustom { public class Teller extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "office_id", nullable = false) @JoinColumn(name = "office_id", nullable = false)
@@ -41,7 +41,7 @@ import org.apache.fineract.portfolio.client.domain.Client;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class TellerTransaction extends AbstractPersistableCustom { public class TellerTransaction extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "office_id", nullable = false) @JoinColumn(name = "office_id", nullable = false)
@@ -57,7 +57,7 @@ import org.apache.fineract.portfolio.tax.domain.TaxGroup;
@Entity @Entity
@Table(name = "m_charge", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "name") }) @Table(name = "m_charge", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "name") })
public class Charge extends AbstractPersistableCustom { public class Charge extends AbstractPersistableCustom<Long> {
@Column(name = "name", length = 100) @Column(name = "name", length = 100)
private String name; private String name;
@@ -45,7 +45,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class GLAccount extends AbstractPersistableCustom { public class GLAccount extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id") @JoinColumn(name = "parent_id")
@@ -20,7 +20,7 @@ package org.apache.fineract.cob;
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
public interface COBBusinessStep<T extends AbstractPersistableCustom> { public interface COBBusinessStep<T extends AbstractPersistableCustom<Long>> {
T execute(T input); T execute(T input);
@@ -33,7 +33,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Entity @Entity
@Table(name = "m_portfolio_command_source") @Table(name = "m_portfolio_command_source")
public class CommandSource extends AbstractPersistableCustom { public class CommandSource extends AbstractPersistableCustom<Long> {
@Column(name = "action_name", nullable = true, length = 100) @Column(name = "action_name", nullable = true, length = 100)
private String actionName; private String actionName;
@@ -39,7 +39,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Accessors(chain = true) @Accessors(chain = true)
@Entity @Entity
@Table(name = "m_business_date", uniqueConstraints = { @UniqueConstraint(name = "uq_business_date_type", columnNames = { "type" }) }) @Table(name = "m_business_date", uniqueConstraints = { @UniqueConstraint(name = "uq_business_date_type", columnNames = { "type" }) })
public class BusinessDate extends AbstractAuditableWithUTCDateTimeCustom { public class BusinessDate extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
@Column(name = "type") @Column(name = "type")
@@ -33,7 +33,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class PlatformCache extends AbstractPersistableCustom { public class PlatformCache extends AbstractPersistableCustom<Long> {
@Column(name = "cache_type_enum") @Column(name = "cache_type_enum")
private Integer cacheType; private Integer cacheType;
@@ -43,7 +43,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class Code extends AbstractPersistableCustom { public class Code extends AbstractPersistableCustom<Long> {
@Column(name = "code_name", length = 100) @Column(name = "code_name", length = 100)
private String name; private String name;
@@ -43,7 +43,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class CodeValue extends AbstractPersistableCustom { public class CodeValue extends AbstractPersistableCustom<Long> {
@Column(name = "code_value", length = 100) @Column(name = "code_value", length = 100)
private String label; private String label;
@@ -39,7 +39,7 @@ import org.springframework.data.jpa.domain.AbstractAuditable;
* the type of the auditing type's identifier * the type of the auditing type's identifier
*/ */
@MappedSuperclass @MappedSuperclass
public abstract class AbstractAuditableCustom extends AbstractPersistableCustom implements Auditable<Long, Long, LocalDateTime> { public abstract class AbstractAuditableCustom extends AbstractPersistableCustom<Long> implements Auditable<Long, Long, LocalDateTime> {
private static final long serialVersionUID = 141481953116476081L; private static final long serialVersionUID = 141481953116476081L;
@@ -26,6 +26,7 @@ import static org.apache.fineract.infrastructure.core.domain.AuditableFieldsCons
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.MappedSuperclass; import jakarta.persistence.MappedSuperclass;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import java.util.Optional; import java.util.Optional;
import lombok.AccessLevel; import lombok.AccessLevel;
@@ -47,8 +48,8 @@ import org.springframework.data.jpa.domain.AbstractAuditable;
@Getter @Getter
@Setter @Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor(access = AccessLevel.PROTECTED)
public abstract class AbstractAuditableWithUTCDateTimeCustom extends AbstractPersistableCustom public abstract class AbstractAuditableWithUTCDateTimeCustom<T extends Serializable> extends AbstractPersistableCustom<T>
implements Auditable<Long, Long, OffsetDateTime> { implements Auditable<Long, T, OffsetDateTime> {
private static final long serialVersionUID = 141481953116476081L; private static final long serialVersionUID = 141481953116476081L;
@@ -48,14 +48,14 @@ import org.springframework.data.domain.Persistable;
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
public abstract class AbstractPersistableCustom implements Persistable<Long>, Serializable { public abstract class AbstractPersistableCustom<T extends Serializable> implements Persistable<T>, Serializable {
private static final long serialVersionUID = 9181640245194392646L; private static final long serialVersionUID = 9181640245194392646L;
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter(onMethod = @__(@Override)) @Getter(onMethod = @__(@Override))
private Long id; private T id;
@Transient @Transient
@Setter(value = AccessLevel.NONE) @Setter(value = AccessLevel.NONE)
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "m_image") @Table(name = "m_image")
public final class Image extends AbstractPersistableCustom { public final class Image extends AbstractPersistableCustom<Long> {
@Column(name = "location", length = 500) @Column(name = "location", length = 500)
private String location; private String location;
@@ -37,7 +37,7 @@ import org.apache.fineract.infrastructure.core.service.DateUtils;
@Table(name = "m_external_event") @Table(name = "m_external_event")
@Getter @Getter
@NoArgsConstructor @NoArgsConstructor
public class ExternalEvent extends AbstractPersistableCustom { public class ExternalEvent extends AbstractPersistableCustom<Long> {
@Column(name = "type", nullable = false) @Column(name = "type", nullable = false)
private String type; private String type;
@@ -62,7 +62,7 @@ import org.apache.fineract.organisation.office.domain.Office;
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class Holiday extends AbstractPersistableCustom { public class Holiday extends AbstractPersistableCustom<Long> {
@Column(name = "name", unique = true, nullable = false, length = 100) @Column(name = "name", unique = true, nullable = false, length = 100)
private String name; private String name;
@@ -26,7 +26,7 @@ import org.apache.fineract.organisation.monetary.data.CurrencyData;
@Entity @Entity
@Table(name = "m_currency") @Table(name = "m_currency")
public class ApplicationCurrency extends AbstractPersistableCustom { public class ApplicationCurrency extends AbstractPersistableCustom<Long> {
@Column(name = "code", nullable = false, length = 3) @Column(name = "code", nullable = false, length = 3)
private String code; private String code;
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
*/ */
@Entity @Entity
@Table(name = "m_organisation_currency") @Table(name = "m_organisation_currency")
public class OrganisationCurrency extends AbstractPersistableCustom { public class OrganisationCurrency extends AbstractPersistableCustom<Long> {
@Column(name = "code", nullable = false, length = 3) @Column(name = "code", nullable = false, length = 3)
private String code; private String code;
@@ -49,7 +49,7 @@ import org.apache.fineract.organisation.office.exception.RootOfficeParentCannotB
@UniqueConstraint(columnNames = { "external_id" }, name = "externalid_org") }) @UniqueConstraint(columnNames = { "external_id" }, name = "externalid_org") })
@Getter @Getter
@Setter @Setter
public class Office extends AbstractPersistableCustom implements Serializable { public class Office extends AbstractPersistableCustom<Long> implements Serializable {
@OneToMany(fetch = FetchType.LAZY) @OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id") @JoinColumn(name = "parent_id")
@@ -41,7 +41,7 @@ import org.apache.fineract.organisation.office.domain.Office;
@Table(name = "m_staff", uniqueConstraints = { @UniqueConstraint(columnNames = { "display_name" }, name = "display_name"), @Table(name = "m_staff", uniqueConstraints = { @UniqueConstraint(columnNames = { "display_name" }, name = "display_name"),
@UniqueConstraint(columnNames = { "external_id" }, name = "external_id_UNIQUE"), @UniqueConstraint(columnNames = { "external_id" }, name = "external_id_UNIQUE"),
@UniqueConstraint(columnNames = { "mobile_no" }, name = "mobile_no_UNIQUE") }) @UniqueConstraint(columnNames = { "mobile_no" }, name = "mobile_no_UNIQUE") })
public class Staff extends AbstractPersistableCustom { public class Staff extends AbstractPersistableCustom<Long> {
@Column(name = "firstname", length = 50) @Column(name = "firstname", length = 50)
private String firstname; private String firstname;
@@ -32,7 +32,7 @@ import org.apache.fineract.organisation.workingdays.api.WorkingDaysApiConstants;
@Getter @Getter
@Entity @Entity
@Table(name = "m_working_days") @Table(name = "m_working_days")
public class WorkingDays extends AbstractPersistableCustom { public class WorkingDays extends AbstractPersistableCustom<Long> {
@Column(name = "recurrence", length = 100, nullable = true) @Column(name = "recurrence", length = 100, nullable = true)
private String recurrence; private String recurrence;
@@ -50,7 +50,7 @@ import org.apache.fineract.portfolio.common.domain.NthDayType;
@Entity @Entity
@Table(name = "m_calendar") @Table(name = "m_calendar")
public class Calendar extends AbstractAuditableWithUTCDateTimeCustom { public class Calendar extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Column(name = "title", length = 50, nullable = false) @Column(name = "title", length = 50, nullable = false)
private String title; private String title;
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.service.DateUtils;
@Entity @Entity
@Table(name = "m_calendar_history") @Table(name = "m_calendar_history")
public class CalendarHistory extends AbstractPersistableCustom { public class CalendarHistory extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn(name = "calendar_id", referencedColumnName = "id", nullable = false) @JoinColumn(name = "calendar_id", referencedColumnName = "id", nullable = false)
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "m_calendar_instance") @Table(name = "m_calendar_instance")
public class CalendarInstance extends AbstractPersistableCustom { public class CalendarInstance extends AbstractPersistableCustom<Long> {
@ManyToOne(cascade = CascadeType.PERSIST) @ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "calendar_id", nullable = false) @JoinColumn(name = "calendar_id", nullable = false)
@@ -60,7 +60,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Setter @Setter
@Table(name = "m_client", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_no" }, name = "account_no_UNIQUE"), // @Table(name = "m_client", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_no" }, name = "account_no_UNIQUE"), //
@UniqueConstraint(columnNames = { "mobile_no" }, name = "mobile_no_UNIQUE") }) @UniqueConstraint(columnNames = { "mobile_no" }, name = "mobile_no_UNIQUE") })
public class Client extends AbstractAuditableWithUTCDateTimeCustom { public class Client extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Column(name = "account_no", length = 20, unique = true, nullable = false) @Column(name = "account_no", length = 20, unique = true, nullable = false)
private String accountNumber; private String accountNumber;
@@ -181,16 +181,6 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom {
@Column(name = "submittedon_date") @Column(name = "submittedon_date")
private LocalDate submittedOnDate; private LocalDate submittedOnDate;
/*
* Deprecated since common Auditable fields were introduced. Columns and data left untouched to help migration.
*
* @Column(name = "updated_on") private LocalDate updatedOnDate;
*
* @ManyToOne(optional = true, fetch = FetchType.LAZY)
*
* @JoinColumn(name = "updated_by") private AppUser updatedBy;
*/
@ManyToOne(optional = true, fetch = FetchType.LAZY) @ManyToOne(optional = true, fetch = FetchType.LAZY)
@JoinColumn(name = "activatedon_userid") @JoinColumn(name = "activatedon_userid")
private AppUser activatedBy; private AppUser activatedBy;
@@ -751,5 +741,4 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom {
setDisplayName(null); setDisplayName(null);
} }
} }
} }
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Table(name = "m_client_identifier", uniqueConstraints = { @Table(name = "m_client_identifier", uniqueConstraints = {
@UniqueConstraint(columnNames = { "document_type_id", "document_key" }, name = "unique_identifier_key"), @UniqueConstraint(columnNames = { "document_type_id", "document_key" }, name = "unique_identifier_key"),
@UniqueConstraint(columnNames = { "client_id", "document_key", "active" }, name = "unique_active_client_identifier") }) @UniqueConstraint(columnNames = { "client_id", "document_key", "active" }, name = "unique_active_client_identifier") })
public class ClientIdentifier extends AbstractAuditableWithUTCDateTimeCustom { public class ClientIdentifier extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "client_id", nullable = false) @JoinColumn(name = "client_id", nullable = false)
@@ -39,7 +39,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Entity @Entity
@Table(name = "m_delinquency_bucket", uniqueConstraints = { @Table(name = "m_delinquency_bucket", uniqueConstraints = {
@UniqueConstraint(name = "uq_delinquency_bucket_name", columnNames = { "name" }) }) @UniqueConstraint(name = "uq_delinquency_bucket_name", columnNames = { "name" }) })
public class DelinquencyBucket extends AbstractAuditableWithUTCDateTimeCustom { public class DelinquencyBucket extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Column(name = "name", nullable = false) @Column(name = "name", nullable = false)
private String name; private String name;
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Entity @Entity
@Table(name = "m_delinquency_range", uniqueConstraints = { @Table(name = "m_delinquency_range", uniqueConstraints = {
@UniqueConstraint(name = "uq_delinquency_range_classification", columnNames = { "classification" }) }) @UniqueConstraint(name = "uq_delinquency_range_classification", columnNames = { "classification" }) })
public class DelinquencyRange extends AbstractAuditableWithUTCDateTimeCustom { public class DelinquencyRange extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Column(name = "classification", nullable = false) @Column(name = "classification", nullable = false)
private String classification; private String classification;
@@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "m_fund", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "fund_name_org"), @Table(name = "m_fund", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "fund_name_org"),
@UniqueConstraint(columnNames = { "external_id" }, name = "fund_externalid_org") }) @UniqueConstraint(columnNames = { "external_id" }, name = "fund_externalid_org") })
public class Fund extends AbstractPersistableCustom { public class Fund extends AbstractPersistableCustom<Long> {
@Column(name = "name") @Column(name = "name")
private String name; private String name;
@@ -58,7 +58,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Entity @Entity
@Table(name = "m_group") @Table(name = "m_group")
public final class Group extends AbstractPersistableCustom { public final class Group extends AbstractPersistableCustom<Long> {
@Column(name = "external_id", length = 100, unique = true) @Column(name = "external_id", length = 100, unique = true)
private String externalId; private String externalId;
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "m_group_level") @Table(name = "m_group_level")
public class GroupLevel extends AbstractPersistableCustom { public class GroupLevel extends AbstractPersistableCustom<Long> {
@Column(name = "parent_id") @Column(name = "parent_id")
private Long parentId; private Long parentId;
@@ -33,7 +33,7 @@ import org.apache.fineract.portfolio.group.api.GroupingTypesApiConstants;
@Entity @Entity
@Table(name = "m_group_roles") @Table(name = "m_group_roles")
public class GroupRole extends AbstractPersistableCustom { public class GroupRole extends AbstractPersistableCustom<Long> {
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "group_id") @JoinColumn(name = "group_id")
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.paymenttype.domain.PaymentType;
@Entity @Entity
@Getter @Getter
@Table(name = "m_payment_detail") @Table(name = "m_payment_detail")
public final class PaymentDetail extends AbstractPersistableCustom { public class PaymentDetail extends AbstractPersistableCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "payment_type_id", nullable = false) @JoinColumn(name = "payment_type_id", nullable = false)
@@ -57,9 +57,7 @@ public final class PaymentDetail extends AbstractPersistableCustom {
@Column(name = "bank_number", length = 50) @Column(name = "bank_number", length = 50)
private String bankNumber; private String bankNumber;
PaymentDetail() { protected PaymentDetail() {}
}
public static PaymentDetail generatePaymentDetail(final PaymentType paymentType, final JsonCommand command, public static PaymentDetail generatePaymentDetail(final PaymentType paymentType, final JsonCommand command,
final Map<String, Object> changes) { final Map<String, Object> changes) {
@@ -85,9 +83,7 @@ public final class PaymentDetail extends AbstractPersistableCustom {
changes.put(PaymentDetailConstants.bankNumberParamName, bankNumber); changes.put(PaymentDetailConstants.bankNumberParamName, bankNumber);
} }
changes.put("paymentTypeId", paymentType.getId()); changes.put("paymentTypeId", paymentType.getId());
final PaymentDetail paymentDetail = new PaymentDetail(paymentType, accountNumber, checkNumber, routingCode, receiptNumber, return new PaymentDetail(paymentType, accountNumber, checkNumber, routingCode, receiptNumber, bankNumber);
bankNumber);
return paymentDetail;
} }
public static PaymentDetail instance(final PaymentType paymentType, final String accountNumber, final String checkNumber, public static PaymentDetail instance(final PaymentType paymentType, final String accountNumber, final String checkNumber,
@@ -107,8 +103,7 @@ public final class PaymentDetail extends AbstractPersistableCustom {
public PaymentDetailData toData() { public PaymentDetailData toData() {
final PaymentTypeData paymentTypeData = null; // this.paymentType.toData(); final PaymentTypeData paymentTypeData = null; // this.paymentType.toData();
final PaymentDetailData paymentDetailData = new PaymentDetailData(getId(), paymentTypeData, this.accountNumber, this.checkNumber, return new PaymentDetailData(getId(), paymentTypeData, this.accountNumber, this.checkNumber, this.routingCode, this.receiptNumber,
this.routingCode, this.receiptNumber, this.bankNumber); this.bankNumber);
return paymentDetailData;
} }
} }
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.paymenttype.api.PaymentTypeApiResourceConst
@Entity @Entity
@Table(name = "m_payment_type") @Table(name = "m_payment_type")
@AllArgsConstructor @AllArgsConstructor
public class PaymentType extends AbstractPersistableCustom { public class PaymentType extends AbstractPersistableCustom<Long> {
@Column(name = "value") @Column(name = "value")
private String name; private String name;
@@ -57,7 +57,7 @@ import org.springframework.security.core.userdetails.User;
@Entity @Entity
@Table(name = "m_appuser", uniqueConstraints = @UniqueConstraint(columnNames = { "username" }, name = "username_org")) @Table(name = "m_appuser", uniqueConstraints = @UniqueConstraint(columnNames = { "username" }, name = "username_org"))
public class AppUser extends AbstractPersistableCustom implements PlatformUser { public class AppUser extends AbstractPersistableCustom<Long> implements PlatformUser {
@Column(name = "email", nullable = false, length = 100) @Column(name = "email", nullable = false, length = 100)
private String email; private String email;
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.client.domain.Client;
@Entity @Entity
@Table(name = "m_selfservice_user_client_mapping") @Table(name = "m_selfservice_user_client_mapping")
public class AppUserClientMapping extends AbstractPersistableCustom { public class AppUserClientMapping extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false, cascade = CascadeType.ALL) @ManyToOne(optional = false, cascade = CascadeType.ALL)
@JoinColumn(name = "appuser_id", nullable = false) @JoinColumn(name = "appuser_id", nullable = false)
@@ -26,7 +26,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "m_permission") @Table(name = "m_permission")
public class Permission extends AbstractPersistableCustom implements Serializable { public class Permission extends AbstractPersistableCustom<Long> implements Serializable {
@Column(name = "grouping", nullable = false, length = 45) @Column(name = "grouping", nullable = false, length = 45)
private String grouping; private String grouping;
@@ -38,7 +38,7 @@ import org.apache.fineract.useradministration.data.RoleData;
@Entity @Entity
@Table(name = "m_role", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unq_name") }) @Table(name = "m_role", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unq_name") })
public class Role extends AbstractPersistableCustom implements Serializable { public class Role extends AbstractPersistableCustom<Long> implements Serializable {
@Column(name = "name", unique = true, nullable = false, length = 100) @Column(name = "name", unique = true, nullable = false, length = 100)
private String name; private String name;
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.documentmanagement.command.DocumentCom
@Entity @Entity
@Table(name = "m_document") @Table(name = "m_document")
public class Document extends AbstractPersistableCustom { public class Document extends AbstractPersistableCustom<Long> {
@Column(name = "parent_entity_type", length = 50) @Column(name = "parent_entity_type", length = 50)
private String parentEntityType; private String parentEntityType;
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.ExternalId;
@Entity @Entity
@NoArgsConstructor @NoArgsConstructor
@Table(name = "m_external_asset_owner") @Table(name = "m_external_asset_owner")
public class ExternalAssetOwner extends AbstractAuditableWithUTCDateTimeCustom { public class ExternalAssetOwner extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Column(name = "external_id", nullable = false, length = 100, unique = true) @Column(name = "external_id", nullable = false, length = 100, unique = true)
private ExternalId externalId; private ExternalId externalId;
@@ -34,7 +34,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Table(name = "m_external_asset_owner_journal_entry_mapping") @Table(name = "m_external_asset_owner_journal_entry_mapping")
@NoArgsConstructor @NoArgsConstructor
@Entity @Entity
public class ExternalAssetOwnerJournalEntryMapping extends AbstractAuditableWithUTCDateTimeCustom { public class ExternalAssetOwnerJournalEntryMapping extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@OneToOne @OneToOne
@JoinColumn(name = "journal_entry_id", nullable = false) @JoinColumn(name = "journal_entry_id", nullable = false)
@@ -41,7 +41,7 @@ import org.apache.fineract.investor.data.ExternalTransferSubStatus;
@Table(name = "m_external_asset_owner_transfer") @Table(name = "m_external_asset_owner_transfer")
@NoArgsConstructor @NoArgsConstructor
@Entity @Entity
public class ExternalAssetOwnerTransfer extends AbstractAuditableWithUTCDateTimeCustom { public class ExternalAssetOwnerTransfer extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "owner_id", nullable = false) @JoinColumn(name = "owner_id", nullable = false)
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Table(name = "m_external_asset_owner_transfer_details") @Table(name = "m_external_asset_owner_transfer_details")
@NoArgsConstructor @NoArgsConstructor
@Entity @Entity
public class ExternalAssetOwnerTransferDetails extends AbstractAuditableWithUTCDateTimeCustom { public class ExternalAssetOwnerTransferDetails extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@OneToOne(cascade = CascadeType.ALL) @OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "asset_owner_transfer_id", referencedColumnName = "id") @JoinColumn(name = "asset_owner_transfer_id", referencedColumnName = "id")
@@ -34,7 +34,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Table(name = "m_external_asset_owner_transfer_journal_entry_mapping") @Table(name = "m_external_asset_owner_transfer_journal_entry_mapping")
@NoArgsConstructor @NoArgsConstructor
@Entity @Entity
public class ExternalAssetOwnerTransferJournalEntryMapping extends AbstractAuditableWithUTCDateTimeCustom { public class ExternalAssetOwnerTransferJournalEntryMapping extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@OneToOne @OneToOne
@JoinColumn(name = "journal_entry_id", nullable = false) @JoinColumn(name = "journal_entry_id", nullable = false)
@@ -33,7 +33,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Table(name = "m_external_asset_owner_transfer_loan_mapping") @Table(name = "m_external_asset_owner_transfer_loan_mapping")
@NoArgsConstructor @NoArgsConstructor
@Entity @Entity
public class ExternalAssetOwnerTransferLoanMapping extends AbstractAuditableWithUTCDateTimeCustom { public class ExternalAssetOwnerTransferLoanMapping extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@Column(name = "loan_id", nullable = false) @Column(name = "loan_id", nullable = false)
private Long loanId; private Long loanId;
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan;
@Entity @Entity
@Table(name = "m_loan_collateral") @Table(name = "m_loan_collateral")
public class LoanCollateral extends AbstractPersistableCustom { public class LoanCollateral extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn(name = "loan_id", nullable = false) @JoinColumn(name = "loan_id", nullable = false)
@@ -39,7 +39,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagement
@Entity @Entity
@Table(name = "m_client_collateral_management") @Table(name = "m_client_collateral_management")
public class ClientCollateralManagement extends AbstractPersistableCustom { public class ClientCollateralManagement extends AbstractPersistableCustom<Long> {
@Column(name = "quantity", nullable = false, scale = 5, precision = 20) @Column(name = "quantity", nullable = false, scale = 5, precision = 20)
private BigDecimal quantity; private BigDecimal quantity;
@@ -39,7 +39,7 @@ import org.apache.fineract.portfolio.collateralmanagement.api.CollateralManageme
@Entity @Entity
@Table(name = "m_collateral_management") @Table(name = "m_collateral_management")
public class CollateralManagementDomain extends AbstractPersistableCustom { public class CollateralManagementDomain extends AbstractPersistableCustom<Long> {
@Column(name = "name", length = 20, columnDefinition = " ") @Column(name = "name", length = 20, columnDefinition = " ")
private String name; private String name;
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Entity @Entity
@Table(name = "m_delinquency_bucket_mappings", uniqueConstraints = { @Table(name = "m_delinquency_bucket_mappings", uniqueConstraints = {
@UniqueConstraint(name = "uq_delinquency_bucket_mapping", columnNames = { "delinquencyBucket", "delinquencyRange" }) }) @UniqueConstraint(name = "uq_delinquency_bucket_mapping", columnNames = { "delinquencyBucket", "delinquencyRange" }) })
public class DelinquencyBucketMappings extends AbstractAuditableWithUTCDateTimeCustom { public class DelinquencyBucketMappings extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "delinquency_bucket_id", nullable = false) @JoinColumn(name = "delinquency_bucket_id", nullable = false)
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan;
@NoArgsConstructor @NoArgsConstructor
@Entity @Entity
@Table(name = "m_loan_delinquency_action") @Table(name = "m_loan_delinquency_action")
public class LoanDelinquencyAction extends AbstractAuditableWithUTCDateTimeCustom { public class LoanDelinquencyAction extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "loan_id", nullable = false) @JoinColumn(name = "loan_id", nullable = false)
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan;
@NoArgsConstructor @NoArgsConstructor
@Entity @Entity
@Table(name = "m_loan_delinquency_tag_history") @Table(name = "m_loan_delinquency_tag_history")
public class LoanDelinquencyTagHistory extends AbstractAuditableWithUTCDateTimeCustom { public class LoanDelinquencyTagHistory extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "delinquency_range_id", nullable = false) @JoinColumn(name = "delinquency_range_id", nullable = false)
@@ -38,7 +38,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleIns
@NoArgsConstructor @NoArgsConstructor
@Entity @Entity
@Table(name = "m_loan_installment_delinquency_tag") @Table(name = "m_loan_installment_delinquency_tag")
public class LoanInstallmentDelinquencyTag extends AbstractAuditableWithUTCDateTimeCustom { public class LoanInstallmentDelinquencyTag extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "delinquency_range_id", nullable = false) @JoinColumn(name = "delinquency_range_id", nullable = false)
@@ -33,7 +33,7 @@ import org.apache.fineract.portfolio.group.domain.Group;
@Entity @Entity
@Table(name = "glim_accounts", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_number" }, name = "FK_glim_id") }) @Table(name = "glim_accounts", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_number" }, name = "FK_glim_id") })
public class GroupLoanIndividualMonitoringAccount extends AbstractPersistableCustom { public class GroupLoanIndividualMonitoringAccount extends AbstractPersistableCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "group_id", nullable = false) @JoinColumn(name = "group_id", nullable = false)
@@ -154,7 +154,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@UniqueConstraint(columnNames = { "external_id" }, name = "loan_externalid_UNIQUE") }) @UniqueConstraint(columnNames = { "external_id" }, name = "loan_externalid_UNIQUE") })
@Setter @Setter
@Getter @Getter
public class Loan extends AbstractAuditableWithUTCDateTimeCustom { public class Loan extends AbstractAuditableWithUTCDateTimeCustom<Long> {
public static final String RECALCULATE_LOAN_SCHEDULE = "recalculateLoanSchedule"; public static final String RECALCULATE_LOAN_SCHEDULE = "recalculateLoanSchedule";
public static final String EXTERNAL_ID = "externalId"; public static final String EXTERNAL_ID = "externalId";
@@ -60,7 +60,7 @@ import org.apache.fineract.portfolio.loanaccount.data.LoanInstallmentChargeData;
@Entity @Entity
@Table(name = "m_loan_charge", uniqueConstraints = { @UniqueConstraint(columnNames = { "external_id" }, name = "external_id") }) @Table(name = "m_loan_charge", uniqueConstraints = { @UniqueConstraint(columnNames = { "external_id" }, name = "external_id") })
public class LoanCharge extends AbstractAuditableWithUTCDateTimeCustom { public class LoanCharge extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn(name = "loan_id", referencedColumnName = "id", nullable = false) @JoinColumn(name = "loan_id", referencedColumnName = "id", nullable = false)
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "m_loan_charge_paid_by") @Table(name = "m_loan_charge_paid_by")
public class LoanChargePaidBy extends AbstractPersistableCustom { public class LoanChargePaidBy extends AbstractPersistableCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "loan_transaction_id", nullable = false) @JoinColumn(name = "loan_transaction_id", nullable = false)
@@ -30,7 +30,7 @@ import org.apache.fineract.portfolio.loanaccount.data.LoanCollateralManagementDa
@Entity @Entity
@Table(name = "m_loan_collateral_management") @Table(name = "m_loan_collateral_management")
public class LoanCollateralManagement extends AbstractPersistableCustom { public class LoanCollateralManagement extends AbstractPersistableCustom<Long> {
@Column(name = "quantity", nullable = false, scale = 5, precision = 20) @Column(name = "quantity", nullable = false, scale = 5, precision = 20)
private BigDecimal quantity; private BigDecimal quantity;
@@ -46,7 +46,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.CreditAllocationTransact
@UniqueConstraint(columnNames = { "loan_id", "transaction_type" }, name = "uq_m_loan_credit_allocation_rule") }) @UniqueConstraint(columnNames = { "loan_id", "transaction_type" }, name = "uq_m_loan_credit_allocation_rule") })
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor(access = AccessLevel.PROTECTED)
public class LoanCreditAllocationRule extends AbstractAuditableWithUTCDateTimeCustom { public class LoanCreditAllocationRule extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "loan_id", nullable = false) @JoinColumn(name = "loan_id", nullable = false)
@@ -32,7 +32,7 @@ import org.apache.fineract.portfolio.loanaccount.data.DisbursementData;
@Entity @Entity
@Table(name = "m_loan_disbursement_detail") @Table(name = "m_loan_disbursement_detail")
public class LoanDisbursementDetails extends AbstractPersistableCustom { public class LoanDisbursementDetails extends AbstractPersistableCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "loan_id", nullable = false) @JoinColumn(name = "loan_id", nullable = false)
@@ -32,7 +32,7 @@ import org.apache.fineract.portfolio.loanaccount.data.LoanInstallmentChargeData;
@Entity @Entity
@Table(name = "m_loan_installment_charge") @Table(name = "m_loan_installment_charge")
public class LoanInstallmentCharge extends AbstractPersistableCustom implements Comparable<LoanInstallmentCharge> { public class LoanInstallmentCharge extends AbstractPersistableCustom<Long> implements Comparable<LoanInstallmentCharge> {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn(name = "loan_charge_id", referencedColumnName = "id", nullable = false) @JoinColumn(name = "loan_charge_id", referencedColumnName = "id", nullable = false)
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "m_loan_interest_recalculation_additional_details") @Table(name = "m_loan_interest_recalculation_additional_details")
public class LoanInterestRecalcualtionAdditionalDetails extends AbstractPersistableCustom { public class LoanInterestRecalcualtionAdditionalDetails extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn(name = "loan_repayment_schedule_id", nullable = false) @JoinColumn(name = "loan_repayment_schedule_id", nullable = false)
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.RecalculationFrequencyTy
@Entity @Entity
@Table(name = "m_loan_recalculation_details") @Table(name = "m_loan_recalculation_details")
public class LoanInterestRecalculationDetails extends AbstractPersistableCustom { public class LoanInterestRecalculationDetails extends AbstractPersistableCustom<Long> {
@OneToOne @OneToOne
@JoinColumn(name = "loan_id", nullable = false) @JoinColumn(name = "loan_id", nullable = false)
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Getter @Getter
@Table(name = "m_loan_overdue_installment_charge") @Table(name = "m_loan_overdue_installment_charge")
public class LoanOverdueInstallmentCharge extends AbstractPersistableCustom { public class LoanOverdueInstallmentCharge extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn(name = "loan_charge_id", referencedColumnName = "id", nullable = false) @JoinColumn(name = "loan_charge_id", referencedColumnName = "id", nullable = false)
@@ -47,7 +47,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTypeLis
@UniqueConstraint(columnNames = { "loan_id", "transaction_type" }, name = "uq_m_loan_payment_allocation_rule") }) @UniqueConstraint(columnNames = { "loan_id", "transaction_type" }, name = "uq_m_loan_payment_allocation_rule") })
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor(access = AccessLevel.PROTECTED)
public class LoanPaymentAllocationRule extends AbstractAuditableWithUTCDateTimeCustom { public class LoanPaymentAllocationRule extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "loan_id", nullable = false) @JoinColumn(name = "loan_id", nullable = false)
@@ -40,7 +40,7 @@ import org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDat
@Entity @Entity
@Table(name = "m_loan_repayment_schedule") @Table(name = "m_loan_repayment_schedule")
public class LoanRepaymentScheduleInstallment extends AbstractAuditableWithUTCDateTimeCustom public class LoanRepaymentScheduleInstallment extends AbstractAuditableWithUTCDateTimeCustom<Long>
implements Comparable<LoanRepaymentScheduleInstallment> { implements Comparable<LoanRepaymentScheduleInstallment> {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanResch
@Entity @Entity
@Table(name = "m_loan_reschedule_request_term_variations_mapping") @Table(name = "m_loan_reschedule_request_term_variations_mapping")
public class LoanRescheduleRequestToTermVariationMapping extends AbstractPersistableCustom { public class LoanRescheduleRequestToTermVariationMapping extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false, cascade = CascadeType.ALL) @ManyToOne(optional = false, cascade = CascadeType.ALL)
@JoinColumn(name = "loan_reschedule_request_id", nullable = false) @JoinColumn(name = "loan_reschedule_request_id", nullable = false)
@@ -38,7 +38,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor(access = AccessLevel.PROTECTED)
public class LoanStatusChangeHistory extends AbstractAuditableWithUTCDateTimeCustom { public class LoanStatusChangeHistory extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "loan_id", nullable = false) @JoinColumn(name = "loan_id", nullable = false)
@@ -34,7 +34,7 @@ import org.apache.fineract.portfolio.loanproduct.service.LoanEnumerations;
@Entity @Entity
@Table(name = "m_loan_term_variations") @Table(name = "m_loan_term_variations")
public class LoanTermVariations extends AbstractPersistableCustom { public class LoanTermVariations extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn(name = "loan_id", nullable = false) @JoinColumn(name = "loan_id", nullable = false)
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "m_loan_topup") @Table(name = "m_loan_topup")
public class LoanTopupDetails extends AbstractPersistableCustom { public class LoanTopupDetails extends AbstractPersistableCustom<Long> {
@OneToOne @OneToOne
@JoinColumn(name = "loan_id", nullable = false) @JoinColumn(name = "loan_id", nullable = false)
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.charge.domain.Charge;
@Entity @Entity
@Table(name = "m_loan_tranche_charges") @Table(name = "m_loan_tranche_charges")
public class LoanTrancheCharge extends AbstractPersistableCustom { public class LoanTrancheCharge extends AbstractPersistableCustom<Long> {
@ManyToOne(cascade = CascadeType.ALL, optional = false) @ManyToOne(cascade = CascadeType.ALL, optional = false)
@JoinColumn(name = "loan_id", nullable = false) @JoinColumn(name = "loan_id", nullable = false)
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "m_loan_tranche_disbursement_charge") @Table(name = "m_loan_tranche_disbursement_charge")
public class LoanTrancheDisbursementCharge extends AbstractPersistableCustom { public class LoanTrancheDisbursementCharge extends AbstractPersistableCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "loan_charge_id", referencedColumnName = "id", nullable = false) @JoinColumn(name = "loan_charge_id", referencedColumnName = "id", nullable = false)
@@ -60,7 +60,7 @@ import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail;
*/ */
@Entity @Entity
@Table(name = "m_loan_transaction", uniqueConstraints = { @UniqueConstraint(columnNames = { "external_id" }, name = "external_id_UNIQUE") }) @Table(name = "m_loan_transaction", uniqueConstraints = { @UniqueConstraint(columnNames = { "external_id" }, name = "external_id_UNIQUE") })
public class LoanTransaction extends AbstractAuditableWithUTCDateTimeCustom { public class LoanTransaction extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn(name = "loan_id", nullable = false) @JoinColumn(name = "loan_id", nullable = false)
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@Getter @Getter
@Entity @Entity
@Table(name = "m_loan_transaction_relation") @Table(name = "m_loan_transaction_relation")
public class LoanTransactionRelation extends AbstractAuditableWithUTCDateTimeCustom { public class LoanTransactionRelation extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "from_loan_transaction_id", nullable = false) @JoinColumn(name = "from_loan_transaction_id", nullable = false)
@@ -31,7 +31,7 @@ import org.apache.fineract.organisation.monetary.domain.Money;
@Entity @Entity
@Table(name = "m_loan_transaction_repayment_schedule_mapping") @Table(name = "m_loan_transaction_repayment_schedule_mapping")
public class LoanTransactionToRepaymentScheduleMapping extends AbstractPersistableCustom { public class LoanTransactionToRepaymentScheduleMapping extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false, cascade = CascadeType.PERSIST) @ManyToOne(optional = false, cascade = CascadeType.PERSIST)
@JoinColumn(name = "loan_transaction_id", nullable = false) @JoinColumn(name = "loan_transaction_id", nullable = false)
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction;
@Table(name = "m_loan_reage_parameter") @Table(name = "m_loan_reage_parameter")
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
public class LoanReAgeParameter extends AbstractAuditableWithUTCDateTimeCustom { public class LoanReAgeParameter extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@OneToOne @OneToOne
@JoinColumn(name = "loan_transaction_id", nullable = false) @JoinColumn(name = "loan_transaction_id", nullable = false)
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanResch
@Entity @Entity
@Table(name = "m_loan_repayment_schedule_history") @Table(name = "m_loan_repayment_schedule_history")
public class LoanRepaymentScheduleHistory extends AbstractPersistableCustom { public class LoanRepaymentScheduleHistory extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn(name = "loan_id") @JoinColumn(name = "loan_id")
@@ -40,7 +40,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Entity @Entity
@Table(name = "m_loan_reschedule_request") @Table(name = "m_loan_reschedule_request")
public class LoanRescheduleRequest extends AbstractPersistableCustom { public class LoanRescheduleRequest extends AbstractPersistableCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "loan_id", nullable = false) @JoinColumn(name = "loan_id", nullable = false)
@@ -84,7 +84,7 @@ import org.apache.fineract.portfolio.rate.domain.Rate;
@Table(name = "m_product_loan", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unq_name"), @Table(name = "m_product_loan", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unq_name"),
@UniqueConstraint(columnNames = { "external_id" }, name = "external_id_UNIQUE"), @UniqueConstraint(columnNames = { "external_id" }, name = "external_id_UNIQUE"),
@UniqueConstraint(columnNames = { "short_name" }, name = "unq_short_name") }) @UniqueConstraint(columnNames = { "short_name" }, name = "unq_short_name") })
public class LoanProduct extends AbstractPersistableCustom { public class LoanProduct extends AbstractPersistableCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "fund_id") @JoinColumn(name = "fund_id")
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
@Entity @Entity
@Table(name = "m_product_loan_variations_borrower_cycle") @Table(name = "m_product_loan_variations_borrower_cycle")
public class LoanProductBorrowerCycleVariations extends AbstractPersistableCustom { public class LoanProductBorrowerCycleVariations extends AbstractPersistableCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "loan_product_id", nullable = false) @JoinColumn(name = "loan_product_id", nullable = false)
@@ -31,7 +31,7 @@ import org.apache.fineract.portfolio.loanproduct.LoanProductConstants;
@Entity @Entity
@Table(name = "m_product_loan_configurable_attributes") @Table(name = "m_product_loan_configurable_attributes")
public class LoanProductConfigurableAttributes extends AbstractPersistableCustom implements Serializable { public class LoanProductConfigurableAttributes extends AbstractPersistableCustom<Long> implements Serializable {
@OneToOne @OneToOne
@JoinColumn(name = "loan_product_id", nullable = false) @JoinColumn(name = "loan_product_id", nullable = false)
@@ -43,7 +43,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@UniqueConstraint(columnNames = { "loan_product_id", "transaction_type" }, name = "uq_m_loan_product_credit_allocation_rule") }) @UniqueConstraint(columnNames = { "loan_product_id", "transaction_type" }, name = "uq_m_loan_product_credit_allocation_rule") })
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor(access = AccessLevel.PROTECTED)
public class LoanProductCreditAllocationRule extends AbstractAuditableWithUTCDateTimeCustom { public class LoanProductCreditAllocationRule extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "loan_product_id", nullable = false) @JoinColumn(name = "loan_product_id", nullable = false)
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.floatingrates.domain.FloatingRate;
@Entity @Entity
@Table(name = "m_product_loan_floating_rates") @Table(name = "m_product_loan_floating_rates")
public class LoanProductFloatingRates extends AbstractPersistableCustom { public class LoanProductFloatingRates extends AbstractPersistableCustom<Long> {
@OneToOne @OneToOne
@JoinColumn(name = "loan_product_id", nullable = false) @JoinColumn(name = "loan_product_id", nullable = false)
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanproduct.LoanProductConstants;
@Entity @Entity
@Table(name = "m_product_loan_guarantee_details") @Table(name = "m_product_loan_guarantee_details")
public class LoanProductGuaranteeDetails extends AbstractPersistableCustom { public class LoanProductGuaranteeDetails extends AbstractPersistableCustom<Long> {
@OneToOne @OneToOne
@JoinColumn(name = "loan_product_id", nullable = false) @JoinColumn(name = "loan_product_id", nullable = false)
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.loanproduct.LoanProductConstants;
@Entity @Entity
@Table(name = "m_product_loan_recalculation_details") @Table(name = "m_product_loan_recalculation_details")
public class LoanProductInterestRecalculationDetails extends AbstractPersistableCustom { public class LoanProductInterestRecalculationDetails extends AbstractPersistableCustom<Long> {
@OneToOne @OneToOne
@JoinColumn(name = "product_id", nullable = false) @JoinColumn(name = "product_id", nullable = false)
@@ -43,7 +43,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
@UniqueConstraint(columnNames = { "loan_product_id", "transaction_type" }, name = "uq_m_loan_product_payment_allocation_rule") }) @UniqueConstraint(columnNames = { "loan_product_id", "transaction_type" }, name = "uq_m_loan_product_payment_allocation_rule") })
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor(access = AccessLevel.PROTECTED)
public class LoanProductPaymentAllocationRule extends AbstractAuditableWithUTCDateTimeCustom { public class LoanProductPaymentAllocationRule extends AbstractAuditableWithUTCDateTimeCustom<Long> {
@ManyToOne @ManyToOne
@JoinColumn(name = "loan_product_id", nullable = false) @JoinColumn(name = "loan_product_id", nullable = false)
@@ -38,7 +38,7 @@ import org.apache.fineract.portfolio.loanproduct.LoanProductConstants;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Table(name = "m_product_loan_variable_installment_config") @Table(name = "m_product_loan_variable_installment_config")
public class LoanProductVariableInstallmentConfig extends AbstractPersistableCustom { public class LoanProductVariableInstallmentConfig extends AbstractPersistableCustom<Long> {
@Setter @Setter
@OneToOne @OneToOne
@@ -34,7 +34,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleIns
@Entity @Entity
@Table(name = "m_repayment_with_post_dated_checks") @Table(name = "m_repayment_with_post_dated_checks")
public class PostDatedChecks extends AbstractPersistableCustom { public class PostDatedChecks extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn(name = "loan_id", referencedColumnName = "id", nullable = false) @JoinColumn(name = "loan_id", referencedColumnName = "id", nullable = false)
@@ -465,6 +465,7 @@ class AdvancedPaymentScheduleTransactionProcessorTest {
Money money = Money.of(MONETARY_CURRENCY, BigDecimal.valueOf(transactionAmount)); Money money = Money.of(MONETARY_CURRENCY, BigDecimal.valueOf(transactionAmount));
lenient().when(chargeback.getAmount(MONETARY_CURRENCY)).thenReturn(money); lenient().when(chargeback.getAmount(MONETARY_CURRENCY)).thenReturn(money);
lenient().when(chargeback.getTransactionDate()).thenReturn(LocalDate.of(2023, 1, 1)); lenient().when(chargeback.getTransactionDate()).thenReturn(LocalDate.of(2023, 1, 1));
lenient().when(chargeback.getId()).thenReturn(1L);
return chargeback; return chargeback;
} }
@@ -41,7 +41,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct;
@Accessors(chain = true) @Accessors(chain = true)
@Entity @Entity
@Table(name = "m_loanproduct_provisioning_entry") @Table(name = "m_loanproduct_provisioning_entry")
public class LoanProductProvisioningEntry extends AbstractPersistableCustom { public class LoanProductProvisioningEntry extends AbstractPersistableCustom<Long> {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn(name = "history_id", referencedColumnName = "id", nullable = false) @JoinColumn(name = "history_id", referencedColumnName = "id", nullable = false)
@@ -43,7 +43,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
@Accessors(chain = true) @Accessors(chain = true)
@Entity @Entity
@Table(name = "m_provisioning_history") @Table(name = "m_provisioning_history")
public class ProvisioningEntry extends AbstractPersistableCustom { public class ProvisioningEntry extends AbstractPersistableCustom<Long> {
@Column(name = "journal_entry_created") @Column(name = "journal_entry_created")
private Boolean isJournalEntryCreated; private Boolean isJournalEntryCreated;
@@ -26,9 +26,9 @@ import org.jetbrains.annotations.NotNull;
public interface COBBusinessStepService { public interface COBBusinessStepService {
<T extends COBBusinessStep<S>, S extends AbstractPersistableCustom> S run(TreeMap<Long, String> executionMap, S item); <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom<Long>> S run(TreeMap<Long, String> executionMap, S item);
@NotNull @NotNull
<T extends COBBusinessStep<S>, S extends AbstractPersistableCustom> Set<BusinessStepNameAndOrder> getCOBBusinessSteps( <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom<Long>> Set<BusinessStepNameAndOrder> getCOBBusinessSteps(
Class<T> businessStepClass, String cobJobName); Class<T> businessStepClass, String cobJobName);
} }
@@ -56,7 +56,7 @@ public class COBBusinessStepServiceImpl implements COBBusinessStepService {
@SuppressWarnings({ "unchecked" }) @SuppressWarnings({ "unchecked" })
@Override @Override
public <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom> S run(TreeMap<Long, String> executionMap, S item) { public <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom<Long>> S run(TreeMap<Long, String> executionMap, S item) {
if (executionMap == null || executionMap.isEmpty()) { if (executionMap == null || executionMap.isEmpty()) {
throw new BusinessStepException("Execution map is empty! COB Business step execution skipped!"); throw new BusinessStepException("Execution map is empty! COB Business step execution skipped!");
} }
@@ -94,7 +94,7 @@ public class COBBusinessStepServiceImpl implements COBBusinessStepService {
@NotNull @NotNull
@Override @Override
public <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom> Set<BusinessStepNameAndOrder> getCOBBusinessSteps( public <T extends COBBusinessStep<S>, S extends AbstractPersistableCustom<Long>> Set<BusinessStepNameAndOrder> getCOBBusinessSteps(
Class<T> businessStepClass, String cobJobName) { Class<T> businessStepClass, String cobJobName) {
List<BatchBusinessStep> cobStepConfigs = batchBusinessStepRepository.findAllByJobName(cobJobName); List<BatchBusinessStep> cobStepConfigs = batchBusinessStepRepository.findAllByJobName(cobJobName);
List<String> businessSteps = Arrays.stream(beanFactory.getBeanNamesForType(businessStepClass)).toList(); List<String> businessSteps = Arrays.stream(beanFactory.getBeanNamesForType(businessStepClass)).toList();

Some files were not shown because too many files have changed in this diff Show More