From 12433c353cdccce3a059a747d99d666308838d80 Mon Sep 17 00:00:00 2001 From: FyloZ Date: Mon, 9 Mar 2020 15:19:48 -0400 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20equals/hashcode=20corrects=20dans?= =?UTF-8?q?=20le=20mod=C3=A8le.=20Correction:=20Aucun=20message=20d'erreur?= =?UTF-8?q?=20lors=20de=20la=20cr=C3=A9ation=20d'un=20m=C3=A9lange.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/model/Company.java | 15 ++++++++++++++- .../core/model/Material.java | 5 ++--- .../colorrecipesexplorer/core/model/Mix.java | 16 +++++++++++++++- .../core/model/MixQuantity.java | 17 ++++++++++++++++- .../core/model/Recipe.java | 19 ++++++++++++++----- .../core/model/RecipeStep.java | 17 +++++++++++++++-- .../creators/MixCreatorController.java | 6 ++++-- 7 files changed, 80 insertions(+), 15 deletions(-) diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Company.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Company.java index 0b38ab0..4fb3313 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Company.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Company.java @@ -6,10 +6,10 @@ import org.hibernate.validator.constraints.Length; import javax.persistence.*; import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.util.Objects; @Entity @Data -@EqualsAndHashCode(callSuper = false) @NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor @@ -24,4 +24,17 @@ public class Company implements IModel { @Length(min = 2, max = 50) @Column(unique = true) private String name; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Company company = (Company) o; + return Objects.equals(name, company.name); + } + + @Override + public int hashCode() { + return Objects.hash(name); + } } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Material.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Material.java index 83a872d..a5c6f2f 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Material.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Material.java @@ -43,12 +43,11 @@ public class Material implements IModel { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Material material = (Material) o; - return Objects.equals(id, material.id) && - Objects.equals(name, material.name); + return Objects.equals(name, material.name); } @Override public int hashCode() { - return Objects.hash(id, name); + return Objects.hash(name); } } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Mix.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Mix.java index 744f2d5..61c5056 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Mix.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Mix.java @@ -5,10 +5,10 @@ import lombok.*; import javax.persistence.*; import javax.validation.constraints.NotNull; import java.util.List; +import java.util.Objects; @Entity @Data -@EqualsAndHashCode(callSuper = false) @RequiredArgsConstructor @NoArgsConstructor public class Mix implements IModel { @@ -37,4 +37,18 @@ public class Mix implements IModel { // Casier private String location; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Mix mix = (Mix) o; + return Objects.equals(recipe, mix.recipe) && + Objects.equals(mixType, mix.mixType); + } + + @Override + public int hashCode() { + return Objects.hash(recipe, mixType); + } } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/MixQuantity.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/MixQuantity.java index 6f99d9b..b3a06fa 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/MixQuantity.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/MixQuantity.java @@ -5,10 +5,10 @@ import lombok.*; import javax.persistence.*; import javax.validation.constraints.NotNull; +import java.util.Objects; @Entity @Data -@EqualsAndHashCode(callSuper = false) @RequiredArgsConstructor @NoArgsConstructor public class MixQuantity implements IModel { @@ -32,4 +32,19 @@ public class MixQuantity implements IModel { @NonNull @NotNull private Float quantity; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MixQuantity that = (MixQuantity) o; + return Objects.equals(mix, that.mix) && + Objects.equals(material, that.material) && + Objects.equals(quantity, that.quantity); + } + + @Override + public int hashCode() { + return Objects.hash(mix, material, quantity); + } } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Recipe.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Recipe.java index 2d49e6b..2fbbd5d 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Recipe.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Recipe.java @@ -6,15 +6,11 @@ import org.hibernate.validator.constraints.Length; import javax.persistence.*; import javax.validation.constraints.NotNull; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Comparator; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @Entity @Data -@EqualsAndHashCode(callSuper = false) @RequiredArgsConstructor @NoArgsConstructor public class Recipe implements IModel { @@ -100,4 +96,17 @@ public class Recipe implements IModel { return getMixTypes().contains(mixType); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Recipe recipe = (Recipe) o; + return Objects.equals(name, recipe.name) && + Objects.equals(company, recipe.company); + } + + @Override + public int hashCode() { + return Objects.hash(name, company); + } } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/RecipeStep.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/RecipeStep.java index 7f8b25c..dfbf17b 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/RecipeStep.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/RecipeStep.java @@ -6,10 +6,10 @@ import lombok.*; import javax.persistence.*; import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.util.Objects; @Entity @Data -@EqualsAndHashCode(callSuper = false) @RequiredArgsConstructor @NoArgsConstructor public class RecipeStep implements IModel { @@ -19,7 +19,6 @@ public class RecipeStep implements IModel { private Long id; @NonNull - @ToString.Exclude @JsonIgnore @ManyToOne private Recipe recipe; @@ -27,4 +26,18 @@ public class RecipeStep implements IModel { @NonNull @NotNull private String message; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + RecipeStep that = (RecipeStep) o; + return Objects.equals(recipe, that.recipe) && + Objects.equals(message, that.message); + } + + @Override + public int hashCode() { + return Objects.hash(recipe, message); + } } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/web/controller/creators/MixCreatorController.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/web/controller/creators/MixCreatorController.java index c09561d..0e857a3 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/web/controller/creators/MixCreatorController.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/web/controller/creators/MixCreatorController.java @@ -6,6 +6,8 @@ import dev.fyloz.trial.colorrecipesexplorer.core.exception.model.ModelException; import dev.fyloz.trial.colorrecipesexplorer.core.io.response.ModelResponseBuilder; import dev.fyloz.trial.colorrecipesexplorer.core.io.response.ResponseCode; import dev.fyloz.trial.colorrecipesexplorer.core.io.response.ResponseDataType; +import dev.fyloz.trial.colorrecipesexplorer.core.model.Mix; +import dev.fyloz.trial.colorrecipesexplorer.core.model.MixType; import dev.fyloz.trial.colorrecipesexplorer.core.model.Recipe; import dev.fyloz.trial.colorrecipesexplorer.core.model.dto.MixFormDto; import dev.fyloz.trial.colorrecipesexplorer.core.services.model.*; @@ -74,9 +76,9 @@ public class MixCreatorController { } catch (EntityNotFoundException ex) { modelResponseBuilder.addResponseCode(ResponseCode.MATERIAL_NOT_FOUND, ex.getRequestedId()); } catch (EntityAlreadyExistsException ex) { - if (ex.getIdentifierName().equals(ModelException.IdentifierType.NAME.getName())) + if (ex.getIdentifierName().equals(Mix.IDENTIFIER_MIX_TYPE_NAME)) modelResponseBuilder.addResponseCode(ResponseCode.MIX_TYPE_ALREADY_USED, ex.getRequestedId()); - else if (ex.getIdentifierName().equals("materialName")) + else if (ex.getIdentifierName().equals(MixType.IDENTIFIER_MATERIAL_NAME)) modelResponseBuilder.addResponseCode(ResponseCode.MATERIAL_AND_MIX_TYPE_CANNOT_HAVE_SAME_NAME); }