commit bc1cb4b34d1409fae09d2817a777fba87e11a7c9
Author: stepanekp <1stepanekpetr@gmail.com>
Date:   Wed Apr 6 16:09:56 2022 +0200

    #14 Unused parts of code removed

diff --git a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/controller/AppController.java b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/controller/AppController.java
index 56012e9..3b3c10d 100644
--- a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/controller/AppController.java
+++ b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/controller/AppController.java
@@ -173,37 +173,6 @@ public class AppController {
         return "result";
     }
 
-    /**
-     * Method for recalculating the results after a configuration change.
-     *
-     * @param model object for passing data to the UI
-     * @return html file name for thymeleaf template
-     */
-    @GetMapping("/recalculate")
-    public String recalculateGet(Model model) {
-        return analyzeGet(model);
-    }
-
-    /**
-     * Method for recalculating the results after a configuration change.
-     *
-     * @param model object for passing data to the UI
-     * @return html file name for thymeleaf template
-     */
-    @PostMapping("/recalculate")
-    public String resultRecalculate(Model model) {
-
-        List<QueryResult> results = antiPatternManager.analyze(antiPatternService.getAnalyzedProjects(),
-                antiPatternService.getAnalyzedAntiPatterns(), null);
-
-        antiPatternService.saveResults(results);
-        antiPatternService.setConfigurationChanged(false);
-
-        model.addAttribute("queryResults", results);
-        model.addAttribute("recalculationTime", DateTimeFormatter.ofPattern("HH:mm:ss").format(LocalTime.now()));
-        return "result";
-    }
-
     /**
      * Method for showing about page.
      *
diff --git a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/BusinessAsUsualDetectorImpl.java b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/BusinessAsUsualDetectorImpl.java
index 0838b83..d2ef02f 100644
--- a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/BusinessAsUsualDetectorImpl.java
+++ b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/BusinessAsUsualDetectorImpl.java
@@ -29,17 +29,11 @@ public class BusinessAsUsualDetectorImpl implements AntiPatternDetector {
     private List<String> sqlQueries;
 
     private float getDivisionOfIterationsWithRetrospective(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new Percentage(Float.parseFloat(thresholds.get("divisionOfIterationsWithRetrospective"))).getValue();
-
-        return ((Percentage) antiPattern.getThresholds().get("divisionOfIterationsWithRetrospective").getValue()).getValue();
+        return new Percentage(Float.parseFloat(thresholds.get("divisionOfIterationsWithRetrospective"))).getValue();
     }
 
     private List<String> getSearchSubstringsWithRetrospective(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return Arrays.asList(thresholds.get("searchSubstringsWithRetrospective").split("\\|\\|"));
-
-        return Arrays.asList(((String) antiPattern.getThresholds().get("searchSubstringsWithRetrospective").getValue()).split("\\|\\|"));
+        return Arrays.asList(thresholds.get("searchSubstringsWithRetrospective").split("\\|\\|"));
     }
 
     @Override
diff --git a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/LongOrNonExistentFeedbackLoopsDetectorImpl.java b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/LongOrNonExistentFeedbackLoopsDetectorImpl.java
index daa7862..6f97902 100644
--- a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/LongOrNonExistentFeedbackLoopsDetectorImpl.java
+++ b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/LongOrNonExistentFeedbackLoopsDetectorImpl.java
@@ -36,24 +36,15 @@ public class LongOrNonExistentFeedbackLoopsDetectorImpl implements AntiPatternDe
     private List<String> sqlQueries;
 
     private float getDivisionOfIterationsWithFeedbackLoop(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new Percentage(Float.parseFloat(thresholds.get("divisionOfIterationsWithFeedbackLoop"))).getValue();
-
-        return ((Percentage) antiPattern.getThresholds().get("divisionOfIterationsWithFeedbackLoop").getValue()).getValue();
+        return new Percentage(Float.parseFloat(thresholds.get("divisionOfIterationsWithFeedbackLoop"))).getValue();
     }
 
     private float getMaxGapBetweenFeedbackLoopRate(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new PositiveFloat(Float.parseFloat(thresholds.get("maxGapBetweenFeedbackLoopRate"))).floatValue();
-
-        return ((PositiveFloat) antiPattern.getThresholds().get("maxGapBetweenFeedbackLoopRate").getValue()).floatValue();
+        return new PositiveFloat(Float.parseFloat(thresholds.get("maxGapBetweenFeedbackLoopRate"))).floatValue();
     }
 
     private List<String> getSearchSubstringsWithFeedbackLoop(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return Arrays.asList(thresholds.get("searchSubstringsWithFeedbackLoop").split("\\|\\|"));
-
-        return Arrays.asList(((String) antiPattern.getThresholds().get("searchSubstringsWithFeedbackLoop").getValue()).split("\\|\\|"));
+        return Arrays.asList(thresholds.get("searchSubstringsWithFeedbackLoop").split("\\|\\|"));
     }
 
     @Override
diff --git a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/NinetyNinetyRuleDetectorImpl.java b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/NinetyNinetyRuleDetectorImpl.java
index 9d6d815..9f89f13 100644
--- a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/NinetyNinetyRuleDetectorImpl.java
+++ b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/NinetyNinetyRuleDetectorImpl.java
@@ -28,17 +28,11 @@ public class NinetyNinetyRuleDetectorImpl implements AntiPatternDetector {
     private List<String> sqlQueries;
 
     private double getMaxDivisionRange(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new PositiveFloat(Float.parseFloat(thresholds.get("maxDivisionRange"))).floatValue();
-
-        return ((PositiveFloat) antiPattern.getThresholds().get("maxDivisionRange").getValue()).doubleValue();
+        return new PositiveFloat(Float.parseFloat(thresholds.get("maxDivisionRange"))).floatValue();
     }
 
     private int getMaxBadDivisionLimit(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new PositiveInteger(Integer.parseInt(thresholds.get("maxBadDivisionLimit"))).intValue();
-
-        return ((PositiveInteger) antiPattern.getThresholds().get("maxBadDivisionLimit").getValue()).intValue();
+        return new PositiveInteger(Integer.parseInt(thresholds.get("maxBadDivisionLimit"))).intValue();
     }
 
     @Override
diff --git a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/RoadToNowhereDetectorImpl.java b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/RoadToNowhereDetectorImpl.java
index 0418de1..a094ff9 100644
--- a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/RoadToNowhereDetectorImpl.java
+++ b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/RoadToNowhereDetectorImpl.java
@@ -38,24 +38,15 @@ public class RoadToNowhereDetectorImpl implements AntiPatternDetector {
     private List<String> sqlQueries;
 
     private int getMinNumberOfWikiPagesWithProjectPlan(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new PositiveInteger(Integer.parseInt(thresholds.get("minNumberOfWikiPagesWithProjectPlan"))).intValue();
-
-        return ((PositiveInteger) antiPattern.getThresholds().get("minNumberOfWikiPagesWithProjectPlan").getValue()).intValue();
+        return new PositiveInteger(Integer.parseInt(thresholds.get("minNumberOfWikiPagesWithProjectPlan"))).intValue();
     }
 
     private int getMinNumberOfActivitiesWithProjectPlan(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new PositiveInteger(Integer.parseInt(thresholds.get("minNumberOfActivitiesWithProjectPlan"))).intValue();
-
-        return ((PositiveInteger) antiPattern.getThresholds().get("minNumberOfActivitiesWithProjectPlan").getValue()).intValue();
+        return new PositiveInteger(Integer.parseInt(thresholds.get("minNumberOfActivitiesWithProjectPlan"))).intValue();
     }
 
     private List<String> getSearchSubstringsWithProjectPlan(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return Arrays.asList(thresholds.get("searchSubstringsWithProjectPlan").split("\\|\\|"));
-
-        return Arrays.asList(((String) antiPattern.getThresholds().get("searchSubstringsWithProjectPlan").getValue()).split("\\|\\|"));
+        return Arrays.asList(thresholds.get("searchSubstringsWithProjectPlan").split("\\|\\|"));
     }
 
     @Override
diff --git a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/SpecifyNothingDetectorImpl.java b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/SpecifyNothingDetectorImpl.java
index 9efdaa0..5fcbf44 100644
--- a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/SpecifyNothingDetectorImpl.java
+++ b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/SpecifyNothingDetectorImpl.java
@@ -35,31 +35,19 @@ public class SpecifyNothingDetectorImpl implements AntiPatternDetector {
     private List<String> sqlQueries;
 
     private int getMinNumberOfWikiPagesWithSpecification(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new PositiveInteger(Integer.parseInt(thresholds.get("minNumberOfWikiPagesWithSpecification"))).intValue();
-
-        return ((PositiveInteger) antiPattern.getThresholds().get("minNumberOfWikiPagesWithSpecification").getValue()).intValue();
+        return new PositiveInteger(Integer.parseInt(thresholds.get("minNumberOfWikiPagesWithSpecification"))).intValue();
     }
 
     private int getMinNumberOfActivitiesWithSpecification(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new PositiveInteger(Integer.parseInt(thresholds.get("minNumberOfActivitiesWithSpecification"))).intValue();
-
-        return ((PositiveInteger) antiPattern.getThresholds().get("minNumberOfActivitiesWithSpecification").getValue()).intValue();
+        return new PositiveInteger(Integer.parseInt(thresholds.get("minNumberOfActivitiesWithSpecification"))).intValue();
     }
 
     private int getMinAvgLengthOfActivityDescription(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new PositiveInteger(Integer.parseInt(thresholds.get("minAvgLengthOfActivityDescription"))).intValue();
-
-        return ((PositiveInteger) antiPattern.getThresholds().get("minAvgLengthOfActivityDescription").getValue()).intValue();
+        return new PositiveInteger(Integer.parseInt(thresholds.get("minAvgLengthOfActivityDescription"))).intValue();
     }
 
     private List<String> getSearchSubstringsWithProjectSpecification(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return Arrays.asList(thresholds.get("searchSubstringsWithProjectSpecification").split("\\|\\|"));
-
-        return Arrays.asList(((String) antiPattern.getThresholds().get("searchSubstringsWithProjectSpecification").getValue()).split("\\|\\|"));
+        return Arrays.asList(thresholds.get("searchSubstringsWithProjectSpecification").split("\\|\\|"));
     }
 
     @Override
diff --git a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/TooLongSprintDetectorImpl.java b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/TooLongSprintDetectorImpl.java
index 99f25f6..3781682 100644
--- a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/TooLongSprintDetectorImpl.java
+++ b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/TooLongSprintDetectorImpl.java
@@ -54,17 +54,11 @@ public class TooLongSprintDetectorImpl implements AntiPatternDetector {
     }
 
     private Integer getMaxIterationLength(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new PositiveInteger(Integer.parseInt(thresholds.get("maxIterationLength"))).intValue();
-
-        return ((PositiveInteger) this.antiPattern.getThresholds().get("maxIterationLength").getValue()).intValue();
+        return new PositiveInteger(Integer.parseInt(thresholds.get("maxIterationLength"))).intValue();
     }
 
     private Integer getMaxNumberOfTooLongIterations(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new PositiveInteger(Integer.parseInt(thresholds.get("maxNumberOfTooLongIterations"))).intValue();
-
-        return ((PositiveInteger) this.antiPattern.getThresholds().get("maxNumberOfTooLongIterations").getValue()).intValue();
+        return new PositiveInteger(Integer.parseInt(thresholds.get("maxNumberOfTooLongIterations"))).intValue();
     }
 
     /**
diff --git a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/VaryingSprintLengthDetectorImpl.java b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/VaryingSprintLengthDetectorImpl.java
index a0f2243..5e5bc85 100644
--- a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/VaryingSprintLengthDetectorImpl.java
+++ b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/detecting/detectors/VaryingSprintLengthDetectorImpl.java
@@ -33,17 +33,11 @@ public class VaryingSprintLengthDetectorImpl implements AntiPatternDetector {
     private List<String> sqlQueries;
 
     private Integer getMaxDaysDifference(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new PositiveInteger(Integer.parseInt(thresholds.get("maxDaysDifference"))).intValue();
-
-        return ((PositiveInteger) this.antiPattern.getThresholds().get("maxDaysDifference").getValue()).intValue();
+        return new PositiveInteger(Integer.parseInt(thresholds.get("maxDaysDifference"))).intValue();
     }
 
     private Integer getMaxIterationChanged(Map<String, String> thresholds) {
-        if(thresholds != null)
-            return new PositiveInteger(Integer.parseInt(thresholds.get("maxIterationChanged"))).intValue();
-
-        return ((PositiveInteger) this.antiPattern.getThresholds().get("maxIterationChanged").getValue()).intValue();
+        return new PositiveInteger(Integer.parseInt(thresholds.get("maxIterationChanged"))).intValue();
     }
 
     @Override
diff --git a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/model/Threshold.java b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/model/Threshold.java
index f8e9774..80634ba 100644
--- a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/model/Threshold.java
+++ b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/model/Threshold.java
@@ -2,30 +2,28 @@ package cz.zcu.fav.kiv.antipatterndetectionapp.model;
 
 /**
  * Model class for threshold.
- * @param <T> threshold can have different data types
  */
