diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/ImportPlatformService.java b/mifosng-provider/src/main/java/org/mifosng/platform/ImportPlatformService.java deleted file mode 100644 index b4234ffba..000000000 --- a/mifosng-provider/src/main/java/org/mifosng/platform/ImportPlatformService.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.mifosng.platform; - -import org.mifosng.platform.api.commands.ImportClientCommand; -import org.mifosng.platform.api.commands.ImportLoanCommand; -import org.mifosng.platform.api.commands.ImportLoanRepaymentsCommand; - -public interface ImportPlatformService { - - void importClients(ImportClientCommand command); - - ImportClientCommand populateClientImportFromCsv(); - - void importLoans(ImportLoanCommand command); - - ImportLoanCommand populateLoanImportFromCsv(); - - void importLoanRepayments(ImportLoanRepaymentsCommand command); - - ImportLoanRepaymentsCommand populateLoanRepaymentsImportFromCsv(); - -} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/ImportPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/ImportPlatformServiceImpl.java deleted file mode 100644 index c4eeb0b05..000000000 --- a/mifosng-provider/src/main/java/org/mifosng/platform/ImportPlatformServiceImpl.java +++ /dev/null @@ -1,585 +0,0 @@ -package org.mifosng.platform; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.math.BigDecimal; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Predicate; -import javax.persistence.criteria.Root; - -import org.apache.commons.lang.StringUtils; -import org.joda.time.LocalDate; -import org.joda.time.format.DateTimeFormatter; -import org.joda.time.format.ISODateTimeFormat; -import org.mifosng.data.LoanSchedule; -import org.mifosng.platform.api.commands.CalculateLoanScheduleCommand; -import org.mifosng.platform.api.commands.ClientCommand; -import org.mifosng.platform.api.commands.ImportClientCommand; -import org.mifosng.platform.api.commands.ImportLoanCommand; -import org.mifosng.platform.api.commands.ImportLoanRepaymentsCommand; -import org.mifosng.platform.api.commands.LoanStateTransitionCommand; -import org.mifosng.platform.api.commands.LoanTransactionCommand; -import org.mifosng.platform.api.commands.SubmitApproveDisburseLoanCommand; -import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand; -import org.mifosng.platform.client.domain.Client; -import org.mifosng.platform.client.domain.ClientRepository; -import org.mifosng.platform.currency.domain.Money; -import org.mifosng.platform.exceptions.UnAuthenticatedUserException; -import org.mifosng.platform.loan.domain.DefaultLoanLifecycleStateMachine; -import org.mifosng.platform.loan.domain.InterestCalculationPeriodMethod; -import org.mifosng.platform.loan.domain.Loan; -import org.mifosng.platform.loan.domain.LoanLifecycleStateMachine; -import org.mifosng.platform.loan.domain.LoanProduct; -import org.mifosng.platform.loan.domain.LoanProductRepository; -import org.mifosng.platform.loan.domain.LoanRepository; -import org.mifosng.platform.loan.domain.LoanStatus; -import org.mifosng.platform.loan.domain.LoanStatusRepository; -import org.mifosng.platform.loan.domain.LoanTransaction; -import org.mifosng.platform.loan.domain.PeriodFrequencyType; -import org.mifosng.platform.loan.service.CalculationPlatformService; -import org.mifosng.platform.loan.service.LoanAssembler; -import org.mifosng.platform.organisation.domain.Office; -import org.mifosng.platform.organisation.domain.OfficeRepository; -import org.mifosng.platform.organisation.domain.Organisation; -import org.mifosng.platform.user.domain.AppUser; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.data.jpa.domain.Specification; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContext; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import com.csvreader.CsvReader; - -@Service -public class ImportPlatformServiceImpl implements ImportPlatformService { - - private final OfficeRepository officeRepository; - private final ClientRepository clientRepository; - private final LoanProductRepository loanProductRepository; - private final CalculationPlatformService calculationPlatformService; - private final LoanRepository loanRepository; - private final LoanStatusRepository loanStatusRepository; - private final LoanAssembler loanAssembler; - - @Autowired - public ImportPlatformServiceImpl(final LoanAssembler loanAssembler, - final OfficeRepository officeRepository, final ClientRepository clientRepository, final LoanProductRepository loanProductRepository, - final CalculationPlatformService calculationPlatformService, final LoanRepository loanRepository, final LoanStatusRepository loanStatusRepository) { - this.loanAssembler = loanAssembler; - this.officeRepository = officeRepository; - this.clientRepository = clientRepository; - this.loanProductRepository = loanProductRepository; - this.calculationPlatformService = calculationPlatformService; - this.loanRepository = loanRepository; - this.loanStatusRepository = loanStatusRepository; - } - - private AppUser extractAuthenticatedUser() { - AppUser currentUser = null; - SecurityContext context = SecurityContextHolder.getContext(); - if (context != null) { - Authentication auth = context.getAuthentication(); - if (auth != null) { - currentUser = (AppUser) auth.getPrincipal(); - } - } - - if (currentUser == null) { - throw new UnAuthenticatedUserException(); - } - - return currentUser; - } - - @Transactional - @Override - public void importClients(ImportClientCommand command) { - - AppUser currentUser = extractAuthenticatedUser(); - - List allOffices = this.officeRepository.findAll(officesBelongingTo(currentUser.getOrganisation())); - - List newClientCollection = new ArrayList(); - - for (ClientCommand client : command.getClients()) { - Office clientOffice = findById(allOffices, client.getOfficeId()); - - Client newClient = Client.newClient(currentUser.getOrganisation(), clientOffice, client.getFirstname(), client.getLastname(), client.getJoiningLocalDate(), client.getExternalId()); - - newClientCollection.add(newClient); - } - - this.clientRepository.save(newClientCollection); - } - - @Transactional - @Override - public void importLoans(ImportLoanCommand importCommand) { - - AppUser currentUser = extractAuthenticatedUser(); - - List newLoanCollection = new ArrayList(); - - for (SubmitApproveDisburseLoanCommand combinedCommand : importCommand.getLoans()) { - - SubmitLoanApplicationCommand command = combinedCommand.getSubmitLoanApplicationCommand(); - - Loan loan = loanAssembler.assembleFrom(command, currentUser.getOrganisation()); - - LoanLifecycleStateMachine loanLifecycleStateMachine = defaultLoanLifecycleStateMachine(); - - LoanStateTransitionCommand approveLoanCommand = combinedCommand.getApproveLoanCommand(); - if (approveLoanCommand != null) { - loan.approve(approveLoanCommand.getEventLocalDate(), loanLifecycleStateMachine); - } - - LoanStateTransitionCommand disburseLoanCommand = combinedCommand.getDisburseLoanCommand(); - if (disburseLoanCommand != null) { - loan.disburse(disburseLoanCommand.getEventLocalDate(), loanLifecycleStateMachine); - } - - newLoanCollection.add(loan); - } - - this.loanRepository.save(newLoanCollection); - } - - private LoanLifecycleStateMachine defaultLoanLifecycleStateMachine() { - List allowedLoanStatuses = this.loanStatusRepository.findAll(); - return new DefaultLoanLifecycleStateMachine(allowedLoanStatuses); - } - - @Transactional - @Override - public void importLoanRepayments(ImportLoanRepaymentsCommand command) { - - AppUser currentUser = extractAuthenticatedUser(); - - LoanLifecycleStateMachine loanLifecycleStateMachine = defaultLoanLifecycleStateMachine(); - - List newLoanCollection = new ArrayList(); - - List allLoans = this.loanRepository.findAll(loansBelongingTo(currentUser.getOrganisation())); - for (LoanTransactionCommand repaymentDetail : command.getRepayments()) { - Loan loan = findLoanByIdentifier(allLoans, repaymentDetail.getLoanId().toString()); - - Money repaymentAmount = Money.of(loan.getCurrency(), repaymentDetail.getTransactionAmountValue()); - - LoanTransaction loanRepayment = LoanTransaction.repayment(repaymentAmount, repaymentDetail.getTransactionLocalDate()); - loan.makeRepayment(loanRepayment, loanLifecycleStateMachine); - } - - this.loanRepository.save(newLoanCollection); - - } - - public static Specification officesBelongingTo(final Organisation organisation) { - return new Specification() { - - @Override - public Predicate toPredicate(final Root root, - final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.equal(root.get("organisation"), organisation); - } - }; - } - - public static Specification productsBelongingTo(final Organisation organisation) { - return new Specification() { - - @Override - public Predicate toPredicate(final Root root, - final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.equal(root.get("organisation"), organisation); - } - }; - } - - public static Specification loansBelongingTo(final Organisation organisation) { - return new Specification() { - - @Override - public Predicate toPredicate(final Root root, - final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.equal(root.get("organisation"), organisation); - } - }; - } - - public static Specification clientsBelongingTo(final Organisation organisation) { - return new Specification() { - - @Override - public Predicate toPredicate(final Root root, - final CriteriaQuery query, final CriteriaBuilder cb) { - return cb.equal(root.get("organisation"), organisation); - } - }; - } - - @Override - public ImportLoanRepaymentsCommand populateLoanRepaymentsImportFromCsv() { - - ImportLoanRepaymentsCommand command = new ImportLoanRepaymentsCommand(); - - AppUser currentUser = extractAuthenticatedUser(); - - List allLoans = this.loanRepository.findAll(loansBelongingTo(currentUser.getOrganisation())); - ClassPathResource repaymentsCsvFile = new ClassPathResource("creocore-loan-repayments.csv"); - - File file = null; - FileInputStream fileInputStream = null; - CsvReader loans = null; - try { - DateTimeFormatter isoParser = ISODateTimeFormat.date(); - loans = new CsvReader(repaymentsCsvFile.getInputStream(), - Charset.defaultCharset()); - loans.readHeaders(); - - List repaymentDetails = new ArrayList(); - - while (loans.readRecord()) { - String loanExternalId = loans.get("LoanExternalId"); - Loan matchingLoan = findLoanByIdentifier(allLoans, loanExternalId.trim()); - - String paymentDate = loans.get("PaymentDate"); - LocalDate paidOnDate = null; - if (StringUtils.isNotBlank(paymentDate)) { - paidOnDate = new LocalDate(isoParser.parseDateTime(paymentDate)); - } - - String paymentAmount = loans.get("PaymentAmount"); - BigDecimal repayment = BigDecimal.ZERO; - if (StringUtils.isNotBlank(paymentAmount)) { - repayment = BigDecimal.valueOf(Double.valueOf(paymentAmount)); - } - - String noNoteComment = "No note due to migration from mifos."; - - LoanTransactionCommand repaymentCommand = new LoanTransactionCommand(matchingLoan.getId(), paidOnDate, noNoteComment, repayment); - - repaymentDetails.add(repaymentCommand); - } - - command.setRepayments(repaymentDetails); - - return command; - } catch (FileNotFoundException e) { - throw new RuntimeException(e); - } catch (IllegalArgumentException e) { - throw new RuntimeException(e); - } catch (IOException e) { - throw new RuntimeException(e); - } finally { - if (file != null) { - file = null; - } - if (fileInputStream != null) { - fileInputStream = null; - } - if (loans != null) { - loans = null; - } - } - } - - @Override - public ImportLoanCommand populateLoanImportFromCsv() { - - ImportLoanCommand command = new ImportLoanCommand(); - - AppUser currentUser = extractAuthenticatedUser(); - - List allProducts = this.loanProductRepository.findAll(productsBelongingTo(currentUser.getOrganisation())); - - List allClients = this.clientRepository.findAll(clientsBelongingTo(currentUser.getOrganisation())); - - ClassPathResource loanCsvFile = new ClassPathResource("creocore-loans.csv"); - - File file = null; - FileInputStream fileInputStream = null; - CsvReader loans = null; - try { - DateTimeFormatter isoParser = ISODateTimeFormat.date(); - loans = new CsvReader(loanCsvFile.getInputStream(), - Charset.defaultCharset()); - loans.readHeaders(); - - List parsedLoanDetails = new ArrayList(); - - while (loans.readRecord()) { - String clientIdentifier = loans.get("ClientExternalId"); - Client matchingClient = findClientByIdentifier(allClients, clientIdentifier.trim()); - - String loanExternalId = loans.get("LoanExternalId"); - - String productIdentifier = loans.get("ProductExternalId"); - LoanProduct matchingProduct = findProductByIdentifier(allProducts, productIdentifier); - - String loanPrincipal = loans.get("LoanPrincipal"); - Number principal = BigDecimal.ZERO; - if (StringUtils.isNotBlank(loanPrincipal)) { - principal = Double.valueOf(loanPrincipal); - } - - String interestRateAsString = loans.get("InterestRate"); - Number interestRatePerYear = BigDecimal.ZERO; - if (StringUtils.isNotBlank(interestRateAsString)) { - interestRatePerYear = Double.valueOf(interestRateAsString); - } - - String submitted = loans.get("SubmittedOn"); - LocalDate submittedOnDate = null; - if (StringUtils.isNotBlank(submitted)) { - submittedOnDate = new LocalDate(isoParser.parseDateTime(submitted)); - } - - String noNoteComment = "No note due to migration from mifos."; - - String installmentsAsString = loans.get("Installments"); - Integer numberOfRepayments = Integer.valueOf(0); - if (StringUtils.isNotBlank(installmentsAsString)) { - numberOfRepayments = Integer.valueOf(installmentsAsString); - } - - String approved = loans.get("ApprovedOn"); - LocalDate approvedDate = null; - if (StringUtils.isNotBlank(approved)) { - approvedDate = new LocalDate(isoParser.parseDateTime(approved)); - } - - String disbursed = loans.get("DateDisbursalTransaction"); - LocalDate disbursedDate = null; - LocalDate expectedDisbursementDate = null; - - if (StringUtils.isNotBlank(disbursed)) { - disbursedDate = new LocalDate(isoParser.parseDateTime(disbursed)); - expectedDisbursementDate = disbursedDate; - } else { - expectedDisbursementDate = approvedDate; - } - - String repaymentsStartOn = loans.get("FirstInstallmentDate"); - LocalDate repaymentsStartingFromDate = null; - LocalDate interestCalculatedFromDate = null; - if (StringUtils.isNotBlank(repaymentsStartOn)) { - repaymentsStartingFromDate = new LocalDate(isoParser.parseDateTime(repaymentsStartOn)); - interestCalculatedFromDate = expectedDisbursementDate; - } - - String currencyCode = matchingProduct.getCurrency().getCode(); - int digitsAfterDecimal = matchingProduct.getCurrency().getDigitsAfterDecimal(); - Integer repaymentEvery = matchingProduct.getRepayEvery(); - Integer repaymentFrequency = matchingProduct.getRepaymentPeriodFrequencyType().getValue(); - Integer amortizationMethod = matchingProduct.getAmortizationMethod().getValue(); - - final Money toleranceAmount = matchingProduct.getInArrearsTolerance(); - - Number interestRatePerPeriod = interestRatePerYear; - Integer interestRatePeriodFrequency = PeriodFrequencyType.YEARS.getValue(); - Integer interestMethod = matchingProduct.getInterestMethod().getValue(); - Integer interestCalculationPeriodMethod = InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD.getValue(); - - CalculateLoanScheduleCommand calculateLoanScheduleCommand = new CalculateLoanScheduleCommand(currencyCode, digitsAfterDecimal, principal, - interestRatePerPeriod, - interestRatePeriodFrequency, - interestMethod, interestCalculationPeriodMethod, - repaymentEvery, - repaymentFrequency, numberOfRepayments, amortizationMethod, expectedDisbursementDate, repaymentsStartingFromDate, interestCalculatedFromDate); - - LoanSchedule loanSchedule = this.calculationPlatformService.calculateLoanSchedule(calculateLoanScheduleCommand); - - SubmitLoanApplicationCommand parsedNewLoanDetails = new SubmitLoanApplicationCommand(matchingClient.getId(), matchingProduct.getId(), submittedOnDate, noNoteComment, - expectedDisbursementDate, repaymentsStartingFromDate, interestCalculatedFromDate, loanSchedule, - currencyCode, digitsAfterDecimal, principal, - interestRatePerPeriod, interestRatePeriodFrequency, interestMethod, interestCalculationPeriodMethod, - repaymentEvery, repaymentFrequency, numberOfRepayments, amortizationMethod, toleranceAmount.getAmount()); - - parsedNewLoanDetails.setExternalId(loanExternalId); - - LoanStateTransitionCommand approvedLoanCommand = null; - if (approvedDate != null) { - approvedLoanCommand = new LoanStateTransitionCommand(null, approvedDate, noNoteComment); - } - - LoanStateTransitionCommand disburseLoanCommand = null; - if (disbursedDate != null) { - disburseLoanCommand = new LoanStateTransitionCommand(null, disbursedDate, noNoteComment); - } - - SubmitApproveDisburseLoanCommand submitApproveDisburseLoanCommand = new SubmitApproveDisburseLoanCommand(); - submitApproveDisburseLoanCommand.setSubmitLoanApplicationCommand(parsedNewLoanDetails); - submitApproveDisburseLoanCommand.setApproveLoanCommand(approvedLoanCommand); - submitApproveDisburseLoanCommand.setDisburseLoanCommand(disburseLoanCommand); - - parsedLoanDetails.add(submitApproveDisburseLoanCommand); - } - - command.setLoans(parsedLoanDetails); - - return command; - } catch (FileNotFoundException e) { - throw new RuntimeException(e); -// throw new BulkuploadFileNotFoundException(e); - } catch (IllegalArgumentException e) { - throw new RuntimeException(e); -// throw new BulkuploadInvalidDataException(e); - } catch (IOException e) { - throw new RuntimeException(e); -// throw new BulkuploadParseException(e); - } finally { - if (file != null) { - file = null; - } - if (fileInputStream != null) { - fileInputStream = null; - } - if (loans != null) { - loans = null; - } - } - } - - @Override - public ImportClientCommand populateClientImportFromCsv() { - - ImportClientCommand command = new ImportClientCommand(); - - AppUser currentUser = extractAuthenticatedUser(); - - List allOffices = this.officeRepository.findAll(officesBelongingTo(currentUser.getOrganisation())); - - ClassPathResource clientCsv = new ClassPathResource("creocore-clients.csv"); - - File file = null; - FileInputStream fileInputStream = null; - CsvReader clients = null; - try { - DateTimeFormatter isoParser = ISODateTimeFormat.date(); - clients = new CsvReader(clientCsv.getInputStream(), - Charset.defaultCharset()); - clients.readHeaders(); - -// int clientCsvHeaderCount = clients.getHeaderCount(); -// if (clientCsvHeaderCount != 5) { -// success = false; -// } - - List parsedClients = new ArrayList(); - while (clients.readRecord()) { - String externalId = clients.get("ExternalId"); - String firstname = clients.get("FirstName"); - String lastname = clients.get("LastName"); - String joined = clients.get("Joined"); - String officeIdentifier = clients.get("Office"); - Office matchingOffice = findOfficeByIdentifier(allOffices, officeIdentifier.trim()); - - LocalDate joiningDate = new LocalDate(isoParser.parseDateTime(joined)); - - ClientCommand parsedClient = new ClientCommand(firstname, lastname, "", matchingOffice.getId(), joiningDate); - parsedClient.setExternalId(externalId); - - parsedClients.add(parsedClient); - } - - command.setClients(parsedClients); - - return command; - } catch (FileNotFoundException e) { -// throw new BulkuploadFileNotFoundException(e); - } catch (IllegalArgumentException e) { -// throw new BulkuploadInvalidDataException(e); - } catch (IOException e) { -// throw new BulkuploadParseException(e); - } finally { - if (file != null) { - file = null; - } - if (fileInputStream != null) { - fileInputStream = null; - } - if (clients != null) { - clients = null; - } - } - - return command; - } - - private Office findById(List allOffices, Long id) { - - Office match = null; - - for (Office office : allOffices) { - if (id.equals(office.getId())) { - match = office; - break; - } - } - - return match; - } - - - private Loan findLoanByIdentifier(List allEntities, String identifier) { - Loan match = null; - - for (Loan entity : allEntities) { - if (entity.identifiedBy(identifier)) { - match = entity; - break; - } - } - - return match; - } - - private Office findOfficeByIdentifier(List allOffices, String officeIdentifier) { - Office match = null; - - for (Office office : allOffices) { - if (office.identifiedBy(officeIdentifier)) { - match = office; - break; - } - } - - return match; - } - - private Client findClientByIdentifier(List allClients, String identifier) { - Client match = null; - - for (Client client : allClients) { - if (client.identifiedBy(identifier)) { - match = client; - break; - } - } - - return match; - } - - private LoanProduct findProductByIdentifier(List allProducts, String identifier) { - LoanProduct match = null; - - for (LoanProduct client : allProducts) { - if (client.identifiedBy(identifier)) { - match = client; - break; - } - } - - return match; - } -} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/ImportClientCommand.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/ImportClientCommand.java deleted file mode 100644 index f520bb979..000000000 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/ImportClientCommand.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.mifosng.platform.api.commands; - -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-provider/src/main/java/org/mifosng/platform/api/commands/ImportLoanCommand.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/ImportLoanCommand.java deleted file mode 100644 index 848aa75a9..000000000 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/ImportLoanCommand.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.mifosng.platform.api.commands; - -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-provider/src/main/java/org/mifosng/platform/api/commands/ImportLoanRepaymentsCommand.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/ImportLoanRepaymentsCommand.java deleted file mode 100644 index a202d1b2b..000000000 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/ImportLoanRepaymentsCommand.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.mifosng.platform.api.commands; - -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-provider/src/main/java/org/mifosng/platform/rest/ImportResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/rest/ImportResource.java deleted file mode 100644 index 8a49674a3..000000000 --- a/mifosng-provider/src/main/java/org/mifosng/platform/rest/ImportResource.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.mifosng.platform.rest; - -import javax.ws.rs.Consumes; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.mifosng.platform.ImportPlatformService; -import org.mifosng.platform.api.commands.ImportClientCommand; -import org.mifosng.platform.api.commands.ImportLoanCommand; -import org.mifosng.platform.api.commands.ImportLoanRepaymentsCommand; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; - -@Path("/protected/import") -@Component -@Scope("singleton") -public class ImportResource { - - @Autowired - private ImportPlatformService importPlatformService; - - @POST - @Path("clients") - @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - public Response importClients(final ImportClientCommand command) { - this.importPlatformService.importClients(command); - - return Response.ok().build(); - } - - @POST - @Path("loans") - @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - public Response importLoans(final ImportLoanCommand command) { - - this.importPlatformService.importLoans(command); - - return Response.ok().build(); - } - - @POST - @Path("loanrepayments") - @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - public Response importLoanRepayments( - final ImportLoanRepaymentsCommand command) { - this.importPlatformService.importLoanRepayments(command); - - return Response.ok().build(); - } - -} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/rest/ImportTriggerResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/rest/ImportTriggerResource.java deleted file mode 100644 index 8a1efa225..000000000 --- a/mifosng-provider/src/main/java/org/mifosng/platform/rest/ImportTriggerResource.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.mifosng.platform.rest; - -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.mifosng.platform.ImportPlatformService; -import org.mifosng.platform.api.commands.ImportClientCommand; -import org.mifosng.platform.api.commands.ImportLoanCommand; -import org.mifosng.platform.api.commands.ImportLoanRepaymentsCommand; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; - -@Path("/protected/import/trigger") -@Component -@Scope("singleton") -public class ImportTriggerResource { - - @Autowired - private ImportPlatformService importPlatformService; - - @Autowired - private ImportResource importResource; - - // TODO - REMOVE THIS HARDCODED IMPORT OF CREOCORE CSV FILE - @GET - @Path("clients/creocore") - @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - public Response triggerCreoCoreClientImport() { - - ImportClientCommand command = this.importPlatformService.populateClientImportFromCsv(); - return importResource.importClients(command); - } - - // TODO - REMOVE THIS HARDCODED IMPORT OF CREOCORE CSV FILE - @GET - @Path("loans/creocore") - @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - public Response triggerCreoCoreLoanImport() { - - ImportLoanCommand command = this.importPlatformService.populateLoanImportFromCsv(); - return importResource.importLoans(command); - } - - @GET - @Path("repayments/creocore") - @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - public Response triggerCreoCoreLoanRepaymentsImport() { - - ImportLoanRepaymentsCommand command = this.importPlatformService.populateLoanRepaymentsImportFromCsv(); - return importResource.importLoanRepayments(command); - } -} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/rest/LoanOpenResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/rest/LoanOpenResource.java deleted file mode 100644 index a44778e60..000000000 --- a/mifosng-provider/src/main/java/org/mifosng/platform/rest/LoanOpenResource.java +++ /dev/null @@ -1,109 +0,0 @@ -package org.mifosng.platform.rest; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; - -import org.codehaus.jettison.json.JSONException; -import org.codehaus.jettison.json.JSONObject; -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormatter; -import org.joda.time.format.ISODateTimeFormat; -import org.mifosng.data.MoneyData; -import org.mifosng.platform.loan.service.CalculationPlatformService; -import org.mifosng.platform.loan.service.LoanPayoffReadModel; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; - -import com.sun.jersey.api.json.JSONWithPadding; - -/** - * Payoff functionality was something CreoCore was looking for e.g. if paid in full on date x what should be paid? full minus any rebate or incentive provided. - * - * NOTE: JSONP functionality not needed now due to use of CORS - */ -@Deprecated -@Path("/open/loan/{loanId}") -@Component -@Scope("singleton") -public class LoanOpenResource { - - @Autowired - private CalculationPlatformService calculationPlatformService; - - @GET - @Path("calculatepayoff/{payoffDate}") - @Consumes({ "application/x-javascript" }) - @Produces({ "application/x-javascript" }) - public Response calculatePayoff( - @QueryParam("callback") @DefaultValue("callback") final String callbackName, - @PathParam("loanId") final String loanId, - @PathParam("payoffDate") final String payoffDate) { - - try { - - DateTimeFormatter formatter = ISODateTimeFormat.dateParser(); - DateTime payoffDateTime = formatter.parseDateTime(payoffDate); - - LoanPayoffReadModel loanPayoffInformation = this.calculationPlatformService - .calculatePayoffOn(Long.valueOf(loanId), - payoffDateTime.toLocalDate()); - - JSONObject payoffInfo = new JSONObject(); - payoffInfo.put("reference", loanPayoffInformation.getReference()); - payoffInfo.put("acutalDisbursementDate", - loanPayoffInformation.getAcutalDisbursementDate()); - payoffInfo.put("expectedMaturityDate", - loanPayoffInformation.getExpectedMaturityDate()); - payoffInfo.put("projectedMaturityDate", - loanPayoffInformation.getProjectedMaturityDate()); - payoffInfo.put("expectedLoanTermInDays", - loanPayoffInformation.getExpectedLoanTermInDays()); - payoffInfo.put("projectedLoanTermInDays", - loanPayoffInformation.getProjectedLoanTermInDays()); - - JSONObject totalPaidToDate = jsonifyMoneyReadModel(loanPayoffInformation - .getTotalPaidToDate()); - payoffInfo.put("totalPaidToDate", totalPaidToDate); - - JSONObject totalOutstandingBasedOnExpectedMaturityDate = jsonifyMoneyReadModel(loanPayoffInformation - .getTotalOutstandingBasedOnExpectedMaturityDate()); - payoffInfo.put("totalOutstandingBasedOnExpectedMaturityDate", - totalOutstandingBasedOnExpectedMaturityDate); - - JSONObject totalOutstandingBasedOnPayoffDate = jsonifyMoneyReadModel(loanPayoffInformation - .getTotalOutstandingBasedOnPayoffDate()); - payoffInfo.put("totalOutstandingBasedOnPayoffDate", - totalOutstandingBasedOnPayoffDate); - - JSONObject interestRebateOwed = jsonifyMoneyReadModel(loanPayoffInformation - .getInterestRebateOwed()); - payoffInfo.put("interestRebateOwed", interestRebateOwed); - - JSONWithPadding payoff = new JSONWithPadding(payoffInfo, - callbackName); - - return Response.ok(payoff).build(); - } catch (JSONException e) { - return Response.status(Status.BAD_REQUEST).build(); - } - } - - private JSONObject jsonifyMoneyReadModel(final MoneyData money) - throws JSONException { - - JSONObject object = new JSONObject(); - object.put("amount", money.getAmount()); - object.put("currencyCode", money.getCurrencyCode()); - object.put("currencyDigitsAfterDecimal", money.getDigitsAfterDecimal()); - - return object; - } -} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/security/PlatformUserDetailsServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/security/PlatformUserDetailsServiceImpl.java index 20b897a20..3cc5bb92a 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/security/PlatformUserDetailsServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/security/PlatformUserDetailsServiceImpl.java @@ -5,8 +5,12 @@ import org.mifosng.platform.user.domain.PlatformUserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; +/** + * Used in securityContext.xml as implementation of spring security's {@link UserDetailsService}. + */ public class PlatformUserDetailsServiceImpl implements PlatformUserDetailsService { @Autowired diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/security/SpringSecurityPlatformSecurityContext.java b/mifosng-provider/src/main/java/org/mifosng/platform/security/SpringSecurityPlatformSecurityContext.java index 709c17786..26cb8604e 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/security/SpringSecurityPlatformSecurityContext.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/security/SpringSecurityPlatformSecurityContext.java @@ -8,7 +8,7 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; /** - * Responsible for returning the current authenticated user that is currently set in the {@link SecurityContext}. + * Wrapper around spring security's {@link SecurityContext} for extracted the current authenticated {@link AppUser}. */ @Service public class SpringSecurityPlatformSecurityContext implements PlatformSecurityContext {