Compare commits
6 Commits
1.1
...
728f117b46
| Author | SHA1 | Date | |
|---|---|---|---|
|
728f117b46
|
|||
|
e5f375155a
|
|||
|
1b441c0a8d
|
|||
|
791861b21a
|
|||
|
ff7f2b6df3
|
|||
|
2853382889
|
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>
|
||||
|
||||
20
README.MD
20
README.MD
@@ -1,21 +1,19 @@
|
||||
# XmlElement
|
||||
|
||||
## Использование
|
||||
|
||||
TODO
|
||||
|
||||
## Подключение к проекту
|
||||
|
||||
### Gradle
|
||||
|
||||
```groovy
|
||||
implementation("ru.di9:xml-element:1.0")
|
||||
repositories {
|
||||
maven { url "https://di9.ru/git/api/packages/Voomra/maven" }
|
||||
}
|
||||
```
|
||||
|
||||
## Сборка
|
||||
|
||||
```shell
|
||||
gradle build
|
||||
```
|
||||
|
||||
## Установка в локальный Maven
|
||||
|
||||
```shell
|
||||
gradle publishToMavenLocal
|
||||
```groovy
|
||||
implementation("ru.di9:xml-element:1.2.1")
|
||||
```
|
||||
|
||||
27
build.gradle
27
build.gradle
@@ -1,3 +1,5 @@
|
||||
//file:noinspection GroovyAssignabilityCheck
|
||||
//file:noinspection GrUnresolvedAccess
|
||||
plugins {
|
||||
id "java-library"
|
||||
id "maven-publish"
|
||||
@@ -14,7 +16,7 @@ compileJava {
|
||||
}
|
||||
|
||||
group = "ru.di9"
|
||||
version = "1.1"
|
||||
version = "1.2.1"
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
@@ -24,9 +26,9 @@ 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 {
|
||||
@@ -43,4 +45,21 @@ publishing {
|
||||
from components.java
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven {
|
||||
name = "Di9"
|
||||
url = uri("https://di9.ru/git/api/packages/Voomra/maven")
|
||||
def giteaToken = System.getenv("GITEA_TOKEN")
|
||||
|
||||
credentials(HttpHeaderCredentials) {
|
||||
name = "Authorization"
|
||||
value = "token ${giteaToken}"
|
||||
}
|
||||
|
||||
authentication {
|
||||
header(HttpHeaderAuthentication)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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