-public class Threshold<T> {
+public class Threshold {
     private String name;
     private String printName;
     private String description;
     private String errorMessage;
+    private String type;
     private boolean isErrorMessageShown;
-    private T value;
 
-    public Threshold(String name, String printName, String description, T value) {
+    public Threshold(String name, String printName, String description) {
         this.name = name;
         this.printName = printName;
         this.description = description;
-        this.value = value;
         this.isErrorMessageShown = false;
     }
 
-    public Threshold(String name, String printName, String description, String errorMessage, T value) {
+    public Threshold(String name, String printName, String description, String errorMessage, String type) {
         this.name = name;
         this.printName = printName;
         this.description = description;
         this.errorMessage = errorMessage;
-        this.value = value;
+        this.type = type;
         this.isErrorMessageShown = false;
     }
 
@@ -53,14 +51,6 @@ public class Threshold<T> {
         this.description = description;
     }
 
-    public T getValue() {
-        return value;
-    }
-
-    public void setValue(T value) {
-        this.value = value;
-    }
-
     public String getErrorMessage() {
         return errorMessage;
     }
@@ -69,6 +59,14 @@ public class Threshold<T> {
         this.errorMessage = errorMessage;
     }
 
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
     public boolean isErrorMessageShown() {
         return isErrorMessageShown;
     }
diff --git a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/repository/AntiPatternRepository.java b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/repository/AntiPatternRepository.java
index 4d87478..b0b2f38 100644
--- a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/repository/AntiPatternRepository.java
+++ b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/repository/AntiPatternRepository.java
@@ -168,7 +168,7 @@ public class AntiPatternRepository implements ServletContextAware {
         Map<String, Threshold> APMap = new HashMap<>();
 
         JsonNode array = node.get("thresholds");
-        Threshold<?> tmpThreshold = null;
+        Threshold tmpThreshold = null;
 
         for(int i = 0; i < array.size(); i++){
             JsonNode tmpNode = array.get(i);
@@ -182,9 +182,8 @@ public class AntiPatternRepository implements ServletContextAware {
             String tThresholdPrintName = thresholdNode.get("thresholdPrintName").asText();
             String tThresholdDescription = thresholdNode.get("thresholdDescription").asText();
             String tThresholdErrorMess = thresholdNode.get("thresholdErrorMess").asText();
-            String tThresholdValue = thresholdNode.get("thresholdValue").asText();
 
-            tmpThreshold = getThreshold(thresholdType, tThresholdName, tThresholdPrintName, tThresholdDescription, tThresholdErrorMess, tThresholdValue);
+            tmpThreshold = getThreshold(thresholdType, tThresholdName, tThresholdPrintName, tThresholdDescription, tThresholdErrorMess);
 
             APMap.put(thresholdName, tmpThreshold);
         }
@@ -220,22 +219,12 @@ public class AntiPatternRepository implements ServletContextAware {
      * @param printName
      * @param description
      * @param errorMessage
-     * @param value
      * @return
      */
-    private Threshold<?> getThreshold(String thresholdType, String name, String printName, String description, String errorMessage, String value){
+    private Threshold getThreshold(String thresholdType, String name, String printName, String description, String errorMessage){
 
-        if(thresholdType.equals("Percentage")){
-            return new Threshold<>(name, printName, description, errorMessage, new Percentage(Float.parseFloat(value)));
-        }
-        else if(thresholdType.equals("PositiveFloat")){
-            return new Threshold<>(name, printName, description, errorMessage, new PositiveFloat(Float.parseFloat(value)));
-        }
-        else if(thresholdType.equals("PositiveInteger")){
-            return new Threshold<>(name, printName, description, errorMessage, new PositiveInteger(Integer.parseInt(value)));
-        }
-        else if(thresholdType.equals("String")){
-            return new Threshold<>(name, printName, description, errorMessage, value);
+        if(thresholdType.equals("Percentage") || thresholdType.equals("PositiveFloat") || thresholdType.equals("PositiveInteger") || thresholdType.equals("String")){
+            return new Threshold(name, printName, description, errorMessage, thresholdType);
         }
 
         return null;
diff --git a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/service/ConfigurationServiceImpl.java b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/service/ConfigurationServiceImpl.java
index c3743fd..f06848b 100644
--- a/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/service/ConfigurationServiceImpl.java
+++ b/src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/service/ConfigurationServiceImpl.java
@@ -58,7 +58,7 @@ public class ConfigurationServiceImpl implements ConfigurationService {
 
             for(int i = 0; i < thresholdNames.length; i++){
                 if(antiPattern.getThresholds().containsKey(thresholdNames[i])){
-                    if(antiPattern.getThresholds().get(thresholdNames[i]).getValue().getClass() == Integer.class){
+                    if(antiPattern.getThresholds().get(thresholdNames[i]).getType().equals("Integer")){
                         try {
                             Integer.parseInt(thresholdValues[i]);
                         }
@@ -66,7 +66,7 @@ public class ConfigurationServiceImpl implements ConfigurationService {
                             incorrectParameters.add(thresholdNames[i]);
                         }
                     }
-                    else if(antiPattern.getThresholds().get(thresholdNames[i]).getValue().getClass() == Percentage.class){
+                    else if(antiPattern.getThresholds().get(thresholdNames[i]).getType().equals("Percentage")){
                         try {
                             Percentage.parsePercentage(thresholdValues[i]);
                         }
@@ -74,7 +74,7 @@ public class ConfigurationServiceImpl implements ConfigurationService {
                             incorrectParameters.add(thresholdNames[i]);
                         }
                     }
-                    else if(antiPattern.getThresholds().get(thresholdNames[i]).getValue().getClass() == PositiveInteger.class){
+                    else if(antiPattern.getThresholds().get(thresholdNames[i]).getType().equals("PositiveInteger")){
                         try {
                             PositiveInteger.parsePositiveInteger(thresholdValues[i]);
                         }
@@ -82,7 +82,7 @@ public class ConfigurationServiceImpl implements ConfigurationService {
                             incorrectParameters.add(thresholdNames[i]);
                         }
                     }
-                    else if(antiPattern.getThresholds().get(thresholdNames[i]).getValue().getClass() == PositiveFloat.class){
+                    else if(antiPattern.getThresholds().get(thresholdNames[i]).getType().equals("PositiveFloat")){
                         try {
                             PositiveFloat.parsePositiveFloat(thresholdValues[i]);
                         }
@@ -90,7 +90,7 @@ public class ConfigurationServiceImpl implements ConfigurationService {
                             incorrectParameters.add(thresholdNames[i]);
                         }
                     }
-                    else if(antiPattern.getThresholds().get(thresholdNames[i]).getValue().getClass() == Float.class){
+                    else if(antiPattern.getThresholds().get(thresholdNames[i]).getType().equals("Float")){
                         try {
                             Float.parseFloat(thresholdValues[i]);
                         }
@@ -98,7 +98,7 @@ public class ConfigurationServiceImpl implements ConfigurationService {
                             incorrectParameters.add(thresholdNames[i]);
                         }
                     }
-                    else if(antiPattern.getThresholds().get(thresholdNames[i]).getValue().getClass() == Double.class){
+                    else if(antiPattern.getThresholds().get(thresholdNames[i]).getType().equals("Double")){
                         try {
                             Double.parseDouble(thresholdValues[i]);
                         }
@@ -106,7 +106,7 @@ public class ConfigurationServiceImpl implements ConfigurationService {
                             incorrectParameters.add(thresholdNames[i]);
                         }
                     }
-                    else if(antiPattern.getThresholds().get(thresholdNames[i]).getValue().getClass() == String.class){
+                    else if(antiPattern.getThresholds().get(thresholdNames[i]).getType().equals("String")){
                         if (Utils.checkStringSubstrings(thresholdValues[i]) == false) {
                             incorrectParameters.add(thresholdNames[i]);
                         }
diff --git a/src/main/webapp/WEB-INF/templates/result.html b/src/main/webapp/WEB-INF/templates/result.html
index f8bd7d3..b56b3a3 100644
--- a/src/main/webapp/WEB-INF/templates/result.html
+++ b/src/main/webapp/WEB-INF/templates/result.html
@@ -17,20 +17,6 @@
 
 <!-- Result table container -->
 <div class="container">
-    <!-- Container for show success message -->
-    <div class="container">
-        <div th:if="${isConfigurationChanged}" class="alert alert-warning" role="alert">
-            Configuration values have changed! Would you like to
-            <form action="#" th:action="@{/recalculate}" method="post" style="display: inline-block">
-                <button type="submit"
-                        style="display: inline-block;background-color: #FEF3CD; color: #167AF6; text-decoration: underline;">
-                    recalculate
-                </button>
-            </form>
-            the results?
-        </div>
-    </div>
-    <!-- ./Container for show success message -->
     <h1>Results</h1>
     <table class="table table-bordered table-hover">
         <!-- Result table header -->
diff --git a/src/main/webapp/antipatterns/BusinessAsUsual.json b/src/main/webapp/antipatterns/BusinessAsUsual.json
index fbf29f5..1ab99cd 100644
--- a/src/main/webapp/antipatterns/BusinessAsUsual.json
+++ b/src/main/webapp/antipatterns/BusinessAsUsual.json
@@ -11,8 +11,7 @@
                 "thresholdName": "divisionOfIterationsWithRetrospective",
                 "thresholdPrintName": "Division of iterations with retrospective",
                 "thresholdDescription": "Minimum percentage of the total number of iterations with a retrospective (0,100)",
-                "thresholdErrorMess": "Percentage must be float number between 0 and 100",
-                "thresholdValue": "66.66f"
+                "thresholdErrorMess": "Percentage must be float number between 0 and 100"
             }
         },
         {
@@ -22,8 +21,7 @@
                 "thresholdName": "searchSubstringsWithRetrospective",
                 "thresholdPrintName": "Search substrings with retrospective",
                 "thresholdDescription": "Substring that will be search in wikipages and activities",
-                "thresholdErrorMess": "Maximum number of substrings is ten and must not starts and ends with characters || ",
-                "thresholdValue": "%retr%||%revi%||%week%scrum%"
+                "thresholdErrorMess": "Maximum number of substrings is ten and must not starts and ends with characters || "
             }
         }
     ],
diff --git a/src/main/webapp/antipatterns/LongOrNonExistentFeedbackLoops.json b/src/main/webapp/antipatterns/LongOrNonExistentFeedbackLoops.json
index 93e8991..baa6625 100644
--- a/src/main/webapp/antipatterns/LongOrNonExistentFeedbackLoops.json
+++ b/src/main/webapp/antipatterns/LongOrNonExistentFeedbackLoops.json
@@ -11,8 +11,7 @@
                 "thresholdName": "divisionOfIterationsWithFeedbackLoop",
                 "thresholdPrintName": "Division of iterations with feedback loop",
                 "thresholdDescription": "Minimum percentage of the total number of iterations with feedback loop (0,100)",
-                "thresholdErrorMess": "Percentage must be float number between 0 and 100",
-                "thresholdValue": "50.00f"
+                "thresholdErrorMess": "Percentage must be float number between 0 and 100"
             }
         },
         {
@@ -22,8 +21,7 @@
                 "thresholdName": "maxGapBetweenFeedbackLoopRate",
                 "thresholdPrintName": "Maximum gap between feedback loop rate",
                 "thresholdDescription": "Value that multiplies average iteration length for given project. Result is maximum threshold value for gap between feedback loops in days.",
-                "thresholdErrorMess": "Maximum gap between feedback loop rate must be positive float number",
-                "thresholdValue": "2f"
+                "thresholdErrorMess": "Maximum gap between feedback loop rate must be positive float number"
             }
         },
         {
@@ -33,8 +31,7 @@
                 "thresholdName": "searchSubstringsWithFeedbackLoop",
                 "thresholdPrintName": "Search substrings with feedback loop",
                 "thresholdDescription": "Substring that will be search in wikipages and activities",
-                "thresholdErrorMess": "Maximum number of substrings is ten and must not starts and ends with characters ||",
-                "thresholdValue": "%schůz%zákazník%||%předvedení%zákazník%||%zákazn%demo%||%schůz%zadavat%||%inform%schůz%||%zákazn%||%zadavatel%"
+                "thresholdErrorMess": "Maximum number of substrings is ten and must not starts and ends with characters ||"
             }
         }
     ]
diff --git a/src/main/webapp/antipatterns/NinetyNinetyRule.json b/src/main/webapp/antipatterns/NinetyNinetyRule.json
index 05d044b..77d7027 100644
--- a/src/main/webapp/antipatterns/NinetyNinetyRule.json
+++ b/src/main/webapp/antipatterns/NinetyNinetyRule.json
@@ -11,8 +11,7 @@
                 "thresholdName": "maxDivisionRange",
                 "thresholdPrintName": "Maximum ration value",
                 "thresholdDescription": "Maximum ratio value of spent and estimated time",
-                "thresholdErrorMess": "Ration values must be positive float number",
-                "thresholdValue": "1.25f"
+                "thresholdErrorMess": "Ration values must be positive float number"
             }
         },
         {
@@ -22,8 +21,7 @@
                 "thresholdName": "maxBadDivisionLimit",
                 "thresholdPrintName": "Maximum iterations thresholds",
                 "thresholdDescription": "Maximum number of consecutive iterations where the thresholds were exceeded",
-                "thresholdErrorMess": "Maximum number of consecutive iterations must be positive integer number",
-                "thresholdValue": "2"
+                "thresholdErrorMess": "Maximum number of consecutive iterations must be positive integer number"
             }
         }
     ]
diff --git a/src/main/webapp/antipatterns/RoadToNowhere.json b/src/main/webapp/antipatterns/RoadToNowhere.json
index d9c1de0..24cacd2 100644
--- a/src/main/webapp/antipatterns/RoadToNowhere.json
+++ b/src/main/webapp/antipatterns/RoadToNowhere.json
@@ -11,8 +11,7 @@
                 "thresholdName": "minNumberOfWikiPagesWithProjectPlan",
                 "thresholdPrintName": "Minimum number of wiki pages with project plan",
                 "thresholdDescription": "Number of wiki pages",
-                "thresholdErrorMess": "Minimum number of wikipages must be positive integer number",
-                "thresholdValue": "1"
+                "thresholdErrorMess": "Minimum number of wikipages must be positive integer number"
             }
         },
         {
@@ -22,8 +21,7 @@
                 "thresholdName": "minNumberOfActivitiesWithProjectPlan",
                 "thresholdPrintName": "Minimum number of activities with project plan",
                 "thresholdDescription": "Number of activities",
-                "thresholdErrorMess": "Minimum number of activities must be positive integer number",
-                "thresholdValue": "1"
+                "thresholdErrorMess": "Minimum number of activities must be positive integer number"
             }
         },
         {
@@ -33,8 +31,7 @@
                 "thresholdName": "searchSubstringsWithProjectPlan",
                 "thresholdPrintName": "Search substrings with project plan",
                 "thresholdDescription": "Substring that will be search in wikipages and activities",
-                "thresholdErrorMess": "Maximum number of substrings is ten and must not starts and ends with characters ||",
-                "thresholdValue": "%plán projektu%||%project plan%||%plan project%||%projektový plán%"
+                "thresholdErrorMess": "Maximum number of substrings is ten and must not starts and ends with characters ||"
             }
         }
     ],
diff --git a/src/main/webapp/antipatterns/SpecifyNothing.json b/src/main/webapp/antipatterns/SpecifyNothing.json
index 32a722e..dcc5bd9 100644
--- a/src/main/webapp/antipatterns/SpecifyNothing.json
+++ b/src/main/webapp/antipatterns/SpecifyNothing.json
@@ -11,8 +11,7 @@
                 "thresholdName": "minNumberOfWikiPagesWithSpecification",
                 "thresholdPrintName": "Minimum number of wiki pages with project specification",
                 "thresholdDescription": "Number of wiki pages",
-                "thresholdErrorMess": "Minimum number of wikipages must be positive integer number",
-                "thresholdValue": "1"
+                "thresholdErrorMess": "Minimum number of wikipages must be positive integer number"
             }
         },
         {
@@ -22,8 +21,7 @@
                 "thresholdName": "minNumberOfActivitiesWithSpecification",
                 "thresholdPrintName": "Minimum number of activities with project specification",
                 "thresholdDescription": "Number of activities",
-                "thresholdErrorMess": "Minimum number of activities with project specification must be positive integer number",
-                "thresholdValue": "1"
+                "thresholdErrorMess": "Minimum number of activities with project specification must be positive integer number"
             }
         },
         {
@@ -33,8 +31,7 @@
                 "thresholdName": "minAvgLengthOfActivityDescription",
                 "thresholdPrintName": "Minimum average length of activity description",
                 "thresholdDescription": "Minimum average number of character of activity description",
-                "thresholdErrorMess": "Minimum average length of activity description must be positive integer number",
-                "thresholdValue": "150"
+                "thresholdErrorMess": "Minimum average length of activity description must be positive integer number"
             }
         },
         {
@@ -44,8 +41,7 @@
                 "thresholdName": "searchSubstringsWithProjectSpecification",
                 "thresholdPrintName": "Search substrings with project specification",
                 "thresholdDescription": "Substring that will be search in wikipages and activities",
-                "thresholdErrorMess": "Maximum number of substrings is ten and must not starts and ends with characters ||",
-                "thresholdValue": "%dsp%||%specifikace%||%specification%||%vize%proj%||%vize%produ%"
+                "thresholdErrorMess": "Maximum number of substrings is ten and must not starts and ends with characters ||"
             }
         }
     ],
