From 4113246222a8b3278826d4bb6443327dab1fd8e7 Mon Sep 17 00:00:00 2001 From: tliero Date: Tue, 8 Mar 2016 17:21:39 +0100 Subject: [PATCH] problems saving - try curl first --- .../transactions/domain/Transaction.java | 10 ++++++ .../SpringDataRestEventHandler.java | 27 ++++++++++++++ .../repository/TransactionRepository.java | 4 +-- src/main/resources/static/js/controllers.js | 36 +++++++++++++++---- .../static/partials/transaction-list.html | 21 +++++++---- 5 files changed, 83 insertions(+), 15 deletions(-) create mode 100644 src/main/java/de/tilman/transactions/repository/SpringDataRestEventHandler.java diff --git a/src/main/java/de/tilman/transactions/domain/Transaction.java b/src/main/java/de/tilman/transactions/domain/Transaction.java index 05f38cf..f4c5fff 100644 --- a/src/main/java/de/tilman/transactions/domain/Transaction.java +++ b/src/main/java/de/tilman/transactions/domain/Transaction.java @@ -19,6 +19,8 @@ public class Transaction { private Date date; + private Date lastChange; + private String description; @ManyToOne @@ -50,6 +52,14 @@ public class Transaction { this.date = date; } + public Date getLastChange() { + return lastChange; + } + + public void setLastChange(Date lastChange) { + this.lastChange = lastChange; + } + public String getDescription() { return description; } diff --git a/src/main/java/de/tilman/transactions/repository/SpringDataRestEventHandler.java b/src/main/java/de/tilman/transactions/repository/SpringDataRestEventHandler.java new file mode 100644 index 0000000..49f361a --- /dev/null +++ b/src/main/java/de/tilman/transactions/repository/SpringDataRestEventHandler.java @@ -0,0 +1,27 @@ +package de.tilman.transactions.repository; + +import java.util.Date; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.data.rest.core.annotation.HandleBeforeCreate; +import org.springframework.data.rest.core.annotation.HandleBeforeSave; +import org.springframework.data.rest.core.annotation.RepositoryEventHandler; +import org.springframework.stereotype.Component; + +import de.tilman.transactions.domain.Transaction; + +// see https://spring.io/blog/2015/10/28/react-js-and-spring-data-rest-part-5-security +@Component +@RepositoryEventHandler(Transaction.class) +public class SpringDataRestEventHandler { + + private static final Logger log = LoggerFactory.getLogger(SpringDataRestEventHandler.class); + + @HandleBeforeCreate + @HandleBeforeSave + public void applyUserInformationUsingSecurityContext(Transaction transaction) { + log.info("Setting date on new transaction: " + transaction.getDescription()); + transaction.setLastChange(new Date()); + } +} \ No newline at end of file diff --git a/src/main/java/de/tilman/transactions/repository/TransactionRepository.java b/src/main/java/de/tilman/transactions/repository/TransactionRepository.java index fa2805d..2202a0a 100644 --- a/src/main/java/de/tilman/transactions/repository/TransactionRepository.java +++ b/src/main/java/de/tilman/transactions/repository/TransactionRepository.java @@ -13,8 +13,8 @@ import de.tilman.transactions.domain.Transaction; public interface TransactionRepository extends PagingAndSortingRepository { - @RestResource(exported = false) - Page findAll(Pageable pageable); +// @RestResource(exported = false) +// Page findAll(Pageable pageable); @RestResource(path = "last10") List findFirst10ByAccountIdOrderByDateDesc(@Param("accountId") Long accountId); diff --git a/src/main/resources/static/js/controllers.js b/src/main/resources/static/js/controllers.js index 0acf500..7ab0451 100644 --- a/src/main/resources/static/js/controllers.js +++ b/src/main/resources/static/js/controllers.js @@ -2,21 +2,37 @@ var transactionControllers = angular.module('transactionControllers', ['ngResour transactionControllers.controller('TransactionListCtrl', [ '$scope', '$location', '$resource', function($scope, $location, $resource) { - // TODO pass accountId - $scope.accountId = 1; - - $scope.initList = function() { + $scope.refreshList = function() { + + console.log('refreshList()'); + var transactions = $resource('/transactions/search/last10', { accountId: $scope.accountId }).get(); - + transactions.$promise.then(function(data) { $scope.transactions = transactions._embedded.transactions; for (var i = 0; i < $scope.transactions.length; i++) { $scope.transactions[i].category = $resource($scope.transactions[i]._links.category.href).get(); $scope.transactions[i].creditor = $resource($scope.transactions[i]._links.creditor.href).get(); +// $scope.transactions[i].account = $resource($scope.transactions[i]._links.account.href).get(); } + + // XXX get selected account from frontend + $scope.account = $scope.transactions[0]._links.account; }); + } + + $scope.initList = function() { + + // TODO pass accountId + $scope.accountId = 1; + + console.log('initList()'); + + $scope.date = new Date(); + + $scope.refreshList(); var categories = $resource('/categories/search/listForAccount', { accountId: $scope.accountId }).get(); @@ -24,14 +40,16 @@ transactionControllers.controller('TransactionListCtrl', [ '$scope', '$location' $scope.categories = categories._embedded.categories; // select the first entry as default - $scope.categorySelection = categories._embedded.categories[0]; + $scope.category = categories._embedded.categories[0]; }); } $scope.postTransaction = function() { -// // simple HTTP POST + console.log('postTransaction()'); + + // simple HTTP POST // $http.post('/transactions', { "amount" : $scope.amount /* date, */ }).success(function() { // console.log('REFRESH'); // $scope.initList(); @@ -49,7 +67,11 @@ transactionControllers.controller('TransactionListCtrl', [ '$scope', '$location' "creditor" : $scope.creditor }); + console.log(newTransaction); + newTransaction.$save(); + + $scope.refreshList(); }; $scope.showTransaction = function(transaction) { diff --git a/src/main/resources/static/partials/transaction-list.html b/src/main/resources/static/partials/transaction-list.html index ae2990e..1892e82 100644 --- a/src/main/resources/static/partials/transaction-list.html +++ b/src/main/resources/static/partials/transaction-list.html @@ -3,23 +3,24 @@
- + Betrag:
-
- + Datum:
- + Notiz:
- +
- + @@ -35,6 +36,14 @@
Datum
+
+
{{account | json}}
+
+ +
+
{{transactions | json}}
+
+