diff --git a/src/main/java/io/zipcoder/controller/AccountController.java b/src/main/java/io/zipcoder/controller/AccountController.java new file mode 100644 index 0000000..d59d41c --- /dev/null +++ b/src/main/java/io/zipcoder/controller/AccountController.java @@ -0,0 +1,4 @@ +package io.zipcoder.controller; + +public class AccountController { +} diff --git a/src/main/java/io/zipcoder/controller/BillController.java b/src/main/java/io/zipcoder/controller/BillController.java new file mode 100644 index 0000000..effd7f7 --- /dev/null +++ b/src/main/java/io/zipcoder/controller/BillController.java @@ -0,0 +1,4 @@ +package io.zipcoder.controller; + +public class BillController { +} diff --git a/src/main/java/io/zipcoder/controller/CustomerController.java b/src/main/java/io/zipcoder/controller/CustomerController.java new file mode 100644 index 0000000..9c51c8d --- /dev/null +++ b/src/main/java/io/zipcoder/controller/CustomerController.java @@ -0,0 +1,42 @@ +package io.zipcoder.controller; + +import io.zipcoder.domain.Customer; +import io.zipcoder.service.CustomerService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.inject.Inject; + +// not concerned with logic +// request deferred to the service which takes care of the logic +// receive requests and map them + +@RestController +public class CustomerController { + + @Inject + private CustomerService customerService; + + @RequestMapping(value="/accounts/{customerId}/customer", method = RequestMethod.GET) + public ResponseEntity lookUpByAccountId(@PathVariable long accountId) { + Customer result = customerService.findByAccountId(accountId); + return new ResponseEntity<>(result, HttpStatus.OK); + } + + @RequestMapping(value="/customers", method = RequestMethod.GET) + public ResponseEntity listAllCustomers() { + return new ResponseEntity>(customerService.findAllCustomers(), HttpStatus.OK); + } + + @RequestMapping(value="/customers/{id}") + public ResponseEntity lookUpById(@PathVariable long id) { + return new ResponseEntity<>(customerService.findByCustomerId(id), HttpStatus.OK); + } + + +} diff --git a/src/main/java/io/zipcoder/controller/DepositController.java b/src/main/java/io/zipcoder/controller/DepositController.java new file mode 100644 index 0000000..e540d6e --- /dev/null +++ b/src/main/java/io/zipcoder/controller/DepositController.java @@ -0,0 +1,4 @@ +package io.zipcoder.controller; + +public class DepositController { +} diff --git a/src/main/java/io/zipcoder/controller/WithdrawalsController.java b/src/main/java/io/zipcoder/controller/WithdrawalsController.java new file mode 100644 index 0000000..b9816d0 --- /dev/null +++ b/src/main/java/io/zipcoder/controller/WithdrawalsController.java @@ -0,0 +1,4 @@ +package io.zipcoder.controller; + +public class WithdrawalsController { +} diff --git a/src/main/java/io/zipcoder/domain/Account.java b/src/main/java/io/zipcoder/domain/Account.java new file mode 100644 index 0000000..7ccfbf0 --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Account.java @@ -0,0 +1,4 @@ +package io.zipcoder.domain; + +public class Account { +} diff --git a/src/main/java/io/zipcoder/domain/Address.java b/src/main/java/io/zipcoder/domain/Address.java new file mode 100644 index 0000000..8f27029 --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Address.java @@ -0,0 +1,16 @@ +package io.zipcoder.domain; + +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +public class Address { + + @Id + @GeneratedValue + private Long id; + private String streetNumber; + private String streetName; + private String city; + private String state; + private String zip; +} diff --git a/src/main/java/io/zipcoder/domain/Bill.java b/src/main/java/io/zipcoder/domain/Bill.java new file mode 100644 index 0000000..eab1fcd --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Bill.java @@ -0,0 +1,4 @@ +package io.zipcoder.domain; + +public class Bill { +} diff --git a/src/main/java/io/zipcoder/domain/Customer.java b/src/main/java/io/zipcoder/domain/Customer.java new file mode 100644 index 0000000..84442fb --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Customer.java @@ -0,0 +1,60 @@ +package io.zipcoder.domain; + +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import java.util.Collections; +import java.util.Iterator; +import java.util.Set; +import java.util.TreeSet; + +public class Customer { + @Id + @GeneratedValue + private long id; + private String firstName; + private String lastName; + @OneToMany + private Set
addresses = new TreeSet<>(); + + + + public Customer(long id, String firstName, String lastName) { + this.id = id; + this.firstName = firstName; + this.lastName = lastName; + + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + 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 void addAddresst(Address address) { + addresses.add(address); + } + + public Iterable
getAddresses() { + return Collections.unmodifiableSet(addresses); + } +} diff --git a/src/main/java/io/zipcoder/domain/Deposit.java b/src/main/java/io/zipcoder/domain/Deposit.java new file mode 100644 index 0000000..11e3235 --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Deposit.java @@ -0,0 +1,4 @@ +package io.zipcoder.domain; + +public class Deposit { +} diff --git a/src/main/java/io/zipcoder/domain/Withdrawals.java b/src/main/java/io/zipcoder/domain/Withdrawals.java new file mode 100644 index 0000000..ad0b8e7 --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Withdrawals.java @@ -0,0 +1,4 @@ +package io.zipcoder.domain; + +public class Withdrawals { +} diff --git a/src/main/java/io/zipcoder/repositories/AccountRepository.java b/src/main/java/io/zipcoder/repositories/AccountRepository.java new file mode 100644 index 0000000..edd0afb --- /dev/null +++ b/src/main/java/io/zipcoder/repositories/AccountRepository.java @@ -0,0 +1,4 @@ +package io.zipcoder.repositories; + +public interface AccountRepository { +} diff --git a/src/main/java/io/zipcoder/repositories/Address.java b/src/main/java/io/zipcoder/repositories/Address.java new file mode 100644 index 0000000..9d614e4 --- /dev/null +++ b/src/main/java/io/zipcoder/repositories/Address.java @@ -0,0 +1,6 @@ +package io.zipcoder.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface Address extends JpaRepository { +} diff --git a/src/main/java/io/zipcoder/repositories/BillRepository.java b/src/main/java/io/zipcoder/repositories/BillRepository.java new file mode 100644 index 0000000..1659c8f --- /dev/null +++ b/src/main/java/io/zipcoder/repositories/BillRepository.java @@ -0,0 +1,4 @@ +package io.zipcoder.repositories; + +public interface BillRepository { +} diff --git a/src/main/java/io/zipcoder/repositories/CustomerRepository.java b/src/main/java/io/zipcoder/repositories/CustomerRepository.java new file mode 100644 index 0000000..9a5bd61 --- /dev/null +++ b/src/main/java/io/zipcoder/repositories/CustomerRepository.java @@ -0,0 +1,19 @@ +package io.zipcoder.repositories; + +import io.zipcoder.domain.Address; +import io.zipcoder.domain.Customer; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + + +public interface CustomerRepository extends JpaRepository { + + Customer findCustomerByAccountId(long id); + + List findAll(); + + Customer findCustomerById(long id); + +} diff --git a/src/main/java/io/zipcoder/repositories/DepositRepository.java b/src/main/java/io/zipcoder/repositories/DepositRepository.java new file mode 100644 index 0000000..9e61280 --- /dev/null +++ b/src/main/java/io/zipcoder/repositories/DepositRepository.java @@ -0,0 +1,4 @@ +package io.zipcoder.repositories; + +public interface DepositRepository { +} diff --git a/src/main/java/io/zipcoder/repositories/WithdrawalRepository.java b/src/main/java/io/zipcoder/repositories/WithdrawalRepository.java new file mode 100644 index 0000000..9a001b2 --- /dev/null +++ b/src/main/java/io/zipcoder/repositories/WithdrawalRepository.java @@ -0,0 +1,4 @@ +package io.zipcoder.repositories; + +public interface WithdrawalRepository { +} diff --git a/src/main/java/io/zipcoder/service/AccountService.java b/src/main/java/io/zipcoder/service/AccountService.java new file mode 100644 index 0000000..3cfd0ad --- /dev/null +++ b/src/main/java/io/zipcoder/service/AccountService.java @@ -0,0 +1,4 @@ +package io.zipcoder.service; + +public class AccountService { +} diff --git a/src/main/java/io/zipcoder/service/BillService.java b/src/main/java/io/zipcoder/service/BillService.java new file mode 100644 index 0000000..60fceac --- /dev/null +++ b/src/main/java/io/zipcoder/service/BillService.java @@ -0,0 +1,4 @@ +package io.zipcoder.service; + +public class BillService { +} diff --git a/src/main/java/io/zipcoder/service/CustomerService.java b/src/main/java/io/zipcoder/service/CustomerService.java new file mode 100644 index 0000000..ff88049 --- /dev/null +++ b/src/main/java/io/zipcoder/service/CustomerService.java @@ -0,0 +1,31 @@ +package io.zipcoder.service; + +import io.zipcoder.domain.Customer; +import io.zipcoder.repositories.CustomerRepository; +import org.apache.tomcat.jdbc.pool.DataSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.session.SessionProperties; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class CustomerService { + + + @Autowired + private CustomerRepository customerRepository; + + public Customer findByAccountId(long accountId) { + return customerRepository.findCustomerByAccountId(accountId); + } + + public List findAllCustomers() { + return customerRepository.findAll(); + } + + public Customer findByCustomerId(long id) { + return customerRepository.findCustomerById(id); + } +} diff --git a/src/main/java/io/zipcoder/service/DepositService.java b/src/main/java/io/zipcoder/service/DepositService.java new file mode 100644 index 0000000..ff1e09d --- /dev/null +++ b/src/main/java/io/zipcoder/service/DepositService.java @@ -0,0 +1,4 @@ +package io.zipcoder.service; + +public class DepositService { +} diff --git a/src/main/java/io/zipcoder/service/WithdrawalsService.java b/src/main/java/io/zipcoder/service/WithdrawalsService.java new file mode 100644 index 0000000..7795e51 --- /dev/null +++ b/src/main/java/io/zipcoder/service/WithdrawalsService.java @@ -0,0 +1,4 @@ +package io.zipcoder.service; + +public class WithdrawalsService { +}