Gestionnaire d’inventaire Full Project Spring – HTML – CSS – Javascript

1
908

dans cette nouvelle série nous allons créer ensemble une application web qui nous permettra de gérer un inventaire et pour cela nous allons utiliser plusieurs technologie comme Java, Spring, HTML, CSS et Javascript

Bonjour et bienvenue sur cette seconde partie de notre gestionnaire d’inventaire ou nous allons créer les bases de notre application qui va donc consister de créer le projet, l’ajouter à GitHub et de tester nos Endpoint afin de voir que tout fonctionne.

Préparation du projet

Pour commencer nous allons définir un emplacement où nous allons placer notre projet sur notre ordinateur.

Puis nous allons sur start.spring.io et nous allons créer un nouveau projet spring comme suite.

Puis nous allons ouvrir notre Project dans intelij ou dans un autre IDE et nous allons finir par ajouter une version control à notre projet.

Nous allons connecter notre projet à GitHub ainsi nous pouvons travailler dessus depuis n’importe quel ordinateur il nous suffit de télécharger la version qui se trouve sur git hub et travailler dessus.

Setup base de données H2

Alors comme je vais utiliser une base de données H2 qui est une base de données qui est stocké dans la mémoire je et il serra complètement vider quand on ferme l’application. Nous allons devoir la configurer comme une simple base de données.

spring.h2.console.enabled=true
spring.datasource.platform=h2
spring.datasource.url=jdbc:h2:mem:productManagement

Création des entités

Voila désormais que nous avons notre base de données en place nous allons créer nos deux entité produit et transaction.

package com.tutoderien.storageManagement.model;

import org.hibernate.annotations.Cascade;

import javax.persistence.*;
import java.security.AllPermission;
import java.util.List;

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    @OneToMany
    @Cascade(org.hibernate.annotations.CascadeType.ALL)
    private List<Transaction> transactionList;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Transaction> getTransactionList() {
        return transactionList;
    }

    public void setTransactionList(List<Transaction> transactionList) {
        this.transactionList = transactionList;
    }
}

package com.tutoderien.storageManagement.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.time.LocalDateTime;
@Entity
public class Transaction {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private LocalDateTime transactionDateTime;
    private Integer amount;

    public Transaction() {
        transactionDateTime = LocalDateTime.now();
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public LocalDateTime getTransactionDateTime() {
        return transactionDateTime;
    }

    public void setTransactionDateTime(LocalDateTime transactionDateTime) {
        this.transactionDateTime = transactionDateTime;
    }

    public Integer getAmount() {
        return amount;
    }

    public void setAmount(Integer amount) {
        this.amount = amount;
    }
}

Dans notre entité Product nous allons encore ajouter une méthode qui vas calculer le nombre d’article que nous avons en stock.

public Long getStorageAmount(){
        Long amount = 0L;
        try {
            for (Transaction trans : transactionList) {
                amount += trans.getAmount();
            }
        }catch (NullPointerException npe){
            System.out.println("transaction not found");
        }
        return amount;
    }

Création interface Product Repo

Nous allons devoir communiquer souvent avec notre base de données afin de pouvoir sauvegarder modifier ou consulter nos données c’est pourquoi nous allons créer une interface qui nous permettra de faire cela et grâce à cette interface nous allons pouvoir l’implémenter dans nos autres classes dans problème haa la magie de spring.

package com.tutoderien.storageManagement.repo;

import com.tutoderien.storageManagement.model.Product;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ProductRepo extends JpaRepository <Product,Long> {
}

Création du Rest Controller

Il est temps de partager nos produits avec le monde extérieure en créant des rest Endpoint qui permettrons à l’utilisateur de notre base de données de consulter les produits.

package com.tutoderien.storageManagement.controller;

import com.tutoderien.storageManagement.model.Product;
import com.tutoderien.storageManagement.repo.ProductRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;

@CrossOrigin("*")
@RestController
public class ProductController {

    @Autowired
    ProductRepo productRepo;

    @GetMapping("/productList")
    public List<Product> getProductList(){
        return productRepo.findAll();
    }

    @GetMapping("/product")
    public Optional<Product> getProductById(@RequestParam Long id){
        return productRepo.findById(id);
    }

    @PostMapping("/product")
    public Product saveProduct(@RequestBody Product product){
        return productRepo.save(product);
    }

    @DeleteMapping("/product")
    public void deleteProduct(@RequestParam Long id){
        productRepo.deleteById(id);
    }

}

Et voila quand on lance notre application web nous pouvons désormais utiliser nos API. Pour tester cela nous allons utiliser Postman et nous allons consulter, créer supprimer nos produits.

Voilà nous avons créé la base de notre application car désormais nous pouvons donc créer des produits et ajouter des transactions d’entrée et de sortie + afficher le montant en stock.

1 COMMENTAIRE

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.