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

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

29 Apr 2025 06:44PM UTC coverage: 89.357%. First build
#392

Pull #233

github

Pfeil
fix: add newline at end of gradle.yml for consistency
Pull Request #233: Version 2.1.0

608 of 700 new or added lines in 28 files covered. (86.86%)

1889 of 2114 relevant lines covered (89.36%)

0.89 hits per line

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

83.33
/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
                try {
41
                    FileUtils.deleteDirectory(new File("temp"));
1✔
NEW
42
                } catch (IOException ex) {
×
43
                    //ignore
44
                }
1✔
45
            }
1✔
46
        } else {
NEW
47
            new CustomPreview().saveAllToZip(zipFile);
×
48
        }
49
    }
1✔
50

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

57
        if (PreviewGenerator.isRochtmlAvailable()) {
1✔
58
            PreviewGenerator.generatePreview(folder.getAbsolutePath());
1✔
59
        } else {
NEW
60
            new CustomPreview().saveAllToFolder(folder);
×
61
        }
62
    }
1✔
63

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

89
}
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

© 2025 Coveralls, Inc