Skip to content

Commit 7257354

Browse files
committed
feat: add version properties generation and load version from properties file in ProvenanceManager
1 parent 7d3020c commit 7257354

File tree

2 files changed

+60
-15
lines changed

2 files changed

+60
-15
lines changed

build.gradle

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,22 @@ configurations {
111111
performanceTestImplementation.extendsFrom implementation
112112
}
113113

114+
// Task for creating a resource file with the version info
115+
tasks.register("generateVersionProps", WriteProperties) { t ->
116+
def generatedResourcesDir = project.layout.buildDirectory.dir(["resources", "main"].join(File.separator))
117+
def outputFile = generatedResourcesDir.map { it.file("version.properties") }
118+
119+
t.destinationFile = outputFile.get().asFile
120+
t.property("version", version)
121+
}
122+
123+
tasks.register("generateVersionPropsTest", WriteProperties) { t ->
124+
def generatedResourcesDir = project.layout.buildDirectory.dir(["resources", "test"].join(File.separator))
125+
def outputFile = generatedResourcesDir.map { it.file("version.properties") }
126+
127+
t.destinationFile = outputFile.get().asFile
128+
t.property("version", version)
129+
}
114130

115131
tasks.register('performanceContextEntitiesBenchmark', JavaExec) {
116132
description = "Run the context entities benchmarks."
@@ -154,8 +170,13 @@ tasks.register('performanceReadWriteMultipleCratesBenchmark', JavaExec) {
154170
mainClass = 'edu.kit.datamanager.ro_crate.multiplecrates.MultipleCratesWriteAndRead'
155171
}
156172

173+
compileJava {
174+
dependsOn generateVersionProps
175+
}
176+
157177
test {
158178
useJUnitPlatform()
179+
dependsOn generateVersionPropsTest
159180
finalizedBy jacocoTestReport
160181
}
161182

src/main/java/edu/kit/datamanager/ro_crate/writer/ProvenanceManager.java

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22

33
import edu.kit.datamanager.ro_crate.Crate;
44
import edu.kit.datamanager.ro_crate.entities.contextual.ContextualEntity;
5+
6+
import java.io.IOException;
7+
import java.io.InputStream;
8+
import java.net.URL;
59
import java.time.Instant;
6-
import java.util.Collection;
7-
import java.util.Map;
10+
import java.util.Properties;
811
import java.util.UUID;
912

1013
import static edu.kit.datamanager.ro_crate.entities.contextual.ContextualEntity.ContextualEntityBuilder;
@@ -49,21 +52,42 @@ private ContextualEntity buildRoCrateJavaEntity(
4952
ContextualEntity self = crate.getAllContextualEntities().stream()
5053
.filter(contextualEntity -> RO_CRATE_JAVA_ID.equals(contextualEntity.getId()))
5154
.findFirst()
52-
.orElseGet(() ->
53-
new ContextualEntityBuilder()
54-
.setId(RO_CRATE_JAVA_ID)
55-
.addType("SoftwareApplication")
56-
.addProperty("name", "ro-crate-java")
57-
.addProperty("url", "https://github.com/kit-data-manager/ro-crate-java")
58-
// TODO read software version and version from gradle (write into resources properties file when building and read it from there)
59-
.addProperty("version", "1.0.0")
60-
.addProperty("softwareVersion", "1.0.0")
61-
.addProperty("license", "Apache-2.0")
62-
.addProperty("description", "A Java library for creating and manipulating RO-Crates")
63-
.addIdProperty("Action", newActionId)
64-
.build()
55+
.orElseGet(() -> {
56+
String version = loadVersionFromProperties();
57+
return new ContextualEntityBuilder()
58+
.setId(RO_CRATE_JAVA_ID)
59+
.addType("SoftwareApplication")
60+
.addProperty("name", "ro-crate-java")
61+
.addProperty("url", "https://github.com/kit-data-manager/ro-crate-java")
62+
// TODO read software version and version from gradle (write into resources properties file when building and read it from there)
63+
.addProperty("version", version)
64+
.addProperty("softwareVersion", version)
65+
.addProperty("license", "Apache-2.0")
66+
.addProperty("description", "A Java library for creating and manipulating RO-Crates")
67+
.addIdProperty("Action", newActionId)
68+
.build();
69+
}
6570
);
6671
self.addIdProperty("Action", newActionId);
6772
return self;
6873
}
74+
75+
private String loadVersionFromProperties() {
76+
try {
77+
URL resource = this.getClass().getResource("/version.properties");
78+
if (resource != null) {
79+
try (InputStream input = resource.openStream()) {
80+
Properties properties = new Properties();
81+
properties.load(input);
82+
return properties.getProperty("version");
83+
}
84+
} else {
85+
System.err.println("Properties file not found!");
86+
return "unknown";
87+
}
88+
} catch (IOException e) {
89+
System.err.println("Properties file not found!");
90+
return "unknown";
91+
}
92+
}
6993
}

0 commit comments

Comments
 (0)