Pour intégrer le modèle Couleur.java dans votre code actuel, vous pouvez l'utiliser comme une représentation Java d'une entrée de couleur dans la base de données. Voici comment vous pouvez procéder :

  1. Dans CouleurDAO lors de l'insertion d'une nouvelle couleur:

    • Modifiez les méthodes insertCouleur et insertCouleurAndGet pour accepter un objet Couleur plutôt que des paramètres individuels.
    • Utilisez les getters de l'objet Couleur pour obtenir les valeurs nom et hexadecimal_rvb.
  2. Dans CouleurDAO lors de la mise à jour d'une couleur:

    • Modifiez la méthode updateCouleur pour accepter un objet Couleur.
    • Utilisez les getters de Couleur pour mettre à jour la base de données.
  3. Dans les servlets (AlimentServlet et CouleurServlet):

    • Lors de la réception d'une requête POST ou PUT, créez un objet Couleur à partir des données JSON reçues.
    • Passez cet objet Couleur aux méthodes DAO pour l'insertion ou la mise à jour.
  4. Pour les réponses de la base de données:

    • Lors de la récupération des données de couleur de la base de données, créez des objets Couleur et utilisez-les pour construire votre réponse JSON ou pour d'autres traitements.
public ResultSet insertCouleurAndGet(Couleur couleur) throws SQLException {
    String insertSql = "INSERT INTO couleur (nom, hexadecimal_rvb) VALUES (?, ?)";
    String selectSql = "SELECT * FROM couleur WHERE id = ?";
    
    dbConnection.connect();
    
    // Insertion de la nouvelle couleur
    try (PreparedStatement insertStatement = dbConnection.getJdbcConnection().prepareStatement(insertSql, Statement.RETURN_GENERATED_KEYS)) {
        insertStatement.setString(1, couleur.getNom());
        insertStatement.setString(2, couleur.getHexadecimal_rvb());
        insertStatement.executeUpdate();
        
        // Récupération de l'identifiant généré
        try (ResultSet generatedKeys = insertStatement.getGeneratedKeys()) {
            if (!generatedKeys.next()) {
                throw new SQLException("Creating color failed, no ID obtained.");
            }
            int newColorId = generatedKeys.getInt(1);
            
            // Récupération de la nouvelle couleur insérée
            try (PreparedStatement selectStatement = dbConnection.getJdbcConnection().prepareStatement(selectSql)) {
                selectStatement.setInt(1, newColorId);
                return selectStatement.executeQuery();
            }
        }
    } finally {
        dbConnection.disconnect();
    }
}

 

Voici un exemple de traitement d'une requête POST :

Modification de handlePost dans CouleurDAO:

  • Parsez la requête JSON pour créer une instance de Couleur.
  • Utilisez cette instance pour appeler insertCouleurAndGet ou tout autre méthode d'insertion adaptée.
@Override
public void handlePost(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException {
    try {
        JsonObject jsonObject = ServletUtils.parseJsonRequest(request);

        // Création de l'objet Couleur à partir des données JSON
        String nom = jsonObject.getString("nom", "");
        String hexadecimal_rvb = jsonObject.getString("hexadecimal_rvb", "");
        Couleur couleur = new Couleur(nom, hexadecimal_rvb);

        // Validation
        if (nom.isEmpty() || hexadecimal_rvb.isEmpty()) {
            ServletUtils.sendErrorResponse(response, HttpServletResponse.SC_BAD_REQUEST, "Missing required fields");
            return;
        }

        // Insérer la nouvelle couleur et récupérer un ResultSet
        ResultSet resultSet = insertCouleurAndGet(couleur);

        // Convertir le ResultSet en JSON et envoyer la réponse
        String jsonResponse = ServletUtils.convertResultSetToJson(resultSet);
        ServletUtils.sendJsonResponse(response, jsonResponse);
    } catch (SQLException ex) {
        ServletUtils.handleSqlException(response, ex);
    } catch (Exception ex) {
        ServletUtils.sendErrorResponse(response, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Error inserting color: " + ex.getMessage());
    }
}

Ces modifications vous permettront d'utiliser votre modèle Couleur de manière plus orientée objet, en encapsulant les données et en simplifiant le code de votre couche de persistance (DAO) et de vos servlets.

Dans cette modification, l'objet Couleur est créé à partir des données JSON reçues dans la requête. Ensuite, cet objet est utilisé pour l'insertion dans la base de données. Cela vous permet d'utiliser votre modèle Couleur de manière cohérente dans l'ensemble de votre application, en le rendant plus orienté objet.

Modifié le: mercredi 22 novembre 2023, 07:27