diff --git a/src/main/webapp/antipatterns/TooLongSprint.json b/src/main/webapp/antipatterns/TooLongSprint.json
index c5dab5c..07706a2 100644
--- a/src/main/webapp/antipatterns/TooLongSprint.json
+++ b/src/main/webapp/antipatterns/TooLongSprint.json
@@ -11,8 +11,7 @@
                 "thresholdName": "maxIterationLength",
                 "thresholdPrintName": "Max Iteration Length",
                 "thresholdDescription": "Maximum iteration length in days",
-                "thresholdErrorMess": "Max iteration length must be positive integer",
-                "thresholdValue": "21"
+                "thresholdErrorMess": "Max iteration length must be positive integer"
             }
         },
         {
@@ -22,8 +21,7 @@
                 "thresholdName": "maxNumberOfTooLongIterations",
                 "thresholdPrintName": "Max number of foo long iterations",
                 "thresholdDescription": "Maximum number of too long iterations in project",
-                "thresholdErrorMess": "Max number of too long iterations must be positive integer",
-                "thresholdValue": "0"
+                "thresholdErrorMess": "Max number of too long iterations must be positive integer"
             }
         }
     ]
diff --git a/src/main/webapp/antipatterns/VaryingSprintLength.json b/src/main/webapp/antipatterns/VaryingSprintLength.json
index 29c3170..49a1b1d 100644
--- a/src/main/webapp/antipatterns/VaryingSprintLength.json
+++ b/src/main/webapp/antipatterns/VaryingSprintLength.json
@@ -11,8 +11,7 @@
                 "thresholdName": "maxDaysDifference",
                 "thresholdPrintName": "Max days difference",
                 "thresholdDescription": "Maximum distance of two consecutive iterations in days",
-                "thresholdErrorMess": "Maximum distance must be positive integer number",
-                "thresholdValue": "7"
+                "thresholdErrorMess": "Maximum distance must be positive integer number"
             }
         },
         {
@@ -22,8 +21,7 @@
                 "thresholdName": "maxIterationChanged",
                 "thresholdPrintName": "Max number of iteration changed",
                 "thresholdDescription": "Maximum allowed number of significant changes in iteration lengths",
-                "thresholdErrorMess": "Maximum number of iterations changed must be positive integer number",
-                "thresholdValue": "1"
+                "thresholdErrorMess": "Maximum number of iterations changed must be positive integer number"
             }
         }
     ]
