Skip to content

Commit 16f82e3

Browse files
authored
Merge pull request #164 from craquet/fix/crate-reader
Fix issues with crate reader
2 parents 78cb1ee + da44684 commit 16f82e3

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

src/main/java/edu/kit/datamanager/ro_crate/entities/data/DataEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public T addContent(Path path, String id) {
118118
public T addContent(URI uri) {
119119
if (isUrl(uri.toString())) {
120120
this.setId(uri.toString());
121-
}
121+
} else throw new IllegalArgumentException("This Data Entity remote ID does not resolve to a valid URL.");
122122
return self();
123123
}
124124

src/main/java/edu/kit/datamanager/ro_crate/reader/RoCrateReader.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import edu.kit.datamanager.ro_crate.entities.data.RootDataEntity;
1313
import edu.kit.datamanager.ro_crate.special.JsonUtilFunctions;
1414
import static edu.kit.datamanager.ro_crate.special.UriUtil.decode;
15+
import static edu.kit.datamanager.ro_crate.special.UriUtil.isUrl;
16+
1517
import edu.kit.datamanager.ro_crate.validation.JsonSchemaValidation;
1618
import edu.kit.datamanager.ro_crate.validation.Validator;
1719

@@ -92,17 +94,18 @@ public RoCrate readCrate(String location) {
9294
// if the id is in the root hasPart list, we know this entity is a data entity
9395
RootDataEntity root = crate.getRootDataEntity();
9496
if (root != null && root.hasInHasPart(node.get(PROP_ID).asText())) {
97+
// data entity
98+
DataEntity.DataEntityBuilder dataEntity = new DataEntity.DataEntityBuilder()
99+
.setAll(node.deepCopy());
100+
101+
// Handle data entities with corresponding file
95102
File loc = checkFolderHasFile(node.get(PROP_ID).asText(), files);
96103
if (loc != null) {
97104
usedFiles.add(loc.getPath());
98-
99-
// data entity
100-
DataEntity dataEntity = new DataEntity.DataEntityBuilder()
101-
.setAll(node.deepCopy())
102-
.addContent(loc.toPath(), loc.getName())
103-
.build();
104-
crate.addDataEntity(dataEntity, false);
105+
dataEntity.addContent(loc.toPath(), loc.getName());
105106
}
107+
108+
crate.addDataEntity(dataEntity.build(), false);
106109
} else {
107110
// contextual entity
108111
crate.addContextualEntity(
@@ -124,6 +127,7 @@ public RoCrate readCrate(String location) {
124127
}
125128

126129
protected File checkFolderHasFile(String id, File file) {
130+
if (isUrl(id)) return null;
127131
Path path = file.toPath().resolve(decode(id).get());
128132
if (path.toFile().exists()) {
129133
return path.toFile();

src/main/java/edu/kit/datamanager/ro_crate/special/UriUtil.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,11 @@ public static boolean isValidUri(String uri) {
5656
* @return true if it is a url, false otherwise.
5757
*/
5858
public static boolean isUrl(String uri) {
59-
return asUrl(uri).isPresent();
59+
try {
60+
return asUrl(uri).isPresent();
61+
} catch (Exception e) {
62+
return false;
63+
}
6064
}
6165

6266
/**

0 commit comments

Comments
 (0)