diff --git a/build.gradle b/build.gradle index b72d0a5..affc8cf 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,8 @@ dependencies { compile "com.github.javaparser:javaparser-core:${javaParserVersion}" compile "commons-io:commons-io:${commonsIoVersion}" compile "org.fusesource.jansi:jansi:${jansiVersion}" - + compile "org.apache.commons:commons-lang3:${commonsLangVersion}" + compile "org.apache.commons:commons-text:${commonsTextVersion}" } jar { diff --git a/dependency-versions.gradle b/dependency-versions.gradle index 0114d4f..2156b4b 100644 --- a/dependency-versions.gradle +++ b/dependency-versions.gradle @@ -6,4 +6,6 @@ ext { javaParserVersion = '3.13.4' commonsIoVersion = '2.6' jansiVersion = '1.17.1' + commonsLangVersion = '3.8.1' + commonsTextVersion = '1.6' } \ No newline at end of file diff --git a/src/main/java/com/bartek/esa/core/archetype/BasePlugin.java b/src/main/java/com/bartek/esa/core/archetype/BasePlugin.java index fbcd814..ed3465d 100644 --- a/src/main/java/com/bartek/esa/core/archetype/BasePlugin.java +++ b/src/main/java/com/bartek/esa/core/archetype/BasePlugin.java @@ -5,7 +5,9 @@ import com.bartek.esa.core.model.object.Issue; import org.w3c.dom.Document; import java.io.File; +import java.util.HashMap; import java.util.HashSet; +import java.util.Map; import java.util.Set; public abstract class BasePlugin implements Plugin { @@ -32,11 +34,21 @@ public abstract class BasePlugin implements Plugin { addIssue(severity, "", lineNumber, line); } + protected void addIssue(Severity severity, Map descriptionModel, Integer lineNumber, String line) { + addIssue(severity, "", descriptionModel, lineNumber, line); + } + + protected void addIssue(Severity severity, String descriptionCode, Integer lineNumber, String line) { + addIssue(severity, descriptionCode, new HashMap<>(), lineNumber, line); + } + + protected void addIssue(Severity severity, String descriptionCode, Map descriptionModel, Integer lineNumber, String line) { Issue issue = Issue.builder() .severity(severity) .issuer(this.getClass()) .descriptionCode(descriptionCode) + .descriptionModel(descriptionModel) .file(file) .lineNumber(lineNumber) .line(line) diff --git a/src/main/java/com/bartek/esa/core/archetype/JavaPlugin.java b/src/main/java/com/bartek/esa/core/archetype/JavaPlugin.java index b438f82..02a4346 100644 --- a/src/main/java/com/bartek/esa/core/archetype/JavaPlugin.java +++ b/src/main/java/com/bartek/esa/core/archetype/JavaPlugin.java @@ -13,6 +13,7 @@ import org.w3c.dom.Node; import javax.xml.xpath.XPathConstants; import java.io.File; +import java.util.HashMap; public abstract class JavaPlugin extends BasePlugin { private final GlobMatcher globMatcher; @@ -47,6 +48,7 @@ public abstract class JavaPlugin extends BasePlugin { Issue issue = Issue.builder() .issuer(JavaPlugin.class) .descriptionCode(".NO_PACKAGE") + .descriptionModel(new HashMap<>()) .severity(Severity.ERROR) .build(); diff --git a/src/main/java/com/bartek/esa/core/desc/provider/DescriptionProvider.java b/src/main/java/com/bartek/esa/core/desc/provider/DescriptionProvider.java index b5ac646..14e247b 100644 --- a/src/main/java/com/bartek/esa/core/desc/provider/DescriptionProvider.java +++ b/src/main/java/com/bartek/esa/core/desc/provider/DescriptionProvider.java @@ -3,6 +3,7 @@ package com.bartek.esa.core.desc.provider; import com.bartek.esa.core.model.object.Issue; import com.bartek.esa.error.EsaException; import io.vavr.control.Try; +import org.apache.commons.text.StringSubstitutor; import javax.inject.Inject; import java.util.Optional; @@ -20,7 +21,7 @@ public class DescriptionProvider { public String getDescriptionForIssue(Issue issue) { String code = issue.getIssuer().getCanonicalName() + issue.getDescriptionCode(); - String description = descriptions.getProperty(code); + String description = StringSubstitutor.replace(descriptions.getProperty(code), issue.getDescriptionModel()); return description != null && !description.isEmpty() ? description : "No description provided."; } } diff --git a/src/main/java/com/bartek/esa/core/model/object/Issue.java b/src/main/java/com/bartek/esa/core/model/object/Issue.java index 11ddcd6..1fb713b 100644 --- a/src/main/java/com/bartek/esa/core/model/object/Issue.java +++ b/src/main/java/com/bartek/esa/core/model/object/Issue.java @@ -5,6 +5,7 @@ import lombok.Builder; import lombok.Data; import java.io.File; +import java.util.Map; @Data @Builder @@ -12,6 +13,7 @@ public class Issue implements Comparable { private final Class issuer; private final Severity severity; private final String descriptionCode; + private final Map descriptionModel; private final File file; private final Integer lineNumber; private final String line;