From 38ae58d008b07a61b8ec716b315422923664b8f1 Mon Sep 17 00:00:00 2001 From: Stevens <29457062+xxStevensxx@users.noreply.github.com> Date: Tue, 28 Sep 2021 13:00:44 +0200 Subject: [PATCH 01/14] creation des champs, getters et setters de tout les obj du domain --- .../com/nnk/springboot/domain/BidList.java | 169 ++++++++++++++++++ .../com/nnk/springboot/domain/CurvePoint.java | 57 ++++++ .../com/nnk/springboot/domain/Rating.java | 48 +++++ .../com/nnk/springboot/domain/RuleName.java | 68 +++++++ .../java/com/nnk/springboot/domain/Trade.java | 159 +++++++++++++++- 5 files changed, 500 insertions(+), 1 deletion(-) diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/BidList.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/BidList.java index 3a0e27efc8..5172ab0b3a 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/BidList.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/BidList.java @@ -11,5 +11,174 @@ @Entity @Table(name = "bidlist") public class BidList { + + + public BidList() {} + public BidList(String account, String type, double bidQuantity) { + this.account = account; + this.type = type; + this.bidQuantity = bidQuantity; + } + + + @Id + @GeneratedValue(strategy= GenerationType.AUTO) + private Integer BidListId; + private String account; + private String type; + private Double bidQuantity; + private Double askQuantity; + private Double bid; + private Double ask; + private String benchmark; + private Timestamp bidListDate; + private String commentary; + private String security; + private String status; + private String trader; + private String book; + private String creationName; + private Timestamp creationDate; + private String revisionName; + private Timestamp revisionDate; + private String dealName; + private String dealType; + private String sourceListId; + private String side; + + + public Integer getBidListId() { + return BidListId; + } + public void setBidListId(Integer bidListId) { + BidListId = bidListId; + } + public String getAccount() { + return account; + } + public void setAccount(String account) { + this.account = account; + } + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + public Double getBidQuantity() { + return bidQuantity; + } + public void setBidQuantity(Double bidQuantity) { + this.bidQuantity = bidQuantity; + } + public Double getAskQuantity() { + return askQuantity; + } + public void setAskQuantity(Double askQuantity) { + this.askQuantity = askQuantity; + } + public Double getBid() { + return bid; + } + public void setBid(Double bid) { + this.bid = bid; + } + public Double getAsk() { + return ask; + } + public void setAsk(Double ask) { + this.ask = ask; + } + public String getBenchmark() { + return benchmark; + } + public void setBenchmark(String benchmark) { + this.benchmark = benchmark; + } + public Timestamp getBidListDate() { + return bidListDate; + } + public void setBidListDate(Timestamp bidListDate) { + this.bidListDate = bidListDate; + } + public String getCommentary() { + return commentary; + } + public void setCommentary(String commentary) { + this.commentary = commentary; + } + public String getSecurity() { + return security; + } + public void setSecurity(String security) { + this.security = security; + } + public String getStatus() { + return status; + } + public void setStatus(String status) { + this.status = status; + } + public String getTrader() { + return trader; + } + public void setTrader(String trader) { + this.trader = trader; + } + public String getBook() { + return book; + } + public void setBook(String book) { + this.book = book; + } + public String getCreationName() { + return creationName; + } + public void setCreationName(String creationName) { + this.creationName = creationName; + } + public Timestamp getCreationDate() { + return creationDate; + } + public void setCreationDate(Timestamp creationDate) { + this.creationDate = creationDate; + } + public String getRevisionName() { + return revisionName; + } + public void setRevisionName(String revisionName) { + this.revisionName = revisionName; + } + public Timestamp getRevisionDate() { + return revisionDate; + } + public void setRevisionDate(Timestamp revisionDate) { + this.revisionDate = revisionDate; + } + public String getDealName() { + return dealName; + } + public void setDealName(String dealName) { + this.dealName = dealName; + } + public String getDealType() { + return dealType; + } + public void setDealType(String dealType) { + this.dealType = dealType; + } + public String getSourceListId() { + return sourceListId; + } + public void setSourceListId(String sourceListId) { + this.sourceListId = sourceListId; + } + public String getSide() { + return side; + } + public void setSide(String side) { + this.side = side; + } + // TODO: Map columns in data table BIDLIST with corresponding java fields } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/CurvePoint.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/CurvePoint.java index 151f80d02f..3171d86344 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/CurvePoint.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/CurvePoint.java @@ -11,5 +11,62 @@ @Entity @Table(name = "curvepoint") public class CurvePoint { + + + public CurvePoint() {} + //A voir !! + public CurvePoint(int id, double term, double value) { + this.id = id; + this.term = term; + this.value = value; + + } + + @Id + @GeneratedValue(strategy= GenerationType.AUTO) + private Integer id; + private Integer curveId; + private Timestamp asOfDate; + private Double term; + private Double value; + private Timestamp creationDate; + + public Integer getId() { + return id; + } + public void setId(Integer id) { + this.id = id; + } + public Integer getCurveId() { + return curveId; + } + public void setCurveId(Integer curveId) { + this.curveId = curveId; + } + public Timestamp getAsOfDate() { + return asOfDate; + } + public void setAsOfDate(Timestamp asOfDate) { + this.asOfDate = asOfDate; + } + public Double getTerm() { + return term; + } + public void setTerm(Double term) { + this.term = term; + } + public Double getValue() { + return value; + } + public void setValue(Double value) { + this.value = value; + } + public Timestamp getCreationDate() { + return creationDate; + } + public void setCreationDate(Timestamp creationDate) { + this.creationDate = creationDate; + } + // TODO: Map columns in data table CURVEPOINT with corresponding java fields } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/Rating.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/Rating.java index 12d1be58c0..55b73b1027 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/Rating.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/Rating.java @@ -8,5 +8,53 @@ @Entity @Table(name = "rating") public class Rating { + + public Rating() {} + public Rating(String moodysRating, String sandPRating, String fitchRating, int orderNumber ) { + + this.moodysRating = moodysRating; + this.sandPRating = sandPRating; + this.fitchRating = fitchRating; + this.orderNumber = orderNumber; + + } + + @GeneratedValue(strategy= GenerationType.AUTO) + private Integer id; + private String moodysRating; + private String sandPRating; + private String fitchRating; + private Integer orderNumber; + // TODO: Map columns in data table RATING with corresponding java fields + public Integer getId() { + return id; + } + public void setId(Integer id) { + this.id = id; + } + public String getMoodysRating() { + return moodysRating; + } + public void setMoodysRating(String moodysRating) { + this.moodysRating = moodysRating; + } + public String getSandPRating() { + return sandPRating; + } + public void setSandPRating(String sandPRating) { + this.sandPRating = sandPRating; + } + public String getFitchRating() { + return fitchRating; + } + public void setFitchRating(String fitchRating) { + this.fitchRating = fitchRating; + } + public Integer getOrderNumber() { + return orderNumber; + } + public void setOrderNumber(Integer orderNumber) { + this.orderNumber = orderNumber; + } } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/RuleName.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/RuleName.java index b8ac970edf..2dff7bdb61 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/RuleName.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/RuleName.java @@ -7,5 +7,73 @@ @Entity @Table(name = "rulename") public class RuleName { + + public RuleName() {} + public RuleName(String name, String description, String json, String template, String sqlStr, String sqlPart ) { + + this.name = name; + this.description = description; + this.json = json; + this.template = template; + this.sqlStr = sqlStr; + this.sqlPart = sqlPart; + + } + + + + @Id + @GeneratedValue(strategy= GenerationType.AUTO) + private Integer id; + private String name; + private String description; + private String json; + private String template; + private String sqlStr; + private String sqlPart; + + public Integer getId() { + return id; + } + public void setId(Integer id) { + this.id = id; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + public String getJson() { + return json; + } + public void setJson(String json) { + this.json = json; + } + public String getTemplate() { + return template; + } + public void setTemplate(String template) { + this.template = template; + } + public String getSqlStr() { + return sqlStr; + } + public void setSqlStr(String sqlStr) { + this.sqlStr = sqlStr; + } + public String getSqlPart() { + return sqlPart; + } + public void setSqlPart(String sqlPart) { + this.sqlPart = sqlPart; + } + // TODO: Map columns in data table RULENAME with corresponding java fields } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/Trade.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/Trade.java index b6db7c13b7..a5f9ec3d3e 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/Trade.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/Trade.java @@ -8,5 +8,162 @@ @Entity @Table(name = "trade") public class Trade { - // TODO: Map columns in data table TRADE with corresponding java fields + + public Trade() {} + public Trade(String account, String type) { + this.account = account; + this.type = type; + } + + @Id + @GeneratedValue(strategy= GenerationType.AUTO) + private Integer tradeId; + private String account; + private String type; + private Double buyQuantity; + private Double sellQuantity; + private Double buyPrice; + private Double sellPrice; + private String benchmark; + private Timestamp tradeDate; + private String security; + private String status; + private String trader; + private String book; + private String creationName; + private Timestamp creationDate; + private String revisionName; + private Timestamp revisionDate; + private String dealName; + private String dealType; + private String sourceListId; + private String side; + + // TODO: Map columns in data table TRADE with corresponding java fields + public Integer getTradeId() { + return tradeId; + } + public void setTradeId(Integer tradeId) { + this.tradeId = tradeId; + } + public String getAccount() { + return account; + } + public void setAccount(String account) { + this.account = account; + } + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + public Double getBuyQuantity() { + return buyQuantity; + } + public void setBuyQuantity(Double buyQuantity) { + this.buyQuantity = buyQuantity; + } + public Double getSellQuantity() { + return sellQuantity; + } + public void setSellQuantity(Double sellQuantity) { + this.sellQuantity = sellQuantity; + } + public Double getBuyPrice() { + return buyPrice; + } + public void setBuyPrice(Double buyPrice) { + this.buyPrice = buyPrice; + } + public Double getSellPrice() { + return sellPrice; + } + public void setSellPrice(Double sellPrice) { + this.sellPrice = sellPrice; + } + public String getBenchmark() { + return benchmark; + } + public void setBenchmark(String benchmark) { + this.benchmark = benchmark; + } + public Timestamp getTradeDate() { + return tradeDate; + } + public void setTradeDate(Timestamp tradeDate) { + this.tradeDate = tradeDate; + } + public String getSecurity() { + return security; + } + public void setSecurity(String security) { + this.security = security; + } + public String getStatus() { + return status; + } + public void setStatus(String status) { + this.status = status; + } + public String getTrader() { + return trader; + } + public void setTrader(String trader) { + this.trader = trader; + } + public String getBook() { + return book; + } + public void setBook(String book) { + this.book = book; + } + public String getCreationName() { + return creationName; + } + public void setCreationName(String creationName) { + this.creationName = creationName; + } + public Timestamp getCreationDate() { + return creationDate; + } + public void setCreationDate(Timestamp creationDate) { + this.creationDate = creationDate; + } + public String getRevisionName() { + return revisionName; + } + public void setRevisionName(String revisionName) { + this.revisionName = revisionName; + } + public Timestamp getRevisionDate() { + return revisionDate; + } + public void setRevisionDate(Timestamp revisionDate) { + this.revisionDate = revisionDate; + } + public String getDealName() { + return dealName; + } + public void setDealName(String dealName) { + this.dealName = dealName; + } + public String getDealType() { + return dealType; + } + public void setDealType(String dealType) { + this.dealType = dealType; + } + public String getSourceListId() { + return sourceListId; + } + public void setSourceListId(String sourceListId) { + this.sourceListId = sourceListId; + } + public String getSide() { + return side; + } + public void setSide(String side) { + this.side = side; + } } From 5b0e21375af93c9bed30218d354f3e059fe651b1 Mon Sep 17 00:00:00 2001 From: Stevens <29457062+xxStevensxx@users.noreply.github.com> Date: Tue, 28 Sep 2021 13:05:03 +0200 Subject: [PATCH 02/14] Implementation des methodes de tout les controllers --- .../controllers/BidListController.java | 28 +++++++++++++-- .../controllers/CurveController.java | 28 +++++++++++++-- .../controllers/RatingController.java | 34 ++++++++++++++++--- .../controllers/RuleNameController.java | 25 ++++++++++++-- .../controllers/TradeController.java | 31 +++++++++++++++-- 5 files changed, 133 insertions(+), 13 deletions(-) diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/BidListController.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/BidListController.java index a31b9b53ca..3ef3cc33b3 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/BidListController.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/BidListController.java @@ -1,6 +1,9 @@ package com.nnk.springboot.controllers; import com.nnk.springboot.domain.BidList; +import com.nnk.springboot.repositories.BidListRepository; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -15,11 +18,14 @@ @Controller public class BidListController { // TODO: Inject Bid service + @Autowired + BidListRepository bidListRepository; @RequestMapping("/bidList/list") public String home(Model model) { // TODO: call service find all bids to show to the view + model.addAttribute("bidList", bidListRepository.findAll()); return "bidList/list"; } @@ -31,12 +37,19 @@ public String addBidForm(BidList bid) { @PostMapping("/bidList/validate") public String validate(@Valid BidList bid, BindingResult result, Model model) { // TODO: check data valid and save to db, after saving return bid list + if (!result.hasErrors()) { + bidListRepository.save(bid); + model.addAttribute("bid", bidListRepository.findAll()); + return "redirect:/bidList/list"; + } return "bidList/add"; } @GetMapping("/bidList/update/{id}") public String showUpdateForm(@PathVariable("id") Integer id, Model model) { // TODO: get Bid by Id and to model then show to the form + BidList bid = bidListRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid bid Id:" + id)); + model.addAttribute("bid", bid); return "bidList/update"; } @@ -44,12 +57,23 @@ public String showUpdateForm(@PathVariable("id") Integer id, Model model) { public String updateBid(@PathVariable("id") Integer id, @Valid BidList bidList, BindingResult result, Model model) { // TODO: check required fields, if valid call service to update Bid and return list Bid - return "redirect:/bidList/list"; + if (result.hasErrors()) { + return"bidList/update"; + } + + BidList bid = bidListRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid bid Id:" + id)); + bid.setBidListId(id); + bidListRepository.save(bid); + model.addAttribute("bid", bidListRepository.findAll()); + return "redirect:/bidList/list"; } @GetMapping("/bidList/delete/{id}") public String deleteBid(@PathVariable("id") Integer id, Model model) { // TODO: Find Bid by Id and delete the bid, return to Bid list - return "redirect:/bidList/list"; + BidList bid = bidListRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid bid Id:" + id)); + bidListRepository.delete(bid); + model.addAttribute("bid", bidListRepository.findAll()); + return "redirect:/bidList/list"; } } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/CurveController.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/CurveController.java index db69caf549..26dc759ac2 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/CurveController.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/CurveController.java @@ -1,6 +1,9 @@ package com.nnk.springboot.controllers; import com.nnk.springboot.domain.CurvePoint; +import com.nnk.springboot.repositories.CurvePointRepository; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -14,12 +17,15 @@ @Controller public class CurveController { // TODO: Inject Curve Point service + @Autowired + CurvePointRepository curveRepository; @RequestMapping("/curvePoint/list") public String home(Model model) { // TODO: find all Curve Point, add to model - return "curvePoint/list"; + model.addAttribute("curves", curveRepository.findAll()); + return "curvePoint/list"; } @GetMapping("/curvePoint/add") @@ -30,12 +36,20 @@ public String addBidForm(CurvePoint bid) { @PostMapping("/curvePoint/validate") public String validate(@Valid CurvePoint curvePoint, BindingResult result, Model model) { // TODO: check data valid and save to db, after saving return Curve list + if (!result.hasErrors()) { + curveRepository.save(curvePoint); + model.addAttribute("curves", curveRepository.findAll()); + return "redirect:/curvePoint/list"; + } return "curvePoint/add"; } @GetMapping("/curvePoint/update/{id}") public String showUpdateForm(@PathVariable("id") Integer id, Model model) { // TODO: get CurvePoint by Id and to model then show to the form + CurvePoint curve = curveRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid curvePoint Id:" + id)); + curve.setId(id); + model.addAttribute("curve", curve); return "curvePoint/update"; } @@ -43,12 +57,22 @@ public String showUpdateForm(@PathVariable("id") Integer id, Model model) { public String updateBid(@PathVariable("id") Integer id, @Valid CurvePoint curvePoint, BindingResult result, Model model) { // TODO: check required fields, if valid call service to update Curve and return Curve list + if (result.hasErrors()) { + return "curvePoint/update"; + + } + curvePoint.setId(id); + curveRepository.save(curvePoint); + model.addAttribute("curves", curveRepository.findAll()); return "redirect:/curvePoint/list"; } @GetMapping("/curvePoint/delete/{id}") public String deleteBid(@PathVariable("id") Integer id, Model model) { // TODO: Find Curve by Id and delete the Curve, return to Curve list - return "redirect:/curvePoint/list"; + CurvePoint curve = curveRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid curvePoint Id:" + id)); + curveRepository.delete(curve); + model.addAttribute("curves", curveRepository.findAll()); + return "redirect:/curvePoint/list"; } } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/RatingController.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/RatingController.java index 5e15e68fbc..c4156cd555 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/RatingController.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/RatingController.java @@ -1,6 +1,9 @@ package com.nnk.springboot.controllers; import com.nnk.springboot.domain.Rating; +import com.nnk.springboot.repositories.RatingRepository; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -13,13 +16,19 @@ @Controller public class RatingController { + + // TODO: Inject Rating service + @Autowired + RatingRepository ratingRepository; + @RequestMapping("/rating/list") public String home(Model model) { // TODO: find all Rating, add to model - return "rating/list"; + model.addAttribute("rating", ratingRepository.findAll()); + return "rating/list"; } @GetMapping("/rating/add") @@ -30,25 +39,42 @@ public String addRatingForm(Rating rating) { @PostMapping("/rating/validate") public String validate(@Valid Rating rating, BindingResult result, Model model) { // TODO: check data valid and save to db, after saving return Rating list + if (!result.hasErrors()) { + ratingRepository.save(rating); + model.addAttribute("rating", ratingRepository.findAll()); + return "redirect:/rating/add"; + + } return "rating/add"; } @GetMapping("/rating/update/{id}") public String showUpdateForm(@PathVariable("id") Integer id, Model model) { // TODO: get Rating by Id and to model then show to the form - return "rating/update"; + Rating rating = ratingRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid rating id:" + id)); + model.addAttribute("rating", rating); + return "rating/update"; } @PostMapping("/rating/update/{id}") public String updateRating(@PathVariable("id") Integer id, @Valid Rating rating, BindingResult result, Model model) { // TODO: check required fields, if valid call service to update Rating and return Rating list - return "redirect:/rating/list"; + if (result.hasErrors()) { + return "/rating/list"; + } + + rating.setId(id); + ratingRepository.save(rating); + model.addAttribute("rating", ratingRepository.findAll()); + return "redirect:/rating/list"; } @GetMapping("/rating/delete/{id}") public String deleteRating(@PathVariable("id") Integer id, Model model) { // TODO: Find Rating by Id and delete the Rating, return to Rating list - return "redirect:/rating/list"; + Rating rating = ratingRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid rating Id:" + id)); + ratingRepository.save(rating); + return "redirect:/rating/list"; } } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/RuleNameController.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/RuleNameController.java index b9e72b1ba6..77732a1911 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/RuleNameController.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/RuleNameController.java @@ -1,6 +1,9 @@ package com.nnk.springboot.controllers; import com.nnk.springboot.domain.RuleName; +import com.nnk.springboot.repositories.RuleNameRepository; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -14,11 +17,14 @@ @Controller public class RuleNameController { // TODO: Inject RuleName service + @Autowired + RuleNameRepository ruleRepository; @RequestMapping("/ruleName/list") public String home(Model model) { // TODO: find all RuleName, add to model + model.addAttribute("rule", ruleRepository.findAll()); return "ruleName/list"; } @@ -30,25 +36,40 @@ public String addRuleForm(RuleName bid) { @PostMapping("/ruleName/validate") public String validate(@Valid RuleName ruleName, BindingResult result, Model model) { // TODO: check data valid and save to db, after saving return RuleName list + if (!result.hasErrors()) { + ruleRepository.save(ruleName); + return "redirect:/ruleName/list"; + } return "ruleName/add"; } @GetMapping("/ruleName/update/{id}") public String showUpdateForm(@PathVariable("id") Integer id, Model model) { // TODO: get RuleName by Id and to model then show to the form - return "ruleName/update"; + RuleName ruleName = ruleRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid ruleName Id:" + id)); + model.addAttribute("rule", ruleName); + return "ruleName/update"; } @PostMapping("/ruleName/update/{id}") public String updateRuleName(@PathVariable("id") Integer id, @Valid RuleName ruleName, BindingResult result, Model model) { // TODO: check required fields, if valid call service to update RuleName and return RuleName list - return "redirect:/ruleName/list"; + if (result.hasErrors()) { + return "ruleName/update"; + } + ruleName.setId(id); + ruleRepository.save(ruleName); + model.addAttribute("rules", ruleRepository.findAll()); + return "redirect:/ruleName/list"; } @GetMapping("/ruleName/delete/{id}") public String deleteRuleName(@PathVariable("id") Integer id, Model model) { // TODO: Find RuleName by Id and delete the RuleName, return to Rule list + RuleName rule = ruleRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid ruleName Id:" + id)); + ruleRepository.delete(rule); + model.addAttribute("rules", ruleRepository.findAll()); return "redirect:/ruleName/list"; } } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/TradeController.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/TradeController.java index 4e667eec22..439d9e0fcb 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/TradeController.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/TradeController.java @@ -1,6 +1,9 @@ package com.nnk.springboot.controllers; import com.nnk.springboot.domain.Trade; +import com.nnk.springboot.repositories.TradeRepository; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -13,12 +16,16 @@ @Controller public class TradeController { + // TODO: Inject Trade service + @Autowired + TradeRepository tradeRepository; @RequestMapping("/trade/list") public String home(Model model) { // TODO: find all Trade, add to model + model.addAttribute("trade", tradeRepository.findAll()); return "trade/list"; } @@ -30,25 +37,43 @@ public String addUser(Trade bid) { @PostMapping("/trade/validate") public String validate(@Valid Trade trade, BindingResult result, Model model) { // TODO: check data valid and save to db, after saving return Trade list + if (!result.hasErrors()) { + tradeRepository.save(trade); + model.addAttribute("trade", tradeRepository.findAll()); + return "redirect:/trade/add"; + } return "trade/add"; } @GetMapping("/trade/update/{id}") public String showUpdateForm(@PathVariable("id") Integer id, Model model) { // TODO: get Trade by Id and to model then show to the form - return "trade/update"; + Trade trade = tradeRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid trade Id:" + id)); + model.addAttribute("trade", trade); + return "trade/update"; } @PostMapping("/trade/update/{id}") public String updateTrade(@PathVariable("id") Integer id, @Valid Trade trade, BindingResult result, Model model) { // TODO: check required fields, if valid call service to update Trade and return Trade list - return "redirect:/trade/list"; + if (result.hasErrors()) { + return "trade/update"; + } + + trade.setTradeId(id); + tradeRepository.save(trade); + model.addAttribute("trade", tradeRepository.findAll()); + return "redirect:/trade/list"; } @GetMapping("/trade/delete/{id}") public String deleteTrade(@PathVariable("id") Integer id, Model model) { + // TODO: Find Trade by Id and delete the Trade, return to Trade list - return "redirect:/trade/list"; + Trade trade = tradeRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid trade Id:" + id)); + tradeRepository.delete(trade); + model.addAttribute("trade", tradeRepository.findAll()); + return "redirect:/trade/list"; } } From 72b8be4eccea941d5654e3991b6031e0c52e990e Mon Sep 17 00:00:00 2001 From: Stevens <29457062+xxStevensxx@users.noreply.github.com> Date: Tue, 28 Sep 2021 13:14:21 +0200 Subject: [PATCH 03/14] Creation du package security de la classe SecurityConfig pour l'authentication et la connection jdbc --- .../springboot/security/SecurityConfig.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Poseiden-skeleton/src/main/java/com/nnk/springboot/security/SecurityConfig.java diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/security/SecurityConfig.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/security/SecurityConfig.java new file mode 100644 index 0000000000..0367e93186 --- /dev/null +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/security/SecurityConfig.java @@ -0,0 +1,49 @@ +package com.nnk.springboot.security; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.crypto.password.PasswordEncoder; + +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + private DataSource dataSource; + + + @Autowired + public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception { + + auth.jdbcAuthentication() + .dataSource(dataSource); + } + + + @Override + protected void configure(HttpSecurity http) throws Exception { + + http.authorizeRequests() + .antMatchers("/", "/add", "/list", "/update").authenticated() + .and() + .formLogin() + .loginPage("/home") + .and() + .logout() + .logoutUrl("/logout") + .logoutSuccessUrl("/signin") + .permitAll(); + + } + + +// @Bean +// public PasswordEncoder passwordEncoder() { +// return new BCryptPasswordEncoder(); +// +// } + +} From 9f5d9a98c9c6c655e88d8456198dd8f0f0c90627 Mon Sep 17 00:00:00 2001 From: Stevens <29457062+xxStevensxx@users.noreply.github.com> Date: Tue, 28 Sep 2021 15:23:12 +0200 Subject: [PATCH 04/14] Maj properties --- Poseiden-skeleton/src/main/resources/application.properties | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Poseiden-skeleton/src/main/resources/application.properties b/Poseiden-skeleton/src/main/resources/application.properties index 8b194cc76e..e5a427b6a2 100644 --- a/Poseiden-skeleton/src/main/resources/application.properties +++ b/Poseiden-skeleton/src/main/resources/application.properties @@ -2,10 +2,12 @@ logging.level.org.springframework=INFO ################### DataSource Configuration ########################## -spring.datasource.driver-class-name=com.mysql.jdbc.Driver +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect spring.datasource.url=jdbc:mysql://localhost:3306/demo spring.datasource.username=root -spring.datasource.password= +spring.datasource.password=rootroot +spring.sql.init.mode=always ################### Hibernate Configuration ########################## From 2357255757c0d18936ffb07f0d4f4f6bf55158e9 Mon Sep 17 00:00:00 2001 From: Stevens <29457062+xxStevensxx@users.noreply.github.com> Date: Tue, 28 Sep 2021 18:46:12 +0200 Subject: [PATCH 05/14] ajout de l'annotation spring @Repository --- .../com/nnk/springboot/controllers/BidListController.java | 1 + .../com/nnk/springboot/repositories/BidListRepository.java | 4 +++- .../com/nnk/springboot/repositories/CurvePointRepository.java | 2 ++ .../com/nnk/springboot/repositories/RatingRepository.java | 2 ++ .../com/nnk/springboot/repositories/RuleNameRepository.java | 3 ++- .../java/com/nnk/springboot/repositories/TradeRepository.java | 3 ++- .../java/com/nnk/springboot/repositories/UserRepository.java | 3 ++- 7 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/BidListController.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/BidListController.java index 3ef3cc33b3..bc08998b15 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/BidListController.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/BidListController.java @@ -18,6 +18,7 @@ @Controller public class BidListController { // TODO: Inject Bid service + @Autowired BidListRepository bidListRepository; diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/BidListRepository.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/BidListRepository.java index f74b94e51d..e5c4f116b5 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/BidListRepository.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/BidListRepository.java @@ -1,9 +1,11 @@ package com.nnk.springboot.repositories; -import com.nnk.springboot.domain.BidList; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import com.nnk.springboot.domain.BidList; +@Repository public interface BidListRepository extends JpaRepository { } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/CurvePointRepository.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/CurvePointRepository.java index b01751b53e..fca71f3416 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/CurvePointRepository.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/CurvePointRepository.java @@ -2,8 +2,10 @@ import com.nnk.springboot.domain.CurvePoint; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +@Repository public interface CurvePointRepository extends JpaRepository { } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/RatingRepository.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/RatingRepository.java index 7ded405e6d..ded1e8a0ed 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/RatingRepository.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/RatingRepository.java @@ -2,7 +2,9 @@ import com.nnk.springboot.domain.Rating; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +@Repository public interface RatingRepository extends JpaRepository { } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/RuleNameRepository.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/RuleNameRepository.java index 8053d1612e..a805586b44 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/RuleNameRepository.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/RuleNameRepository.java @@ -2,7 +2,8 @@ import com.nnk.springboot.domain.RuleName; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; - +@Repository public interface RuleNameRepository extends JpaRepository { } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/TradeRepository.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/TradeRepository.java index e8da38af02..50e9b39a15 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/TradeRepository.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/TradeRepository.java @@ -2,7 +2,8 @@ import com.nnk.springboot.domain.Trade; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; - +@Repository public interface TradeRepository extends JpaRepository { } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/UserRepository.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/UserRepository.java index b6a3363949..1d338d5101 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/UserRepository.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/UserRepository.java @@ -5,8 +5,9 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; - +@Repository public interface UserRepository extends JpaRepository, JpaSpecificationExecutor { } From 4b137f897ba7bd85b91c64bf507c6a9f8802d26d Mon Sep 17 00:00:00 2001 From: Stevens <29457062+xxStevensxx@users.noreply.github.com> Date: Tue, 28 Sep 2021 22:39:54 +0200 Subject: [PATCH 06/14] Ajout de @ComponentScan(basePackages = {com.nnk.springboot.repositories}) --- .../src/main/java/com/nnk/springboot/Application.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/Application.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/Application.java index f53aeb0fba..173ee4150d 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/Application.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/Application.java @@ -2,8 +2,11 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; -@SpringBootApplication +@ComponentScan(basePackages = {"com.nnk.springboot.repositories"}) +@SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) public class Application { public static void main(String[] args) { From 27b2749e2ca46f51940c216b0f6ac5889e36f422 Mon Sep 17 00:00:00 2001 From: Stevens <29457062+xxStevensxx@users.noreply.github.com> Date: Wed, 29 Sep 2021 00:31:59 +0200 Subject: [PATCH 07/14] Ajout des dependances swagger dans le pom.Xml ajout de l'annotation @ pour swagger dans le main creation ddu package et de la config swagger ajout du banner de l'app --- Poseiden-skeleton/pom.xml | 27 ++++++++++++++++--- .../java/com/nnk/springboot/Application.java | 3 +++ .../springboot/swagger/SpringFoxConfig.java | 23 ++++++++++++++++ .../src/main/resources/banner.txt | 8 ++++++ 4 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 Poseiden-skeleton/src/main/java/com/nnk/springboot/swagger/SpringFoxConfig.java create mode 100644 Poseiden-skeleton/src/main/resources/banner.txt diff --git a/Poseiden-skeleton/pom.xml b/Poseiden-skeleton/pom.xml index a7dcbc04dc..3a122a5eca 100644 --- a/Poseiden-skeleton/pom.xml +++ b/Poseiden-skeleton/pom.xml @@ -31,10 +31,23 @@ spring-boot-starter-test test + + + org.springframework.data + spring-data-jpa + org.springframework.boot spring-boot-starter-data-jpa + + org.hibernate + hibernate-core + + + org.springframework.boot + spring-boot-starter-jdbc + org.springframework.boot spring-boot-starter-web @@ -47,10 +60,17 @@ org.springframework.boot spring-boot-starter-security + - org.springframework.boot - spring-boot-devtools - true + io.springfox + springfox-swagger2 + 2.5.0 + + + io.springfox + springfox-swagger-ui + 2.5.0 mysql @@ -61,7 +81,6 @@ h2 - diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/Application.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/Application.java index 173ee4150d..4fc153be3d 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/Application.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/Application.java @@ -5,6 +5,9 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.context.annotation.ComponentScan; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@EnableSwagger2 @ComponentScan(basePackages = {"com.nnk.springboot.repositories"}) @SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) public class Application { diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/swagger/SpringFoxConfig.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/swagger/SpringFoxConfig.java new file mode 100644 index 0000000000..32dba9bdc1 --- /dev/null +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/swagger/SpringFoxConfig.java @@ -0,0 +1,23 @@ +package com.nnk.springboot.swagger; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@EnableSwagger2 +@Configuration +public class SpringFoxConfig { + @Bean + public Docket api() { + return new Docket(DocumentationType.SWAGGER_2) + .select() + .apis(RequestHandlerSelectors.any()) + .paths(PathSelectors.any()) + .build(); + } +} diff --git a/Poseiden-skeleton/src/main/resources/banner.txt b/Poseiden-skeleton/src/main/resources/banner.txt new file mode 100644 index 0000000000..7d199bf89d --- /dev/null +++ b/Poseiden-skeleton/src/main/resources/banner.txt @@ -0,0 +1,8 @@ + ________ ________ ________ _______ ___ ________ ________ ________ ___ ________ ________ +|\ __ \|\ __ \|\ ____\|\ ___ \ |\ \|\ ___ \|\ __ \|\ ___ \ |\ \|\ ___ \|\ ____\ +\ \ \|\ \ \ \|\ \ \ \___|\ \ __/|\ \ \ \ \_|\ \ \ \|\ \ \ \\ \ \ \ \ \ \ \\ \ \ \ \___| + \ \ ____\ \ \\\ \ \_____ \ \ \_|/_\ \ \ \ \ \\ \ \ \\\ \ \ \\ \ \ \ \ \ \ \\ \ \ \ \ + \ \ \___|\ \ \\\ \|____|\ \ \ \_|\ \ \ \ \ \_\\ \ \ \\\ \ \ \\ \ \ \ \ \ \ \\ \ \ \ \____ ___ + \ \__\ \ \_______\____\_\ \ \_______\ \__\ \_______\ \_______\ \__\\ \__\ \ \__\ \__\\ \__\ \_______\\__\ + \|__| \|_______|\_________\|_______|\|__|\|_______|\|_______|\|__| \|__| \|__|\|__| \|__|\|_______\|__| + \|_________| \ No newline at end of file From 739da1a56b69c693882c85de189a7fe3e19c5f86 Mon Sep 17 00:00:00 2001 From: xxStevensxx <29457062+xxStevensxx@users.noreply.github.com> Date: Wed, 29 Sep 2021 10:50:46 +0200 Subject: [PATCH 08/14] Ajout du findbyUsername dans le user repo, creation du package services et du userdetailsService --- .../repositories/UserRepository.java | 3 ++ .../nnk/springboot/services/UserServices.java | 34 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 Poseiden-skeleton/src/main/java/com/nnk/springboot/services/UserServices.java diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/UserRepository.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/UserRepository.java index 1d338d5101..0a3b203e71 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/UserRepository.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/repositories/UserRepository.java @@ -9,5 +9,8 @@ @Repository public interface UserRepository extends JpaRepository, JpaSpecificationExecutor { + + User findByUsername(String username); + } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/services/UserServices.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/services/UserServices.java new file mode 100644 index 0000000000..4e6c1c8049 --- /dev/null +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/services/UserServices.java @@ -0,0 +1,34 @@ +package com.nnk.springboot.services; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +import com.nnk.springboot.domain.User; +import com.nnk.springboot.repositories.UserRepository; + +@Service +public class UserServices implements UserDetailsService { + + + @Autowired + UserRepository userRepository; + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + // TODO Auto-generated method stub + + + User user = userRepository.findByUsername(username); + + if (user == null) { + + throw new UsernameNotFoundException(username); + } + + return (UserDetails) user; + } + +} From 0e21e7595a509522f2cabb105d43e0cc21352073 Mon Sep 17 00:00:00 2001 From: xxStevensxx <29457062+xxStevensxx@users.noreply.github.com> Date: Wed, 29 Sep 2021 11:40:58 +0200 Subject: [PATCH 09/14] Ajout du pattern pour le password --- .../src/main/java/com/nnk/springboot/domain/User.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/User.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/User.java index 2be0b8c4ab..d20e1341da 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/User.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/User.java @@ -1,7 +1,10 @@ package com.nnk.springboot.domain; + import javax.persistence.*; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; + @Entity @Table(name = "users") @@ -12,6 +15,7 @@ public class User { @NotBlank(message = "Username is mandatory") private String username; @NotBlank(message = "Password is mandatory") + @Pattern(regexp = "(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,}", message = "Password must have at least one capital letter, 8 characters one number and one symbol") private String password; @NotBlank(message = "FullName is mandatory") private String fullname; @@ -57,4 +61,5 @@ public String getRole() { public void setRole(String role) { this.role = role; } + } From fe174e37a3e0bc80a4171e1497583503cf20520a Mon Sep 17 00:00:00 2001 From: xxStevensxx <29457062+xxStevensxx@users.noreply.github.com> Date: Wed, 29 Sep 2021 12:14:46 +0200 Subject: [PATCH 10/14] MAJ des templates pour l'affichage des objets dans la vue --- .../main/resources/templates/bidList/add.html | 29 +++++++++++ .../resources/templates/bidList/list.html | 10 ++++ .../resources/templates/bidList/update.html | 29 +++++++++++ .../resources/templates/curvePoint/add.html | 28 +++++++++++ .../resources/templates/curvePoint/list.html | 10 ++++ .../main/resources/templates/rating/add.html | 34 +++++++++++++ .../main/resources/templates/rating/list.html | 11 +++++ .../resources/templates/rating/update.html | 36 ++++++++++++++ .../resources/templates/ruleName/add.html | 49 +++++++++++++++++++ .../resources/templates/ruleName/list.html | 13 +++++ .../resources/templates/ruleName/update.html | 49 +++++++++++++++++++ .../main/resources/templates/trade/add.html | 28 +++++++++++ .../main/resources/templates/trade/list.html | 10 ++++ .../resources/templates/trade/update.html | 29 +++++++++++ 14 files changed, 365 insertions(+) diff --git a/Poseiden-skeleton/src/main/resources/templates/bidList/add.html b/Poseiden-skeleton/src/main/resources/templates/bidList/add.html index c0fb91a99e..365b89f620 100644 --- a/Poseiden-skeleton/src/main/resources/templates/bidList/add.html +++ b/Poseiden-skeleton/src/main/resources/templates/bidList/add.html @@ -18,6 +18,35 @@

Add New Bid

+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+ + +
+
+ Cancel + +
+
diff --git a/Poseiden-skeleton/src/main/resources/templates/bidList/list.html b/Poseiden-skeleton/src/main/resources/templates/bidList/list.html index 84a1d14a12..a4096ec418 100644 --- a/Poseiden-skeleton/src/main/resources/templates/bidList/list.html +++ b/Poseiden-skeleton/src/main/resources/templates/bidList/list.html @@ -38,6 +38,16 @@ + + + + + + + Edit |  + Delete + + diff --git a/Poseiden-skeleton/src/main/resources/templates/bidList/update.html b/Poseiden-skeleton/src/main/resources/templates/bidList/update.html index 7786ebd1ff..839acb07ca 100644 --- a/Poseiden-skeleton/src/main/resources/templates/bidList/update.html +++ b/Poseiden-skeleton/src/main/resources/templates/bidList/update.html @@ -17,6 +17,35 @@

Update Bid

+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+ +
+
+ + Cancel + +
+
diff --git a/Poseiden-skeleton/src/main/resources/templates/curvePoint/add.html b/Poseiden-skeleton/src/main/resources/templates/curvePoint/add.html index 28d17cb645..8529262357 100644 --- a/Poseiden-skeleton/src/main/resources/templates/curvePoint/add.html +++ b/Poseiden-skeleton/src/main/resources/templates/curvePoint/add.html @@ -18,7 +18,35 @@

Add New Curve Point

+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+ +
+
+ Cancel + +
+
diff --git a/Poseiden-skeleton/src/main/resources/templates/curvePoint/list.html b/Poseiden-skeleton/src/main/resources/templates/curvePoint/list.html index 469836149b..e0bdbf215b 100644 --- a/Poseiden-skeleton/src/main/resources/templates/curvePoint/list.html +++ b/Poseiden-skeleton/src/main/resources/templates/curvePoint/list.html @@ -38,6 +38,16 @@ + + + + + + + Edit + Delete + + diff --git a/Poseiden-skeleton/src/main/resources/templates/rating/add.html b/Poseiden-skeleton/src/main/resources/templates/rating/add.html index 8090e5382e..234ee190e9 100644 --- a/Poseiden-skeleton/src/main/resources/templates/rating/add.html +++ b/Poseiden-skeleton/src/main/resources/templates/rating/add.html @@ -18,7 +18,41 @@

Add New Rating

+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+
+ Cancel + +
+
diff --git a/Poseiden-skeleton/src/main/resources/templates/rating/list.html b/Poseiden-skeleton/src/main/resources/templates/rating/list.html index bfbb403b84..bf9ffbab3b 100644 --- a/Poseiden-skeleton/src/main/resources/templates/rating/list.html +++ b/Poseiden-skeleton/src/main/resources/templates/rating/list.html @@ -39,6 +39,17 @@ + + + + + + + + Edit + Delete + + diff --git a/Poseiden-skeleton/src/main/resources/templates/rating/update.html b/Poseiden-skeleton/src/main/resources/templates/rating/update.html index 1e1914100a..a5828c6cc1 100644 --- a/Poseiden-skeleton/src/main/resources/templates/rating/update.html +++ b/Poseiden-skeleton/src/main/resources/templates/rating/update.html @@ -18,6 +18,42 @@

Update Rating

+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+ +
+
+ + Cancel + +
+
diff --git a/Poseiden-skeleton/src/main/resources/templates/ruleName/add.html b/Poseiden-skeleton/src/main/resources/templates/ruleName/add.html index afb0c2730b..90789782ac 100644 --- a/Poseiden-skeleton/src/main/resources/templates/ruleName/add.html +++ b/Poseiden-skeleton/src/main/resources/templates/ruleName/add.html @@ -18,7 +18,56 @@

Add New Rule

+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+ +
+
+ Cancel + +
+
diff --git a/Poseiden-skeleton/src/main/resources/templates/ruleName/list.html b/Poseiden-skeleton/src/main/resources/templates/ruleName/list.html index 2ad3868e82..6b30c7295c 100644 --- a/Poseiden-skeleton/src/main/resources/templates/ruleName/list.html +++ b/Poseiden-skeleton/src/main/resources/templates/ruleName/list.html @@ -41,6 +41,19 @@ + + + + + + + + + + Edit + Delete + + diff --git a/Poseiden-skeleton/src/main/resources/templates/ruleName/update.html b/Poseiden-skeleton/src/main/resources/templates/ruleName/update.html index 34e6c3cc60..12ed33afcb 100644 --- a/Poseiden-skeleton/src/main/resources/templates/ruleName/update.html +++ b/Poseiden-skeleton/src/main/resources/templates/ruleName/update.html @@ -18,7 +18,56 @@

Update New Rule

+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+
+ + Cancel + +
+
diff --git a/Poseiden-skeleton/src/main/resources/templates/trade/add.html b/Poseiden-skeleton/src/main/resources/templates/trade/add.html index 6fafa08c01..9cac354c00 100644 --- a/Poseiden-skeleton/src/main/resources/templates/trade/add.html +++ b/Poseiden-skeleton/src/main/resources/templates/trade/add.html @@ -18,7 +18,35 @@

Add New Trade

+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+ +
+
+ Cancel + +
+
diff --git a/Poseiden-skeleton/src/main/resources/templates/trade/list.html b/Poseiden-skeleton/src/main/resources/templates/trade/list.html index 2a247fa7da..822acad26d 100644 --- a/Poseiden-skeleton/src/main/resources/templates/trade/list.html +++ b/Poseiden-skeleton/src/main/resources/templates/trade/list.html @@ -38,6 +38,16 @@ + + + + + + + Edit |  + Delete + + diff --git a/Poseiden-skeleton/src/main/resources/templates/trade/update.html b/Poseiden-skeleton/src/main/resources/templates/trade/update.html index f4bbc52592..6032f7b1a0 100644 --- a/Poseiden-skeleton/src/main/resources/templates/trade/update.html +++ b/Poseiden-skeleton/src/main/resources/templates/trade/update.html @@ -17,6 +17,35 @@

Update Trade

+
+ +
+ +

+
+
+
+ +
+ +

+
+
+
+ +
+ +

+
+
+ +
+
+ + Cancel + +
+
From ffdaf214b0553e80697806f16fc0847143d200f2 Mon Sep 17 00:00:00 2001 From: xxStevensxx <29457062+xxStevensxx@users.noreply.github.com> Date: Wed, 29 Sep 2021 12:29:59 +0200 Subject: [PATCH 11/14] Maj de Spring config --- .../springboot/security/SecurityConfig.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/security/SecurityConfig.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/security/SecurityConfig.java index 0367e93186..63fa221fdf 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/security/SecurityConfig.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/security/SecurityConfig.java @@ -4,11 +4,16 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; +@Configuration +@EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired @@ -27,10 +32,11 @@ public void configAuthentication(AuthenticationManagerBuilder auth) throws Excep protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() - .antMatchers("/", "/add", "/list", "/update").authenticated() + .antMatchers("/bidList/**", "/curvePoint/**", "/rating/**", "/ruleName/**", "/trade/**").hasAnyAuthority("USER") + .antMatchers("/user/**").permitAll() .and() .formLogin() - .loginPage("/home") + .defaultSuccessUrl("/bidList/list") .and() .logout() .logoutUrl("/logout") @@ -40,10 +46,10 @@ protected void configure(HttpSecurity http) throws Exception { } -// @Bean -// public PasswordEncoder passwordEncoder() { -// return new BCryptPasswordEncoder(); -// -// } + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + + } } From 756f332273c9cde3deb115c7e657a952d8653dde Mon Sep 17 00:00:00 2001 From: xxStevensxx <29457062+xxStevensxx@users.noreply.github.com> Date: Wed, 29 Sep 2021 16:53:42 +0200 Subject: [PATCH 12/14] Refactoriasation de la classe springfox et maj de securityconfig --- .../{security => config}/SecurityConfig.java | 11 ++++++----- .../SwaggerConfig.java} | 9 ++++----- 2 files changed, 10 insertions(+), 10 deletions(-) rename Poseiden-skeleton/src/main/java/com/nnk/springboot/{security => config}/SecurityConfig.java (89%) rename Poseiden-skeleton/src/main/java/com/nnk/springboot/{swagger/SpringFoxConfig.java => config/SwaggerConfig.java} (72%) diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/security/SecurityConfig.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/config/SecurityConfig.java similarity index 89% rename from Poseiden-skeleton/src/main/java/com/nnk/springboot/security/SecurityConfig.java rename to Poseiden-skeleton/src/main/java/com/nnk/springboot/config/SecurityConfig.java index 63fa221fdf..0b4715d62f 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/security/SecurityConfig.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/config/SecurityConfig.java @@ -1,4 +1,4 @@ -package com.nnk.springboot.security; +package com.nnk.springboot.config; import javax.sql.DataSource; @@ -18,13 +18,13 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private DataSource dataSource; - @Autowired public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception { auth.jdbcAuthentication() - .dataSource(dataSource); + .dataSource(dataSource) + .passwordEncoder(passwordEncoder()); } @@ -36,11 +36,12 @@ protected void configure(HttpSecurity http) throws Exception { .antMatchers("/user/**").permitAll() .and() .formLogin() + .loginPage("/login") .defaultSuccessUrl("/bidList/list") .and() .logout() - .logoutUrl("/logout") - .logoutSuccessUrl("/signin") + .logoutUrl("/app-logout") + .logoutSuccessUrl("/") .permitAll(); } diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/swagger/SpringFoxConfig.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/config/SwaggerConfig.java similarity index 72% rename from Poseiden-skeleton/src/main/java/com/nnk/springboot/swagger/SpringFoxConfig.java rename to Poseiden-skeleton/src/main/java/com/nnk/springboot/config/SwaggerConfig.java index 32dba9bdc1..a326274121 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/swagger/SpringFoxConfig.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/config/SwaggerConfig.java @@ -1,4 +1,4 @@ -package com.nnk.springboot.swagger; +package com.nnk.springboot.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -7,16 +7,15 @@ import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; -@EnableSwagger2 @Configuration -public class SpringFoxConfig { +public class SwaggerConfig { + @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() - .apis(RequestHandlerSelectors.any()) + .apis(RequestHandlerSelectors.basePackage("controllers")) .paths(PathSelectors.any()) .build(); } From b300516e46c7b661af6d901183154a285e7e7233 Mon Sep 17 00:00:00 2001 From: xxStevensxx <29457062+xxStevensxx@users.noreply.github.com> Date: Wed, 29 Sep 2021 21:39:30 +0200 Subject: [PATCH 13/14] MAJ userdetails sur les grantedAuth --- .../java/com/nnk/springboot/services/UserServices.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/services/UserServices.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/services/UserServices.java index 4e6c1c8049..a803211a55 100644 --- a/Poseiden-skeleton/src/main/java/com/nnk/springboot/services/UserServices.java +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/services/UserServices.java @@ -1,6 +1,10 @@ package com.nnk.springboot.services; +import java.util.Collections; + import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; @@ -28,7 +32,10 @@ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundEx throw new UsernameNotFoundException(username); } - return (UserDetails) user; + GrantedAuthority grantedAuthority = new SimpleGrantedAuthority(user.getRole()); + UserDetails userDetails = new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), Collections.singletonList(grantedAuthority)); + + return userDetails; } } From 3330c88915fad485dd65b89416284bf2e36aab29 Mon Sep 17 00:00:00 2001 From: Stevens <29457062+xxStevensxx@users.noreply.github.com> Date: Sat, 2 Oct 2021 17:48:44 +0200 Subject: [PATCH 14/14] Ajout des dependance Thymleaf --- Poseiden-skeleton/pom.xml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/Poseiden-skeleton/pom.xml b/Poseiden-skeleton/pom.xml index 3a122a5eca..d03b3cd433 100644 --- a/Poseiden-skeleton/pom.xml +++ b/Poseiden-skeleton/pom.xml @@ -22,7 +22,7 @@ UTF-8 UTF-8 - 1.8 + 11 @@ -56,12 +56,23 @@ org.springframework.boot spring-boot-starter-thymeleaf + + org.thymeleaf + thymeleaf + + + org.thymeleaf + thymeleaf-spring5 + org.springframework.boot spring-boot-starter-security - + + org.springframework.boot + spring-boot-devtools + true + io.springfox springfox-swagger2