• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kit-data-manager / ro-crate-java / #331

09 Apr 2025 01:27PM UTC coverage: 85.403%. First build
#331

Pull #233

github

ThomasJejkal
Fixed all test issues, added some checks to preview generators for more fault tolerance
Pull Request #233: Version 2.1.0

277 of 435 new or added lines in 15 files covered. (63.68%)

1761 of 2062 relevant lines covered (85.4%)

0.85 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

87.88
/src/main/java/edu/kit/datamanager/ro_crate/preview/AutomaticPreview.java
1
package edu.kit.datamanager.ro_crate.preview;
2

3
import edu.kit.datamanager.ro_crate.util.ZipUtil;
4
import java.io.File;
5
import java.io.FileWriter;
6
import java.io.IOException;
7
import net.lingala.zip4j.ZipFile;
8
import net.lingala.zip4j.exception.ZipException;
9
import net.lingala.zip4j.io.outputstream.ZipOutputStream;
10
import org.apache.commons.io.FileUtils;
11

12
/**
13
 * The default preview should use the rochtml tool
14
 * (https://www.npmjs.com/package/ro-crate-html-js) for creating a simple
15
 * preview file.
16
 *
17
 * @author Nikola Tzotchev on 6.2.2022 г.
18
 * @version 1
19
 */
20
public class AutomaticPreview implements CratePreview {
21

22
    public AutomaticPreview() {
1✔
23
    }
1✔
24

25
    @Override
26
    public void saveAllToZip(ZipFile zipFile) throws IOException {
27
        if (PreviewGenerator.isRochtmlAvailable()) {
1✔
28
            // extract the .json file so we can run the "rochtml" tool on it"
29
            try {
30
                try {
31
                    zipFile.extractFile("ro-crate-metadata.json", "temp");
1✔
32
                } catch (ZipException ex) {
1✔
33
                    throw new IOException("ro-crate-metadata.json not found in provided ZIP.", ex);
1✔
34
                }
1✔
35
                if (PreviewGenerator.isRochtmlAvailable()) {
1✔
36
                    PreviewGenerator.generatePreview("temp");
1✔
37
                    zipFile.addFile("temp/ro-crate-preview.html");
1✔
38
                }
39
            } finally {
40
                FileUtils.deleteDirectory(new File("temp"));
1✔
41
            }
1✔
42
        } else {
NEW
43
            new CustomPreview().saveAllToZip(zipFile);
×
44
        }
45
    }
1✔
46

47
    @Override
48
    public void saveAllToFolder(File folder) throws IOException {
49
        if (folder == null || !folder.exists()) {
1✔
NEW
50
            throw new IOException("Preview target folder " + folder + " does not exist.");
×
51
        }
52

53
        if (PreviewGenerator.isRochtmlAvailable()) {
1✔
54
            PreviewGenerator.generatePreview(folder.getAbsolutePath());
1✔
55
        } else {
NEW
56
            new CustomPreview().saveAllToFolder(folder);
×
57
        }
58
    }
1✔
59

60
    @Override
61
    public void saveAllToStream(String metadata, ZipOutputStream stream) throws IOException {
62
        if (PreviewGenerator.isRochtmlAvailable()) {
1✔
63
            try {
64
                FileUtils.forceMkdir(new File("temp"));
1✔
65
                FileWriter writer = new FileWriter(new File("temp/ro-crate-metadata.json"));
1✔
66
                writer.write(metadata);
1✔
67
                writer.flush();
1✔
68
                writer.close();
1✔
69
                if (PreviewGenerator.isRochtmlAvailable()) {
1✔
70
                    PreviewGenerator.generatePreview("temp");
1✔
71
                    ZipUtil.addFileToZipStream(stream, new File("temp/ro-crate-preview.html"), "ro-crate-preview.html");
1✔
72
                }
73
            } finally {
74
                FileUtils.deleteDirectory(new File("temp"));
1✔
75
            }
1✔
76
        } else {
NEW
77
            new CustomPreview().saveAllToStream(metadata, stream);
×
78
        }
79
    }
1✔
80

81
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc