corrected type while fethcing data from metadata

This commit is contained in:
pramod
2016-02-16 12:21:30 +05:30
parent a13a80794f
commit b5dc6b2b5b
2 changed files with 79 additions and 62 deletions
@@ -68,21 +68,9 @@ public final class ResultsetColumnHeaderData {
this.columnValues = columnValues;
this.columnCode = columnCode;
if("NEWDECIMAL".equalsIgnoreCase(this.columnType)) {
this.columnType = "DECIMAL" ;
//Refer org.drizzle.jdbc.internal.mysql.MySQLType.java
}
if("CLOB".equalsIgnoreCase(this.columnType)) {
this.columnType = "varchar" ;
//Drizzle is returning some of the String data a CLOB
}
if("LONGLONG".equalsIgnoreCase(this.columnType) || "LONG".equalsIgnoreCase(this.columnType)) {
this.columnType = "bigint" ;
//Refer org.drizzle.jdbc.internal.mysql.MySQLType.java
}
// Refer org.drizzle.jdbc.internal.mysql.MySQLType.java
adjustColumnTypes();
String displayType = null;
if (this.columnCode == null) {
if (isString()) {
@@ -97,7 +85,7 @@ public final class ResultsetColumnHeaderData {
displayType = "DECIMAL";
} else if (isAnyText()) {
displayType = "TEXT";
} else if(isBit()) {
} else if (isBit()) {
displayType = "BOOLEAN";
} else {
throw new PlatformDataIntegrityException("error.msg.invalid.lookup.type", "Invalid Lookup Type:" + this.columnType
@@ -118,6 +106,33 @@ public final class ResultsetColumnHeaderData {
this.columnDisplayType = displayType;
}
private void adjustColumnTypes() {
switch (this.columnType) {
case "NEWDECIMAL":
this.columnType = "DECIMAL";
break;
case "CLOB":
case "ENUM":
case "SET":
this.columnType = "varchar";
break;
case "LONGLONG":
this.columnType = "bigint";
break;
case "SHORT":
this.columnType = "smallint";
break;
case "TINY":
this.columnType = "tinyint";
break;
case "INT24":
this.columnType = "int";
break;
default:
break;
}
}
public boolean isNamed(final String columnName) {
return this.columnName.equalsIgnoreCase(columnName);
}
@@ -144,7 +159,7 @@ public final class ResultsetColumnHeaderData {
private boolean isDecimal() {
return "decimal".equalsIgnoreCase(this.columnType) || "NEWDECIMAL".equalsIgnoreCase(this.columnType);
//Refer org.drizzle.jdbc.internal.mysql.MySQLType.java
// Refer org.drizzle.jdbc.internal.mysql.MySQLType.java
}
private boolean isDate() {
@@ -190,10 +205,10 @@ public final class ResultsetColumnHeaderData {
private boolean isBigInt() {
return "bigint".equalsIgnoreCase(this.columnType);
}
private boolean isLong() {
return "LONG".equalsIgnoreCase(this.columnType) || "LONGLONG".equalsIgnoreCase(this.columnType);
//Refer org.drizzle.jdbc.internal.mysql.MySQLType.java
// Refer org.drizzle.jdbc.internal.mysql.MySQLType.java
}
private boolean isBit() {
@@ -1599,11 +1599,11 @@ public class Loan extends AbstractPersistable<Long> {
BigDecimal chargeAmt = BigDecimal.ZERO;
BigDecimal totalChargeAmt = BigDecimal.ZERO;
if (loanCharge.getChargeCalculation().isPercentageBased()) {
if (loanCharge.isOverdueInstallmentCharge()) {
amount = calculateOverdueAmountPercentageAppliedTo(loanCharge, penaltyWaitPeriod);
} else {
amount = calculateAmountPercentageAppliedTo(loanCharge);
}
if (loanCharge.isOverdueInstallmentCharge()) {
amount = calculateOverdueAmountPercentageAppliedTo(loanCharge, penaltyWaitPeriod);
} else {
amount = calculateAmountPercentageAppliedTo(loanCharge);
}
chargeAmt = loanCharge.getPercentage();
if (loanCharge.isInstalmentFee()) {
totalChargeAmt = calculatePerInstallmentChargeAmount(loanCharge);
@@ -2337,7 +2337,8 @@ public class Loan extends AbstractPersistable<Long> {
}
public void regenerateScheduleOnDisbursement(final ScheduleGeneratorDTO scheduleGeneratorDTO, final boolean recalculateSchedule,
final LocalDate actualDisbursementDate, BigDecimal emiAmount, final AppUser currentUser, LocalDate nextPossibleRepaymentDate, Date rescheduledRepaymentDate) {
final LocalDate actualDisbursementDate, BigDecimal emiAmount, final AppUser currentUser, LocalDate nextPossibleRepaymentDate,
Date rescheduledRepaymentDate) {
boolean isEmiAmountChanged = false;
if ((this.loanProduct.isMultiDisburseLoan() || this.loanProduct.canDefineInstallmentAmount()) && emiAmount != null
&& emiAmount.compareTo(retriveLastEmiAmount()) != 0) {
@@ -2352,11 +2353,12 @@ public class Loan extends AbstractPersistable<Long> {
}
isEmiAmountChanged = true;
}
if(rescheduledRepaymentDate != null && this.loanProduct.isMultiDisburseLoan()){
final boolean isSpecificToInstallment = false;
LoanTermVariations loanVariationTerms = new LoanTermVariations(LoanTermVariationType.DUE_DATE.getValue(),
nextPossibleRepaymentDate.toDate(), emiAmount, rescheduledRepaymentDate, isSpecificToInstallment, this, LoanStatus.ACTIVE.getValue());
this.loanTermVariations.add(loanVariationTerms);
if (rescheduledRepaymentDate != null && this.loanProduct.isMultiDisburseLoan()) {
final boolean isSpecificToInstallment = false;
LoanTermVariations loanVariationTerms = new LoanTermVariations(LoanTermVariationType.DUE_DATE.getValue(),
nextPossibleRepaymentDate.toDate(), emiAmount, rescheduledRepaymentDate, isSpecificToInstallment, this,
LoanStatus.ACTIVE.getValue());
this.loanTermVariations.add(loanVariationTerms);
}
if (isRepaymentScheduleRegenerationRequiredForDisbursement(actualDisbursementDate) || recalculateSchedule || isEmiAmountChanged) {
@@ -4771,7 +4773,7 @@ public class Loan extends AbstractPersistable<Long> {
}
public ChangedTransactionDetail updateDisbursementDateAndAmountForTranche(final LoanDisbursementDetails disbursementDetails,
final JsonCommand command,final Map<String, Object> actualChanges, final ScheduleGeneratorDTO scheduleGeneratorDTO,
final JsonCommand command, final Map<String, Object> actualChanges, final ScheduleGeneratorDTO scheduleGeneratorDTO,
final AppUser currentUser) {
final Locale locale = command.extractLocale();
validateAccountStatus(LoanEvent.LOAN_EDIT_MULTI_DISBURSE_DATE);
@@ -4965,8 +4967,8 @@ public class Loan extends AbstractPersistable<Long> {
for (LoanTransaction loanTransaction : allNonContraTransactionsPostDisbursement) {
copyTransactions.add(LoanTransaction.copyTransactionProperties(loanTransaction));
}
loanRepaymentScheduleTransactionProcessor.handleTransaction(getDisbursementDate(), copyTransactions,
getCurrency(), this.repaymentScheduleInstallments, charges());
loanRepaymentScheduleTransactionProcessor.handleTransaction(getDisbursementDate(), copyTransactions, getCurrency(),
this.repaymentScheduleInstallments, charges());
updateLoanSummaryDerivedFields();
}
@@ -5551,11 +5553,11 @@ public class Loan extends AbstractPersistable<Long> {
actualDisbursementDate = lastTransactionDate;
updateLoanToLastDisbursalState(actualDisbursementDate);
for (Iterator<LoanTermVariations> iterator = this.loanTermVariations.iterator(); iterator.hasNext();) {
LoanTermVariations loanTermVariations = iterator.next();
if (loanTermVariations.fetchDateValue().isAfter(actualDisbursementDate)) {
iterator.remove();
}
}
LoanTermVariations loanTermVariations = iterator.next();
if (loanTermVariations.fetchDateValue().isAfter(actualDisbursementDate)) {
iterator.remove();
}
}
reverseExistingTransactionsTillLastDisbursal(actualDisbursementDate);
loan.recalculateScheduleFromLastTransaction(scheduleGeneratorDTO, existingTransactionIds, existingReversedTransactionIds,
currentUser);
@@ -5638,11 +5640,11 @@ public class Loan extends AbstractPersistable<Long> {
}
public int fetchNumberOfInstallmensAfterExceptions() {
if(this.repaymentScheduleInstallments.size() > 0){
if (this.repaymentScheduleInstallments.size() > 0) {
int numberOfInstallments = 0;
for (final LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) {
if(!installment.isRecalculatedInterestComponent()){
numberOfInstallments++;
if (!installment.isRecalculatedInterestComponent()) {
numberOfInstallments++;
}
}
return numberOfInstallments;
@@ -5653,27 +5655,27 @@ public class Loan extends AbstractPersistable<Long> {
public void setExpectedFirstRepaymentOnDate(Date expectedFirstRepaymentOnDate) {
this.expectedFirstRepaymentOnDate = expectedFirstRepaymentOnDate;
}
/*
* get the next repayment date for rescheduling at the time of disbursement
*/
public LocalDate getNextPossibleRepaymentDateForRescheduling(){
Set<LoanDisbursementDetails> loanDisbursementDetails = this.disbursementDetails;
LocalDate nextRepaymentDate = new LocalDate();
for(LoanDisbursementDetails loanDisbursementDetail : loanDisbursementDetails){
if(loanDisbursementDetail.actualDisbursementDate() == null){
for (final LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) {
if (installment.getDueDate().isEqual(loanDisbursementDetail.expectedDisbursementDateAsLocalDate()) ||
installment.getDueDate().isAfter(loanDisbursementDetail.expectedDisbursementDateAsLocalDate())
&& installment.isNotFullyPaidOff()) {
nextRepaymentDate = installment.getDueDate();
break;
}
}
break;
}
}
return nextRepaymentDate;
}
* get the next repayment date for rescheduling at the time of disbursement
*/
public LocalDate getNextPossibleRepaymentDateForRescheduling() {
Set<LoanDisbursementDetails> loanDisbursementDetails = this.disbursementDetails;
LocalDate nextRepaymentDate = new LocalDate();
for (LoanDisbursementDetails loanDisbursementDetail : loanDisbursementDetails) {
if (loanDisbursementDetail.actualDisbursementDate() == null) {
for (final LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) {
if (installment.getDueDate().isEqual(loanDisbursementDetail.expectedDisbursementDateAsLocalDate())
|| installment.getDueDate().isAfter(loanDisbursementDetail.expectedDisbursementDateAsLocalDate())
&& installment.isNotFullyPaidOff()) {
nextRepaymentDate = installment.getDueDate();
break;
}
}
break;
}
}
return nextRepaymentDate;
}
}