FINERACT-2091: Support for string type primary keys
This commit is contained in:
committed by
Adam Saghy
parent
111e28ed1b
commit
f48f94c454
+1
-1
@@ -45,7 +45,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class GLAccount extends AbstractPersistableCustom {
|
||||
public class GLAccount extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "parent_id")
|
||||
|
||||
@@ -20,7 +20,7 @@ package org.apache.fineract.cob;
|
||||
|
||||
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);
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
|
||||
|
||||
@Entity
|
||||
@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)
|
||||
private String actionName;
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
|
||||
@Accessors(chain = true)
|
||||
@Entity
|
||||
@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)
|
||||
@Column(name = "type")
|
||||
|
||||
Vendored
+1
-1
@@ -33,7 +33,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class PlatformCache extends AbstractPersistableCustom {
|
||||
public class PlatformCache extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@Column(name = "cache_type_enum")
|
||||
private Integer cacheType;
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class Code extends AbstractPersistableCustom {
|
||||
public class Code extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@Column(name = "code_name", length = 100)
|
||||
private String name;
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class CodeValue extends AbstractPersistableCustom {
|
||||
public class CodeValue extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@Column(name = "code_value", length = 100)
|
||||
private String label;
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ import org.springframework.data.jpa.domain.AbstractAuditable;
|
||||
* the type of the auditing type's identifier
|
||||
*/
|
||||
@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;
|
||||
|
||||
|
||||
+3
-2
@@ -26,6 +26,7 @@ import static org.apache.fineract.infrastructure.core.domain.AuditableFieldsCons
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.MappedSuperclass;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.Optional;
|
||||
import lombok.AccessLevel;
|
||||
@@ -47,8 +48,8 @@ import org.springframework.data.jpa.domain.AbstractAuditable;
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
public abstract class AbstractAuditableWithUTCDateTimeCustom extends AbstractPersistableCustom
|
||||
implements Auditable<Long, Long, OffsetDateTime> {
|
||||
public abstract class AbstractAuditableWithUTCDateTimeCustom<T extends Serializable> extends AbstractPersistableCustom<T>
|
||||
implements Auditable<Long, T, OffsetDateTime> {
|
||||
|
||||
private static final long serialVersionUID = 141481953116476081L;
|
||||
|
||||
|
||||
+2
-2
@@ -48,14 +48,14 @@ import org.springframework.data.domain.Persistable;
|
||||
@Getter
|
||||
@Setter
|
||||
@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;
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Getter(onMethod = @__(@Override))
|
||||
private Long id;
|
||||
private T id;
|
||||
|
||||
@Transient
|
||||
@Setter(value = AccessLevel.NONE)
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||
|
||||
@Entity
|
||||
@Table(name = "m_image")
|
||||
public final class Image extends AbstractPersistableCustom {
|
||||
public final class Image extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@Column(name = "location", length = 500)
|
||||
private String location;
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ import org.apache.fineract.infrastructure.core.service.DateUtils;
|
||||
@Table(name = "m_external_event")
|
||||
@Getter
|
||||
@NoArgsConstructor
|
||||
public class ExternalEvent extends AbstractPersistableCustom {
|
||||
public class ExternalEvent extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@Column(name = "type", nullable = false)
|
||||
private String type;
|
||||
|
||||
+1
-1
@@ -62,7 +62,7 @@ import org.apache.fineract.organisation.office.domain.Office;
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class Holiday extends AbstractPersistableCustom {
|
||||
public class Holiday extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@Column(name = "name", unique = true, nullable = false, length = 100)
|
||||
private String name;
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ import org.apache.fineract.organisation.monetary.data.CurrencyData;
|
||||
|
||||
@Entity
|
||||
@Table(name = "m_currency")
|
||||
public class ApplicationCurrency extends AbstractPersistableCustom {
|
||||
public class ApplicationCurrency extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@Column(name = "code", nullable = false, length = 3)
|
||||
private String code;
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "m_organisation_currency")
|
||||
public class OrganisationCurrency extends AbstractPersistableCustom {
|
||||
public class OrganisationCurrency extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@Column(name = "code", nullable = false, length = 3)
|
||||
private String code;
|
||||
|
||||
+1
-1
@@ -49,7 +49,7 @@ import org.apache.fineract.organisation.office.exception.RootOfficeParentCannotB
|
||||
@UniqueConstraint(columnNames = { "external_id" }, name = "externalid_org") })
|
||||
@Getter
|
||||
@Setter
|
||||
public class Office extends AbstractPersistableCustom implements Serializable {
|
||||
public class Office extends AbstractPersistableCustom<Long> implements Serializable {
|
||||
|
||||
@OneToMany(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "parent_id")
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ import org.apache.fineract.organisation.office.domain.Office;
|
||||
@Table(name = "m_staff", uniqueConstraints = { @UniqueConstraint(columnNames = { "display_name" }, name = "display_name"),
|
||||
@UniqueConstraint(columnNames = { "external_id" }, name = "external_id_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)
|
||||
private String firstname;
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ import org.apache.fineract.organisation.workingdays.api.WorkingDaysApiConstants;
|
||||
@Getter
|
||||
@Entity
|
||||
@Table(name = "m_working_days")
|
||||
public class WorkingDays extends AbstractPersistableCustom {
|
||||
public class WorkingDays extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@Column(name = "recurrence", length = 100, nullable = true)
|
||||
private String recurrence;
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@ import org.apache.fineract.portfolio.common.domain.NthDayType;
|
||||
|
||||
@Entity
|
||||
@Table(name = "m_calendar")
|
||||
public class Calendar extends AbstractAuditableWithUTCDateTimeCustom {
|
||||
public class Calendar extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
||||
|
||||
@Column(name = "title", length = 50, nullable = false)
|
||||
private String title;
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.service.DateUtils;
|
||||
|
||||
@Entity
|
||||
@Table(name = "m_calendar_history")
|
||||
public class CalendarHistory extends AbstractPersistableCustom {
|
||||
public class CalendarHistory extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@ManyToOne(optional = false)
|
||||
@JoinColumn(name = "calendar_id", referencedColumnName = "id", nullable = false)
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||
|
||||
@Entity
|
||||
@Table(name = "m_calendar_instance")
|
||||
public class CalendarInstance extends AbstractPersistableCustom {
|
||||
public class CalendarInstance extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@ManyToOne(cascade = CascadeType.PERSIST)
|
||||
@JoinColumn(name = "calendar_id", nullable = false)
|
||||
|
||||
+1
-12
@@ -60,7 +60,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
|
||||
@Setter
|
||||
@Table(name = "m_client", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_no" }, name = "account_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)
|
||||
private String accountNumber;
|
||||
@@ -181,16 +181,6 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom {
|
||||
@Column(name = "submittedon_date")
|
||||
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)
|
||||
@JoinColumn(name = "activatedon_userid")
|
||||
private AppUser activatedBy;
|
||||
@@ -751,5 +741,4 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom {
|
||||
setDisplayName(null);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
|
||||
@Table(name = "m_client_identifier", uniqueConstraints = {
|
||||
@UniqueConstraint(columnNames = { "document_type_id", "document_key" }, name = "unique_identifier_key"),
|
||||
@UniqueConstraint(columnNames = { "client_id", "document_key", "active" }, name = "unique_active_client_identifier") })
|
||||
public class ClientIdentifier extends AbstractAuditableWithUTCDateTimeCustom {
|
||||
public class ClientIdentifier extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "client_id", nullable = false)
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
|
||||
@Entity
|
||||
@Table(name = "m_delinquency_bucket", uniqueConstraints = {
|
||||
@UniqueConstraint(name = "uq_delinquency_bucket_name", columnNames = { "name" }) })
|
||||
public class DelinquencyBucket extends AbstractAuditableWithUTCDateTimeCustom {
|
||||
public class DelinquencyBucket extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
||||
|
||||
@Column(name = "name", nullable = false)
|
||||
private String name;
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa
|
||||
@Entity
|
||||
@Table(name = "m_delinquency_range", uniqueConstraints = {
|
||||
@UniqueConstraint(name = "uq_delinquency_range_classification", columnNames = { "classification" }) })
|
||||
public class DelinquencyRange extends AbstractAuditableWithUTCDateTimeCustom {
|
||||
public class DelinquencyRange extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
||||
|
||||
@Column(name = "classification", nullable = false)
|
||||
private String classification;
|
||||
|
||||
@@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||
@Entity
|
||||
@Table(name = "m_fund", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "fund_name_org"),
|
||||
@UniqueConstraint(columnNames = { "external_id" }, name = "fund_externalid_org") })
|
||||
public class Fund extends AbstractPersistableCustom {
|
||||
public class Fund extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@Column(name = "name")
|
||||
private String name;
|
||||
|
||||
@@ -58,7 +58,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
|
||||
|
||||
@Entity
|
||||
@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)
|
||||
private String externalId;
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||
|
||||
@Entity
|
||||
@Table(name = "m_group_level")
|
||||
public class GroupLevel extends AbstractPersistableCustom {
|
||||
public class GroupLevel extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@Column(name = "parent_id")
|
||||
private Long parentId;
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ import org.apache.fineract.portfolio.group.api.GroupingTypesApiConstants;
|
||||
|
||||
@Entity
|
||||
@Table(name = "m_group_roles")
|
||||
public class GroupRole extends AbstractPersistableCustom {
|
||||
public class GroupRole extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "group_id")
|
||||
|
||||
+5
-10
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.paymenttype.domain.PaymentType;
|
||||
@Entity
|
||||
@Getter
|
||||
@Table(name = "m_payment_detail")
|
||||
public final class PaymentDetail extends AbstractPersistableCustom {
|
||||
public class PaymentDetail extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "payment_type_id", nullable = false)
|
||||
@@ -57,9 +57,7 @@ public final class PaymentDetail extends AbstractPersistableCustom {
|
||||
@Column(name = "bank_number", length = 50)
|
||||
private String bankNumber;
|
||||
|
||||
PaymentDetail() {
|
||||
|
||||
}
|
||||
protected PaymentDetail() {}
|
||||
|
||||
public static PaymentDetail generatePaymentDetail(final PaymentType paymentType, final JsonCommand command,
|
||||
final Map<String, Object> changes) {
|
||||
@@ -85,9 +83,7 @@ public final class PaymentDetail extends AbstractPersistableCustom {
|
||||
changes.put(PaymentDetailConstants.bankNumberParamName, bankNumber);
|
||||
}
|
||||
changes.put("paymentTypeId", paymentType.getId());
|
||||
final PaymentDetail paymentDetail = new PaymentDetail(paymentType, accountNumber, checkNumber, routingCode, receiptNumber,
|
||||
bankNumber);
|
||||
return paymentDetail;
|
||||
return new PaymentDetail(paymentType, accountNumber, checkNumber, routingCode, receiptNumber, bankNumber);
|
||||
}
|
||||
|
||||
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() {
|
||||
final PaymentTypeData paymentTypeData = null; // this.paymentType.toData();
|
||||
final PaymentDetailData paymentDetailData = new PaymentDetailData(getId(), paymentTypeData, this.accountNumber, this.checkNumber,
|
||||
this.routingCode, this.receiptNumber, this.bankNumber);
|
||||
return paymentDetailData;
|
||||
return new PaymentDetailData(getId(), paymentTypeData, this.accountNumber, this.checkNumber, this.routingCode, this.receiptNumber,
|
||||
this.bankNumber);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.paymenttype.api.PaymentTypeApiResourceConst
|
||||
@Entity
|
||||
@Table(name = "m_payment_type")
|
||||
@AllArgsConstructor
|
||||
public class PaymentType extends AbstractPersistableCustom {
|
||||
public class PaymentType extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@Column(name = "value")
|
||||
private String name;
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ import org.springframework.security.core.userdetails.User;
|
||||
|
||||
@Entity
|
||||
@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)
|
||||
private String email;
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.client.domain.Client;
|
||||
|
||||
@Entity
|
||||
@Table(name = "m_selfservice_user_client_mapping")
|
||||
public class AppUserClientMapping extends AbstractPersistableCustom {
|
||||
public class AppUserClientMapping extends AbstractPersistableCustom<Long> {
|
||||
|
||||
@ManyToOne(optional = false, cascade = CascadeType.ALL)
|
||||
@JoinColumn(name = "appuser_id", nullable = false)
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||
|
||||
@Entity
|
||||
@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)
|
||||
private String grouping;
|
||||
|
||||
@@ -38,7 +38,7 @@ import org.apache.fineract.useradministration.data.RoleData;
|
||||
|
||||
@Entity
|
||||
@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)
|
||||
private String name;
|
||||
|
||||
Reference in New Issue
Block a user