diff --git a/build.gradle b/build.gradle new file mode 100644 index 000000000..792f44a11 --- /dev/null +++ b/build.gradle @@ -0,0 +1,2 @@ +sourceCompatibility = JavaVersion.VERSION_1_6 +targetCompatibility = JavaVersion.VERSION_1_6 \ No newline at end of file diff --git a/mifosng-data/.gitignore b/mifosng-data/.gitignore new file mode 100644 index 000000000..e6c52c2d2 --- /dev/null +++ b/mifosng-data/.gitignore @@ -0,0 +1,8 @@ +bin +build +repos +.classpath +.project +.settings +.gradle +*.log \ No newline at end of file diff --git a/mifosng-data/build.gradle b/mifosng-data/build.gradle new file mode 100644 index 000000000..ce0d417ea --- /dev/null +++ b/mifosng-data/build.gradle @@ -0,0 +1,25 @@ +apply plugin: 'eclipse' +apply plugin: 'java' + +sourceCompatibility = JavaVersion.VERSION_1_6 +targetCompatibility = JavaVersion.VERSION_1_6 + +group = 'org.mifosng.data' +version = '0.2' + +repositories { + mavenCentral() + mavenLocal() +} + +dependencies { + compile( [group: 'joda-time', name: 'joda-time', version: '2.1'],) +} + +uploadArchives { + repositories { + flatDir { + dirs '../repos' + } + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/AppUserData.java b/mifosng-data/src/main/java/org/mifosng/data/AppUserData.java new file mode 100644 index 000000000..53a2636a0 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/AppUserData.java @@ -0,0 +1,127 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "user") +public class AppUserData { + + private Long id; + private Long orgId; + private Long officeId; + private String officeName; + private String username; + private String firstname; + private String lastname; + private String email; + + private List allowedOffices = new ArrayList(); + + private List availableRoles = new ArrayList(); + private List selectedRoles = new ArrayList(); + + public AppUserData() { + // + } + + public AppUserData(final Long id, final String username, + final String email, final Long orgId, final Long officeId, + final String officeName) { + this.id = id; + this.username = username; + this.email = email; + this.orgId = orgId; + this.officeId = officeId; + this.officeName = officeName; + } + + public Long getId() { + return this.id; + } + + public String getUsername() { + return this.username; + } + + public String getEmail() { + return this.email; + } + + public Long getOrgId() { + return this.orgId; + } + + public Long getOfficeId() { + return this.officeId; + } + + public String getOfficeName() { + return this.officeName; + } + + public void setId(final Long id) { + this.id = id; + } + + public void setUsername(final String username) { + this.username = username; + } + + public void setEmail(final String email) { + this.email = email; + } + + public void setOrgId(final Long orgId) { + this.orgId = orgId; + } + + public void setOfficeId(final Long officeId) { + this.officeId = officeId; + } + + public void setOfficeName(final String officeName) { + this.officeName = officeName; + } + + public List getAllowedOffices() { + return allowedOffices; + } + + public void setAllowedOffices(List allowedOffices) { + this.allowedOffices = allowedOffices; + } + + public List getAvailableRoles() { + return availableRoles; + } + + public void setAvailableRoles(List availableRoles) { + this.availableRoles = availableRoles; + } + + public List getSelectedRoles() { + return selectedRoles; + } + + public void setSelectedRoles(List selectedRoles) { + this.selectedRoles = selectedRoles; + } + + public String getFirstname() { + return firstname; + } + + public void setFirstname(String firstname) { + this.firstname = firstname; + } + + public String getLastname() { + return lastname; + } + + public void setLastname(String lastname) { + this.lastname = lastname; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/AuthenticatedUserData.java b/mifosng-data/src/main/java/org/mifosng/data/AuthenticatedUserData.java new file mode 100644 index 000000000..74a4b7378 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/AuthenticatedUserData.java @@ -0,0 +1,37 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class AuthenticatedUserData { + + private String username; + private Collection permissions = new ArrayList(); + + protected AuthenticatedUserData() { + // + } + + public AuthenticatedUserData(final Collection permissions) { + this.permissions = permissions; + } + + public Collection getPermissions() { + return this.permissions; + } + + public void setPermissions(final Collection permissions) { + this.permissions = permissions; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/BasicLoanAccountData.java b/mifosng-data/src/main/java/org/mifosng/data/BasicLoanAccountData.java new file mode 100644 index 000000000..fe9b01e91 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/BasicLoanAccountData.java @@ -0,0 +1,470 @@ +package org.mifosng.data; + +import java.math.BigDecimal; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.DateTime; +import org.joda.time.Days; +import org.joda.time.LocalDate; +import org.joda.time.Months; + +@XmlRootElement(name = "loan") +public class BasicLoanAccountData { + + private boolean open = true; + private boolean openWithRepaymentMade = true; + private boolean closed = false; + private boolean interestRebateOutstanding = false; + private boolean pendingApproval = false; + private boolean waitingForDisbursal = false; + private String lifeCycleStatusText = "Active"; + + private Long id = Long.valueOf(1); + private String externalId = "1234567"; + private String loanProductName = "Standard loan 1.75%"; + + private LocalDate submittedOnDate = new LocalDate(); + private String submittedOnNote = ""; + private LocalDate approvedOnDate = new LocalDate(); + private String approvedOnNote = ""; + + private LocalDate expectedDisbursementDate = new LocalDate(); + private LocalDate actualDisbursementDate = new LocalDate(); + private String disbursedOnNote = ""; + private boolean undoDisbursalAllowed = true; + + private LocalDate closedOnDate = new LocalDate(); + private String closedOnNote = ""; + + private LocalDate maturityDate = new LocalDate(); + + private MoneyData principal = MoneyData.of(new CurrencyData("XOF", "CFA", 0, "CFA", "currency.CFA"), BigDecimal.valueOf(Double.valueOf("12345.89"))); + private BigDecimal interestRatePerYear = BigDecimal.valueOf(Double.valueOf("21.0")); + private BigDecimal interestRatePerPeriod = BigDecimal.valueOf(Double.valueOf("1.75")); + private Integer interestPeriodFrequencyType = Integer.valueOf(2); + private String interestPeriodFrequencyText = "Month(s)"; + private Integer interestMethodType = Integer.valueOf(1); + private String interestMethodText = "Declining Balance"; + private Integer amortizationMethodValue = Integer.valueOf(1); + private String amortizationMethodText = "Equal Installments"; + private Integer numberOfRepayments = 12; + + private Integer repaymentFrequencyNumber = 1; + private Integer repaymentFrequencyTypeEnumOrdinal = 2; + private String repaymentFrequencyTypeText = "Month(s)"; + + private MoneyData interestRebateOwed = MoneyData.of(new CurrencyData("XOF", "CFA", 0, "CFA", "currency.CFA"), BigDecimal.valueOf(Double.valueOf("0.0"))); + +// private DerivedLoanData loanData; +// private MoneyData arrearsTolerance; + private boolean waiveAllowed = false; + + public BasicLoanAccountData() { + // + } + + public BasicLoanAccountData(final boolean closed, final boolean open, + final boolean openWithRepaymentMade, + final boolean interestRebateOutstanding, + final boolean pendingApproval, final boolean waitingForDisbursal, + final String lifeCycleStatusText, final Long id, String externalId, + final String loanProductName, final LocalDate closedOnDate, + final String closedOnNote, final LocalDate submittedOnDate, + final String submittedOnNote, final LocalDate approvedOnDate, + final String approvedOnNote, + final LocalDate expectedDisbursementDate, + final LocalDate actualDisbursementDate, + final String disbursedOnNote, final LocalDate maturityDate, + final MoneyData principal, final BigDecimal interestRatePerYear, + final BigDecimal interestRatePerPeriod, + final Integer interestPeriodFrequencyType, + final String interestPeriodFrequencyText, + final Integer interestMethodType, + final String interestMethodText, + final Integer amortizationMethodValue, + final String amortizationMethodText, + final Integer numberOfRepayments, + final Integer repayEvery, + final Integer repaymentFrequencyValue, + final String repaymentFrequencyText, + final MoneyData arrearsTolerance, final DerivedLoanData derivedLoanData, + boolean waiveAllowed, final MoneyData interestRebateOwed) { + this.closed = closed; + this.open = open; + this.openWithRepaymentMade = openWithRepaymentMade; + this.externalId = externalId; + this.undoDisbursalAllowed = !openWithRepaymentMade; + this.interestRebateOutstanding = interestRebateOutstanding; + this.pendingApproval = pendingApproval; + this.waitingForDisbursal = waitingForDisbursal; + this.lifeCycleStatusText = lifeCycleStatusText; + this.id = id; + this.loanProductName = loanProductName; + this.closedOnDate = closedOnDate; + this.closedOnNote = closedOnNote; + this.submittedOnDate = submittedOnDate; + this.submittedOnNote = submittedOnNote; + this.approvedOnDate = approvedOnDate; + this.approvedOnNote = approvedOnNote; + this.expectedDisbursementDate = expectedDisbursementDate; + this.actualDisbursementDate = actualDisbursementDate; + this.disbursedOnNote = disbursedOnNote; + this.maturityDate = maturityDate; + this.principal = principal; + this.interestRatePerYear = interestRatePerYear; + + this.interestRatePerPeriod = interestRatePerPeriod; + this.interestPeriodFrequencyType = interestPeriodFrequencyType; + this.interestPeriodFrequencyText = interestPeriodFrequencyText; + this.interestMethodType = interestMethodType; + this.interestMethodText = interestMethodText; + this.amortizationMethodValue = amortizationMethodValue; + this.amortizationMethodText = amortizationMethodText; + this.numberOfRepayments = numberOfRepayments; + + this.repaymentFrequencyNumber = repayEvery; + this.repaymentFrequencyTypeEnumOrdinal = repaymentFrequencyValue; + this.repaymentFrequencyTypeText = repaymentFrequencyText; + this.waiveAllowed = waiveAllowed; + + this.interestRebateOwed = interestRebateOwed; + } + + public int getMaxSubmittedOnOffsetFromToday() { + return Days.daysBetween(new DateTime(), + this.getSubmittedOnDate().toDateMidnight().toDateTime()) + .getDays(); + } + + public int getMaxApprovedOnOffsetFromToday() { + return Days.daysBetween(new DateTime(), + this.getApprovedOnDate().toDateMidnight().toDateTime()) + .getDays(); + } + + public int getMaxDisbursedOnOffsetFromToday() { + + int offset = 0; + if (this.getActualDisbursementDate() != null) { + offset = Days.daysBetween(new DateTime(), + this.getActualDisbursementDate().toDateMidnight().toDateTime()) + .getDays(); + } + + return offset; + } + + public int getLoanTermInDays() { + + LocalDate dateToUse = getExpectedDisbursementDate(); + if (getActualDisbursementDate() != null) { + dateToUse = getActualDisbursementDate(); + } + + return Days.daysBetween(dateToUse.toDateMidnight().toDateTime(), this.getMaturityDate().toDateMidnight().toDateTime()).getDays(); + } + + public int getLoanTermInMonths() { + + LocalDate dateToUse = getExpectedDisbursementDate(); + if (getActualDisbursementDate() != null) { + dateToUse = getActualDisbursementDate(); + } + + return Months.monthsBetween(dateToUse.toDateMidnight().toDateTime(), this.getMaturityDate().toDateMidnight().toDateTime()).getMonths(); + } + + public boolean isOpen() { + return this.open; + } + + public void setOpen(final boolean open) { + this.open = open; + } + + public boolean isClosed() { + return this.closed; + } + + public void setClosed(final boolean closed) { + this.closed = closed; + } + + public boolean isInterestRebateOutstanding() { + return this.interestRebateOutstanding; + } + + public void setInterestRebateOutstanding( + final boolean interestRebateOutstanding) { + this.interestRebateOutstanding = interestRebateOutstanding; + } + + public boolean isPendingApproval() { + return this.pendingApproval; + } + + public void setPendingApproval(final boolean pendingApproval) { + this.pendingApproval = pendingApproval; + } + + public boolean isWaitingForDisbursal() { + return this.waitingForDisbursal; + } + + public void setWaitingForDisbursal(final boolean waitingForDisbursal) { + this.waitingForDisbursal = waitingForDisbursal; + } + + public LocalDate getClosedOnDate() { + return this.closedOnDate; + } + + public void setClosedOnDate(final LocalDate closedOnDate) { + this.closedOnDate = closedOnDate; + } + + public LocalDate getSubmittedOnDate() { + return this.submittedOnDate; + } + + public void setSubmittedOnDate(final LocalDate submittedOnDate) { + this.submittedOnDate = submittedOnDate; + } + + public Long getId() { + return this.id; + } + + public void setId(final Long id) { + this.id = id; + } + + public LocalDate getExpectedDisbursementDate() { + return this.expectedDisbursementDate; + } + + public void setExpectedDisbursementDate( + final LocalDate expectedDisbursementDate) { + this.expectedDisbursementDate = expectedDisbursementDate; + } + + public LocalDate getActualDisbursementDate() { + return this.actualDisbursementDate; + } + + public void setActualDisbursementDate(final LocalDate actualDisbursementDate) { + this.actualDisbursementDate = actualDisbursementDate; + } + + public MoneyData getPrincipal() { + return this.principal; + } + + public void setPrincipal(final MoneyData principal) { + this.principal = principal; + } + + public BigDecimal getInterestRatePerYear() { + return this.interestRatePerYear; + } + + public void setInterestRatePerYear(final BigDecimal interestRatePerYear) { + this.interestRatePerYear = interestRatePerYear; + } + + public String getSubmittedOnNote() { + return this.submittedOnNote; + } + + public void setSubmittedOnNote(final String submittedOnNote) { + this.submittedOnNote = submittedOnNote; + } + + public Integer getRepaymentFrequencyNumber() { + return this.repaymentFrequencyNumber; + } + + public void setRepaymentFrequencyNumber( + final Integer repaymentFrequencyNumber) { + this.repaymentFrequencyNumber = repaymentFrequencyNumber; + } + + public Integer getRepaymentFrequencyTypeEnumOrdinal() { + return this.repaymentFrequencyTypeEnumOrdinal; + } + + public void setRepaymentFrequencyTypeEnumOrdinal( + final Integer repaymentFrequencyTypeEnumOrdinal) { + this.repaymentFrequencyTypeEnumOrdinal = repaymentFrequencyTypeEnumOrdinal; + } + + public String getRepaymentFrequencyTypeText() { + return this.repaymentFrequencyTypeText; + } + + public void setRepaymentFrequencyTypeText( + final String repaymentFrequencyTypeText) { + this.repaymentFrequencyTypeText = repaymentFrequencyTypeText; + } + + public String getLoanProductName() { + return this.loanProductName; + } + + public void setLoanProductName(final String loanProductName) { + this.loanProductName = loanProductName; + } + + public LocalDate getApprovedOnDate() { + return this.approvedOnDate; + } + + public void setApprovedOnDate(final LocalDate approvedOnDate) { + this.approvedOnDate = approvedOnDate; + } + + public String getApprovedOnNote() { + return this.approvedOnNote; + } + + public void setApprovedOnNote(final String approvedOnNote) { + this.approvedOnNote = approvedOnNote; + } + + public String getDisbursedOnNote() { + return this.disbursedOnNote; + } + + public void setDisbursedOnNote(final String disbursedOnNote) { + this.disbursedOnNote = disbursedOnNote; + } + + public String getClosedOnNote() { + return this.closedOnNote; + } + + public void setClosedOnNote(final String closedOnNote) { + this.closedOnNote = closedOnNote; + } + + public MoneyData getInterestRebateOwed() { + return this.interestRebateOwed; + } + + public void setInterestRebateOwed(final MoneyData interestRebateOwed) { + this.interestRebateOwed = interestRebateOwed; + } + + public String getLifeCycleStatusText() { + return this.lifeCycleStatusText; + } + + public void setLifeCycleStatusText(final String lifeCycleStatusText) { + this.lifeCycleStatusText = lifeCycleStatusText; + } + + public LocalDate getMaturityDate() { + return this.maturityDate; + } + + public void setMaturityDate(final LocalDate maturityDate) { + this.maturityDate = maturityDate; + } + + public boolean isOpenWithRepaymentMade() { + return this.openWithRepaymentMade; + } + + public void setOpenWithRepaymentMade(final boolean openWithRepaymentMade) { + this.openWithRepaymentMade = openWithRepaymentMade; + } + + public boolean isUndoDisbursalAllowed() { + return this.undoDisbursalAllowed; + } + + public void setUndoDisbursalAllowed(final boolean undoDisbursalAllowed) { + this.undoDisbursalAllowed = undoDisbursalAllowed; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public BigDecimal getInterestRatePerPeriod() { + return interestRatePerPeriod; + } + + public void setInterestRatePerPeriod(BigDecimal interestRatePerPeriod) { + this.interestRatePerPeriod = interestRatePerPeriod; + } + + public Integer getInterestPeriodFrequencyType() { + return interestPeriodFrequencyType; + } + + public void setInterestPeriodFrequencyType(Integer interestPeriodFrequencyType) { + this.interestPeriodFrequencyType = interestPeriodFrequencyType; + } + + public String getInterestPeriodFrequencyText() { + return interestPeriodFrequencyText; + } + + public void setInterestPeriodFrequencyText(String interestPeriodFrequencyText) { + this.interestPeriodFrequencyText = interestPeriodFrequencyText; + } + + public Integer getInterestMethodType() { + return interestMethodType; + } + + public void setInterestMethodType(Integer interestMethodType) { + this.interestMethodType = interestMethodType; + } + + public String getInterestMethodText() { + return interestMethodText; + } + + public void setInterestMethodText(String interestMethodText) { + this.interestMethodText = interestMethodText; + } + + public Integer getAmortizationMethodValue() { + return amortizationMethodValue; + } + + public void setAmortizationMethodValue(Integer amortizationMethodValue) { + this.amortizationMethodValue = amortizationMethodValue; + } + + public String getAmortizationMethodText() { + return amortizationMethodText; + } + + public void setAmortizationMethodText(String amortizationMethodText) { + this.amortizationMethodText = amortizationMethodText; + } + + public Integer getNumberOfRepayments() { + return numberOfRepayments; + } + + public void setNumberOfRepayments(Integer numberOfRepayments) { + this.numberOfRepayments = numberOfRepayments; + } + + public boolean isWaiveAllowed() { + return waiveAllowed; + } + + public void setWaiveAllowed(boolean waiveAllowed) { + this.waiveAllowed = waiveAllowed; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/ClientData.java b/mifosng-data/src/main/java/org/mifosng/data/ClientData.java new file mode 100644 index 000000000..2b053bc7d --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/ClientData.java @@ -0,0 +1,143 @@ +package org.mifosng.data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.DateTime; +import org.joda.time.Days; +import org.joda.time.LocalDate; + +@XmlRootElement(name = "client") +public class ClientData implements Serializable { + + private Long organisationId; + private String organisationName; + private Long officeId; + private String officeName; + private Long id; + private String firstname; + private String lastname; + private String displayName; + private String externalId; + private LocalDate joinedDate; + + private List allowedOffices = new ArrayList(); + + public ClientData() { + // + } + + public ClientData(final Long organisationId, + final String organisationName, final Long officeId, + final String officeName, final Long id, final String firstname, + final String lastname, final String externalId, + final LocalDate joinedDate) { + this.organisationId = organisationId; + this.organisationName = organisationName; + this.officeId = officeId; + this.officeName = officeName; + this.id = id; + this.firstname = firstname; + this.lastname = lastname; + this.displayName = new StringBuilder(this.firstname).append(' ').append(this.lastname).toString(); + this.externalId = externalId; + this.joinedDate = joinedDate; + } + + public int getMaxJoinedOnOffsetFromToday() { + return Days.daysBetween(new DateTime(), + this.getJoinedDate().toDateMidnight().toDateTime()) + .getDays(); + } + + public Long getId() { + return this.id; + } + + public String getFirstname() { + return this.firstname; + } + + public String getLastname() { + return this.lastname; + } + + public String getExternalId() { + return this.externalId; + } + + public Long getOrganisationId() { + return this.organisationId; + } + + public String getOrganisationName() { + return this.organisationName; + } + + public Long getOfficeId() { + return this.officeId; + } + + public String getOfficeName() { + return this.officeName; + } + + public LocalDate getJoinedDate() { + return this.joinedDate; + } + + public void setOrganisationId(final Long organisationId) { + this.organisationId = organisationId; + } + + public void setOrganisationName(final String organisationName) { + this.organisationName = organisationName; + } + + public void setOfficeId(final Long officeId) { + this.officeId = officeId; + } + + public void setOfficeName(final String officeName) { + this.officeName = officeName; + } + + public void setId(final Long id) { + this.id = id; + } + + public void setFirstname(final String firstname) { + this.firstname = firstname; + } + + public void setLastname(final String lastname) { + this.lastname = lastname; + } + + public void setExternalId(final String externalId) { + this.externalId = externalId; + } + + public void setJoinedDate(final LocalDate joinedDate) { + this.joinedDate = joinedDate; + } + + public String getDisplayName() { + return this.displayName; + } + + public void setDisplayName(final String displayName) { + this.displayName = displayName; + } + + public List getAllowedOffices() { + return allowedOffices; + } + + public void setAllowedOffices(List allowedOffices) { + this.allowedOffices = allowedOffices; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/ClientDataWithAccountsData.java b/mifosng-data/src/main/java/org/mifosng/data/ClientDataWithAccountsData.java new file mode 100644 index 000000000..27db88b10 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/ClientDataWithAccountsData.java @@ -0,0 +1,96 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ClientDataWithAccountsData { + + private ClientData clientInfo; + private List pendingApprovalLoans = new ArrayList(); + private List awaitingDisbursalLoans = new ArrayList(); + private List openLoans = new ArrayList(); + private List closedLoans = new ArrayList(); + + public ClientDataWithAccountsData() { + // + } + + public ClientDataWithAccountsData(final ClientData clientInfo, + final List pendingApprovalLoans, + final List awaitingDisbursalLoans, + final List openLoans, + final List closedLoans) { + this.clientInfo = clientInfo; + this.pendingApprovalLoans = pendingApprovalLoans; + this.awaitingDisbursalLoans = awaitingDisbursalLoans; + this.openLoans = openLoans; + this.closedLoans = closedLoans; + } + + public Integer getAnyLoanCount() { + return getPendingApprovalLoanCount() + getAwaitingDisbursalLoanCount() + + getActiveLoanCount() + getClosedLoanCount(); + } + + public Integer getPendingApprovalLoanCount() { + return this.pendingApprovalLoans.size(); + } + + public Integer getAwaitingDisbursalLoanCount() { + return this.awaitingDisbursalLoans.size(); + } + + public Integer getActiveLoanCount() { + return this.openLoans.size(); + } + + public Integer getClosedLoanCount() { + return this.closedLoans.size(); + } + + public ClientData getClientInfo() { + return this.clientInfo; + } + + public void setClientInfo(final ClientData clientInfo) { + this.clientInfo = clientInfo; + } + + public List getPendingApprovalLoans() { + return this.pendingApprovalLoans; + } + + public void setPendingApprovalLoans( + final List pendingApprovalLoans) { + this.pendingApprovalLoans = pendingApprovalLoans; + } + + public List getAwaitingDisbursalLoans() { + return this.awaitingDisbursalLoans; + } + + public void setAwaitingDisbursalLoans( + final List awaitingDisbursalLoans) { + this.awaitingDisbursalLoans = awaitingDisbursalLoans; + } + + public List getOpenLoans() { + return this.openLoans; + } + + public void setOpenLoans(final List openLoans) { + this.openLoans = openLoans; + } + + public List getClosedLoans() { + return this.closedLoans; + } + + public void setClosedLoans(final List closedLoans) { + this.closedLoans = closedLoans; + } + +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/ClientList.java b/mifosng-data/src/main/java/org/mifosng/data/ClientList.java new file mode 100644 index 000000000..f408a9c7c --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/ClientList.java @@ -0,0 +1,28 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ClientList { + + private Collection clients = new ArrayList(); + + protected ClientList() { + // + } + + public ClientList(final Collection clients) { + this.clients = clients; + } + + public Collection getClients() { + return this.clients; + } + + public void setClients(final Collection clients) { + this.clients = clients; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/ConfigurationData.java b/mifosng-data/src/main/java/org/mifosng/data/ConfigurationData.java new file mode 100644 index 000000000..1aa2f35dd --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/ConfigurationData.java @@ -0,0 +1,36 @@ +package org.mifosng.data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "configuration") +public class ConfigurationData implements Serializable { + + private List selectedCurrencyOptions = new ArrayList(); + private List currencyOptions = new ArrayList(); + + public ConfigurationData() { + // + } + + public List getSelectedCurrencyOptions() { + return selectedCurrencyOptions; + } + + public void setSelectedCurrencyOptions( + List selectedCurrencyOptions) { + this.selectedCurrencyOptions = selectedCurrencyOptions; + } + + public List getCurrencyOptions() { + return currencyOptions; + } + + public void setCurrencyOptions(List currencyOptions) { + this.currencyOptions = currencyOptions; + } + +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/CurrencyData.java b/mifosng-data/src/main/java/org/mifosng/data/CurrencyData.java new file mode 100644 index 000000000..96b524328 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/CurrencyData.java @@ -0,0 +1,91 @@ +package org.mifosng.data; + +import java.io.Serializable; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "currency") +public class CurrencyData implements Serializable { + + private String code; + private String name; + private int decimalPlaces; + private String displaySymbol; + private String nameCode; + + public CurrencyData() { + // + } + + public CurrencyData(final String code, final String name, final int decimalPlaces, String displaySymbol, String nameCode) { + this.code = code; + this.name = name; + this.decimalPlaces = decimalPlaces; + this.displaySymbol = displaySymbol; + this.nameCode = nameCode; + } + + @Override + public boolean equals(Object obj) { + CurrencyData currencyData = (CurrencyData) obj; + return currencyData.code.equals(this.code); + } + + @Override + public int hashCode() { + return this.code.hashCode(); + } + + public String getDisplayLabel() { + + StringBuilder builder = new StringBuilder(this.name).append(' '); + + if (this.displaySymbol != null && !"".equalsIgnoreCase(displaySymbol.trim())) { + builder.append('(').append(this.displaySymbol).append(')'); + } else { + builder.append('[').append(this.code).append(']'); + } + + return builder.toString(); + } + + public String getName() { + return this.name; + } + + public String getCode() { + return this.code; + } + + public int getDecimalPlaces() { + return this.decimalPlaces; + } + + public void setCode(final String code) { + this.code = code; + } + + public void setName(final String name) { + this.name = name; + } + + public void setDecimalPlaces(final int decimalPlaces) { + this.decimalPlaces = decimalPlaces; + } + + public String getDisplaySymbol() { + return displaySymbol; + } + + public void setDisplaySymbol(String displaySymbol) { + this.displaySymbol = displaySymbol; + } + + public String getNameCode() { + return nameCode; + } + + public void setNameCode(String nameCode) { + this.nameCode = nameCode; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/CurrencyList.java b/mifosng-data/src/main/java/org/mifosng/data/CurrencyList.java new file mode 100644 index 000000000..96304a9a1 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/CurrencyList.java @@ -0,0 +1,29 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class CurrencyList { + + private Collection currencies = new ArrayList(); + + protected CurrencyList() { + // + } + + public CurrencyList(final List currencyOptions) { + this.currencies = currencyOptions; + } + + public Collection getCurrencies() { + return this.currencies; + } + + public void setCurrencies(final Collection currencies) { + this.currencies = currencies; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/DerivedLoanData.java b/mifosng-data/src/main/java/org/mifosng/data/DerivedLoanData.java new file mode 100644 index 000000000..efe35b4a2 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/DerivedLoanData.java @@ -0,0 +1,47 @@ +package org.mifosng.data; + +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class DerivedLoanData { + + private LoanRepaymentScheduleData repaymentSchedule; + private LoanAccountSummaryData summary; + private List loanRepayments; + + public DerivedLoanData() { + // + } + + public DerivedLoanData(LoanRepaymentScheduleData repaymentScheduleData, LoanAccountSummaryData summaryData, List loanRepayments) { + this.repaymentSchedule = repaymentScheduleData; + this.summary = summaryData; + this.loanRepayments = loanRepayments; + } + + public LoanRepaymentScheduleData getRepaymentSchedule() { + return repaymentSchedule; + } + + public void setRepaymentSchedule(LoanRepaymentScheduleData repaymentSchedule) { + this.repaymentSchedule = repaymentSchedule; + } + + public LoanAccountSummaryData getSummary() { + return summary; + } + + public void setSummary(LoanAccountSummaryData summary) { + this.summary = summary; + } + + public List getLoanRepayments() { + return loanRepayments; + } + + public void setLoanRepayments(List loanRepayments) { + this.loanRepayments = loanRepayments; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/EntityIdentifier.java b/mifosng-data/src/main/java/org/mifosng/data/EntityIdentifier.java new file mode 100644 index 000000000..161ba75a1 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/EntityIdentifier.java @@ -0,0 +1,25 @@ +package org.mifosng.data; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "identifier") +public class EntityIdentifier { + + private Long entityId; + + public EntityIdentifier() { + // + } + + public EntityIdentifier(final Long entityId) { + this.entityId = entityId; + } + + public Long getEntityId() { + return this.entityId; + } + + public void setEntityId(final Long entityId) { + this.entityId = entityId; + } +} diff --git a/mifosng-data/src/main/java/org/mifosng/data/EnumOptionList.java b/mifosng-data/src/main/java/org/mifosng/data/EnumOptionList.java new file mode 100644 index 000000000..764ad9be4 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/EnumOptionList.java @@ -0,0 +1,29 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class EnumOptionList { + + private Collection options = new ArrayList(); + + protected EnumOptionList() { + // + } + + public EnumOptionList(final List options) { + this.options = options; + } + + public Collection getOptions() { + return this.options; + } + + public void setOptions(final Collection options) { + this.options = options; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/EnumOptionReadModel.java b/mifosng-data/src/main/java/org/mifosng/data/EnumOptionReadModel.java new file mode 100644 index 000000000..00ba7d7da --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/EnumOptionReadModel.java @@ -0,0 +1,37 @@ +package org.mifosng.data; + +import java.io.Serializable; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "option") +public class EnumOptionReadModel implements Serializable { + + private Long id; + private String value; + + public EnumOptionReadModel() { + // + } + + public EnumOptionReadModel(final String value, final Long id) { + this.value = value; + this.id = id; + } + + public Long getId() { + return this.id; + } + + public void setId(final Long id) { + this.id = id; + } + + public String getValue() { + return this.value; + } + + public void setValue(final String value) { + this.value = value; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/ErrorResponse.java b/mifosng-data/src/main/java/org/mifosng/data/ErrorResponse.java new file mode 100644 index 000000000..df7c7de94 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/ErrorResponse.java @@ -0,0 +1,63 @@ +package org.mifosng.data; + +import javax.xml.bind.annotation.XmlRootElement; + +/* + * TODO - Arguments is still not correctly supported + */ +@XmlRootElement(name="errorResponse") +public class ErrorResponse { + + private String code; + private String field; + private String value; + private Object[] args; + + public ErrorResponse() { + // + } + + public ErrorResponse(final String code, final String field, final String value) { + this.code = code; + this.field = field; + this.value = value; + } + + public ErrorResponse(final String code, final String field, final Object... args) { + this.code = code; + this.field = field; + this.args = args; + } + + public String getCode() { + return this.code; + } + + public void setCode(final String code) { + this.code = code; + } + + public String getField() { + return this.field; + } + + public void setField(final String field) { + this.field = field; + } + + public String getValue() { + return this.value; + } + + public void setValue(final String value) { + this.value = value; + } + + public Object[] getArgs() { + return args; + } + + public void setArgs(Object[] args) { + this.args = args; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/ErrorResponseList.java b/mifosng-data/src/main/java/org/mifosng/data/ErrorResponseList.java new file mode 100644 index 000000000..c6d8e6c31 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/ErrorResponseList.java @@ -0,0 +1,32 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ErrorResponseList { + + private List errors = new ArrayList(); + + public ErrorResponseList() { + // + } + + public ErrorResponseList(final List errors) { + this.errors = errors; + } + + @XmlElementWrapper(name="errors") + @XmlElement(name="errorResponse") + public List getErrors() { + return errors; + } + + public void setErrors(List errors) { + this.errors = errors; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/ExtraDatasets.java b/mifosng-data/src/main/java/org/mifosng/data/ExtraDatasets.java new file mode 100644 index 000000000..250176615 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/ExtraDatasets.java @@ -0,0 +1,29 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ExtraDatasets { + + private List names = new ArrayList(); + + protected ExtraDatasets() { + // + } + + public ExtraDatasets(final List names) { + this.names = names; + } + + public List getNames() { + return names; + } + + public void setNames(List names) { + this.names = names; + } + +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanAccountData.java b/mifosng-data/src/main/java/org/mifosng/data/LoanAccountData.java new file mode 100644 index 000000000..631a21c81 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/LoanAccountData.java @@ -0,0 +1,590 @@ +package org.mifosng.data; + +import java.math.BigDecimal; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.DateTime; +import org.joda.time.Days; +import org.joda.time.LocalDate; +import org.joda.time.Months; + +@XmlRootElement(name = "loan") +public class LoanAccountData { + + private boolean open; + private boolean openWithRepaymentMade; + private boolean closed; + private boolean interestRebateOutstanding; + private boolean pendingApproval; + private boolean waitingForDisbursal; + private String lifeCycleStatusText; + private LocalDate lifeCycleStatusDate; + + private Long id; + private String externalId; + private String loanProductName; + + private LocalDate submittedOnDate; + private LocalDate approvedOnDate; + + private LocalDate expectedDisbursementDate; + private LocalDate actualDisbursementDate; + private boolean undoDisbursalAllowed; + + private LocalDate expectedFirstRepaymentOnDate; + private LocalDate interestCalculatedFromDate; + + private LocalDate closedOnDate; + + private LocalDate expectedMaturityDate; + + private MoneyData principal; + private BigDecimal interestRatePerYear; + private BigDecimal interestRatePerPeriod; + private Integer interestPeriodFrequencyType; + private String interestPeriodFrequencyText; + private Integer interestMethodType; + private String interestMethodText; + private Integer amortizationMethodValue; + private String amortizationMethodText; + private Integer numberOfRepayments; + + private Integer repaymentFrequencyNumber; + private Integer repaymentFrequencyTypeEnumOrdinal; + private String repaymentFrequencyTypeText; + + private MoneyData interestRebateOwed; + + private DerivedLoanData loanData; + private MoneyData arrearsTolerance; + + // permissions on actions against loan based on the user who request loan data. + private boolean waiveAllowed; + private boolean makeRepaymentAllowed; + private boolean rejectAllowed; + private boolean withdrawnByApplicantAllowed; + private boolean undoApprovalAllowed; + private boolean disbursalAllowed; + + public LoanAccountData() { + // + } + + public LoanAccountData( + final boolean closed, + final boolean open, + final boolean openWithRepaymentMade, + final boolean interestRebateOutstanding, + final boolean pendingApproval, + final boolean waitingForDisbursal, + final boolean undoDisbursalAllowed, + final boolean makeRepaymentAllowed, + final boolean rejectAllowed, + final boolean withdrawnByApplicantAllowed, final boolean undoApprovalAllowed, final boolean disbursalAllowed, + final String lifeCycleStatusText, + final LocalDate lifeCycleStatusDate, + final Long id, String externalId, + final String loanProductName, final LocalDate closedOnDate, + final LocalDate submittedOnDate, + final LocalDate approvedOnDate, + final LocalDate expectedDisbursementDate, + final LocalDate actualDisbursementDate, + final LocalDate expectedMaturityDate, + final LocalDate expectedFirstRepaymentOnDate, + final LocalDate interestCalculatedFromDate, + final MoneyData principal, final BigDecimal interestRatePerYear, + final BigDecimal interestRatePerPeriod, + final Integer interestPeriodFrequencyType, + final String interestPeriodFrequencyText, + final Integer interestMethodType, + final String interestMethodText, + final Integer amortizationMethodValue, + final String amortizationMethodText, + final Integer numberOfRepayments, + final Integer repayEvery, + final Integer repaymentFrequencyValue, + final String repaymentFrequencyText, + final MoneyData arrearsTolerance, final DerivedLoanData derivedLoanData, + boolean waiveAllowed, final MoneyData interestRebateOwed) { + this.closed = closed; + this.open = open; + this.openWithRepaymentMade = openWithRepaymentMade; + this.makeRepaymentAllowed = makeRepaymentAllowed; + this.rejectAllowed = rejectAllowed; + this.withdrawnByApplicantAllowed = withdrawnByApplicantAllowed; + this.undoApprovalAllowed = undoApprovalAllowed; + this.disbursalAllowed = disbursalAllowed; + this.lifeCycleStatusDate = lifeCycleStatusDate; + this.externalId = externalId; + this.undoDisbursalAllowed = undoDisbursalAllowed; + this.interestRebateOutstanding = interestRebateOutstanding; + this.pendingApproval = pendingApproval; + this.waitingForDisbursal = waitingForDisbursal; + this.lifeCycleStatusText = lifeCycleStatusText; + this.id = id; + this.loanProductName = loanProductName; + this.closedOnDate = closedOnDate; + this.submittedOnDate = submittedOnDate; + this.approvedOnDate = approvedOnDate; + this.expectedDisbursementDate = expectedDisbursementDate; + this.actualDisbursementDate = actualDisbursementDate; + this.expectedMaturityDate = expectedMaturityDate; + this.expectedFirstRepaymentOnDate = expectedFirstRepaymentOnDate; + this.interestCalculatedFromDate = interestCalculatedFromDate; + this.principal = principal; + this.interestRatePerYear = interestRatePerYear; + + this.interestRatePerPeriod = interestRatePerPeriod; + this.interestPeriodFrequencyType = interestPeriodFrequencyType; + this.interestPeriodFrequencyText = interestPeriodFrequencyText; + this.interestMethodType = interestMethodType; + this.interestMethodText = interestMethodText; + this.amortizationMethodValue = amortizationMethodValue; + this.amortizationMethodText = amortizationMethodText; + this.numberOfRepayments = numberOfRepayments; + + this.repaymentFrequencyNumber = repayEvery; + this.repaymentFrequencyTypeEnumOrdinal = repaymentFrequencyValue; + this.repaymentFrequencyTypeText = repaymentFrequencyText; + this.arrearsTolerance = arrearsTolerance; + this.waiveAllowed = waiveAllowed; + + this.loanData = derivedLoanData; + this.interestRebateOwed = interestRebateOwed; + } + + public boolean isAnyActionOnLoanAllowed() { + return isRejectAllowed() || isWithdrawnByApplicantAllowed() || isPendingApproval() || isUndoDisbursalAllowed() || isMakeRepaymentAllowed(); + } + + public int getMaxSubmittedOnOffsetFromToday() { + return Days.daysBetween(new DateTime(), + this.getSubmittedOnDate().toDateMidnight().toDateTime()) + .getDays(); + } + + public int getMaxApprovedOnOffsetFromToday() { + + int offset = 0; + if (this.getApprovedOnDate() != null) { + offset = Days.daysBetween(new DateTime(), + this.getApprovedOnDate().toDateMidnight().toDateTime()) + .getDays(); + } + + return offset; + } + + public int getMaxDisbursedOnOffsetFromToday() { + + int offset = 0; + if (this.getActualDisbursementDate() != null) { + offset = Days.daysBetween(new DateTime(), + this.getActualDisbursementDate().toDateMidnight().toDateTime()) + .getDays(); + } + + return offset; + } + + public int getActualLoanTermInDays() { + + LocalDate dateToUse = getExpectedDisbursementDate(); + if (getActualDisbursementDate() != null) { + dateToUse = getActualDisbursementDate(); + } + + LocalDate closingDateToUse = getExpectedMaturityDate(); + if (getClosedOnDate() != null) { + closingDateToUse = getClosedOnDate(); + } + + return Days.daysBetween(dateToUse.toDateMidnight().toDateTime(), closingDateToUse.toDateMidnight().toDateTime()).getDays(); + } + + public int getActualLoanTermInMonths() { + + LocalDate dateToUse = getExpectedDisbursementDate(); + if (getActualDisbursementDate() != null) { + dateToUse = getActualDisbursementDate(); + } + + LocalDate closingDateToUse = getExpectedMaturityDate(); + if (getClosedOnDate() != null) { + closingDateToUse = getClosedOnDate(); + } + + return Months.monthsBetween(dateToUse.toDateMidnight().toDateTime(), closingDateToUse.toDateMidnight().toDateTime()).getMonths(); + } + + public int getLoanTermInDays() { + + LocalDate dateToUse = getExpectedDisbursementDate(); + if (getActualDisbursementDate() != null) { + dateToUse = getActualDisbursementDate(); + } + + LocalDate closingDateToUse = getExpectedMaturityDate(); + + return Days.daysBetween(dateToUse.toDateMidnight().toDateTime(), closingDateToUse.toDateMidnight().toDateTime()).getDays(); + } + + public int getLoanTermInMonths() { + + LocalDate dateToUse = getExpectedDisbursementDate(); + if (getActualDisbursementDate() != null) { + dateToUse = getActualDisbursementDate(); + } + + LocalDate closingDateToUse = getExpectedMaturityDate(); + + return Months.monthsBetween(dateToUse.toDateMidnight().toDateTime(), closingDateToUse.toDateMidnight().toDateTime()).getMonths(); + } + + public boolean isOpen() { + return this.open; + } + + public void setOpen(final boolean open) { + this.open = open; + } + + public boolean isClosed() { + return this.closed; + } + + public void setClosed(final boolean closed) { + this.closed = closed; + } + + public boolean isInterestRebateOutstanding() { + return this.interestRebateOutstanding; + } + + public void setInterestRebateOutstanding( + final boolean interestRebateOutstanding) { + this.interestRebateOutstanding = interestRebateOutstanding; + } + + public boolean isPendingApproval() { + return this.pendingApproval; + } + + public void setPendingApproval(final boolean pendingApproval) { + this.pendingApproval = pendingApproval; + } + + public boolean isWaitingForDisbursal() { + return this.waitingForDisbursal; + } + + public void setWaitingForDisbursal(final boolean waitingForDisbursal) { + this.waitingForDisbursal = waitingForDisbursal; + } + + public LocalDate getClosedOnDate() { + return this.closedOnDate; + } + + public void setClosedOnDate(final LocalDate closedOnDate) { + this.closedOnDate = closedOnDate; + } + + public LocalDate getSubmittedOnDate() { + return this.submittedOnDate; + } + + public void setSubmittedOnDate(final LocalDate submittedOnDate) { + this.submittedOnDate = submittedOnDate; + } + + public Long getId() { + return this.id; + } + + public void setId(final Long id) { + this.id = id; + } + + public LocalDate getExpectedDisbursementDate() { + return this.expectedDisbursementDate; + } + + public void setExpectedDisbursementDate( + final LocalDate expectedDisbursementDate) { + this.expectedDisbursementDate = expectedDisbursementDate; + } + + public LocalDate getActualDisbursementDate() { + return this.actualDisbursementDate; + } + + public void setActualDisbursementDate(final LocalDate actualDisbursementDate) { + this.actualDisbursementDate = actualDisbursementDate; + } + + public MoneyData getPrincipal() { + return this.principal; + } + + public void setPrincipal(final MoneyData principal) { + this.principal = principal; + } + + public BigDecimal getInterestRatePerYear() { + return this.interestRatePerYear; + } + + public void setInterestRatePerYear(final BigDecimal interestRatePerYear) { + this.interestRatePerYear = interestRatePerYear; + } + + public Integer getRepaymentFrequencyNumber() { + return this.repaymentFrequencyNumber; + } + + public void setRepaymentFrequencyNumber( + final Integer repaymentFrequencyNumber) { + this.repaymentFrequencyNumber = repaymentFrequencyNumber; + } + + public Integer getRepaymentFrequencyTypeEnumOrdinal() { + return this.repaymentFrequencyTypeEnumOrdinal; + } + + public void setRepaymentFrequencyTypeEnumOrdinal( + final Integer repaymentFrequencyTypeEnumOrdinal) { + this.repaymentFrequencyTypeEnumOrdinal = repaymentFrequencyTypeEnumOrdinal; + } + + public String getRepaymentFrequencyTypeText() { + return this.repaymentFrequencyTypeText; + } + + public void setRepaymentFrequencyTypeText( + final String repaymentFrequencyTypeText) { + this.repaymentFrequencyTypeText = repaymentFrequencyTypeText; + } + + public String getLoanProductName() { + return this.loanProductName; + } + + public void setLoanProductName(final String loanProductName) { + this.loanProductName = loanProductName; + } + + public LocalDate getApprovedOnDate() { + return this.approvedOnDate; + } + + public void setApprovedOnDate(final LocalDate approvedOnDate) { + this.approvedOnDate = approvedOnDate; + } + + public MoneyData getInterestRebateOwed() { + return this.interestRebateOwed; + } + + public void setInterestRebateOwed(final MoneyData interestRebateOwed) { + this.interestRebateOwed = interestRebateOwed; + } + + public String getLifeCycleStatusText() { + return this.lifeCycleStatusText; + } + + public void setLifeCycleStatusText(final String lifeCycleStatusText) { + this.lifeCycleStatusText = lifeCycleStatusText; + } + + public LocalDate getExpectedMaturityDate() { + return this.expectedMaturityDate; + } + + public void setMaturityDate(final LocalDate maturityDate) { + this.expectedMaturityDate = maturityDate; + } + + public boolean isOpenWithRepaymentMade() { + return this.openWithRepaymentMade; + } + + public void setOpenWithRepaymentMade(final boolean openWithRepaymentMade) { + this.openWithRepaymentMade = openWithRepaymentMade; + } + + public boolean isUndoDisbursalAllowed() { + return this.undoDisbursalAllowed; + } + + public void setUndoDisbursalAllowed(final boolean undoDisbursalAllowed) { + this.undoDisbursalAllowed = undoDisbursalAllowed; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public BigDecimal getInterestRatePerPeriod() { + return interestRatePerPeriod; + } + + public void setInterestRatePerPeriod(BigDecimal interestRatePerPeriod) { + this.interestRatePerPeriod = interestRatePerPeriod; + } + + public Integer getInterestPeriodFrequencyType() { + return interestPeriodFrequencyType; + } + + public void setInterestPeriodFrequencyType(Integer interestPeriodFrequencyType) { + this.interestPeriodFrequencyType = interestPeriodFrequencyType; + } + + public String getInterestPeriodFrequencyText() { + return interestPeriodFrequencyText; + } + + public void setInterestPeriodFrequencyText(String interestPeriodFrequencyText) { + this.interestPeriodFrequencyText = interestPeriodFrequencyText; + } + + public Integer getInterestMethodType() { + return interestMethodType; + } + + public void setInterestMethodType(Integer interestMethodType) { + this.interestMethodType = interestMethodType; + } + + public String getInterestMethodText() { + return interestMethodText; + } + + public void setInterestMethodText(String interestMethodText) { + this.interestMethodText = interestMethodText; + } + + public Integer getAmortizationMethodValue() { + return amortizationMethodValue; + } + + public void setAmortizationMethodValue(Integer amortizationMethodValue) { + this.amortizationMethodValue = amortizationMethodValue; + } + + public String getAmortizationMethodText() { + return amortizationMethodText; + } + + public void setAmortizationMethodText(String amortizationMethodText) { + this.amortizationMethodText = amortizationMethodText; + } + + public Integer getNumberOfRepayments() { + return numberOfRepayments; + } + + public void setNumberOfRepayments(Integer numberOfRepayments) { + this.numberOfRepayments = numberOfRepayments; + } + + public DerivedLoanData getLoanData() { + return loanData; + } + + public void setLoanData(DerivedLoanData loanData) { + this.loanData = loanData; + } + + public MoneyData getArrearsTolerance() { + return arrearsTolerance; + } + + public void setArrearsTolerance(MoneyData arrearsTolerance) { + this.arrearsTolerance = arrearsTolerance; + } + + public boolean isWaiveAllowed() { + return waiveAllowed; + } + + public void setWaiveAllowed(boolean waiveAllowed) { + this.waiveAllowed = waiveAllowed; + } + + public boolean isMakeRepaymentAllowed() { + return makeRepaymentAllowed; + } + + public void setMakeRepaymentAllowed(boolean makeRepaymentAllowed) { + this.makeRepaymentAllowed = makeRepaymentAllowed; + } + + public LocalDate getLifeCycleStatusDate() { + return lifeCycleStatusDate; + } + + public void setLifeCycleStatusDate(LocalDate lifeCycleStatusDate) { + this.lifeCycleStatusDate = lifeCycleStatusDate; + } + + public boolean isRejectAllowed() { + return rejectAllowed; + } + + public void setRejectAllowed(boolean rejectAllowed) { + this.rejectAllowed = rejectAllowed; + } + + public boolean isWithdrawnByApplicantAllowed() { + return withdrawnByApplicantAllowed; + } + + public void setWithdrawnByApplicantAllowed(boolean withdrawnByApplicantAllowed) { + this.withdrawnByApplicantAllowed = withdrawnByApplicantAllowed; + } + + public boolean isUndoApprovalAllowed() { + return undoApprovalAllowed; + } + + public void setUndoApprovalAllowed(boolean undoApprovalAllowed) { + this.undoApprovalAllowed = undoApprovalAllowed; + } + + public boolean isDisbursalAllowed() { + return disbursalAllowed; + } + + public void setDisbursalAllowed(boolean disbursalAllowed) { + this.disbursalAllowed = disbursalAllowed; + } + + public LocalDate getExpectedFirstRepaymentOnDate() { + return expectedFirstRepaymentOnDate; + } + + public void setExpectedFirstRepaymentOnDate( + LocalDate expectedFirstRepaymentOnDate) { + this.expectedFirstRepaymentOnDate = expectedFirstRepaymentOnDate; + } + + public LocalDate getInterestCalculatedFromDate() { + return interestCalculatedFromDate; + } + + public void setInterestCalculatedFromDate(LocalDate interestCalculatedFromDate) { + this.interestCalculatedFromDate = interestCalculatedFromDate; + } + + public void setExpectedMaturityDate(LocalDate expectedMaturityDate) { + this.expectedMaturityDate = expectedMaturityDate; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanAccountSummaryData.java b/mifosng-data/src/main/java/org/mifosng/data/LoanAccountSummaryData.java new file mode 100644 index 000000000..1021c6ca6 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/LoanAccountSummaryData.java @@ -0,0 +1,133 @@ +package org.mifosng.data; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class LoanAccountSummaryData { + + private MoneyData originalPrincipal; + private MoneyData originalInterest; + private MoneyData originalTotal; + private MoneyData principalPaid; + private MoneyData principalOutstanding; + private MoneyData interestPaid; + private MoneyData interestOutstanding; + private MoneyData totalPaid; + private MoneyData totalOutstanding; + private MoneyData totalInArrears; + private MoneyData totalWaived; + + protected LoanAccountSummaryData() { + // + } + + public LoanAccountSummaryData(MoneyData originalPrincipal, + MoneyData principalPaid, MoneyData principalOutstanding, + MoneyData originalInterest, MoneyData interestPaid, + MoneyData interestOutstanding, MoneyData originalTotal, + MoneyData totalPaid, MoneyData totalOutstanding, MoneyData totalInArrears, MoneyData totalWaived) { + this.originalPrincipal = originalPrincipal; + this.principalPaid = principalPaid; + this.principalOutstanding = principalOutstanding; + this.originalInterest = originalInterest; + this.interestPaid = interestPaid; + this.interestOutstanding = interestOutstanding; + this.originalTotal = originalTotal; + this.totalPaid = totalPaid; + this.totalOutstanding = totalOutstanding; + this.totalInArrears = totalInArrears; + this.totalWaived = totalWaived; + } + + public boolean isWaiveAllowed(MoneyData tolerance) { + return tolerance.isGreaterThan(this.totalOutstanding) || tolerance.isEqualTo(this.totalOutstanding); + } + + public MoneyData getOriginalPrincipal() { + return originalPrincipal; + } + + public void setOriginalPrincipal(MoneyData originalPrincipal) { + this.originalPrincipal = originalPrincipal; + } + + public MoneyData getOriginalInterest() { + return originalInterest; + } + + public void setOriginalInterest(MoneyData originalInterest) { + this.originalInterest = originalInterest; + } + + public MoneyData getOriginalTotal() { + return originalTotal; + } + + public void setOriginalTotal(MoneyData originalTotal) { + this.originalTotal = originalTotal; + } + + public MoneyData getPrincipalPaid() { + return principalPaid; + } + + public void setPrincipalPaid(MoneyData principalPaid) { + this.principalPaid = principalPaid; + } + + public MoneyData getPrincipalOutstanding() { + return principalOutstanding; + } + + public void setPrincipalOutstanding(MoneyData principalOutstanding) { + this.principalOutstanding = principalOutstanding; + } + + public MoneyData getInterestPaid() { + return interestPaid; + } + + public void setInterestPaid(MoneyData interestPaid) { + this.interestPaid = interestPaid; + } + + public MoneyData getInterestOutstanding() { + return interestOutstanding; + } + + public void setInterestOutstanding(MoneyData interestOutstanding) { + this.interestOutstanding = interestOutstanding; + } + + public MoneyData getTotalPaid() { + return totalPaid; + } + + public void setTotalPaid(MoneyData totalPaid) { + this.totalPaid = totalPaid; + } + + public MoneyData getTotalOutstanding() { + return totalOutstanding; + } + + public void setTotalOutstanding(MoneyData totalOutstanding) { + this.totalOutstanding = totalOutstanding; + } + + public MoneyData getTotalInArrears() { + return totalInArrears; + } + + public void setTotalInArrears(MoneyData totalInArrears) { + this.totalInArrears = totalInArrears; + } + + public MoneyData getTotalWaived() { + return totalWaived; + } + + public void setTotalWaived(MoneyData totalWaived) { + this.totalWaived = totalWaived; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanPayoffReadModel.java b/mifosng-data/src/main/java/org/mifosng/data/LoanPayoffReadModel.java new file mode 100644 index 000000000..537ce016c --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/LoanPayoffReadModel.java @@ -0,0 +1,135 @@ +package org.mifosng.data; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; +import org.joda.time.format.DateTimeFormatter; + +@XmlRootElement +public class LoanPayoffReadModel { + + private String reference; + private String acutalDisbursementDate; + private String expectedMaturityDate; + private String projectedMaturityDate; + private Integer expectedLoanTermInDays; + private Integer projectedLoanTermInDays; + private MoneyData totalPaidToDate; + private MoneyData totalOutstandingBasedOnExpectedMaturityDate; + private MoneyData totalOutstandingBasedOnPayoffDate; + private MoneyData interestRebateOwed; + + protected LoanPayoffReadModel() { + // + } + + public LoanPayoffReadModel( + final String reference, + final LocalDate acutalDisbursementDate, + final LocalDate expectedMaturityDate, + final LocalDate projectedMaturityDate, + final Integer expectedLoanTermInDays, + final Integer projectedLoanTermInDays, + final MoneyData totalPaidToDate, + final MoneyData totalOutstandingBasedOnExpectedMaturityDate, + final MoneyData totalOutstandingBasedOnPayoffDate, + final MoneyData interestRebateOwed) { + + this.reference = reference; + + DateTimeFormatter formatter = org.joda.time.format.DateTimeFormat + .forPattern("yyyy-MM-dd"); + this.acutalDisbursementDate = formatter.print(acutalDisbursementDate); + this.expectedMaturityDate = formatter.print(expectedMaturityDate); + this.projectedMaturityDate = formatter.print(projectedMaturityDate); + this.expectedLoanTermInDays = expectedLoanTermInDays; + this.projectedLoanTermInDays = projectedLoanTermInDays; + + this.totalPaidToDate = totalPaidToDate; + this.totalOutstandingBasedOnExpectedMaturityDate = totalOutstandingBasedOnExpectedMaturityDate; + this.totalOutstandingBasedOnPayoffDate = totalOutstandingBasedOnPayoffDate; + this.interestRebateOwed = interestRebateOwed; + } + + public String getReference() { + return this.reference; + } + + public void setReference(final String reference) { + this.reference = reference; + } + + public String getAcutalDisbursementDate() { + return this.acutalDisbursementDate; + } + + public void setAcutalDisbursementDate(final String acutalDisbursementDate) { + this.acutalDisbursementDate = acutalDisbursementDate; + } + + public String getExpectedMaturityDate() { + return this.expectedMaturityDate; + } + + public void setExpectedMaturityDate(final String expectedMaturityDate) { + this.expectedMaturityDate = expectedMaturityDate; + } + + public String getProjectedMaturityDate() { + return this.projectedMaturityDate; + } + + public void setProjectedMaturityDate(final String projectedMaturityDate) { + this.projectedMaturityDate = projectedMaturityDate; + } + + public Integer getExpectedLoanTermInDays() { + return this.expectedLoanTermInDays; + } + + public void setExpectedLoanTermInDays(final Integer expectedLoanTermInDays) { + this.expectedLoanTermInDays = expectedLoanTermInDays; + } + + public Integer getProjectedLoanTermInDays() { + return this.projectedLoanTermInDays; + } + + public void setProjectedLoanTermInDays(final Integer projectedLoanTermInDays) { + this.projectedLoanTermInDays = projectedLoanTermInDays; + } + + public MoneyData getTotalPaidToDate() { + return this.totalPaidToDate; + } + + public void setTotalPaidToDate(final MoneyData totalPaidToDate) { + this.totalPaidToDate = totalPaidToDate; + } + + public MoneyData getInterestRebateOwed() { + return this.interestRebateOwed; + } + + public void setInterestRebateOwed(final MoneyData interestRebateOwed) { + this.interestRebateOwed = interestRebateOwed; + } + + public MoneyData getTotalOutstandingBasedOnExpectedMaturityDate() { + return this.totalOutstandingBasedOnExpectedMaturityDate; + } + + public void setTotalOutstandingBasedOnExpectedMaturityDate( + final MoneyData totalOutstandingBasedOnExpectedMaturityDate) { + this.totalOutstandingBasedOnExpectedMaturityDate = totalOutstandingBasedOnExpectedMaturityDate; + } + + public MoneyData getTotalOutstandingBasedOnPayoffDate() { + return this.totalOutstandingBasedOnPayoffDate; + } + + public void setTotalOutstandingBasedOnPayoffDate( + final MoneyData totalOutstandingBasedOnPayoffDate) { + this.totalOutstandingBasedOnPayoffDate = totalOutstandingBasedOnPayoffDate; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanProductData.java b/mifosng-data/src/main/java/org/mifosng/data/LoanProductData.java new file mode 100644 index 000000000..1f194c927 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/LoanProductData.java @@ -0,0 +1,259 @@ +package org.mifosng.data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.DateTime; + +@XmlRootElement(name = "loanProduct") +public class LoanProductData implements Serializable { + + private Long id; + private String name; + private String description; + private boolean isFlexible; + private boolean isInterestRebateAllowed; + private MoneyData principalMoney; + private BigDecimal interestRatePerPeriod = BigDecimal.ZERO; + private int interestRatePeriod; + private BigDecimal annualInterestRate = BigDecimal.ZERO; + private int interestMethod; + private Integer numberOfInterestFreePeriods = Integer.valueOf(0); + private Integer repaidEvery; + private int repaymentPeriodFrequency; + private Integer numberOfRepayments; + private int amortizationMethod; + private MoneyData inArrearsTolerance; + private DateTime createdOn; + private DateTime lastModifedOn; + + private List possibleCurrencies = new ArrayList(); + private List possibleAmortizationOptions = new ArrayList(); + private List possibleInterestOptions = new ArrayList(); + private List repaymentFrequencyOptions = new ArrayList(); + private List interestFrequencyOptions = new ArrayList(); + + public LoanProductData() { + // + } + + public LoanProductData(final Long id, final String name, + String description, final boolean isFlexible, + final boolean isInterestRebateAllowed, + final MoneyData principalMoney, + final BigDecimal interestRatePerPeriod, + final int interestRatePeriod, final BigDecimal annualInterestRate, + final int interestMethod, final Integer repaidEvery, + final int repaymentPeriodFrequency, final Integer numberOfRepayments, + final int amortizationMethod, MoneyData inArrearsTolerance, DateTime createdOn, DateTime lastModifedOn) { + this.id = id; + this.name = name; + this.description = description; + this.isFlexible = isFlexible; + this.isInterestRebateAllowed = isInterestRebateAllowed; + this.principalMoney = principalMoney; + this.interestRatePerPeriod = interestRatePerPeriod; + this.interestRatePeriod = interestRatePeriod; + this.annualInterestRate = annualInterestRate; + this.interestMethod = interestMethod; + this.numberOfRepayments = numberOfRepayments; + this.repaidEvery = repaidEvery; + this.repaymentPeriodFrequency = repaymentPeriodFrequency; + this.amortizationMethod = amortizationMethod; + this.inArrearsTolerance = inArrearsTolerance; + this.createdOn = createdOn; + this.lastModifedOn = lastModifedOn; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public boolean isFlexible() { + return isFlexible; + } + + public void setFlexible(boolean isFlexible) { + this.isFlexible = isFlexible; + } + + public boolean isInterestRebateAllowed() { + return isInterestRebateAllowed; + } + + public void setInterestRebateAllowed(boolean isInterestRebateAllowed) { + this.isInterestRebateAllowed = isInterestRebateAllowed; + } + + public MoneyData getPrincipalMoney() { + return principalMoney; + } + + public void setPrincipalMoney(MoneyData principalMoney) { + this.principalMoney = principalMoney; + } + + public BigDecimal getInterestRatePerPeriod() { + return interestRatePerPeriod; + } + + public void setInterestRatePerPeriod(BigDecimal interestRatePerPeriod) { + this.interestRatePerPeriod = interestRatePerPeriod; + } + + public int getInterestRatePeriod() { + return interestRatePeriod; + } + + public void setInterestRatePeriod(int interestRatePeriod) { + this.interestRatePeriod = interestRatePeriod; + } + + public BigDecimal getAnnualInterestRate() { + return annualInterestRate; + } + + public void setAnnualInterestRate(BigDecimal annualInterestRate) { + this.annualInterestRate = annualInterestRate; + } + + public int getInterestMethod() { + return interestMethod; + } + + public void setInterestMethod(int interestMethod) { + this.interestMethod = interestMethod; + } + + public Integer getRepaidEvery() { + return repaidEvery; + } + + public void setRepaidEvery(Integer repaidEvery) { + this.repaidEvery = repaidEvery; + } + + public int getRepaymentPeriodFrequency() { + return repaymentPeriodFrequency; + } + + public void setRepaymentPeriodFrequency(int repaymentPeriodFrequency) { + this.repaymentPeriodFrequency = repaymentPeriodFrequency; + } + + public Integer getNumberOfRepayments() { + return numberOfRepayments; + } + + public void setNumberOfRepayments(Integer numberOfRepayments) { + this.numberOfRepayments = numberOfRepayments; + } + + public int getAmortizationMethod() { + return amortizationMethod; + } + + public void setAmortizationMethod(int amortizationMethod) { + this.amortizationMethod = amortizationMethod; + } + + public MoneyData getInArrearsTolerance() { + return inArrearsTolerance; + } + + public void setInArrearsTolerance(MoneyData inArrearsTolerance) { + this.inArrearsTolerance = inArrearsTolerance; + } + + public DateTime getCreatedOn() { + return createdOn; + } + + public void setCreatedOn(DateTime createdOn) { + this.createdOn = createdOn; + } + + public DateTime getLastModifedOn() { + return lastModifedOn; + } + + public void setLastModifedOn(DateTime lastModifedOn) { + this.lastModifedOn = lastModifedOn; + } + + public List getPossibleCurrencies() { + return possibleCurrencies; + } + + public void setPossibleCurrencies(List possibleCurrencies) { + this.possibleCurrencies = possibleCurrencies; + } + + public List getPossibleAmortizationOptions() { + return possibleAmortizationOptions; + } + + public void setPossibleAmortizationOptions( + List possibleAmortizationOptions) { + this.possibleAmortizationOptions = possibleAmortizationOptions; + } + + public List getPossibleInterestOptions() { + return possibleInterestOptions; + } + + public void setPossibleInterestOptions( + List possibleInterestOptions) { + this.possibleInterestOptions = possibleInterestOptions; + } + + public List getRepaymentFrequencyOptions() { + return repaymentFrequencyOptions; + } + + public void setRepaymentFrequencyOptions( + List repaymentFrequencyOptions) { + this.repaymentFrequencyOptions = repaymentFrequencyOptions; + } + + public List getInterestFrequencyOptions() { + return interestFrequencyOptions; + } + + public void setInterestFrequencyOptions( + List interestFrequencyOptions) { + this.interestFrequencyOptions = interestFrequencyOptions; + } + + public Integer getNumberOfInterestFreePeriods() { + return numberOfInterestFreePeriods; + } + + public void setNumberOfInterestFreePeriods(Integer numberOfInterestFreePeriods) { + this.numberOfInterestFreePeriods = numberOfInterestFreePeriods; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanProductList.java b/mifosng-data/src/main/java/org/mifosng/data/LoanProductList.java new file mode 100644 index 000000000..a5a0ba4fb --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/LoanProductList.java @@ -0,0 +1,28 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class LoanProductList { + + private Collection products = new ArrayList(); + + protected LoanProductList() { + // + } + + public LoanProductList(final Collection products) { + this.products = products; + } + + public Collection getProducts() { + return this.products; + } + + public void setProducts(final Collection products) { + this.products = products; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentData.java b/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentData.java new file mode 100644 index 000000000..45bf67b64 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentData.java @@ -0,0 +1,100 @@ +package org.mifosng.data; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.DateMidnight; +import org.joda.time.Days; +import org.joda.time.LocalDate; + +@XmlRootElement +public class LoanRepaymentData { + + private Long id; + private LocalDate date; + private MoneyData principal; + private MoneyData interest; + private MoneyData total; + private MoneyData totalWaived; + private MoneyData overpaid; + + public LoanRepaymentData() { + // + } + + public LoanRepaymentData( + Long id, final LocalDate date, + final MoneyData principal, + final MoneyData interest, + final MoneyData total, final MoneyData overpaid) { + this.id = id; + this.date = date; + this.principal = principal; + this.interest = interest; + this.total = total; + this.overpaid = overpaid; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public LocalDate getDate() { + return date; + } + + public int getTransactionOffsetFromToday() { + return Days.daysBetween(new DateMidnight().toDateTime(), this.date.toDateMidnight().toDateTime()).getDays(); + } + + public void setDate(LocalDate date) { + this.date = date; + } + + public MoneyData getPrincipal() { + return principal; + } + + public void setPrincipal(MoneyData principal) { + this.principal = principal; + } + + public MoneyData getInterest() { + return interest; + } + + public void setInterest(MoneyData interest) { + this.interest = interest; + } + + public MoneyData getTotal() { + return total; + } + + public void setTotal(MoneyData total) { + this.total = total; + } + + public MoneyData getOverpaid() { + return overpaid; + } + + public void setOverpaid(MoneyData overpaid) { + this.overpaid = overpaid; + } + + public boolean hasOverpaidComponent() { + return this.overpaid.isGreaterThanZero(); + } + + public MoneyData getTotalWaived() { + return totalWaived; + } + + public void setTotalWaived(MoneyData totalWaived) { + this.totalWaived = totalWaived; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentDataComparator.java b/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentDataComparator.java new file mode 100644 index 000000000..7d1ae9967 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentDataComparator.java @@ -0,0 +1,15 @@ +package org.mifosng.data; + +import java.util.Comparator; + +import org.mifosng.data.LoanRepaymentData; + + +public class LoanRepaymentDataComparator implements Comparator { + + @Override + public int compare(final LoanRepaymentData o1, final LoanRepaymentData o2) { + return o2.getDate().compareTo(o1.getDate()); + } + +} diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentPeriodData.java b/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentPeriodData.java new file mode 100644 index 000000000..aacde326e --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentPeriodData.java @@ -0,0 +1,235 @@ +package org.mifosng.data; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; + +@XmlRootElement +public class LoanRepaymentPeriodData { + + private Integer period; + private LocalDate date; + private MoneyData disbursed; + private MoneyData principal; + private MoneyData principalPaid; + private MoneyData principalOutstanding; + private MoneyData interest; + private MoneyData interestPaid; + private MoneyData interestOutstanding; + private MoneyData total; + private MoneyData totalPaid; + private MoneyData totalOutstanding; + private MoneyData totalWaived; + private MoneyData totalArrears; + private LocalDate arrearsFrom; + private LocalDate arrearsTo; + private LocalDate paidInFullOn; + private LocalDate lastAffectingPaymentOn; + + private static CurrencyData currencyData(MoneyData moneyData) { + String code = moneyData.getCurrencyCode(); + String name = moneyData.getDefaultName(); + int decimalPlaces = moneyData.getCurrencyDigitsAfterDecimal(); + String displaySymbol = moneyData.getDisplaySymbol(); + String nameCode = moneyData.getNameCode(); + return new CurrencyData(code, name, decimalPlaces, displaySymbol, nameCode); + } + + public LoanRepaymentPeriodData() { + // + } + + public LoanRepaymentPeriodData(Integer period, LocalDate date, + MoneyData disbursed, MoneyData total) { + this.period = period; + this.date = date; + this.disbursed = disbursed; + this.principal = null; + this.principalPaid = null; + this.principalOutstanding = null; + this.interest = null; + this.interestPaid = null; + this.interestOutstanding = null; + this.total = total; + this.totalPaid = null; + this.totalOutstanding = total; + } + + public LoanRepaymentPeriodData(Integer period, LocalDate date, + MoneyData disbursed, MoneyData principal, + MoneyData interest, MoneyData total, + MoneyData totalOutstanding) { + this.period = period; + this.date = date; + this.disbursed = disbursed; + this.principal = principal; + this.principalPaid = MoneyData.zero(currencyData(principal)); + this.principalOutstanding = principal; + this.interest = interest; + this.interestPaid = MoneyData.zero(currencyData(principal)); + this.interestOutstanding = interest; + this.total = total; + this.totalPaid = MoneyData.zero(currencyData(principal)); + this.totalOutstanding = totalOutstanding; + } + + public boolean isInArrearsWithToleranceOf(MoneyData arrearsTolerance, LocalDate asOf) { + + boolean inArrears = false; + if (arrearsTolerance.isGreaterThanZero()) { + inArrears = this.totalOutstanding.isGreaterThan(arrearsTolerance); + } else { + inArrears = this.totalOutstanding.isGreaterThanZero(); + } + + return inArrears && this.date.isBefore(asOf); + } + + public Integer getPeriod() { + return period; + } + + public void setPeriod(Integer period) { + this.period = period; + } + + public LocalDate getDate() { + return date; + } + + public void setDate(LocalDate date) { + this.date = date; + } + + public MoneyData getDisbursed() { + return disbursed; + } + + public void setDisbursed(MoneyData disbursed) { + this.disbursed = disbursed; + } + + public MoneyData getPrincipal() { + return principal; + } + + public void setPrincipal(MoneyData principal) { + this.principal = principal; + } + + public MoneyData getInterest() { + return interest; + } + + public void setInterest(MoneyData interest) { + this.interest = interest; + } + + public MoneyData getTotal() { + return total; + } + + public void setTotal(MoneyData total) { + this.total = total; + } + + public MoneyData getPrincipalPaid() { + return principalPaid; + } + + public void setPrincipalPaid(MoneyData principalPaid) { + this.principalPaid = principalPaid; + } + + public MoneyData getPrincipalOutstanding() { + return principalOutstanding; + } + + public void setPrincipalOutstanding(MoneyData principalOutstanding) { + this.principalOutstanding = principalOutstanding; + } + + public MoneyData getInterestPaid() { + return interestPaid; + } + + public void setInterestPaid(MoneyData interestPaid) { + this.interestPaid = interestPaid; + } + + public MoneyData getInterestOutstanding() { + return interestOutstanding; + } + + public void setInterestOutstanding(MoneyData interestOutstanding) { + this.interestOutstanding = interestOutstanding; + } + + public MoneyData getTotalPaid() { + return totalPaid; + } + + public void setTotalPaid(MoneyData totalPaid) { + this.totalPaid = totalPaid; + } + + public MoneyData getTotalOutstanding() { + return totalOutstanding; + } + + public void setTotalOutstanding(MoneyData totalOutstanding) { + this.totalOutstanding = totalOutstanding; + } + + public boolean isFullyPaid() { + return this.totalOutstanding.isZero(); + } + + public MoneyData getTotalArrears() { + return totalArrears; + } + + public void setTotalArrears(MoneyData totalArrears) { + this.totalArrears = totalArrears; + } + + public LocalDate getArrearsFrom() { + return arrearsFrom; + } + + public void setArrearsFrom(LocalDate arrearsFrom) { + this.arrearsFrom = arrearsFrom; + } + + public LocalDate getArrearsTo() { + return arrearsTo; + } + + public void setArrearsTo(LocalDate arrearsTo) { + this.arrearsTo = arrearsTo; + } + + public LocalDate getPaidInFullOn() { + return paidInFullOn; + } + + public void setPaidInFullOn(LocalDate paidInFullOn) { + this.paidInFullOn = paidInFullOn; + } + + public LocalDate getLastAffectingPaymentOn() { + return lastAffectingPaymentOn; + } + + public void setLastAffectingPaymentOn(LocalDate lastAffectingPaymentOn) { + this.lastAffectingPaymentOn = lastAffectingPaymentOn; + } + + public MoneyData getTotalWaived() { + return totalWaived; + } + + public void setTotalWaived(MoneyData totalWaived) { + this.totalWaived = totalWaived; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentScheduleData.java b/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentScheduleData.java new file mode 100644 index 000000000..93c8d4250 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentScheduleData.java @@ -0,0 +1,29 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class LoanRepaymentScheduleData { + + private List periods = new ArrayList(); + + public LoanRepaymentScheduleData() { + // + } + + public LoanRepaymentScheduleData( + final List periods) { + this.periods = periods; + } + + public List getPeriods() { + return periods; + } + + public void setPeriods(List periods) { + this.periods = periods; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanSchedule.java b/mifosng-data/src/main/java/org/mifosng/data/LoanSchedule.java new file mode 100644 index 000000000..f512f9643 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/LoanSchedule.java @@ -0,0 +1,63 @@ +package org.mifosng.data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "loanSchedule") +public class LoanSchedule implements Serializable { + + private List scheduledLoanInstallments = new ArrayList(); + + private static CurrencyData currencyData(MoneyData moneyData) { + String code = moneyData.getCurrencyCode(); + String name = moneyData.getDefaultName(); + int decimalPlaces = moneyData.getCurrencyDigitsAfterDecimal(); + String displaySymbol = moneyData.getDisplaySymbol(); + String nameCode = moneyData.getNameCode(); + return new CurrencyData(code, name, decimalPlaces, displaySymbol, nameCode); + } + + public LoanSchedule() { + // + } + + public LoanSchedule(final List scheduledLoanInstallments) { + this.scheduledLoanInstallments = scheduledLoanInstallments; + } + + public MoneyData getCumulativePrincipal() { + MoneyData cumulative = MoneyData.zero(currencyData(this.scheduledLoanInstallments.get(0).getPrincipalDue())); + for (ScheduledLoanInstallment installment : this.scheduledLoanInstallments) { + cumulative = cumulative.plus(installment.getPrincipalDue()); + } + return cumulative; + } + + public MoneyData getCumulativeInterest() { + MoneyData cumulative = MoneyData.zero(currencyData(this.scheduledLoanInstallments.get(0).getPrincipalDue())); + for (ScheduledLoanInstallment installment : this.scheduledLoanInstallments) { + cumulative = cumulative.plus(installment.getInterestDue()); + } + return cumulative; + } + + public MoneyData getCumulativeTotal() { + MoneyData cumulative = MoneyData.zero(currencyData(this.scheduledLoanInstallments.get(0).getPrincipalDue())); + for (ScheduledLoanInstallment installment : this.scheduledLoanInstallments) { + cumulative = cumulative.plus(installment.getTotalInstallmentDue()); + } + return cumulative; + } + + public List getScheduledLoanInstallments() { + return this.scheduledLoanInstallments; + } + + public void setScheduledLoanInstallments( + final List scheduledLoanInstallments) { + this.scheduledLoanInstallments = scheduledLoanInstallments; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/MoneyData.java b/mifosng-data/src/main/java/org/mifosng/data/MoneyData.java new file mode 100644 index 000000000..ffbd945a3 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/MoneyData.java @@ -0,0 +1,188 @@ +package org.mifosng.data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.math.RoundingMode; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class MoneyData implements Serializable, Comparable { + + private String currencyCode; + private Integer currencyDigitsAfterDecimal; + private BigDecimal amount; + private String defaultName; + private String nameCode; + private String displaySymbol; + + public static MoneyData of(final CurrencyData currency, final BigDecimal amount) { + return new MoneyData(currency.getCode(), currency.getDecimalPlaces(), currency.getName(), currency.getNameCode(), currency.getDisplaySymbol(), amount); + } + + public static MoneyData zero(final CurrencyData currency) { + return new MoneyData(currency.getCode(), currency.getDecimalPlaces(), currency.getName(), currency.getNameCode(), currency.getDisplaySymbol(), BigDecimal.ZERO); + } + + protected MoneyData() { + // + } + + private MoneyData(final String currencyCode, + final int currencyDigitsAfterDecimal, + String defaultName, String nameCode, String displaySymbol, + final BigDecimal amount) { + this.currencyCode = currencyCode; + this.currencyDigitsAfterDecimal = currencyDigitsAfterDecimal; + this.defaultName = defaultName; + this.nameCode = nameCode; + this.displaySymbol = displaySymbol; + BigDecimal amountStripped = amount.stripTrailingZeros(); + this.amount = amountStripped.setScale(this.currencyDigitsAfterDecimal, + RoundingMode.HALF_EVEN); + } + + public MoneyData plus(final Iterable moniesToAdd) { + BigDecimal total = this.amount; + for (MoneyData moneyProvider : moniesToAdd) { + MoneyData money = this.checkCurrencyEqual(moneyProvider); + total = total.add(money.amount); + } + return MoneyData.of(currencyData(this), total); + } + + public MoneyData plus(final MoneyData moneyToAdd) { + MoneyData toAdd = this.checkCurrencyEqual(moneyToAdd); + return this.plus(toAdd.getAmount()); + } + + public MoneyData plus(final BigDecimal amountToAdd) { + if (amountToAdd.compareTo(BigDecimal.ZERO) == 0) { + return this; + } + BigDecimal newAmount = this.amount.add(amountToAdd); + return MoneyData.of(currencyData(this), newAmount); + } + + public MoneyData plus(final double amountToAdd) { + if (amountToAdd == 0) { + return this; + } + BigDecimal newAmount = this.amount.add(BigDecimal.valueOf(amountToAdd)); + return MoneyData.of(currencyData(this), newAmount); + } + + private static CurrencyData currencyData(MoneyData moneyData) { + String code = moneyData.getCurrencyCode(); + String name = moneyData.getDefaultName(); + int decimalPlaces = moneyData.getCurrencyDigitsAfterDecimal(); + String displaySymbol = moneyData.getDisplaySymbol(); + String nameCode = moneyData.getNameCode(); + return new CurrencyData(code, name, decimalPlaces, displaySymbol, nameCode); + } + + private MoneyData checkCurrencyEqual(final MoneyData money) { + if (this.isSameCurrency(money) == false) { + throw new UnsupportedOperationException("currencies are different."); + } + return money; + } + + public boolean isSameCurrency(final MoneyData money) { + return this.currencyCode.equals(money.getCurrencyCode()); + } + + public String getCurrencyCode() { + return this.currencyCode; + } + + public Integer getCurrencyDigitsAfterDecimal() { + return this.currencyDigitsAfterDecimal; + } + + public BigDecimal getAmount() { + return this.amount; + } + + public void setCurrencyCode(final String currencyCode) { + this.currencyCode = currencyCode; + } + + public void setCurrencyDigitsAfterDecimal(final Integer currencyDigitsAfterDecimal) { + this.currencyDigitsAfterDecimal = currencyDigitsAfterDecimal; + } + + public void setAmount(final BigDecimal amount) { + this.amount = amount; + } + + public String getDefaultName() { + return defaultName; + } + + public void setDefaultName(String defaultName) { + this.defaultName = defaultName; + } + + public String getNameCode() { + return nameCode; + } + + public void setNameCode(String nameCode) { + this.nameCode = nameCode; + } + + public String getDisplaySymbol() { + return displaySymbol; + } + + public void setDisplaySymbol(String displaySymbol) { + this.displaySymbol = displaySymbol; + } + + public boolean isGreaterThanZero() { + return this.isGreaterThan(MoneyData.of(currencyData(this), BigDecimal.ZERO)); + } + + public boolean isGreaterThan(final MoneyData other) { + return this.compareTo(other) > 0; + } + + public boolean isZero() { + return this.isEqualTo(MoneyData.zero(currencyData(this))); + } + + public boolean isEqualTo(final MoneyData other) { + return this.compareTo(other) == 0; + } + + @Override + public int compareTo(final MoneyData other) { + MoneyData otherMoney = other; + if (this.currencyCode.equals(otherMoney.currencyCode) == false) { + throw new UnsupportedOperationException( + "currencies arent different"); + } + return this.amount.compareTo(otherMoney.amount); + } + + @Override + public boolean equals(Object obj) { + MoneyData money = (MoneyData) obj; + return money.toString().equals(this.toString()); + } + + @Override + public int hashCode() { + return this.toString().hashCode(); + } + + @Override + public String toString() { + return new StringBuilder().append(this.amount.toPlainString()).toString(); + } + + public String getDisplaySymbolValue() { + return new StringBuilder().append(this.amount.toPlainString()).append(' ').append(this.displaySymbol).toString().trim(); + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/NewLoanWorkflowStepOneData.java b/mifosng-data/src/main/java/org/mifosng/data/NewLoanWorkflowStepOneData.java new file mode 100644 index 000000000..162abe705 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/NewLoanWorkflowStepOneData.java @@ -0,0 +1,151 @@ +package org.mifosng.data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; + +@XmlRootElement(name = "newloanworkflow") +public class NewLoanWorkflowStepOneData implements Serializable { + + private Long organisationId; + private String organisationName; + private Long clientId; + private String clientName; + private Long productId; + private String productName; + + private List allowedProducts = new ArrayList(); + + // extra + private LocalDate submittedOnDate; + private String submittedOnNote = ""; + + private LocalDate expectedDisbursementDate = new LocalDate(); + private LocalDate repaymentsStartingFromDate; + + private LocalDate interestCalculatedFromDate; + + private LoanSchedule repaymentSchedule; + + private LoanProductData selectedProduct; + + public NewLoanWorkflowStepOneData() { + // + } + + public Long getOrganisationId() { + return organisationId; + } + + public void setOrganisationId(Long organisationId) { + this.organisationId = organisationId; + } + + public String getOrganisationName() { + return organisationName; + } + + public void setOrganisationName(String organisationName) { + this.organisationName = organisationName; + } + + public Long getClientId() { + return clientId; + } + + public void setClientId(Long clientId) { + this.clientId = clientId; + } + + public String getClientName() { + return clientName; + } + + public void setClientName(String clientName) { + this.clientName = clientName; + } + + public Long getProductId() { + return productId; + } + + public void setProductId(Long productId) { + this.productId = productId; + } + + public String getProductName() { + return productName; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public List getAllowedProducts() { + return allowedProducts; + } + + public void setAllowedProducts(List allowedProducts) { + this.allowedProducts = allowedProducts; + } + + public LocalDate getSubmittedOnDate() { + return submittedOnDate; + } + + public void setSubmittedOnDate(LocalDate submittedOnDate) { + this.submittedOnDate = submittedOnDate; + } + + public String getSubmittedOnNote() { + return submittedOnNote; + } + + public void setSubmittedOnNote(String submittedOnNote) { + this.submittedOnNote = submittedOnNote; + } + + public LoanProductData getSelectedProduct() { + return selectedProduct; + } + + public void setSelectedProduct(LoanProductData selectedProduct) { + this.selectedProduct = selectedProduct; + } + + public LocalDate getExpectedDisbursementDate() { + return expectedDisbursementDate; + } + + public void setExpectedDisbursementDate(LocalDate expectedDisbursementDate) { + this.expectedDisbursementDate = expectedDisbursementDate; + } + + public LocalDate getRepaymentsStartingFromDate() { + return repaymentsStartingFromDate; + } + + public void setRepaymentsStartingFromDate(LocalDate repaymentsStartingFromDate) { + this.repaymentsStartingFromDate = repaymentsStartingFromDate; + } + + public LocalDate getInterestCalculatedFromDate() { + return interestCalculatedFromDate; + } + + public void setInterestCalculatedFromDate(LocalDate interestCalculatedFromDate) { + this.interestCalculatedFromDate = interestCalculatedFromDate; + } + + public LoanSchedule getRepaymentSchedule() { + return repaymentSchedule; + } + + public void setRepaymentSchedule(LoanSchedule repaymentSchedule) { + this.repaymentSchedule = repaymentSchedule; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/NoteData.java b/mifosng-data/src/main/java/org/mifosng/data/NoteData.java new file mode 100644 index 000000000..cc3654f9b --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/NoteData.java @@ -0,0 +1,142 @@ +package org.mifosng.data; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.DateTime; + +@XmlRootElement(name = "note") +public class NoteData { + + private Long id; + private Long clientId; + private Long loanId; + private Long loanTransactionId; + private Integer noteTypeId; + + private String note; + + private Long createdById; + private String createdByUsername; + private DateTime createdOn; + private Long updatedById; + private String updatedByUsername; + private DateTime updatedOn; + + public NoteData() { + // + } + + public NoteData(Long id, Long clientId, Long loanId, + Long transactionId, Integer noteTypeId, String note, + DateTime createdDate, Long createdById, String createdByUsername, + DateTime lastModifiedDate, Long lastModifiedById, String updatedByUsername) { + this.id = id; + this.clientId = clientId; + this.loanId = loanId; + this.loanTransactionId = transactionId; + this.noteTypeId = noteTypeId; + this.note = note; + this.createdOn = createdDate; + this.createdById = createdById; + this.createdByUsername = createdByUsername; + this.updatedOn = lastModifiedDate; + this.updatedById = lastModifiedById; + this.updatedByUsername = updatedByUsername; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getClientId() { + return clientId; + } + + public void setClientId(Long clientId) { + this.clientId = clientId; + } + + public Long getLoanId() { + return loanId; + } + + public void setLoanId(Long loanId) { + this.loanId = loanId; + } + + public Long getLoanTransactionId() { + return loanTransactionId; + } + + public void setLoanTransactionId(Long loanTransactionId) { + this.loanTransactionId = loanTransactionId; + } + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } + + public Long getCreatedById() { + return createdById; + } + + public void setCreatedById(Long createdById) { + this.createdById = createdById; + } + + public String getCreatedByUsername() { + return createdByUsername; + } + + public void setCreatedByUsername(String createdByUsername) { + this.createdByUsername = createdByUsername; + } + + public DateTime getCreatedOn() { + return createdOn; + } + + public void setCreatedOn(DateTime createdOn) { + this.createdOn = createdOn; + } + + public Long getUpdatedById() { + return updatedById; + } + + public void setUpdatedById(Long updatedById) { + this.updatedById = updatedById; + } + + public String getUpdatedByUsername() { + return updatedByUsername; + } + + public void setUpdatedByUsername(String updatedByUsername) { + this.updatedByUsername = updatedByUsername; + } + + public DateTime getUpdatedOn() { + return updatedOn; + } + + public void setUpdatedOn(DateTime updatedOn) { + this.updatedOn = updatedOn; + } + + public Integer getNoteTypeId() { + return noteTypeId; + } + + public void setNoteTypeId(Integer noteTypeId) { + this.noteTypeId = noteTypeId; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/NoteDataList.java b/mifosng-data/src/main/java/org/mifosng/data/NoteDataList.java new file mode 100644 index 000000000..b69b7c525 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/NoteDataList.java @@ -0,0 +1,28 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class NoteDataList { + + private Collection notes = new ArrayList(); + + public NoteDataList() { + // + } + + public NoteDataList(final Collection notes) { + this.notes = notes; + } + + public Collection getNotes() { + return notes; + } + + public void setNotes(Collection notes) { + this.notes = notes; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/OfficeData.java b/mifosng-data/src/main/java/org/mifosng/data/OfficeData.java new file mode 100644 index 000000000..a3cd2f60d --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/OfficeData.java @@ -0,0 +1,103 @@ +package org.mifosng.data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; + +@XmlRootElement(name = "office") +public class OfficeData implements Serializable { + + private Long id; + private String name; + private String externalId; + private LocalDate openingDate; + private String hierarchy; + private String parentName; + private Long parentId; + + private List allowedParents = new ArrayList(); + + public OfficeData() { + // + } + + public OfficeData(final Long id, final String name, + final String externalId, final LocalDate openingDate, + String hierarchy, final Long parentId, final String parentName) { + this.id = id; + this.name = name; + this.externalId = externalId; + this.openingDate = openingDate; + this.hierarchy = hierarchy; + this.parentName = parentName; + this.parentId = parentId; + } + + public Long getId() { + return this.id; + } + + public String getName() { + return this.name; + } + + public String getExternalId() { + return this.externalId; + } + + public LocalDate getOpeningDate() { + return this.openingDate; + } + + public Long getParentId() { + return this.parentId; + } + + public String getParentName() { + return this.parentName; + } + + public void setId(final Long id) { + this.id = id; + } + + public void setName(final String name) { + this.name = name; + } + + public void setExternalId(final String externalId) { + this.externalId = externalId; + } + + public void setOpeningDate(final LocalDate openingDate) { + this.openingDate = openingDate; + } + + public void setParentName(final String parentName) { + this.parentName = parentName; + } + + public void setParentId(final Long parentId) { + this.parentId = parentId; + } + + public List getAllowedParents() { + return allowedParents; + } + + public void setAllowedParents(List allowedParents) { + this.allowedParents = allowedParents; + } + + public String getHierarchy() { + return hierarchy; + } + + public void setHierarchy(String hierarchy) { + this.hierarchy = hierarchy; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/OfficeList.java b/mifosng-data/src/main/java/org/mifosng/data/OfficeList.java new file mode 100644 index 000000000..1527f5bf6 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/OfficeList.java @@ -0,0 +1,28 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class OfficeList { + + private Collection offices = new ArrayList(); + + protected OfficeList() { + // + } + + public OfficeList(final Collection offices) { + this.offices = offices; + } + + public Collection getOffices() { + return this.offices; + } + + public void setOffices(final Collection offices) { + this.offices = offices; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/OrganisationList.java b/mifosng-data/src/main/java/org/mifosng/data/OrganisationList.java new file mode 100644 index 000000000..ed92ac0ac --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/OrganisationList.java @@ -0,0 +1,30 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class OrganisationList { + + private Collection organisations = new ArrayList(); + + protected OrganisationList() { + // + } + + public OrganisationList( + final Collection organisations) { + this.organisations = organisations; + } + + public Collection getOrganisations() { + return this.organisations; + } + + public void setOrganisations( + final Collection organisations) { + this.organisations = organisations; + } +} diff --git a/mifosng-data/src/main/java/org/mifosng/data/OrganisationReadModel.java b/mifosng-data/src/main/java/org/mifosng/data/OrganisationReadModel.java new file mode 100644 index 000000000..bf629a9b2 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/OrganisationReadModel.java @@ -0,0 +1,60 @@ +package org.mifosng.data; + +import java.io.Serializable; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; + +@XmlRootElement(name = "organisation") +public class OrganisationReadModel implements Serializable { + + private Long id; + private String name; + private String contactName; + private LocalDate openingDate; + + public OrganisationReadModel() { + // + } + + public OrganisationReadModel(final Long id, final String name, + final String contactName, final LocalDate openingDate) { + this.id = id; + this.name = name; + this.contactName = contactName; + this.openingDate = openingDate; + } + + public Long getId() { + return this.id; + } + + public String getName() { + return this.name; + } + + public String getContactName() { + return this.contactName; + } + + public LocalDate getOpeningDate() { + return this.openingDate; + } + + public void setId(final Long id) { + this.id = id; + } + + public void setName(final String name) { + this.name = name; + } + + public void setContactName(final String contactName) { + this.contactName = contactName; + } + + public void setOpeningDate(final LocalDate openingDate) { + this.openingDate = openingDate; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/PermissionData.java b/mifosng-data/src/main/java/org/mifosng/data/PermissionData.java new file mode 100644 index 000000000..cdc1cfa20 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/PermissionData.java @@ -0,0 +1,89 @@ +package org.mifosng.data; + +import java.io.Serializable; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "permission") +public class PermissionData implements Serializable { + + private Long id; + private Long orgId; + private String name; + private String description; + private String code; + private int groupType; + + public PermissionData() { + // + } + + public PermissionData(final Long id, final Long orgId, + final String name, final String description, final String code, int groupType) { + this.id = id; + this.orgId = orgId; + this.name = name; + this.description = description; + this.code = code; + this.groupType = groupType; + } + + @Override + public boolean equals(Object obj) { + PermissionData data = (PermissionData) obj; + return this.code.equalsIgnoreCase(data.code); + } + + @Override + public int hashCode() { + return this.code.hashCode(); + } + + public Long getId() { + return this.id; + } + + public Long getOrgId() { + return this.orgId; + } + + public String getName() { + return this.name; + } + + public String getDescription() { + return this.description; + } + + public String getCode() { + return this.code; + } + + public void setId(final Long id) { + this.id = id; + } + + public void setOrgId(final Long orgId) { + this.orgId = orgId; + } + + public void setName(final String name) { + this.name = name; + } + + public void setDescription(final String description) { + this.description = description; + } + + public void setCode(final String code) { + this.code = code; + } + + public int getGroupType() { + return groupType; + } + + public void setGroupType(int groupType) { + this.groupType = groupType; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/PermissionList.java b/mifosng-data/src/main/java/org/mifosng/data/PermissionList.java new file mode 100644 index 000000000..ccc9efb06 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/PermissionList.java @@ -0,0 +1,28 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class PermissionList { + + private Collection permissions = new ArrayList(); + + protected PermissionList() { + // + } + + public PermissionList(final Collection permissions) { + this.permissions = permissions; + } + + public Collection getPermissions() { + return this.permissions; + } + + public void setPermissions(final Collection permissions) { + this.permissions = permissions; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/RoleData.java b/mifosng-data/src/main/java/org/mifosng/data/RoleData.java new file mode 100644 index 000000000..ee0c9146a --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/RoleData.java @@ -0,0 +1,91 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "role") +public class RoleData { + + private Long id; + private Long orgId; + private String name; + private String description; + + private Collection availablePermissions = new ArrayList(); + private Collection selectedPermissions = new ArrayList(); + + public RoleData() { + // + } + + public RoleData(final Long id, final Long orgId, final String name, + final String description) { + this.id = id; + this.orgId = orgId; + this.name = name; + this.description = description; + } + + @Override + public boolean equals(Object obj) { + RoleData role = (RoleData) obj; + return this.id.equals(role.getId()); + } + + @Override + public int hashCode() { + return this.id.hashCode(); + } + + public Long getId() { + return this.id; + } + + public Long getOrgId() { + return this.orgId; + } + + public String getName() { + return this.name; + } + + public String getDescription() { + return this.description; + } + + public void setId(final Long id) { + this.id = id; + } + + public void setOrgId(final Long orgId) { + this.orgId = orgId; + } + + public void setName(final String name) { + this.name = name; + } + + public void setDescription(final String description) { + this.description = description; + } + + public Collection getAvailablePermissions() { + return availablePermissions; + } + + public void setAvailablePermissions( + Collection availablePermissions) { + this.availablePermissions = availablePermissions; + } + + public Collection getSelectedPermissions() { + return selectedPermissions; + } + + public void setSelectedPermissions( + Collection selectedPermissions) { + this.selectedPermissions = selectedPermissions; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/RoleList.java b/mifosng-data/src/main/java/org/mifosng/data/RoleList.java new file mode 100644 index 000000000..191d9d5b3 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/RoleList.java @@ -0,0 +1,28 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class RoleList { + + private Collection roles = new ArrayList(); + + protected RoleList() { + // + } + + public RoleList(final Collection roles) { + this.roles = roles; + } + + public Collection getRoles() { + return this.roles; + } + + public void setRoles(final Collection roles) { + this.roles = roles; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/ScheduledLoanInstallment.java b/mifosng-data/src/main/java/org/mifosng/data/ScheduledLoanInstallment.java new file mode 100644 index 000000000..1bfdad631 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/ScheduledLoanInstallment.java @@ -0,0 +1,126 @@ +package org.mifosng.data; + +import java.io.Serializable; +import java.math.BigDecimal; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; + +@XmlRootElement(name = "installment") +public class ScheduledLoanInstallment implements Serializable { + + private Integer installmentNumber; + private LocalDate periodStart; + private LocalDate periodEnd; + private MoneyData principalDue; + private MoneyData interestDue; + private MoneyData totalInstallmentDue; + private MoneyData outStandingBalance; + + public ScheduledLoanInstallment() { + // + } + + public ScheduledLoanInstallment(final Integer installmentNumber, + final LocalDate periodStart, final LocalDate periodEnd, + final MoneyData principalDue, + final MoneyData interestDue, + final MoneyData totalInstallmentDue, + final MoneyData outStandingBalance) { + this.installmentNumber = installmentNumber; + this.periodStart = periodStart; + this.periodEnd = periodEnd; + this.principalDue = principalDue; + this.interestDue = interestDue; + this.totalInstallmentDue = totalInstallmentDue; + this.outStandingBalance = outStandingBalance; + } + + public Integer getInstallmentNumber() { + return this.installmentNumber; + } + + public LocalDate getPeriodStart() { + return this.periodStart; + } + + public LocalDate getPeriodEnd() { + return this.periodEnd; + } + + // @DateTimeFormat(pattern = "yyyy-MM-dd") + public void setDueDate(final LocalDate dueDate) { + this.periodEnd = dueDate; + } + + public void setPrincipal(final BigDecimal principal) { + CurrencyData currencyData = currencyData(this.principalDue); + this.principalDue = MoneyData.of(currencyData, principal); + this.totalInstallmentDue = this.principalDue.plus(this.interestDue); + } + + private CurrencyData currencyData(MoneyData moneyData) { + String code = moneyData.getCurrencyCode(); + String name = moneyData.getDefaultName(); + int decimalPlaces = moneyData.getCurrencyDigitsAfterDecimal(); + String displaySymbol = moneyData.getDisplaySymbol(); + String nameCode = moneyData.getNameCode(); + return new CurrencyData(code, name, decimalPlaces, displaySymbol, nameCode); + } + + public void setInterest(final BigDecimal interest) { + CurrencyData currencyData = currencyData(this.principalDue); + this.interestDue = MoneyData.of(currencyData, interest); + this.totalInstallmentDue = this.principalDue.plus(this.interestDue); + } + + public void setOutstanding(final BigDecimal outstanding) { + CurrencyData currencyData = currencyData(this.principalDue); + this.outStandingBalance = MoneyData.of(currencyData, outstanding); + } + + public MoneyData getPrincipalDue() { + return this.principalDue; + } + + public void setPrincipalDue(final MoneyData principalDue) { + this.principalDue = principalDue; + } + + public MoneyData getInterestDue() { + return this.interestDue; + } + + public void setInterestDue(final MoneyData interestDue) { + this.interestDue = interestDue; + } + + public MoneyData getTotalInstallmentDue() { + return this.totalInstallmentDue; + } + + public void setTotalInstallmentDue(final MoneyData totalInstallmentDue) { + this.totalInstallmentDue = totalInstallmentDue; + } + + public MoneyData getOutStandingBalance() { + return this.outStandingBalance; + } + + public void setOutStandingBalance(final MoneyData outStandingBalance) { + this.outStandingBalance = outStandingBalance; + } + + public void setInstallmentNumber(final Integer installmentNumber) { + this.installmentNumber = installmentNumber; + } + + public void setPeriodStart(final LocalDate periodStart) { + this.periodStart = periodStart; + } + + public void setPeriodEnd(final LocalDate periodEnd) { + this.periodEnd = periodEnd; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/UserList.java b/mifosng-data/src/main/java/org/mifosng/data/UserList.java new file mode 100644 index 000000000..38b218efc --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/UserList.java @@ -0,0 +1,28 @@ +package org.mifosng.data; + +import java.util.ArrayList; +import java.util.Collection; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class UserList { + + private Collection users = new ArrayList(); + + protected UserList() { + // + } + + public UserList(final Collection users) { + this.users = users; + } + + public Collection getUsers() { + return this.users; + } + + public void setUsers(final Collection users) { + this.users = users; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/AdjustLoanTransactionCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/AdjustLoanTransactionCommand.java new file mode 100644 index 000000000..e947d6ab6 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/AdjustLoanTransactionCommand.java @@ -0,0 +1,71 @@ +package org.mifosng.data.command; + +import java.math.BigDecimal; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; + +@XmlRootElement +public class AdjustLoanTransactionCommand { + + private Long loanId; + private Long repaymentId; + private LocalDate paymentDate; + private String comment; + private BigDecimal paymentAmount; + + protected AdjustLoanTransactionCommand() { + // + } + + public AdjustLoanTransactionCommand(final Long loanId, final Long repaymentId, + final LocalDate paymentDate, final String comment, + final BigDecimal paymentAmount) { + this.loanId = loanId; + this.repaymentId = repaymentId; + this.paymentDate = paymentDate; + this.comment = comment; + this.paymentAmount = paymentAmount; + } + + public Long getLoanId() { + return this.loanId; + } + + public void setLoanId(final Long loanId) { + this.loanId = loanId; + } + + public String getComment() { + return this.comment; + } + + public void setComment(final String comment) { + this.comment = comment; + } + + public LocalDate getPaymentDate() { + return this.paymentDate; + } + + public void setPaymentDate(final LocalDate paymentDate) { + this.paymentDate = paymentDate; + } + + public BigDecimal getPaymentAmount() { + return this.paymentAmount; + } + + public void setPaymentAmount(final BigDecimal paymentAmount) { + this.paymentAmount = paymentAmount; + } + + public Long getRepaymentId() { + return repaymentId; + } + + public void setRepaymentId(Long repaymentId) { + this.repaymentId = repaymentId; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/CalculateLoanScheduleCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/CalculateLoanScheduleCommand.java new file mode 100644 index 000000000..31fc89ba0 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/CalculateLoanScheduleCommand.java @@ -0,0 +1,176 @@ +package org.mifosng.data.command; + +import java.math.BigDecimal; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; + +@XmlRootElement +public class CalculateLoanScheduleCommand { + + private CommonLoanProperties commonLoanProperties; + + private LocalDate expectedDisbursementDate; + private LocalDate repaymentsStartingFromDate; + private LocalDate interestCalculatedFromDate; + + public CalculateLoanScheduleCommand() { + // + } + + public CalculateLoanScheduleCommand(final String currencyCode, + final Integer digitsAfterDecimal, final Number principal, + final Number interestRatePerPeriod, Integer interestRateFrequencyMethod, final Integer interestMethod, + final Integer repaymentEvery, final Integer repaymentFrequency, final Integer numberOfRepayments, Integer amortizationMethod, + final boolean flexibleRepaymentSchedule, + final boolean interestRebateAllowed, + final LocalDate expectedDisbursementDate, + final LocalDate repaymentsStartingFromDate, final LocalDate interestCalculatedFromDate) { + + commonLoanProperties = new CommonLoanProperties(currencyCode, digitsAfterDecimal, principal, interestRatePerPeriod, interestRateFrequencyMethod, interestMethod, + repaymentEvery, repaymentFrequency, numberOfRepayments, amortizationMethod, Integer.valueOf(0), + flexibleRepaymentSchedule, interestRebateAllowed); + + this.expectedDisbursementDate = expectedDisbursementDate; + this.repaymentsStartingFromDate = repaymentsStartingFromDate; + this.interestCalculatedFromDate = interestCalculatedFromDate; + } + + public String getCurrencyCode() { + return this.commonLoanProperties.getCurrencyCode(); + } + + public void setCurrencyCode(final String currencyCode) { + this.commonLoanProperties.setCurrencyCode(currencyCode); + } + + public Integer getDigitsAfterDecimal() { + return this.commonLoanProperties.getDigitsAfterDecimal(); + } + + public void setDigitsAfterDecimal(final Integer digitsAfterDecimal) { + this.commonLoanProperties.setDigitsAfterDecimal(digitsAfterDecimal); + } + + public Integer getRepaymentEvery() { + return this.commonLoanProperties.getRepaymentEvery(); + } + + public void setRepaymentEvery(final Integer repaymentEvery) { + this.commonLoanProperties.setRepaymentEvery(repaymentEvery); + } + + public Integer getRepaymentFrequency() { + return this.commonLoanProperties.getRepaymentFrequency(); + } + + public void setRepaymentFrequency(final Integer repaymentFrequency) { + this.commonLoanProperties.setRepaymentFrequency(repaymentFrequency); + } + + public Boolean isFlexibleRepaymentSchedule() { + return this.commonLoanProperties.isFlexibleRepaymentSchedule(); + } + + public void setFlexibleRepaymentSchedule( + final Boolean flexibleRepaymentSchedule) { + this.commonLoanProperties.setFlexibleRepaymentSchedule(flexibleRepaymentSchedule); + } + + public Boolean isInterestRebateAllowed() { + return this.commonLoanProperties.isInterestRebateAllowed(); + } + + public void setInterestRebateAllowed(final Boolean interestRebateAllowed) { + this.commonLoanProperties.setInterestRebateAllowed(interestRebateAllowed); + } + + public BigDecimal getPrincipal() { + return this.commonLoanProperties.getPrincipal(); + } + + public void setPrincipal(final BigDecimal principal) { + this.commonLoanProperties.setPrincipal(principal); + } + + public Boolean getFlexibleRepaymentSchedule() { + return this.commonLoanProperties.getFlexibleRepaymentSchedule(); + } + + public Boolean getInterestRebateAllowed() { + return this.commonLoanProperties.getInterestRebateAllowed(); + } + + public Integer getInterestRateFrequencyMethod() { + return commonLoanProperties.getInterestRateFrequencyMethod(); + } + + public void setInterestRateFrequencyMethod(Integer interestRateFrequencyMethod) { + this.commonLoanProperties.setInterestRateFrequencyMethod(interestRateFrequencyMethod); + } + + public Integer getInterestMethod() { + return commonLoanProperties.getInterestMethod(); + } + + public void setInterestMethod(Integer interestMethod) { + this.commonLoanProperties.setInterestMethod(interestMethod); + } + + public Integer getAmortizationMethod() { + return commonLoanProperties.getAmortizationMethod(); + } + + public void setAmortizationMethod(Integer amortizationMethod) { + this.commonLoanProperties.setAmortizationMethod(amortizationMethod); + } + + public Integer getNumberOfRepayments() { + return commonLoanProperties.getNumberOfRepayments(); + } + + public void setNumberOfRepayments(Integer numberOfRepayments) { + this.commonLoanProperties.setNumberOfRepayments(numberOfRepayments); + } + + public BigDecimal getInterestRatePerPeriod() { + return commonLoanProperties.getInterestRatePerPeriod(); + } + + public void setInterestRatePerPeriod(BigDecimal interestRatePerPeriod) { + this.commonLoanProperties.setInterestRatePerPeriod(interestRatePerPeriod); + } + + public CommonLoanProperties getCommonLoanProperties() { + return commonLoanProperties; + } + + public void setCommonLoanProperties(CommonLoanProperties commonLoanProperties) { + this.commonLoanProperties = commonLoanProperties; + } + + public LocalDate getExpectedDisbursementDate() { + return expectedDisbursementDate; + } + + public void setExpectedDisbursementDate(LocalDate expectedDisbursementDate) { + this.expectedDisbursementDate = expectedDisbursementDate; + } + + public LocalDate getRepaymentsStartingFromDate() { + return repaymentsStartingFromDate; + } + + public void setRepaymentsStartingFromDate(LocalDate repaymentsStartingFromDate) { + this.repaymentsStartingFromDate = repaymentsStartingFromDate; + } + + public LocalDate getInterestCalculatedFromDate() { + return interestCalculatedFromDate; + } + + public void setInterestCalculatedFromDate(LocalDate interestCalculatedFromDate) { + this.interestCalculatedFromDate = interestCalculatedFromDate; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/ChangePasswordCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/ChangePasswordCommand.java new file mode 100644 index 000000000..256a33bb0 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/ChangePasswordCommand.java @@ -0,0 +1,30 @@ +package org.mifosng.data.command; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ChangePasswordCommand { + + private String password; + private String passwordrepeat; + + public ChangePasswordCommand() { + // + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getPasswordrepeat() { + return passwordrepeat; + } + + public void setPasswordrepeat(String passwordrepeat) { + this.passwordrepeat = passwordrepeat; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/CommonLoanProperties.java b/mifosng-data/src/main/java/org/mifosng/data/command/CommonLoanProperties.java new file mode 100644 index 000000000..ec8c226b4 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/CommonLoanProperties.java @@ -0,0 +1,172 @@ +package org.mifosng.data.command; + +import java.math.BigDecimal; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class CommonLoanProperties { + + private String currencyCode; + private Integer digitsAfterDecimal; + + private BigDecimal principal; + + private Integer repaymentEvery; + private Integer repaymentFrequency; + private Integer numberOfRepayments; + private Integer amortizationMethod; + private BigDecimal inArrearsToleranceAmount; + + private BigDecimal interestRatePerPeriod; + private Integer interestRateFrequencyMethod; + private Integer interestMethod; + + private boolean flexibleRepaymentSchedule = false; + private boolean interestRebateAllowed = false; + + public CommonLoanProperties() { + // + } + + public CommonLoanProperties(final String currencyCode, + final Integer digitsAfterDecimal, final Number principal, + final Number interestRatePerPeriod, Integer interestRateFrequencyMethod, final Integer interestMethod, + final Integer repaymentEvery, final Integer repaymentFrequency, final Integer numberOfRepayments, Integer amortizationMethod, final Number toleranceAmount, + final boolean flexibleRepaymentSchedule, + final boolean interestRebateAllowed) { + this.currencyCode = currencyCode; + this.digitsAfterDecimal = digitsAfterDecimal; + if (principal != null) { + this.principal = BigDecimal.valueOf(Double.valueOf(principal.doubleValue())); + } + + if (interestRatePerPeriod != null) { + this.interestRatePerPeriod = BigDecimal.valueOf(Double.valueOf(interestRatePerPeriod.doubleValue())); + } + this.interestRateFrequencyMethod = interestRateFrequencyMethod; + this.interestMethod = interestMethod; + + this.repaymentEvery = repaymentEvery; + this.repaymentFrequency = repaymentFrequency; + this.numberOfRepayments = numberOfRepayments; + this.amortizationMethod = amortizationMethod; + this.inArrearsToleranceAmount = BigDecimal.valueOf(Double.valueOf(toleranceAmount.toString())); + + this.flexibleRepaymentSchedule = flexibleRepaymentSchedule; + this.interestRebateAllowed = interestRebateAllowed; + } + + public String getCurrencyCode() { + return this.currencyCode; + } + + public void setCurrencyCode(final String currencyCode) { + this.currencyCode = currencyCode; + } + + public Integer getDigitsAfterDecimal() { + return this.digitsAfterDecimal; + } + + public void setDigitsAfterDecimal(final Integer digitsAfterDecimal) { + this.digitsAfterDecimal = digitsAfterDecimal; + } + + public Integer getRepaymentEvery() { + return this.repaymentEvery; + } + + public void setRepaymentEvery(final Integer repaymentEvery) { + this.repaymentEvery = repaymentEvery; + } + + public Integer getRepaymentFrequency() { + return this.repaymentFrequency; + } + + public void setRepaymentFrequency(final Integer repaymentFrequency) { + this.repaymentFrequency = repaymentFrequency; + } + + public boolean isFlexibleRepaymentSchedule() { + return this.flexibleRepaymentSchedule; + } + + public void setFlexibleRepaymentSchedule( + final boolean flexibleRepaymentSchedule) { + this.flexibleRepaymentSchedule = flexibleRepaymentSchedule; + } + + public boolean isInterestRebateAllowed() { + return this.interestRebateAllowed; + } + + public void setInterestRebateAllowed(final boolean interestRebateAllowed) { + this.interestRebateAllowed = interestRebateAllowed; + } + + public BigDecimal getPrincipal() { + return this.principal; + } + + public void setPrincipal(final BigDecimal principal) { + this.principal = principal; + } + + public Boolean getFlexibleRepaymentSchedule() { + return this.flexibleRepaymentSchedule; + } + + public Boolean getInterestRebateAllowed() { + return this.interestRebateAllowed; + } + + public Integer getInterestRateFrequencyMethod() { + return interestRateFrequencyMethod; + } + + public void setInterestRateFrequencyMethod(Integer interestRateFrequencyMethod) { + this.interestRateFrequencyMethod = interestRateFrequencyMethod; + } + + public Integer getInterestMethod() { + return interestMethod; + } + + public void setInterestMethod(Integer interestMethod) { + this.interestMethod = interestMethod; + } + + public Integer getAmortizationMethod() { + return amortizationMethod; + } + + public void setAmortizationMethod(Integer amortizationMethod) { + this.amortizationMethod = amortizationMethod; + } + + public Integer getNumberOfRepayments() { + return numberOfRepayments; + } + + public void setNumberOfRepayments(Integer numberOfRepayments) { + this.numberOfRepayments = numberOfRepayments; + } + + public BigDecimal getInterestRatePerPeriod() { + return interestRatePerPeriod; + } + + public void setInterestRatePerPeriod(BigDecimal interestRatePerPeriod) { + this.interestRatePerPeriod = interestRatePerPeriod; + } + + public BigDecimal getInArrearsToleranceAmount() { + return inArrearsToleranceAmount; + } + + public void setInArrearsToleranceAmount(BigDecimal inArrearsToleranceAmount) { + this.inArrearsToleranceAmount = inArrearsToleranceAmount; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/CreateLoanProductCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/CreateLoanProductCommand.java new file mode 100644 index 000000000..c7b3777da --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/CreateLoanProductCommand.java @@ -0,0 +1,241 @@ +package org.mifosng.data.command; + +import java.math.BigDecimal; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class CreateLoanProductCommand implements LoanProductCommandData { + + private String name; + private String description; + + private CommonLoanProperties commonLoanProperties; + + public CreateLoanProductCommand() { + this.commonLoanProperties = new CommonLoanProperties(); + } + + public CreateLoanProductCommand(final String currencyCode, + final Integer digitsAfterDecimal, final Number principal, + final String name, final String description, + final Number interestRatePerPeriod, Integer interestRateFrequencyMethod, final Integer interestMethod, + final Integer repaymentEvery, final Integer repaymentFrequency, final Integer numberOfRepayments, Integer amortizationMethod, final Number toleranceAmount, + final boolean flexibleRepaymentSchedule, + final boolean interestRebateAllowed) { + this.name = name; + this.description = description; + + commonLoanProperties = new CommonLoanProperties(currencyCode, digitsAfterDecimal, principal, interestRatePerPeriod, interestRateFrequencyMethod, interestMethod, + repaymentEvery, repaymentFrequency, numberOfRepayments, amortizationMethod, toleranceAmount, flexibleRepaymentSchedule, interestRebateAllowed); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getName() + */ + @Override + public String getName() { + return this.name; + } + + public void setName(final String name) { + this.name = name; + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getDescription() + */ + @Override + public String getDescription() { + return this.description; + } + + public void setDescription(final String description) { + this.description = description; + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getCurrencyCode() + */ + @Override + public String getCurrencyCode() { + return this.commonLoanProperties.getCurrencyCode(); + } + + public void setCurrencyCode(final String currencyCode) { + this.commonLoanProperties.setCurrencyCode(currencyCode); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getDigitsAfterDecimal() + */ + @Override + public Integer getDigitsAfterDecimal() { + return this.commonLoanProperties.getDigitsAfterDecimal(); + } + + public void setDigitsAfterDecimal(final Integer digitsAfterDecimal) { + this.commonLoanProperties.setDigitsAfterDecimal(digitsAfterDecimal); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getRepaymentEvery() + */ + @Override + public Integer getRepaymentEvery() { + return this.commonLoanProperties.getRepaymentEvery(); + } + + public void setRepaymentEvery(final Integer repaymentEvery) { + this.commonLoanProperties.setRepaymentEvery(repaymentEvery); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getRepaymentFrequency() + */ + @Override + public Integer getRepaymentFrequency() { + return this.commonLoanProperties.getRepaymentFrequency(); + } + + public void setRepaymentFrequency(final Integer repaymentFrequency) { + this.commonLoanProperties.setRepaymentFrequency(repaymentFrequency); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#isFlexibleRepaymentSchedule() + */ + @Override + public Boolean isFlexibleRepaymentSchedule() { + return this.commonLoanProperties.isFlexibleRepaymentSchedule(); + } + + public void setFlexibleRepaymentSchedule( + final Boolean flexibleRepaymentSchedule) { + this.commonLoanProperties.setFlexibleRepaymentSchedule(flexibleRepaymentSchedule); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#isInterestRebateAllowed() + */ + @Override + public Boolean isInterestRebateAllowed() { + return this.commonLoanProperties.isInterestRebateAllowed(); + } + + public void setInterestRebateAllowed(final Boolean interestRebateAllowed) { + this.commonLoanProperties.setInterestRebateAllowed(interestRebateAllowed); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getPrincipal() + */ + @Override + public BigDecimal getPrincipal() { + return this.commonLoanProperties.getPrincipal(); + } + + public void setPrincipal(final BigDecimal principal) { + this.commonLoanProperties.setPrincipal(principal); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getFlexibleRepaymentSchedule() + */ + @Override + public Boolean getFlexibleRepaymentSchedule() { + return this.commonLoanProperties.getFlexibleRepaymentSchedule(); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getInterestRebateAllowed() + */ + @Override + public Boolean getInterestRebateAllowed() { + return this.commonLoanProperties.getInterestRebateAllowed(); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getInterestRateFrequencyMethod() + */ + @Override + public Integer getInterestRateFrequencyMethod() { + return commonLoanProperties.getInterestRateFrequencyMethod(); + } + + public void setInterestRateFrequencyMethod(Integer interestRateFrequencyMethod) { + this.commonLoanProperties.setInterestRateFrequencyMethod(interestRateFrequencyMethod); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getInterestMethod() + */ + @Override + public Integer getInterestMethod() { + return commonLoanProperties.getInterestMethod(); + } + + public void setInterestMethod(Integer interestMethod) { + this.commonLoanProperties.setInterestMethod(interestMethod); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getAmortizationMethod() + */ + @Override + public Integer getAmortizationMethod() { + return commonLoanProperties.getAmortizationMethod(); + } + + public void setAmortizationMethod(Integer amortizationMethod) { + this.commonLoanProperties.setAmortizationMethod(amortizationMethod); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getNumberOfRepayments() + */ + @Override + public Integer getNumberOfRepayments() { + return commonLoanProperties.getNumberOfRepayments(); + } + + public void setNumberOfRepayments(Integer numberOfRepayments) { + this.commonLoanProperties.setNumberOfRepayments(numberOfRepayments); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getInterestRatePerPeriod() + */ + @Override + public BigDecimal getInterestRatePerPeriod() { + return commonLoanProperties.getInterestRatePerPeriod(); + } + + public void setInterestRatePerPeriod(BigDecimal interestRatePerPeriod) { + this.commonLoanProperties.setInterestRatePerPeriod(interestRatePerPeriod); + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getCommonLoanProperties() + */ + @Override + public CommonLoanProperties getCommonLoanProperties() { + return commonLoanProperties; + } + + public void setCommonLoanProperties(CommonLoanProperties commonLoanProperties) { + this.commonLoanProperties = commonLoanProperties; + } + + /* (non-Javadoc) + * @see org.mifosng.data.command.LoanProductCommandData#getInArrearsToleranceAmount() + */ + @Override + public BigDecimal getInArrearsToleranceAmount() { + return this.commonLoanProperties.getInArrearsToleranceAmount(); + } + + public void setInArrearsToleranceAmount(BigDecimal inArrearsToleranceAmount) { + this.commonLoanProperties.setInArrearsToleranceAmount(inArrearsToleranceAmount); + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/EnrollClientCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/EnrollClientCommand.java new file mode 100644 index 000000000..34fd16a82 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/EnrollClientCommand.java @@ -0,0 +1,76 @@ +package org.mifosng.data.command; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; + +@XmlRootElement +public class EnrollClientCommand { + + private String firstname; + private String lastname; + private String fullname; + private Long officeId; + private String externalId; + private LocalDate joiningDate; + + protected EnrollClientCommand() { + // + } + + public EnrollClientCommand(final String firstname, final String lastname, String fullname, final Long officeId, final LocalDate joiningDate) { + this.firstname = firstname; + this.lastname = lastname; + this.fullname = fullname; + this.officeId = officeId; + this.joiningDate = joiningDate; + } + + public String getFirstname() { + return this.firstname; + } + + public void setFirstname(final String firstname) { + this.firstname = firstname; + } + + public String getLastname() { + return this.lastname; + } + + public void setLastname(final String lastname) { + this.lastname = lastname; + } + + public Long getOfficeId() { + return this.officeId; + } + + public void setOfficeId(final Long officeId) { + this.officeId = officeId; + } + + public LocalDate getJoiningDate() { + return this.joiningDate; + } + + public void setJoiningDate(final LocalDate joiningDate) { + this.joiningDate = joiningDate; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public String getFullname() { + return fullname; + } + + public void setFullname(String fullname) { + this.fullname = fullname; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/ImportClientCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/ImportClientCommand.java new file mode 100644 index 000000000..44923d05c --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/ImportClientCommand.java @@ -0,0 +1,24 @@ +package org.mifosng.data.command; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ImportClientCommand { + + private List clients = new ArrayList(); + + public ImportClientCommand() { + // + } + + public List getClients() { + return clients; + } + + public void setClients(List clients) { + this.clients = clients; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/ImportLoanCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/ImportLoanCommand.java new file mode 100644 index 000000000..f6a075272 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/ImportLoanCommand.java @@ -0,0 +1,24 @@ +package org.mifosng.data.command; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ImportLoanCommand { + + private List loans = new ArrayList(); + + public ImportLoanCommand() { + // + } + + public List getLoans() { + return loans; + } + + public void setLoans(List loans) { + this.loans = loans; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/ImportLoanRepaymentsCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/ImportLoanRepaymentsCommand.java new file mode 100644 index 000000000..6f39b6e31 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/ImportLoanRepaymentsCommand.java @@ -0,0 +1,24 @@ +package org.mifosng.data.command; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ImportLoanRepaymentsCommand { + + private List repayments = new ArrayList(); + + public ImportLoanRepaymentsCommand() { + // + } + + public List getRepayments() { + return repayments; + } + + public void setRepayments(List repayments) { + this.repayments = repayments; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/KeyValueInformation.java b/mifosng-data/src/main/java/org/mifosng/data/command/KeyValueInformation.java new file mode 100644 index 000000000..4f1ca2dc2 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/KeyValueInformation.java @@ -0,0 +1,35 @@ +package org.mifosng.data.command; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class KeyValueInformation { + + private String key; + private String value; + + protected KeyValueInformation() { + // + } + + public KeyValueInformation(String key, String value) { + this.key = key; + this.value = value; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/LoanProductCommandData.java b/mifosng-data/src/main/java/org/mifosng/data/command/LoanProductCommandData.java new file mode 100644 index 000000000..1fa37efa1 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/LoanProductCommandData.java @@ -0,0 +1,43 @@ +package org.mifosng.data.command; + +import java.math.BigDecimal; + +public interface LoanProductCommandData { + + public abstract String getName(); + + public abstract String getDescription(); + + public abstract String getCurrencyCode(); + + public abstract Integer getDigitsAfterDecimal(); + + public abstract Integer getRepaymentEvery(); + + public abstract Integer getRepaymentFrequency(); + + public abstract Boolean isFlexibleRepaymentSchedule(); + + public abstract Boolean isInterestRebateAllowed(); + + public abstract BigDecimal getPrincipal(); + + public abstract Boolean getFlexibleRepaymentSchedule(); + + public abstract Boolean getInterestRebateAllowed(); + + public abstract Integer getInterestRateFrequencyMethod(); + + public abstract Integer getInterestMethod(); + + public abstract Integer getAmortizationMethod(); + + public abstract Integer getNumberOfRepayments(); + + public abstract BigDecimal getInterestRatePerPeriod(); + + public abstract CommonLoanProperties getCommonLoanProperties(); + + public abstract BigDecimal getInArrearsToleranceAmount(); + +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/LoanStateTransitionCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/LoanStateTransitionCommand.java new file mode 100644 index 000000000..424b82624 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/LoanStateTransitionCommand.java @@ -0,0 +1,51 @@ +package org.mifosng.data.command; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; + +/** + * Use for any of the loan state transitions eg. reject, withdrawn by client, approve, disburse + */ +@XmlRootElement +public class LoanStateTransitionCommand { + + private Long loanId; + private LocalDate eventDate; + private String comment; + + protected LoanStateTransitionCommand() { + // + } + + public LoanStateTransitionCommand(final Long loanId, final LocalDate eventDate, + final String comment) { + this.loanId = loanId; + this.eventDate = eventDate; + this.comment = comment; + } + + public Long getLoanId() { + return this.loanId; + } + + public void setLoanId(final Long loanId) { + this.loanId = loanId; + } + + public String getComment() { + return this.comment; + } + + public void setComment(final String comment) { + this.comment = comment; + } + + public LocalDate getEventDate() { + return eventDate; + } + + public void setEventDate(LocalDate eventDate) { + this.eventDate = eventDate; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/LoanTransactionCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/LoanTransactionCommand.java new file mode 100644 index 000000000..d606e76ac --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/LoanTransactionCommand.java @@ -0,0 +1,61 @@ +package org.mifosng.data.command; + +import java.math.BigDecimal; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; + +@XmlRootElement +public class LoanTransactionCommand { + + private Long loanId; + private LocalDate paymentDate; + private String comment; + private BigDecimal paymentAmount; + + protected LoanTransactionCommand() { + // + } + + public LoanTransactionCommand(final Long loanId, + final LocalDate paymentDate, final String comment, + final BigDecimal paymentAmount) { + this.loanId = loanId; + this.paymentDate = paymentDate; + this.comment = comment; + this.paymentAmount = paymentAmount; + } + + public Long getLoanId() { + return this.loanId; + } + + public void setLoanId(final Long loanId) { + this.loanId = loanId; + } + + public String getComment() { + return this.comment; + } + + public void setComment(final String comment) { + this.comment = comment; + } + + public LocalDate getPaymentDate() { + return this.paymentDate; + } + + public void setPaymentDate(final LocalDate paymentDate) { + this.paymentDate = paymentDate; + } + + public BigDecimal getPaymentAmount() { + return this.paymentAmount; + } + + public void setPaymentAmount(final BigDecimal paymentAmount) { + this.paymentAmount = paymentAmount; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/NoteCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/NoteCommand.java new file mode 100644 index 000000000..d4b81f728 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/NoteCommand.java @@ -0,0 +1,60 @@ +package org.mifosng.data.command; + +import javax.xml.bind.annotation.XmlRootElement; + +/** + * Command used for add or edit notes. + */ +@XmlRootElement +public class NoteCommand { + + private Long id; + private Long clientId; + private Long loanId; + private Long loanTransactionId; + private String note; + + public NoteCommand() { + // + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getClientId() { + return clientId; + } + + public void setClientId(Long clientId) { + this.clientId = clientId; + } + + public Long getLoanId() { + return loanId; + } + + public void setLoanId(Long loanId) { + this.loanId = loanId; + } + + public Long getLoanTransactionId() { + return loanTransactionId; + } + + public void setLoanTransactionId(Long loanTransactionId) { + this.loanTransactionId = loanTransactionId; + } + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/OfficeCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/OfficeCommand.java new file mode 100644 index 000000000..537d6d968 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/OfficeCommand.java @@ -0,0 +1,82 @@ +package org.mifosng.data.command; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; + +/** + * Command used for create and update office operations. + */ +@XmlRootElement +public class OfficeCommand { + + private Long id; + private String name; + private String externalId; + + private LocalDate openingDate; + + private Long parentId; + + protected OfficeCommand() { + // + } + + public OfficeCommand(final String officeName, final String externalId, + final Long parentId, final LocalDate openingDate) { + this.name = officeName; + this.externalId = externalId; + this.parentId = parentId; + this.openingDate = openingDate; + } + + public OfficeCommand(final Long id, final String officeName, + final String externalId, final Long parentId, + final LocalDate openingDate) { + this.id = id; + this.name = officeName; + this.externalId = externalId; + this.parentId = parentId; + this.openingDate = openingDate; + } + + public LocalDate getOpeningDate() { + return this.openingDate; + } + + public void setOpeningDate(final LocalDate openingDate) { + this.openingDate = openingDate; + } + + public String getName() { + return this.name; + } + + public void setName(final String name) { + this.name = name; + } + + public String getExternalId() { + return this.externalId; + } + + public void setExternalId(final String externalId) { + this.externalId = externalId; + } + + public Long getParentId() { + return this.parentId; + } + + public void setParentId(final Long parentId) { + this.parentId = parentId; + } + + public Long getId() { + return this.id; + } + + public void setId(final Long id) { + this.id = id; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/RoleCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/RoleCommand.java new file mode 100644 index 000000000..5a4e450f3 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/RoleCommand.java @@ -0,0 +1,57 @@ +package org.mifosng.data.command; + +import javax.xml.bind.annotation.XmlRootElement; + +/** + * For creating and updating roles. When updating the id is expected to be populated. + */ +@XmlRootElement +public class RoleCommand { + + private Long id; + private String name; + private String description; + private String[] permissionIds; + + protected RoleCommand() { + // + } + + public RoleCommand(final String name, final String description, final String[] permissionIds) { + this.name = name; + this.description = description; + this.permissionIds = permissionIds; + } + + public String getName() { + return this.name; + } + + public void setName(final String name) { + this.name = name; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(final String description) { + this.description = description; + } + + public String[] getPermissionIds() { + return this.permissionIds; + } + + public void setPermissionIds(final String[] permissionIds) { + this.permissionIds = permissionIds; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/SignupCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/SignupCommand.java new file mode 100644 index 000000000..981422745 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/SignupCommand.java @@ -0,0 +1,61 @@ +package org.mifosng.data.command; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; + +@XmlRootElement +public class SignupCommand { + + private String organisationName; + private String contactEmail; + private String contactName; + + // @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate openingDate = new LocalDate(); + + protected SignupCommand() { + // + } + + public SignupCommand(final String organisationName, + final String contactEmail, final String contactName, + final LocalDate openingDate) { + this.organisationName = organisationName; + this.contactEmail = contactEmail; + this.contactName = contactName; + this.openingDate = openingDate; + } + + public String getContactEmail() { + return this.contactEmail; + } + + public void setContactEmail(final String contactEmail) { + this.contactEmail = contactEmail; + } + + public String getContactName() { + return this.contactName; + } + + public void setContactName(final String contactName) { + this.contactName = contactName; + } + + public String getOrganisationName() { + return this.organisationName; + } + + public void setOrganisationName(final String organisationName) { + this.organisationName = organisationName; + } + + public LocalDate getOpeningDate() { + return this.openingDate; + } + + public void setOpeningDate(final LocalDate openingDate) { + this.openingDate = openingDate; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/SubmitApproveDisburseLoanCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/SubmitApproveDisburseLoanCommand.java new file mode 100644 index 000000000..7f4cad475 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/SubmitApproveDisburseLoanCommand.java @@ -0,0 +1,40 @@ +package org.mifosng.data.command; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class SubmitApproveDisburseLoanCommand { + + private SubmitLoanApplicationCommand submitLoanApplicationCommand; + private LoanStateTransitionCommand approveLoanCommand; + private LoanStateTransitionCommand disburseLoanCommand; + + public SubmitApproveDisburseLoanCommand() { + // + } + + public SubmitLoanApplicationCommand getSubmitLoanApplicationCommand() { + return submitLoanApplicationCommand; + } + + public void setSubmitLoanApplicationCommand( + SubmitLoanApplicationCommand submitLoanApplicationCommand) { + this.submitLoanApplicationCommand = submitLoanApplicationCommand; + } + + public LoanStateTransitionCommand getApproveLoanCommand() { + return approveLoanCommand; + } + + public void setApproveLoanCommand(LoanStateTransitionCommand approveLoanCommand) { + this.approveLoanCommand = approveLoanCommand; + } + + public LoanStateTransitionCommand getDisburseLoanCommand() { + return disburseLoanCommand; + } + + public void setDisburseLoanCommand(LoanStateTransitionCommand disburseLoanCommand) { + this.disburseLoanCommand = disburseLoanCommand; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/SubmitLoanApplicationCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/SubmitLoanApplicationCommand.java new file mode 100644 index 000000000..f97a034ee --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/SubmitLoanApplicationCommand.java @@ -0,0 +1,252 @@ +package org.mifosng.data.command; + +import java.math.BigDecimal; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; +import org.mifosng.data.LoanSchedule; + +@XmlRootElement +public class SubmitLoanApplicationCommand { + + private Long applicantId; + private Long productId; + + private LocalDate expectedDisbursementDate; + private LocalDate repaymentsStartingFromDate; + private LocalDate interestCalculatedFromDate; + + private LocalDate submittedOnDate; + private String submittedOnNote; + private String externalId; + + private CommonLoanProperties commonLoanProperties; + + private LoanSchedule loanSchedule; + + protected SubmitLoanApplicationCommand() { + // + } + + public SubmitLoanApplicationCommand(final Long applicantId, + final Long productId, final LocalDate submittedOnDate, + final String submittedOnNote, + final LocalDate expectedDisbursementDate, + final LocalDate repaymentsStartingFromDate, + final LocalDate interestCalculatedFromDate, + final LoanSchedule loanSchedule, final String currencyCode, + final Integer digitsAfterDecimal, final Number principal, + final Number interestRatePerPeriod, Integer interestRateFrequencyMethod, final Integer interestMethod, + final Integer repaymentEvery, final Integer repaymentFrequency, final Integer numberOfRepayments, Integer amortizationMethod, final Number toleranceAmount, + final boolean flexibleRepaymentSchedule, + final boolean interestRebateAllowed) { + this.applicantId = applicantId; + this.productId = productId; + this.submittedOnDate = submittedOnDate; + this.submittedOnNote = submittedOnNote; + + commonLoanProperties = new CommonLoanProperties(currencyCode, digitsAfterDecimal, principal, interestRatePerPeriod, interestRateFrequencyMethod, interestMethod, + repaymentEvery, repaymentFrequency, numberOfRepayments, amortizationMethod, toleranceAmount, flexibleRepaymentSchedule, interestRebateAllowed); + + this.expectedDisbursementDate = expectedDisbursementDate; + this.repaymentsStartingFromDate = repaymentsStartingFromDate; + this.interestCalculatedFromDate = interestCalculatedFromDate; + this.loanSchedule = loanSchedule; + } + + public Long getApplicantId() { + return this.applicantId; + } + + public void setApplicantId(final Long applicantId) { + this.applicantId = applicantId; + } + + public Long getProductId() { + return this.productId; + } + + public void setProductId(final Long productId) { + this.productId = productId; + } + + public LocalDate getSubmittedOnDate() { + return this.submittedOnDate; + } + + public void setSubmittedOnDate(final LocalDate submittedOnDate) { + this.submittedOnDate = submittedOnDate; + } + + public String getSubmittedOnNote() { + return this.submittedOnNote; + } + + public void setSubmittedOnNote(final String submittedOnNote) { + this.submittedOnNote = submittedOnNote; + } + + public LocalDate getExpectedDisbursementDate() { + return this.expectedDisbursementDate; + } + + public void setExpectedDisbursementDate( + final LocalDate expectedDisbursementDate) { + this.expectedDisbursementDate = expectedDisbursementDate; + } + + public LocalDate getRepaymentsStartingFromDate() { + return this.repaymentsStartingFromDate; + } + + public void setRepaymentsStartingFromDate( + final LocalDate repaymentsStartingFromDate) { + this.repaymentsStartingFromDate = repaymentsStartingFromDate; + } + + public LoanSchedule getLoanSchedule() { + return this.loanSchedule; + } + + public void setLoanSchedule(final LoanSchedule loanSchedule) { + this.loanSchedule = loanSchedule; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public CommonLoanProperties getCommonLoanProperties() { + return commonLoanProperties; + } + + public void setCommonLoanProperties(CommonLoanProperties commonLoanProperties) { + this.commonLoanProperties = commonLoanProperties; + } + + public String getCurrencyCode() { + return this.commonLoanProperties.getCurrencyCode(); + } + + public void setCurrencyCode(final String currencyCode) { + this.commonLoanProperties.setCurrencyCode(currencyCode); + } + + public Integer getDigitsAfterDecimal() { + return this.commonLoanProperties.getDigitsAfterDecimal(); + } + + public void setDigitsAfterDecimal(final Integer digitsAfterDecimal) { + this.commonLoanProperties.setDigitsAfterDecimal(digitsAfterDecimal); + } + + public Integer getRepaymentEvery() { + return this.commonLoanProperties.getRepaymentEvery(); + } + + public void setRepaymentEvery(final Integer repaymentEvery) { + this.commonLoanProperties.setRepaymentEvery(repaymentEvery); + } + + public Integer getRepaymentFrequency() { + return this.commonLoanProperties.getRepaymentFrequency(); + } + + public void setRepaymentFrequency(final Integer repaymentFrequency) { + this.commonLoanProperties.setRepaymentFrequency(repaymentFrequency); + } + + public Boolean isFlexibleRepaymentSchedule() { + return this.commonLoanProperties.isFlexibleRepaymentSchedule(); + } + + public void setFlexibleRepaymentSchedule( + final Boolean flexibleRepaymentSchedule) { + this.commonLoanProperties.setFlexibleRepaymentSchedule(flexibleRepaymentSchedule); + } + + public Boolean isInterestRebateAllowed() { + return this.commonLoanProperties.isInterestRebateAllowed(); + } + + public void setInterestRebateAllowed(final Boolean interestRebateAllowed) { + this.commonLoanProperties.setInterestRebateAllowed(interestRebateAllowed); + } + + public BigDecimal getPrincipal() { + return this.commonLoanProperties.getPrincipal(); + } + + public void setPrincipal(final BigDecimal principal) { + this.commonLoanProperties.setPrincipal(principal); + } + + public Boolean getFlexibleRepaymentSchedule() { + return this.commonLoanProperties.getFlexibleRepaymentSchedule(); + } + + public Boolean getInterestRebateAllowed() { + return this.commonLoanProperties.getInterestRebateAllowed(); + } + + public Integer getInterestRateFrequencyMethod() { + return commonLoanProperties.getInterestRateFrequencyMethod(); + } + + public void setInterestRateFrequencyMethod(Integer interestRateFrequencyMethod) { + this.commonLoanProperties.setInterestRateFrequencyMethod(interestRateFrequencyMethod); + } + + public Integer getInterestMethod() { + return commonLoanProperties.getInterestMethod(); + } + + public void setInterestMethod(Integer interestMethod) { + this.commonLoanProperties.setInterestMethod(interestMethod); + } + + public Integer getAmortizationMethod() { + return commonLoanProperties.getAmortizationMethod(); + } + + public void setAmortizationMethod(Integer amortizationMethod) { + this.commonLoanProperties.setAmortizationMethod(amortizationMethod); + } + + public Integer getNumberOfRepayments() { + return commonLoanProperties.getNumberOfRepayments(); + } + + public void setNumberOfRepayments(Integer numberOfRepayments) { + this.commonLoanProperties.setNumberOfRepayments(numberOfRepayments); + } + + public BigDecimal getInterestRatePerPeriod() { + return commonLoanProperties.getInterestRatePerPeriod(); + } + + public void setInterestRatePerPeriod(BigDecimal interestRatePerPeriod) { + this.commonLoanProperties.setInterestRatePerPeriod(interestRatePerPeriod); + } + + public BigDecimal getInArrearsToleranceAmount() { + return this.commonLoanProperties.getInArrearsToleranceAmount(); + } + + public void setInArrearsToleranceAmount(BigDecimal inArrearsToleranceAmount) { + this.commonLoanProperties.setInArrearsToleranceAmount(inArrearsToleranceAmount); + } + + public LocalDate getInterestCalculatedFromDate() { + return interestCalculatedFromDate; + } + + public void setInterestCalculatedFromDate(LocalDate interestCalculatedFromDate) { + this.interestCalculatedFromDate = interestCalculatedFromDate; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/UndoLoanApprovalCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/UndoLoanApprovalCommand.java new file mode 100644 index 000000000..e31a50450 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/UndoLoanApprovalCommand.java @@ -0,0 +1,25 @@ +package org.mifosng.data.command; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class UndoLoanApprovalCommand { + + private Long loanId; + + protected UndoLoanApprovalCommand() { + // + } + + public UndoLoanApprovalCommand(final Long loanId) { + this.loanId = loanId; + } + + public Long getLoanId() { + return this.loanId; + } + + public void setLoanId(final Long loanId) { + this.loanId = loanId; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/UndoLoanDisbursalCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/UndoLoanDisbursalCommand.java new file mode 100644 index 000000000..bb59fa39d --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/UndoLoanDisbursalCommand.java @@ -0,0 +1,25 @@ +package org.mifosng.data.command; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class UndoLoanDisbursalCommand { + + private Long loanId; + + protected UndoLoanDisbursalCommand() { + // + } + + public UndoLoanDisbursalCommand(final Long loanId) { + this.loanId = loanId; + } + + public Long getLoanId() { + return this.loanId; + } + + public void setLoanId(final Long loanId) { + this.loanId = loanId; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/UpdateClientInformationCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/UpdateClientInformationCommand.java new file mode 100644 index 000000000..b40069808 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/UpdateClientInformationCommand.java @@ -0,0 +1,40 @@ +package org.mifosng.data.command; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.mifosng.data.EntityIdentifier; + +@XmlRootElement +public class UpdateClientInformationCommand { + + private EntityIdentifier id; + private List fields = new ArrayList(); + + protected UpdateClientInformationCommand() { + // + } + + public UpdateClientInformationCommand(EntityIdentifier id, List fields) { + this.id = id; + this.fields = fields; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public EntityIdentifier getId() { + return id; + } + + public void setId(EntityIdentifier id) { + this.id = id; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/UpdateLoanProductCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/UpdateLoanProductCommand.java new file mode 100644 index 000000000..64292edd2 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/UpdateLoanProductCommand.java @@ -0,0 +1,187 @@ +package org.mifosng.data.command; + +import java.math.BigDecimal; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class UpdateLoanProductCommand implements LoanProductCommandData { + + private Long id; + private String name; + private String description; + private String externalId; + + private CommonLoanProperties commonLoanProperties; + + public UpdateLoanProductCommand() { + this.commonLoanProperties = new CommonLoanProperties(); + } + + public UpdateLoanProductCommand(final String currencyCode, + final Integer digitsAfterDecimal, final Number principal, + final String name, final String description, + final Number interestRatePerPeriod, Integer interestRateFrequencyMethod, final Integer interestMethod, + final Integer repaymentEvery, final Integer repaymentFrequency, final Integer numberOfRepayments, Integer amortizationMethod, final Number toleranceAmount, + final boolean flexibleRepaymentSchedule, + final boolean interestRebateAllowed) { + this.name = name; + this.description = description; + + commonLoanProperties = new CommonLoanProperties(currencyCode, digitsAfterDecimal, principal, interestRatePerPeriod, interestRateFrequencyMethod, interestMethod, + repaymentEvery, repaymentFrequency, numberOfRepayments, amortizationMethod, toleranceAmount, flexibleRepaymentSchedule, interestRebateAllowed); + } + + public String getName() { + return this.name; + } + + public void setName(final String name) { + this.name = name; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(final String description) { + this.description = description; + } + + public String getCurrencyCode() { + return this.commonLoanProperties.getCurrencyCode(); + } + + public void setCurrencyCode(final String currencyCode) { + this.commonLoanProperties.setCurrencyCode(currencyCode); + } + + public Integer getDigitsAfterDecimal() { + return this.commonLoanProperties.getDigitsAfterDecimal(); + } + + public void setDigitsAfterDecimal(final Integer digitsAfterDecimal) { + this.commonLoanProperties.setDigitsAfterDecimal(digitsAfterDecimal); + } + + public Integer getRepaymentEvery() { + return this.commonLoanProperties.getRepaymentEvery(); + } + + public void setRepaymentEvery(final Integer repaymentEvery) { + this.commonLoanProperties.setRepaymentEvery(repaymentEvery); + } + + public Integer getRepaymentFrequency() { + return this.commonLoanProperties.getRepaymentFrequency(); + } + + public void setRepaymentFrequency(final Integer repaymentFrequency) { + this.commonLoanProperties.setRepaymentFrequency(repaymentFrequency); + } + + public Boolean isFlexibleRepaymentSchedule() { + return this.commonLoanProperties.isFlexibleRepaymentSchedule(); + } + + public void setFlexibleRepaymentSchedule( + final Boolean flexibleRepaymentSchedule) { + this.commonLoanProperties.setFlexibleRepaymentSchedule(flexibleRepaymentSchedule); + } + + public Boolean isInterestRebateAllowed() { + return this.commonLoanProperties.isInterestRebateAllowed(); + } + + public void setInterestRebateAllowed(final Boolean interestRebateAllowed) { + this.commonLoanProperties.setInterestRebateAllowed(interestRebateAllowed); + } + + public BigDecimal getPrincipal() { + return this.commonLoanProperties.getPrincipal(); + } + + public void setPrincipal(final BigDecimal principal) { + this.commonLoanProperties.setPrincipal(principal); + } + + public Boolean getFlexibleRepaymentSchedule() { + return this.commonLoanProperties.getFlexibleRepaymentSchedule(); + } + + public Boolean getInterestRebateAllowed() { + return this.commonLoanProperties.getInterestRebateAllowed(); + } + + public Integer getInterestRateFrequencyMethod() { + return commonLoanProperties.getInterestRateFrequencyMethod(); + } + + public void setInterestRateFrequencyMethod(Integer interestRateFrequencyMethod) { + this.commonLoanProperties.setInterestRateFrequencyMethod(interestRateFrequencyMethod); + } + + public Integer getInterestMethod() { + return commonLoanProperties.getInterestMethod(); + } + + public void setInterestMethod(Integer interestMethod) { + this.commonLoanProperties.setInterestMethod(interestMethod); + } + + public Integer getAmortizationMethod() { + return commonLoanProperties.getAmortizationMethod(); + } + + public void setAmortizationMethod(Integer amortizationMethod) { + this.commonLoanProperties.setAmortizationMethod(amortizationMethod); + } + + public Integer getNumberOfRepayments() { + return commonLoanProperties.getNumberOfRepayments(); + } + + public void setNumberOfRepayments(Integer numberOfRepayments) { + this.commonLoanProperties.setNumberOfRepayments(numberOfRepayments); + } + + public BigDecimal getInterestRatePerPeriod() { + return commonLoanProperties.getInterestRatePerPeriod(); + } + + public void setInterestRatePerPeriod(BigDecimal interestRatePerPeriod) { + this.commonLoanProperties.setInterestRatePerPeriod(interestRatePerPeriod); + } + + public CommonLoanProperties getCommonLoanProperties() { + return commonLoanProperties; + } + + public void setCommonLoanProperties(CommonLoanProperties commonLoanProperties) { + this.commonLoanProperties = commonLoanProperties; + } + + public BigDecimal getInArrearsToleranceAmount() { + return this.commonLoanProperties.getInArrearsToleranceAmount(); + } + + public void setInArrearsToleranceAmount(BigDecimal inArrearsToleranceAmount) { + this.commonLoanProperties.setInArrearsToleranceAmount(inArrearsToleranceAmount); + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/UpdateOrganisationCurrencyCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/UpdateOrganisationCurrencyCommand.java new file mode 100644 index 000000000..9e1d7bc0b --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/UpdateOrganisationCurrencyCommand.java @@ -0,0 +1,30 @@ +package org.mifosng.data.command; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class UpdateOrganisationCurrencyCommand implements Serializable { + + private Collection codes = new ArrayList(); + + public UpdateOrganisationCurrencyCommand() { + // + } + + public UpdateOrganisationCurrencyCommand(final List currencyCodes) { + this.codes = currencyCodes; + } + + public Collection getCodes() { + return this.codes; + } + + public void setCodes(final Collection codes) { + this.codes = codes; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/UpdateUsernamePasswordCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/UpdateUsernamePasswordCommand.java new file mode 100644 index 000000000..df1a6fdf2 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/UpdateUsernamePasswordCommand.java @@ -0,0 +1,55 @@ +package org.mifosng.data.command; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class UpdateUsernamePasswordCommand { + + private boolean usernameToBeChanged = true; + private String oldUsername; + private String username; + private String password; + + protected UpdateUsernamePasswordCommand() { + // + } + + public UpdateUsernamePasswordCommand(final String oldUsername, + final String username, final String password) { + this.oldUsername = oldUsername; + this.username = username; + this.password = password; + } + + public boolean isUsernameToBeChanged() { + return this.usernameToBeChanged; + } + + public void setUsernameToBeChanged(final boolean usernameToBeChanged) { + this.usernameToBeChanged = usernameToBeChanged; + } + + public String getOldUsername() { + return this.oldUsername; + } + + public String getUsername() { + return this.username; + } + + public String getPassword() { + return this.password; + } + + public void setOldUsername(final String oldUsername) { + this.oldUsername = oldUsername; + } + + public void setUsername(final String username) { + this.username = username; + } + + public void setPassword(final String password) { + this.password = password; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/UserCommand.java b/mifosng-data/src/main/java/org/mifosng/data/command/UserCommand.java new file mode 100644 index 000000000..0a1627729 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/UserCommand.java @@ -0,0 +1,118 @@ +package org.mifosng.data.command; + +import javax.xml.bind.annotation.XmlRootElement; + +/** + * create or update user details command. + */ +@XmlRootElement +public class UserCommand { + + private Long id; + private String username; + private String firstname; + private String lastname; + private String password; + private String email; + private String[] roleIds; + private Long officeId; + + public UserCommand() { + // + } + + public UserCommand(final String username, final String firstname, final String lastname, final String password, + final String email, final String[] roleIds, final Long officeId) { + this.username = username; + this.firstname = firstname; + this.lastname = lastname; + this.password = password; + this.email = email; + this.roleIds = roleIds; + this.officeId = officeId; + } + + public UserCommand(final String username, final String firstname, final String lastname, final String email) { + this.username = username; + this.firstname = firstname; + this.lastname = lastname; + this.email = email; + } + + public UserCommand(final String username, final String password, + final String email, final String[] roleIds, final Long officeId) { + this.username = username; + this.password = password; + this.email = email; + this.roleIds = roleIds; + this.officeId = officeId; + } + + public String getDisplayName() { + return new StringBuilder(this.lastname).append(", ").append(this.firstname).toString(); + } + + public String getUsername() { + return this.username; + } + + public void setUsername(final String username) { + this.username = username; + } + + public String getPassword() { + return this.password; + } + + public void setPassword(final String password) { + this.password = password; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(final String email) { + this.email = email; + } + + public String[] getRoleIds() { + return this.roleIds; + } + + public void setRoleIds(final String[] roleIds) { + this.roleIds = roleIds; + } + + public Long getOfficeId() { + return this.officeId; + } + + public void setOfficeId(final Long officeId) { + this.officeId = officeId; + } + + public String getFirstname() { + return firstname; + } + + public void setFirstname(String firstname) { + this.firstname = firstname; + } + + public String getLastname() { + return lastname; + } + + public void setLastname(String lastname) { + this.lastname = lastname; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/command/package-info.java b/mifosng-data/src/main/java/org/mifosng/data/command/package-info.java new file mode 100644 index 000000000..3840a8ba2 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/command/package-info.java @@ -0,0 +1,11 @@ +@XmlJavaTypeAdapters({@XmlJavaTypeAdapter(type=DateTime.class, value=DateTimeAdapter.class),@XmlJavaTypeAdapter(type = LocalDate.class, value = LocalDateAdapter.class) }) +package org.mifosng.data.command; + +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters; + +import org.joda.time.DateTime; +import org.joda.time.LocalDate; +import org.mifosng.jodaadapters.DateTimeAdapter; +import org.mifosng.jodaadapters.LocalDateAdapter; + diff --git a/mifosng-data/src/main/java/org/mifosng/data/package-info.java b/mifosng-data/src/main/java/org/mifosng/data/package-info.java new file mode 100644 index 000000000..13b2eb7f5 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/package-info.java @@ -0,0 +1,11 @@ +@XmlJavaTypeAdapters({@XmlJavaTypeAdapter(type=DateTime.class, value=DateTimeAdapter.class),@XmlJavaTypeAdapter(type = LocalDate.class, value = LocalDateAdapter.class) }) +package org.mifosng.data; + +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters; + +import org.joda.time.DateTime; +import org.joda.time.LocalDate; +import org.mifosng.jodaadapters.DateTimeAdapter; +import org.mifosng.jodaadapters.LocalDateAdapter; + diff --git a/mifosng-data/src/main/java/org/mifosng/data/query/CalculatePayoffQuery.java b/mifosng-data/src/main/java/org/mifosng/data/query/CalculatePayoffQuery.java new file mode 100644 index 000000000..fe429ceaa --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/query/CalculatePayoffQuery.java @@ -0,0 +1,23 @@ +package org.mifosng.data.query; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.joda.time.LocalDate; + +@XmlRootElement +public class CalculatePayoffQuery { + + private LocalDate payoffDate; + + protected CalculatePayoffQuery() { + // + } + + public LocalDate getPayoffDate() { + return this.payoffDate; + } + + public void setPayoffDate(final LocalDate payoffDate) { + this.payoffDate = payoffDate; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/query/package-info.java b/mifosng-data/src/main/java/org/mifosng/data/query/package-info.java new file mode 100644 index 000000000..f852b38ef --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/query/package-info.java @@ -0,0 +1,11 @@ +@XmlJavaTypeAdapters({@XmlJavaTypeAdapter(type=DateTime.class, value=DateTimeAdapter.class),@XmlJavaTypeAdapter(type = LocalDate.class, value = LocalDateAdapter.class) }) +package org.mifosng.data.query; + +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters; + +import org.joda.time.DateTime; +import org.joda.time.LocalDate; +import org.mifosng.jodaadapters.DateTimeAdapter; +import org.mifosng.jodaadapters.LocalDateAdapter; + diff --git a/mifosng-data/src/main/java/org/mifosng/data/reports/GenericResultset.java b/mifosng-data/src/main/java/org/mifosng/data/reports/GenericResultset.java new file mode 100644 index 000000000..48150d3ce --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/reports/GenericResultset.java @@ -0,0 +1,41 @@ +package org.mifosng.data.reports; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class GenericResultset { + + // [ + // [contact_email, field 2, field 3], + // [ + // ["abb.net", "r2", "x"], ["abb.net", "r3"] + // ] + // ] + + // create types for these + private List columnHeaders = new ArrayList(); + private List data = new ArrayList(); + + public GenericResultset() { + + } + + public List getColumnHeaders() { + return columnHeaders; + } + + public void setColumnHeaders(List columnHeaders) { + this.columnHeaders = columnHeaders; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/reports/ResultsetColumnHeader.java b/mifosng-data/src/main/java/org/mifosng/data/reports/ResultsetColumnHeader.java new file mode 100644 index 000000000..e2e147bb2 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/reports/ResultsetColumnHeader.java @@ -0,0 +1,61 @@ +package org.mifosng.data.reports; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ResultsetColumnHeader { + + private String columnName; + private String columnType; + private Integer columnLength; + private String columnDisplayType; + private List columnValues = new ArrayList(); + + public ResultsetColumnHeader() { + + } + + public List getColumnValues() { + return columnValues; + } + + public void setColumnValues(List columnValues) { + this.columnValues = columnValues; + } + + public String getColumnName() { + return columnName; + } + + public void setColumnName(String columnName) { + this.columnName = columnName; + } + + public String getColumnType() { + return columnType; + } + + public void setColumnType(String columnType) { + this.columnType = columnType; + } + + public Integer getColumnLength() { + return columnLength; + } + + public void setColumnLength(Integer columnLength) { + this.columnLength = columnLength; + } + + public String getColumnDisplayType() { + return columnDisplayType; + } + + public void setColumnDisplayType(String columnDisplayType) { + this.columnDisplayType = columnDisplayType; + } + +} diff --git a/mifosng-data/src/main/java/org/mifosng/data/reports/ResultsetDataRow.java b/mifosng-data/src/main/java/org/mifosng/data/reports/ResultsetDataRow.java new file mode 100644 index 000000000..bc60d2780 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/reports/ResultsetDataRow.java @@ -0,0 +1,24 @@ +package org.mifosng.data.reports; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class ResultsetDataRow { + + private List row = new ArrayList(); + + public ResultsetDataRow() { + + } + + public List getRow() { + return row; + } + + public void setRow(List row) { + this.row = row; + } +} diff --git a/mifosng-data/src/main/java/org/mifosng/data/reports/package-info.java b/mifosng-data/src/main/java/org/mifosng/data/reports/package-info.java new file mode 100644 index 000000000..e145cf50b --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/data/reports/package-info.java @@ -0,0 +1,11 @@ +@XmlJavaTypeAdapters({@XmlJavaTypeAdapter(type=DateTime.class, value=DateTimeAdapter.class),@XmlJavaTypeAdapter(type = LocalDate.class, value = LocalDateAdapter.class) }) +package org.mifosng.data.reports; + +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters; + +import org.joda.time.DateTime; +import org.joda.time.LocalDate; +import org.mifosng.jodaadapters.DateTimeAdapter; +import org.mifosng.jodaadapters.LocalDateAdapter; + diff --git a/mifosng-data/src/main/java/org/mifosng/jodaadapters/DateTimeAdapter.java b/mifosng-data/src/main/java/org/mifosng/jodaadapters/DateTimeAdapter.java new file mode 100644 index 000000000..39fa21b60 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/jodaadapters/DateTimeAdapter.java @@ -0,0 +1,19 @@ +package org.mifosng.jodaadapters; + +import javax.xml.bind.annotation.adapters.XmlAdapter; + +import org.joda.time.DateTime; + +public class DateTimeAdapter extends XmlAdapter { + + @Override + public DateTime unmarshal(final String v) throws Exception { + return new DateTime(v); + } + + @Override + public String marshal(final DateTime v) throws Exception { + return v.toString(); + } + +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/jodaadapters/LocalDateAdapter.java b/mifosng-data/src/main/java/org/mifosng/jodaadapters/LocalDateAdapter.java new file mode 100644 index 000000000..1d8d687a3 --- /dev/null +++ b/mifosng-data/src/main/java/org/mifosng/jodaadapters/LocalDateAdapter.java @@ -0,0 +1,19 @@ +package org.mifosng.jodaadapters; + +import javax.xml.bind.annotation.adapters.XmlAdapter; + +import org.joda.time.LocalDate; + +public class LocalDateAdapter extends XmlAdapter { + + @Override + public LocalDate unmarshal(final String v) throws Exception { + return new LocalDate(v); + } + + @Override + public String marshal(final LocalDate v) throws Exception { + return v.toString(); + } + +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 000000000..49cdfda52 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include 'mifosng-data', 'mifosng-provider' \ No newline at end of file