Utiliser le modèle Couleur.java Piste pour l'exercice 2
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 :
-
Dans
CouleurDAOlors de l'insertion d'une nouvelle couleur:- Modifiez les méthodes
insertCouleuretinsertCouleurAndGetpour accepter un objetCouleurplutôt que des paramètres individuels. - Utilisez les getters de l'objet
Couleurpour obtenir les valeursnomethexadecimal_rvb.
- Modifiez les méthodes
-
Dans
CouleurDAOlors de la mise à jour d'une couleur:- Modifiez la méthode
updateCouleurpour accepter un objetCouleur. - Utilisez les getters de
Couleurpour mettre à jour la base de données.
- Modifiez la méthode
-
Dans les servlets (
AlimentServletetCouleurServlet):- 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
Couleuraux méthodes DAO pour l'insertion ou la mise à jour.
- Lors de la réception d'une requête POST ou PUT, créez un objet
-
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
Couleuret utilisez-les pour construire votre réponse JSON ou pour d'autres traitements.
- Lors de la récupération des données de couleur de la base de données, créez des objets
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
insertCouleurAndGetou 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.