From 7a8635eba27a6af08fa314303ff985371c6d69aa Mon Sep 17 00:00:00 2001 From: "Andreas Penski (init)" Date: Fri, 21 Aug 2020 10:03:21 +0200 Subject: [PATCH] (fix) https://github.com/itplr-kosit/validator/issues/51 --- CHANGELOG.md | 2 + .../cmd/DefaultNamingStrategy.java | 21 ++++--- .../impl/tasks/CheckAction.java | 10 +-- .../cmd/DefaultNamingStrategyTest.java | 61 +++++++++++++++++++ 4 files changed, 77 insertions(+), 17 deletions(-) create mode 100644 src/test/java/de/kosit/validationtool/cmd/DefaultNamingStrategyTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index cc30047..c72e1d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased ### Fixed - date conversion when using [ConfigurationBuilder#date(Date)](https://github.com/itplr-kosit/validator/blob/d7beb1040418ae5cbeb9427532fd87482f55756c/src/main/java/de/kosit/validationtool/config/ConfigurationBuilder.java#L109) +### Fixed +- [#51](https://github.com/itplr-kosit/validator/issues/51) Suffix of report xml is missing ### Added - read saxon XdmNode with InputFactory diff --git a/src/main/java/de/kosit/validationtool/cmd/DefaultNamingStrategy.java b/src/main/java/de/kosit/validationtool/cmd/DefaultNamingStrategy.java index 0debe17..35bb045 100644 --- a/src/main/java/de/kosit/validationtool/cmd/DefaultNamingStrategy.java +++ b/src/main/java/de/kosit/validationtool/cmd/DefaultNamingStrategy.java @@ -1,7 +1,10 @@ package de.kosit.validationtool.cmd; +import static org.apache.commons.io.FilenameUtils.isExtension; +import static org.apache.commons.lang3.StringUtils.isEmpty; import static org.apache.commons.lang3.StringUtils.isNotEmpty; +import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import lombok.Getter; @@ -18,27 +21,25 @@ public class DefaultNamingStrategy implements NamingStrategy { private String prefix; - private String postfix = "report"; + private String postfix; @Override - public String createName(final String base) { - if (StringUtils.isEmpty(base)) { + public String createName(final String name) { + if (StringUtils.isEmpty(name)) { throw new IllegalArgumentException("Can not generate name based on null input"); } - final int index = base.lastIndexOf('.'); + final String base = isExtension(name.toLowerCase(), "xml") ? FilenameUtils.getBaseName(name) : name; final StringBuilder result = new StringBuilder(); if (isNotEmpty(this.prefix)) { result.append(this.prefix).append("-"); } - result.append(base, 0, index > 0 ? index : base.length()); + result.append(base); if (isNotEmpty(this.postfix)) { result.append("-").append(this.postfix); + } else if (isEmpty(this.prefix)) { + result.append("-").append("report"); } - if (index > 0) { - result.append(base.substring(index)); - } else { - result.append(".xml"); - } + result.append(".xml"); return result.toString(); } } diff --git a/src/main/java/de/kosit/validationtool/impl/tasks/CheckAction.java b/src/main/java/de/kosit/validationtool/impl/tasks/CheckAction.java index a5b65aa..1973a5b 100644 --- a/src/main/java/de/kosit/validationtool/impl/tasks/CheckAction.java +++ b/src/main/java/de/kosit/validationtool/impl/tasks/CheckAction.java @@ -21,8 +21,8 @@ package de.kosit.validationtool.impl.tasks; import java.util.Collection; import java.util.Collections; -import java.util.regex.Matcher; -import java.util.regex.Pattern; + +import org.apache.commons.io.FilenameUtils; import lombok.AccessLevel; import lombok.Getter; @@ -113,11 +113,7 @@ public interface CheckAction { */ public String getName() { final String fileName = getInput().getName().replaceAll(".*/|.*\\\\", ""); - final Matcher matcher = Pattern.compile("(.*)\\..+").matcher(fileName); - if (matcher.matches()) { - return matcher.group(1); - } - return fileName; + return FilenameUtils.getBaseName(fileName); } } diff --git a/src/test/java/de/kosit/validationtool/cmd/DefaultNamingStrategyTest.java b/src/test/java/de/kosit/validationtool/cmd/DefaultNamingStrategyTest.java new file mode 100644 index 0000000..655e8d0 --- /dev/null +++ b/src/test/java/de/kosit/validationtool/cmd/DefaultNamingStrategyTest.java @@ -0,0 +1,61 @@ +package de.kosit.validationtool.cmd; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Test; + +/** + * Tests {@link DefaultNamingStrategy} + * + * @author Andreas Penski + */ +public class DefaultNamingStrategyTest { + + @Test + public void testSimple() { + final DefaultNamingStrategy strategy = new DefaultNamingStrategy(); + assertThat(strategy.createName("test")).isEqualTo("test-report.xml"); + strategy.setPrefix("prefix"); + assertThat(strategy.createName("test")).isEqualTo("prefix-test.xml"); + strategy.setPostfix("postfix"); + assertThat(strategy.createName("test")).isEqualTo("prefix-test-postfix.xml"); + strategy.setPrefix(null); + assertThat(strategy.createName("test")).isEqualTo("test-postfix.xml"); + } + + @Test + public void testDotted() { + final DefaultNamingStrategy strategy = new DefaultNamingStrategy(); + assertThat(strategy.createName("test.xml")).isEqualTo("test-report.xml"); + strategy.setPrefix("prefix"); + assertThat(strategy.createName("test.xml")).isEqualTo("prefix-test.xml"); + strategy.setPostfix("postfix"); + assertThat(strategy.createName("test.xml")).isEqualTo("prefix-test-postfix.xml"); + strategy.setPrefix(null); + assertThat(strategy.createName("test.xml")).isEqualTo("test-postfix.xml"); + } + + @Test + public void testDoubleDotted() { + final DefaultNamingStrategy strategy = new DefaultNamingStrategy(); + assertThat(strategy.createName("test.second.xml")).isEqualTo("test.second-report.xml"); + strategy.setPrefix("prefix"); + assertThat(strategy.createName("test.second.xml")).isEqualTo("prefix-test.second.xml"); + strategy.setPostfix("postfix"); + assertThat(strategy.createName("test.second.xml")).isEqualTo("prefix-test.second-postfix.xml"); + strategy.setPrefix(null); + assertThat(strategy.createName("test.second.xml")).isEqualTo("test.second-postfix.xml"); + } + + @Test + public void testUnknownExtenson() { + final DefaultNamingStrategy strategy = new DefaultNamingStrategy(); + assertThat(strategy.createName("test.ext")).isEqualTo("test.ext-report.xml"); + strategy.setPrefix("prefix"); + assertThat(strategy.createName("test.ext")).isEqualTo("prefix-test.ext.xml"); + strategy.setPostfix("postfix"); + assertThat(strategy.createName("test.ext")).isEqualTo("prefix-test.ext-postfix.xml"); + strategy.setPrefix(null); + assertThat(strategy.createName("test.ext")).isEqualTo("test.ext-postfix.xml"); + } +}