From 617ee582dcb75bbb179ec4b389f40483a2dbf3db Mon Sep 17 00:00:00 2001 From: Rochas Date: Fri, 20 Dec 2024 14:12:24 +0100 Subject: [PATCH] =?UTF-8?q?ajout=20dans=20isValid=20de=20la=20v=C3=A9rific?= =?UTF-8?q?ation=20que=20les=20Property=20sont=20valid=20+=20HtmlRenerator?= =?UTF-8?q?=20termin=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cartailor.html | 39 +++++++++++++++++++++++++++- src/fr/impl/ConfigurationImpl.java | 9 +++++++ src/fr/impl/HtmlGenerator.java | 41 ++++++++++++++++++++++++++++-- src/fr/impl/PartImpl.java | 4 +++ src/fr/impl/Parts/Exterior.java | 1 + src/fr/test/test_V1.java | 3 +-- src/fr/test/test_V2.java | 33 ++++++++++++++++++++++-- 7 files changed, 123 insertions(+), 7 deletions(-) diff --git a/cartailor.html b/cartailor.html index 42b37e0..617131c 100644 --- a/cartailor.html +++ b/cartailor.html @@ -1 +1,38 @@ -Cartailor \ No newline at end of file + + + +Cartailor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
InteriorIS2500 €
TransmissionTSF715000 €
ExteriorXS10000 €color : red
EngineEG21025000 €
Total Price : 52500 €
+ + \ No newline at end of file diff --git a/src/fr/impl/ConfigurationImpl.java b/src/fr/impl/ConfigurationImpl.java index f18bbf8..aca4fbc 100644 --- a/src/fr/impl/ConfigurationImpl.java +++ b/src/fr/impl/ConfigurationImpl.java @@ -8,6 +8,7 @@ import src.fr.api.Part; import java.util.HashSet; import java.util.Optional; +import java.util.Properties; import java.util.Set; public class ConfigurationImpl implements Configuration { @@ -23,6 +24,14 @@ public class ConfigurationImpl implements Configuration { public boolean isValid() { boolean test = true; for(Part pt1: selectedParts){ + for(String pr: pt1.getPropertyNames()){ + Optional prOptional = pt1.getProperty(pr); + if(!prOptional.isEmpty()){ + test = ((PartImpl)pt1).isValidProperty(pr); + } + else test = false; + } + boolean test_Requirement = true; boolean test_Incompabilities = true; System.out.println("name : " + pt1.getType().getName()); diff --git a/src/fr/impl/HtmlGenerator.java b/src/fr/impl/HtmlGenerator.java index 9bf408a..decd163 100644 --- a/src/fr/impl/HtmlGenerator.java +++ b/src/fr/impl/HtmlGenerator.java @@ -4,17 +4,53 @@ import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.util.Optional; + +import src.fr.api.Part; public class HtmlGenerator { - static final String HEADER = "Cartailor\n"; + static final String HEADER = "Cartailor\n"; static private String generateStringHTML(ConfigurationImpl config){ + String header ="\n\n\nCartailor\n"; + header += "\n"; + header += "\n"; + + String body = "\n"; + body += "\t\n"; + for(Part pt: config.getSelectedParts()){ + body += "\t\t\n"; + + body+= "\t\t\t\n"; + body+= "\t\t\t\n"; + body+= "\t\t\t\n"; + for(String pr: pt.getPropertyNames()){ + Optional prOptional = pt.getProperty(pr); + if(!prOptional.isEmpty()){ + body+= "\t\t\t\n"; + } + } + + body += "\t\t\n"; + + } + body += "\t\t\n"; + body += "\t\t\t\n"; + body += "\t\t\t\n"; + body += "\t\t\n"; + + body += "\t
" + pt.getType().getCategory().getName() + "" + pt.getType().getName() + "" + ((PartImpl)pt).getPrice() + " €" + pr + " : " + prOptional.get() + "
Total Price : " + config.getTotalPrice() + " €
\n"; - return HEADER + ""; + + body += "\n"; + return header + body + ""; } static public void generateHTML(ConfigurationImpl config) throws IOException{ @@ -26,5 +62,6 @@ public class HtmlGenerator { try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) { writer.write(content); } + System.out.println(projectRoot+"\\cartailor.html"); } } diff --git a/src/fr/impl/PartImpl.java b/src/fr/impl/PartImpl.java index fd92a90..db2cde7 100644 --- a/src/fr/impl/PartImpl.java +++ b/src/fr/impl/PartImpl.java @@ -94,4 +94,8 @@ public class PartImpl implements Part { public int getPrice(){ return this.price; } + + public boolean isValidProperty(String propertyName){ + return this.properties.get(propertyName).possibleValues.contains(this.properties.get(propertyName).getter.get()); + } } diff --git a/src/fr/impl/Parts/Exterior.java b/src/fr/impl/Parts/Exterior.java index 3f40b00..ceccb3e 100644 --- a/src/fr/impl/Parts/Exterior.java +++ b/src/fr/impl/Parts/Exterior.java @@ -40,6 +40,7 @@ public class Exterior extends PartImpl { public Exterior(){ this.addProperty("color", () -> getColor(), c -> setColor(c), colorSet); + this.setProperty("color","white"); } diff --git a/src/fr/test/test_V1.java b/src/fr/test/test_V1.java index a4c818a..c750aba 100644 --- a/src/fr/test/test_V1.java +++ b/src/fr/test/test_V1.java @@ -3,8 +3,7 @@ package src.fr.test; import java.util.Set; import java.util.HashSet; - -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.BeforeEach; diff --git a/src/fr/test/test_V2.java b/src/fr/test/test_V2.java index e07b468..942b87e 100644 --- a/src/fr/test/test_V2.java +++ b/src/fr/test/test_V2.java @@ -5,7 +5,7 @@ import java.io.IOException; import java.util.HashSet; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.BeforeEach; @@ -110,6 +110,20 @@ public class test_V2 { assertTrue(config1.isValid()); } + @Test + public void test_NotCompatibleProperty(){ + ConfigurationImpl config1 = new ConfigurationImpl(cm); + config1.selectPart(EG210); + config1.selectPart(TSF7); + config1.selectPart(XS); + config1.selectPart(IS); + + config1.getPart(exterior).setProperty("color","gsqgsdf"); + + assertTrue(config1.getPart(exterior).getProperty("color").get()=="gsqgsdf"); + assertFalse(config1.isValid()); + } + @Test public void test_NotProperty(){ ConfigurationImpl config1 = new ConfigurationImpl(cm); @@ -118,7 +132,7 @@ public class test_V2 { config1.selectPart(XS); config1.selectPart(IS); - assertTrue(config1.getPart(exterior).getProperty("color").isEmpty()); + assertTrue(config1.getPart(exterior).getProperty("color").get()=="white"); assertTrue(config1.isValid()); } @@ -158,4 +172,19 @@ public class test_V2 { e.printStackTrace(); } } + + @Test + void test_html2(){ + ConfigurationImpl config1 = new ConfigurationImpl(cm); + config1.selectPart(EG210); + config1.selectPart(TSF7); + config1.selectPart(XS); + config1.selectPart(IS); + config1.getPart(exterior).setProperty("color", "red"); + try { + HtmlGenerator.generateHTML(config1); + } catch (IOException e) { + e.printStackTrace(); + } + } } \ No newline at end of file