diff --git a/Poseiden-skeleton/pom.xml b/Poseiden-skeleton/pom.xml index a7dcbc04dc..d03b3cd433 100644 --- a/Poseiden-skeleton/pom.xml +++ b/Poseiden-skeleton/pom.xml @@ -22,7 +22,7 @@ UTF-8 UTF-8 - 1.8 + 11 @@ -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 @@ -43,6 +56,14 @@ org.springframework.boot spring-boot-starter-thymeleaf + + org.thymeleaf + thymeleaf + + + org.thymeleaf + thymeleaf-spring5 + org.springframework.boot spring-boot-starter-security @@ -52,6 +73,16 @@ spring-boot-devtools true + + io.springfox + springfox-swagger2 + 2.5.0 + + + io.springfox + springfox-swagger-ui + 2.5.0 + mysql mysql-connector-java @@ -61,7 +92,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 f53aeb0fba..4fc153be3d 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,14 @@ 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 +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@EnableSwagger2 +@ComponentScan(basePackages = {"com.nnk.springboot.repositories"}) +@SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) public class Application { public static void main(String[] args) { diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/config/SecurityConfig.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/config/SecurityConfig.java new file mode 100644 index 0000000000..0b4715d62f --- /dev/null +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/config/SecurityConfig.java @@ -0,0 +1,56 @@ +package com.nnk.springboot.config; + +import javax.sql.DataSource; + +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 + private DataSource dataSource; + + @Autowired + public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception { + + auth.jdbcAuthentication() + .dataSource(dataSource) + .passwordEncoder(passwordEncoder()); + } + + + @Override + protected void configure(HttpSecurity http) throws Exception { + + http.authorizeRequests() + .antMatchers("/bidList/**", "/curvePoint/**", "/rating/**", "/ruleName/**", "/trade/**").hasAnyAuthority("USER") + .antMatchers("/user/**").permitAll() + .and() + .formLogin() + .loginPage("/login") + .defaultSuccessUrl("/bidList/list") + .and() + .logout() + .logoutUrl("/app-logout") + .logoutSuccessUrl("/") + .permitAll(); + + } + + + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + + } + +} diff --git a/Poseiden-skeleton/src/main/java/com/nnk/springboot/config/SwaggerConfig.java b/Poseiden-skeleton/src/main/java/com/nnk/springboot/config/SwaggerConfig.java new file mode 100644 index 0000000000..a326274121 --- /dev/null +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/config/SwaggerConfig.java @@ -0,0 +1,22 @@ +package com.nnk.springboot.config; + +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; + +@Configuration +public class SwaggerConfig { + + @Bean + public Docket api() { + return new Docket(DocumentationType.SWAGGER_2) + .select() + .apis(RequestHandlerSelectors.basePackage("controllers")) + .paths(PathSelectors.any()) + .build(); + } +} 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..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 @@ -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,15 @@ @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 +38,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 +58,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"; } } 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; + } } 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; } + } 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..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 @@ -5,8 +5,12 @@ 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 { + + 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..a803211a55 --- /dev/null +++ b/Poseiden-skeleton/src/main/java/com/nnk/springboot/services/UserServices.java @@ -0,0 +1,41 @@ +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; +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); + } + + GrantedAuthority grantedAuthority = new SimpleGrantedAuthority(user.getRole()); + UserDetails userDetails = new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), Collections.singletonList(grantedAuthority)); + + return userDetails; + } + +} 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 ########################## 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 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 + +
+