1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package eu.ehri.project.commands;
21
22 import com.tinkerpop.frames.FramedGraph;
23 import eu.ehri.project.utils.fixtures.FixtureLoader;
24 import eu.ehri.project.utils.fixtures.FixtureLoaderFactory;
25 import org.apache.commons.cli.CommandLine;
26 import org.apache.commons.cli.Option;
27 import org.apache.commons.cli.Options;
28
29 import java.io.InputStream;
30 import java.nio.file.Files;
31 import java.nio.file.Path;
32 import java.nio.file.Paths;
33
34
35
36
37 public class LoadFixtures extends BaseCommand {
38
39 final static String NAME = "load-fixtures";
40
41 @Override
42 protected void setCustomOptions(Options options) {
43 options.addOption(Option.builder()
44 .longOpt("init")
45 .desc("Initialize graph before loading fixtures")
46 .build());
47 }
48
49 @Override
50 public String getUsage() {
51 return String.format("%s [OPTIONS]", NAME);
52 }
53
54 @Override
55 public String getHelp() {
56 return "Load the fixtures into the database.";
57 }
58
59 @Override
60 public int execWithOptions(FramedGraph<?> graph, CommandLine cmdLine) throws Exception {
61 boolean initialize = cmdLine.hasOption("init");
62 FixtureLoader loader = FixtureLoaderFactory.getInstance(graph, initialize);
63 if (cmdLine.getArgList().size() == 1) {
64 Path path = Paths.get(cmdLine.getArgs()[0]);
65 if (!Files.isRegularFile(path)) {
66 throw new RuntimeException(String.format(
67 "Fixture file: '%s does not exist or is not a file", path));
68 }
69 System.err.println("Loading fixture file: " + path);
70 try (InputStream inputStream = Files.newInputStream(path)) {
71 loader.loadTestData(inputStream);
72 }
73 } else {
74
75 loader.loadTestData();
76 }
77
78 return 0;
79 }
80 }