Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
1b441c0a8d
|
|||
|
791861b21a
|
|||
|
ff7f2b6df3
|
|||
|
2853382889
|
|||
|
e6036f084e
|
1
.idea/gradle.xml
generated
1
.idea/gradle.xml
generated
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
|
||||
29
build.gradle
29
build.gradle
@@ -1,3 +1,5 @@
|
||||
//file:noinspection GroovyAssignabilityCheck
|
||||
//file:noinspection GrUnresolvedAccess
|
||||
plugins {
|
||||
id "java-library"
|
||||
id "maven-publish"
|
||||
@@ -8,8 +10,13 @@ wrapper {
|
||||
distributionType = Wrapper.DistributionType.BIN
|
||||
}
|
||||
|
||||
compileJava {
|
||||
sourceCompatibility = targetCompatibility = JavaVersion.VERSION_17
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
group = "ru.di9"
|
||||
version = "1.0"
|
||||
version = "1.2.1"
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
@@ -19,23 +26,21 @@ repositories {
|
||||
dependencies {
|
||||
api("it.unimi.dsi:fastutil:8.5.12")
|
||||
|
||||
def junit5_version = "5.9.2"
|
||||
testImplementation("org.junit.jupiter:junit-jupiter-api:${junit5_version}")
|
||||
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junit5_version}")
|
||||
def junit5Version = "5.9.2"
|
||||
testImplementation("org.junit.jupiter:junit-jupiter-api:$junit5Version")
|
||||
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:$junit5Version")
|
||||
}
|
||||
|
||||
test {
|
||||
useJUnitPlatform()
|
||||
}
|
||||
|
||||
publishing {
|
||||
publications {
|
||||
mavenBinary(MavenPublication) {
|
||||
groupId = project.group
|
||||
artifactId = project.name
|
||||
version = project.version
|
||||
publishing.publications {
|
||||
mavenBinary(MavenPublication) {
|
||||
groupId = project.group
|
||||
artifactId = project.name
|
||||
version = project.version
|
||||
|
||||
from components.java
|
||||
}
|
||||
from components.java
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,21 +56,38 @@ public class XmlElement implements Iterable<XmlElement> {
|
||||
return element.hasAttribute(key);
|
||||
}
|
||||
|
||||
public String getAttribute(String key) {
|
||||
return element.getAttribute(key);
|
||||
public Optional<String> getAttribute(String key) {
|
||||
if (element.hasAttribute(key)) {
|
||||
return Optional.of(element.getAttribute(key));
|
||||
} else {
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
public int getAttributeAsInt(String key) {
|
||||
var value = element.getAttribute(key);
|
||||
return StringUtils.isEmpty(value) ? 0 : Integer.parseInt(value);
|
||||
public OptionalInt getAttributeAsInt(String key) {
|
||||
if (element.hasAttribute(key)) {
|
||||
return OptionalInt.of(Integer.parseInt(element.getAttribute(key)));
|
||||
} else {
|
||||
return OptionalInt.empty();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean getAttributeAsBool(String key) {
|
||||
var value = element.getAttribute(key);
|
||||
return !StringUtils.isEmpty(value) && Boolean.parseBoolean(value);
|
||||
public Optional<Boolean> getAttributeAsBool(String key) {
|
||||
if (element.hasAttribute(key)) {
|
||||
return Optional.of(Boolean.parseBoolean(element.getAttribute(key)));
|
||||
} else {
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
public List<String> getAttributeAsListString(String key) {
|
||||
if (element.hasAttribute(key)) {
|
||||
return Arrays.asList(element.getAttribute(key).split(","));
|
||||
} else {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("NullableProblems")
|
||||
@Override
|
||||
public Iterator<XmlElement> iterator() {
|
||||
return new XmlElementIterator(element.getChildNodes());
|
||||
|
||||
@@ -34,6 +34,7 @@ class XmlElementTest {
|
||||
assertEquals("root", rootElement.getTagName());
|
||||
}
|
||||
|
||||
@SuppressWarnings("OptionalGetWithoutIsPresent")
|
||||
@Test
|
||||
void testIterator() {
|
||||
Iterator<XmlElement> iteratorElement = rootElement.iterator();
|
||||
@@ -47,13 +48,22 @@ class XmlElementTest {
|
||||
|
||||
assertEquals(tagName, element.getTagName());
|
||||
switch (element.getTagName()) {
|
||||
case "node_str" -> assertEquals(attr, element.getAttribute("attr"));
|
||||
case "node_int" -> assertEquals(attr, element.getAttributeAsInt("attr"));
|
||||
case "node_bool" -> assertEquals(attr, element.getAttributeAsBool("attr"));
|
||||
case "node_str" -> {
|
||||
assertTrue(element.getAttribute("attr").isPresent());
|
||||
assertEquals(attr, element.getAttribute("attr").get());
|
||||
}
|
||||
case "node_int" -> {
|
||||
assertTrue(element.getAttribute("attr").isPresent());
|
||||
assertEquals(attr, element.getAttributeAsInt("attr").getAsInt());
|
||||
}
|
||||
case "node_bool" -> {
|
||||
assertTrue(element.getAttribute("attr").isPresent());
|
||||
assertEquals(attr, element.getAttributeAsBool("attr").get());
|
||||
}
|
||||
case "empty" -> {
|
||||
assertTrue(StringUtils.isEmpty(element.getValue()));
|
||||
assertFalse(element.hasAttribute("attr"));
|
||||
assertTrue(StringUtils.isEmpty(element.getAttribute("attr")));
|
||||
assertTrue(element.getAttribute("attr").isEmpty());
|
||||
}
|
||||
default -> fail("Unknown tag '%s'".formatted(element.getTagName()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user