All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.adorsys.ledgers.rest.posting.controller.LedgerController Maven / Gradle / Ivy

There is a newer version: 4.17
Show newest version
package de.adorsys.ledgers.rest.posting.controller;

import de.adorsys.ledgers.postings.api.domain.LedgerAccountBO;
import de.adorsys.ledgers.postings.api.domain.LedgerBO;
import de.adorsys.ledgers.postings.api.service.LedgerService;
import de.adorsys.ledgers.rest.exception.NotFoundRestException;
import de.adorsys.ledgers.util.exception.PostingModuleException;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.util.UriBuilder;

import java.net.URI;
import java.security.Principal;

@RestController
public class LedgerController {
    private final Principal principal;
    private final LedgerService ledgerService;

    public LedgerController(Principal principal, LedgerService ledgerService) {
        this.principal = principal;
        this.ledgerService = ledgerService;
    }

    /**
     * Creates a new Ledger.
     *
     * @param ledger Ledger object
     * @return void response with HttpStatus 201 if successful
     */
    @PostMapping(path = "/ledgers")
    public ResponseEntity newLedger(LedgerBO ledger, UriBuilder uri) {
        LedgerBO newLedger = ledgerService.newLedger(ledger);

        URI location = uri.path(newLedger.getId()).build();
        return ResponseEntity.created(location).build();
    }

    @GetMapping(path = "/ledgers/{id}")
    public ResponseEntity findLedgerById(@PathVariable("id") String id) {
        LedgerBO ledger = ledgerService.findLedgerById(id).orElseThrow(() -> new NotFoundRestException(id));
        return ResponseEntity.ok(ledger);
    }

    /**
     * Find the ledger with the given name.
     *
     * @param ledgerName name of corresponding Ledger
     * @return Ledger object
     */
    @GetMapping(path = "/ledgers", params = {"ledgerName"})
    public ResponseEntity findLedgerByName(@RequestParam(name = "ledgerName") String ledgerName) {
        LedgerBO ledger = ledgerService.findLedgerByName(ledgerName).orElseThrow(() -> new NotFoundRestException(ledgerName));
        return ResponseEntity.ok(ledger);
    }

    /**
     * Create a new Ledger account.
     * 

* While creating a ledger account, the parent hat to be specified. * * @param ledgerAccount Ledger account * @return Void response with 201 HttpStatus if successful */ @PostMapping(path = "/accounts") public ResponseEntity newLedgerAccount(@RequestBody LedgerAccountBO ledgerAccount, UriBuilder uri) { LedgerAccountBO newLedgerAccount = ledgerService.newLedgerAccount(ledgerAccount, principal.getName()); URI location = uri.path(newLedgerAccount.getId()).build(); return ResponseEntity.created(location).build(); } @GetMapping(path = "/accounts/{id}") public ResponseEntity findLedgerAccountById(@PathVariable("id") String id) { try { LedgerAccountBO la = ledgerService.findLedgerAccountById(id); return ResponseEntity.ok(la); } catch (PostingModuleException e) { throw new NotFoundRestException(id); } } /** * Find the ledger account with the given ledger name and account name and reference date. * * @param ledgerName name of ledger * @param accountName name of account * @return Ledger Account */ @GetMapping(path = "/accounts", params = {"ledgerName", "accountName"}) public ResponseEntity findLedgerAccountByName( @RequestParam(name = "ledgerName") String ledgerName, @RequestParam(name = "accountName") String accountName) { LedgerBO ledger = new LedgerBO(); ledger.setName(ledgerName); return ledgerAccount(ledger, accountName); } /** * Find the ledger account with the given name * * @param accountName name of corresponding account * @return Ledger account */ @GetMapping(path = "/ledgers/{ledgerId}/accounts", params = {"accountName"}) public ResponseEntity findLedgerAccount( @PathVariable("ledgerId") String ledgerId, @RequestParam(name = "accountName") String accountName) { LedgerBO ledger = new LedgerBO(); ledger.setId(ledgerId); return ledgerAccount(ledger, accountName); } private ResponseEntity ledgerAccount(LedgerBO ledger, String accountName) { LedgerAccountBO ledgerAccount = ledgerService.findLedgerAccount(ledger, accountName); return ResponseEntity.ok(ledgerAccount); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy