diff --git a/src/main/java/ru/ulstu/fc/rule/controller/InferenceMvcController.java b/src/main/java/ru/ulstu/fc/rule/controller/InferenceMvcController.java index 0e9abef..ebd0f13 100644 --- a/src/main/java/ru/ulstu/fc/rule/controller/InferenceMvcController.java +++ b/src/main/java/ru/ulstu/fc/rule/controller/InferenceMvcController.java @@ -9,6 +9,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import ru.ulstu.fc.rule.model.Antecedent; import ru.ulstu.fc.rule.model.InferenceForm; +import ru.ulstu.fc.rule.model.Variable; +import ru.ulstu.fc.rule.model.VariableValue; import ru.ulstu.fc.rule.service.FuzzyInferenceService; import java.util.Arrays; @@ -26,35 +28,38 @@ public class InferenceMvcController { @GetMapping("/") public String initInference(Model model) { - model.addAttribute("ageAntecedents", getAgeAntecedents()); - model.addAttribute("incomeAntecedents", getIncomeAntecedents()); + model.addAttribute("ageValues", getAgeValues()); + model.addAttribute("incomeValues", getIncomeValues()); model.addAttribute("inferenceForm", new InferenceForm()); return "index"; } @RequestMapping(value = "get-inference", method = RequestMethod.POST) public String getInference(@ModelAttribute InferenceForm inferenceForm, Model model) { - model.addAttribute("ageAntecedents", getAgeAntecedents()); - model.addAttribute("incomeAntecedents", getIncomeAntecedents()); + model.addAttribute("ageValues", getAgeValues()); + model.addAttribute("incomeValues", getIncomeValues()); model.addAttribute("inferenceForm", inferenceForm); model.addAttribute("response", fuzzyInferenceService.getFuzzyInference( - Map.of("возраст", Double.valueOf(inferenceForm.getAgeAntecedent()), - "доход", Double.valueOf(inferenceForm.getIncomeAntecedent()) - ))); + Map.of("возраст", Double.valueOf(inferenceForm.getAgeValue()), + "доход", Double.valueOf(inferenceForm.getIncomeValue())))); return "index"; } - private List getAgeAntecedents() { - return Arrays.asList( - new Antecedent("молодой", "30"), - new Antecedent("средний", "45"), - new Antecedent("старый", "60")); + private List getAgeValues() { + Variable var = new Variable("Age"); + var.getValues().addAll(Arrays.asList( + new VariableValue("молодой", 30.0), + new VariableValue("средний", 45.0), + new VariableValue("старый", 60.0))); + return var.getValues(); } - private List getIncomeAntecedents() { - return Arrays.asList( - new Antecedent("небольшой", "20000"), - new Antecedent("средний", "90000"), - new Antecedent("высокий", "200000")); + private List getIncomeValues() { + Variable var = new Variable("Income"); + var.getValues().addAll(Arrays.asList( + new VariableValue("небольшой", 20000.0), + new VariableValue("средний", 90000.0), + new VariableValue("высокий", 200000.0))); + return var.getValues(); } } diff --git a/src/main/java/ru/ulstu/fc/rule/model/Antecedent.java b/src/main/java/ru/ulstu/fc/rule/model/Antecedent.java index 54915e1..6950aa1 100644 --- a/src/main/java/ru/ulstu/fc/rule/model/Antecedent.java +++ b/src/main/java/ru/ulstu/fc/rule/model/Antecedent.java @@ -1,19 +1,29 @@ package ru.ulstu.fc.rule.model; -public class Antecedent { - private String value; - private String description; +import jakarta.persistence.Entity; +import jakarta.persistence.ManyToOne; +import ru.ulstu.fc.core.model.BaseEntity; - public Antecedent(String description, String value) { - this.description = description; - this.value = value; +@Entity +public class Antecedent extends BaseEntity { + @ManyToOne + private Variable variable; + private String value; + + public Variable getVariable() { + return variable; + } + + public void setVariable(Variable variable) { + this.variable = variable; } public String getValue() { return value; } - public String getDescription() { - return description; + public void setValue(String value) { + this.value = value; } + } diff --git a/src/main/java/ru/ulstu/fc/rule/model/Consequent.java b/src/main/java/ru/ulstu/fc/rule/model/Consequent.java new file mode 100644 index 0000000..ae4148c --- /dev/null +++ b/src/main/java/ru/ulstu/fc/rule/model/Consequent.java @@ -0,0 +1,29 @@ +package ru.ulstu.fc.rule.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.ManyToOne; +import ru.ulstu.fc.core.model.BaseEntity; + +@Entity +public class Consequent extends BaseEntity { + @ManyToOne + private Variable variable; + private String value; + + public Variable getVariable() { + return variable; + } + + public void setVariable(Variable variable) { + this.variable = variable; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/ru/ulstu/fc/rule/model/InferenceForm.java b/src/main/java/ru/ulstu/fc/rule/model/InferenceForm.java index d336986..7a8ac7e 100644 --- a/src/main/java/ru/ulstu/fc/rule/model/InferenceForm.java +++ b/src/main/java/ru/ulstu/fc/rule/model/InferenceForm.java @@ -1,22 +1,22 @@ package ru.ulstu.fc.rule.model; public class InferenceForm { - private String ageAntecedent; - private String incomeAntecedent; + private String ageValue; + private String incomeValue; - public String getAgeAntecedent() { - return ageAntecedent; + public String getAgeValue() { + return ageValue; } - public void setAgeAntecedent(String ageAntecedent) { - this.ageAntecedent = ageAntecedent; + public void setAgeValue(String ageAntecedent) { + this.ageValue = ageAntecedent; } - public String getIncomeAntecedent() { - return incomeAntecedent; + public String getIncomeValue() { + return incomeValue; } - public void setIncomeAntecedent(String incomeAntecedent) { - this.incomeAntecedent = incomeAntecedent; + public void setIncomeValue(String incomeAntecedent) { + this.incomeValue = incomeAntecedent; } } diff --git a/src/main/java/ru/ulstu/fc/rule/model/Rule.java b/src/main/java/ru/ulstu/fc/rule/model/Rule.java index 8c5a181..2d929c6 100644 --- a/src/main/java/ru/ulstu/fc/rule/model/Rule.java +++ b/src/main/java/ru/ulstu/fc/rule/model/Rule.java @@ -1,7 +1,10 @@ package ru.ulstu.fc.rule.model; +import java.util.List; + import jakarta.persistence.Entity; import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; import ru.ulstu.fc.core.model.BaseEntity; import ru.ulstu.fc.project.model.Project; @@ -9,6 +12,10 @@ import ru.ulstu.fc.project.model.Project; public class Rule extends BaseEntity { @ManyToOne private Project project; + @OneToMany + private List antecedents; //TODO: AND / OR? + @ManyToOne + private Consequent consequent; public Project getProject() { return project; @@ -16,5 +23,22 @@ public class Rule extends BaseEntity { public void setProject(Project project) { this.project = project; - } + } + + public List getAntecedents() { + return antecedents; + } + + public void setAntecedents(List antecedents) { + this.antecedents = antecedents; + } + + public Consequent getConsequent() { + return consequent; + } + + public void setConsequent(Consequent consequent) { + this.consequent = consequent; + } + } diff --git a/src/main/java/ru/ulstu/fc/rule/model/Variable.java b/src/main/java/ru/ulstu/fc/rule/model/Variable.java index ebbc115..57c07a6 100644 --- a/src/main/java/ru/ulstu/fc/rule/model/Variable.java +++ b/src/main/java/ru/ulstu/fc/rule/model/Variable.java @@ -1,10 +1,17 @@ package ru.ulstu.fc.rule.model; +import java.util.ArrayList; import java.util.List; -public class Variable { +import jakarta.persistence.Entity; +import jakarta.persistence.OneToMany; +import ru.ulstu.fc.core.model.BaseEntity; + +@Entity +public class Variable extends BaseEntity { private String name; - private List values; + @OneToMany + private List values = new ArrayList<>(); public Variable() { } @@ -14,6 +21,10 @@ public class Variable { this.values = values; } + public Variable(String name) { + this.name = name; + } + public String getName() { return name; } diff --git a/src/main/java/ru/ulstu/fc/rule/model/VariableValue.java b/src/main/java/ru/ulstu/fc/rule/model/VariableValue.java index 9bc9550..e3d4fe4 100644 --- a/src/main/java/ru/ulstu/fc/rule/model/VariableValue.java +++ b/src/main/java/ru/ulstu/fc/rule/model/VariableValue.java @@ -1,6 +1,10 @@ package ru.ulstu.fc.rule.model; -public class VariableValue { +import jakarta.persistence.Entity; +import ru.ulstu.fc.core.model.BaseEntity; + +@Entity +public class VariableValue extends BaseEntity { private String fuzzyTerm; private Double value; diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index fbeb483..9ac57fb 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -25,11 +25,11 @@
@@ -40,11 +40,11 @@