support graph-create and graph-drop subcommand (#2) (#95)
diff --git a/src/main/java/com/baidu/hugegraph/cmd/HugeGraphCommand.java b/src/main/java/com/baidu/hugegraph/cmd/HugeGraphCommand.java
index 3e1a80e..42e41a1 100644
--- a/src/main/java/com/baidu/hugegraph/cmd/HugeGraphCommand.java
+++ b/src/main/java/com/baidu/hugegraph/cmd/HugeGraphCommand.java
@@ -57,7 +57,8 @@
public class HugeGraphCommand {
- private static final int DEFAULT_CLEAR_TIMEOUT = 300;
+ private static final int DEFAULT_GRAPH_CLEAR_TIMEOUT = 300;
+ private static final int DEFAULT_GRAPH_CREATE_TIMEOUT = 300;
private SubCommands subCommands;
@@ -267,6 +268,26 @@
dumpManager.dumpFormatter(dump.formatter());
dumpManager.dump();
break;
+ case "graph-create":
+ SubCommands.GraphCreate graphCreate = this.subCommand(subCmd);
+ if (timeout() < DEFAULT_GRAPH_CREATE_TIMEOUT) {
+ this.timeout(DEFAULT_GRAPH_CREATE_TIMEOUT);
+ }
+ graphsManager = manager(GraphsManager.class);
+ graphsManager.create(graphCreate.name(), graphCreate.config());
+ Printer.print("Graph '%s' is created", graphCreate.name());
+ break;
+ case "graph-clone":
+ SubCommands.GraphClone graphClone = this.subCommand(subCmd);
+ if (timeout() < DEFAULT_GRAPH_CREATE_TIMEOUT) {
+ this.timeout(DEFAULT_GRAPH_CREATE_TIMEOUT);
+ }
+ graphsManager = manager(GraphsManager.class);
+ graphsManager.clone(graphClone.name(),
+ graphClone.cloneGraphName());
+ Printer.print("Graph '%s' is created(cloned from '%s')",
+ graphClone.name(), graphClone.cloneGraphName());
+ break;
case "graph-list":
graphsManager = manager(GraphsManager.class);
Printer.printList("Graphs", graphsManager.list());
@@ -278,13 +299,22 @@
break;
case "graph-clear":
SubCommands.GraphClear graphClear = this.subCommand(subCmd);
- if (timeout() < DEFAULT_CLEAR_TIMEOUT) {
- this.timeout(DEFAULT_CLEAR_TIMEOUT);
+ if (timeout() < DEFAULT_GRAPH_CLEAR_TIMEOUT) {
+ this.timeout(DEFAULT_GRAPH_CLEAR_TIMEOUT);
}
graphsManager = manager(GraphsManager.class);
graphsManager.clear(this.graph(), graphClear.confirmMessage());
Printer.print("Graph '%s' is cleared", this.graph());
break;
+ case "graph-drop":
+ SubCommands.GraphDrop graphDrop = this.subCommand(subCmd);
+ if (timeout() < DEFAULT_GRAPH_CLEAR_TIMEOUT) {
+ this.timeout(DEFAULT_GRAPH_CLEAR_TIMEOUT);
+ }
+ graphsManager = manager(GraphsManager.class);
+ graphsManager.drop(this.graph(), graphDrop.confirmMessage());
+ Printer.print("Graph '%s' is dropped", this.graph());
+ break;
case "graph-mode-set":
SubCommands.GraphModeSet graphModeSet = this.subCommand(subCmd);
graphsManager = manager(GraphsManager.class);
diff --git a/src/main/java/com/baidu/hugegraph/cmd/SubCommands.java b/src/main/java/com/baidu/hugegraph/cmd/SubCommands.java
index 92bd2e0..0102123 100644
--- a/src/main/java/com/baidu/hugegraph/cmd/SubCommands.java
+++ b/src/main/java/com/baidu/hugegraph/cmd/SubCommands.java
@@ -59,9 +59,12 @@
}
private void initSubCommands() {
+ this.commands.put("graph-create", new GraphCreate());
+ this.commands.put("graph-clone", new GraphClone());
this.commands.put("graph-list", new GraphList());
this.commands.put("graph-get", new GraphGet());
this.commands.put("graph-clear", new GraphClear());
+ this.commands.put("graph-drop", new GraphDrop());
this.commands.put("graph-mode-set", new GraphModeSet());
this.commands.put("graph-mode-get", new GraphModeGet());
@@ -370,6 +373,45 @@
}
}
+ @Parameters(commandDescription = "Create graph with config")
+ public static class GraphCreate {
+
+ @Parameter(names = {"--name", "-n"}, arity = 1,
+ description = "The name of new created graph, default is g")
+ public String name = "g";
+
+ @ParametersDelegate
+ private ConfigFile configFile = new ConfigFile();
+
+ public String name() {
+ return this.name;
+ }
+
+ public String config() {
+ return this.configFile.config;
+ }
+ }
+
+ @Parameters(commandDescription = "Clone graph")
+ public static class GraphClone {
+
+ @Parameter(names = {"--name", "-n"}, arity = 1,
+ description = "The name of new created graph, default is g")
+ public String name = "g";
+
+ @Parameter(names = {"--clone-graph-name"}, arity = 1,
+ description = "The name of cloned graph, default is hugegraph")
+ public String cloneGraphName = "hugegraph";
+
+ public String name() {
+ return this.name;
+ }
+
+ public String cloneGraphName() {
+ return this.cloneGraphName;
+ }
+ }
+
@Parameters(commandDescription = "List all graphs")
public static class GraphList {
}
@@ -381,7 +423,18 @@
public static class GraphClear {
@ParametersDelegate
- private ConfirmMessage message = new ConfirmMessage();
+ private ClearConfirmMessage message = new ClearConfirmMessage();
+
+ public String confirmMessage() {
+ return this.message.confirmMessage;
+ }
+ }
+
+ @Parameters(commandDescription = "Drop graph")
+ public static class GraphDrop {
+
+ @ParametersDelegate
+ private DropConfirmMessage message = new DropConfirmMessage();
public String confirmMessage() {
return this.message.confirmMessage;
@@ -736,7 +789,7 @@
public String url = null;
}
- public static class ConfirmMessage {
+ public static class ClearConfirmMessage {
@Parameter(names = {"--confirm-message", "-c"}, arity = 1,
description = "Confirm message of graph clear is " +
@@ -746,6 +799,16 @@
public String confirmMessage;
}
+ public static class DropConfirmMessage {
+
+ @Parameter(names = {"--confirm-message", "-c"}, arity = 1,
+ description = "Confirm message of graph clear is " +
+ "\"I'm sure to drop the graph\". " +
+ "(Note: include \"\")",
+ required = true)
+ public String confirmMessage;
+ }
+
public static class Mode {
@Parameter(names = {"--graph-mode", "-m"}, arity = 1,
@@ -765,6 +828,14 @@
public String script;
}
+ public static class ConfigFile {
+
+ @Parameter(names = {"--file", "-f"}, arity = 1,
+ converter = FileNameToContentConverter.class,
+ description = "Creating graph config file")
+ public String config;
+ }
+
public static class GremlinScript {
@Parameter(names = {"--script", "-s"}, arity = 1,
diff --git a/src/main/java/com/baidu/hugegraph/manager/GraphsManager.java b/src/main/java/com/baidu/hugegraph/manager/GraphsManager.java
index 6561975..b88fb8f 100644
--- a/src/main/java/com/baidu/hugegraph/manager/GraphsManager.java
+++ b/src/main/java/com/baidu/hugegraph/manager/GraphsManager.java
@@ -32,6 +32,14 @@
super(info, "graphs");
}
+ public Map<String, String> create(String name, String config) {
+ return this.client.graphs().createGraph(name, config);
+ }
+
+ public Map<String, String> clone(String name, String cloneGraphName) {
+ return this.client.graphs().cloneGraph(name, cloneGraphName);
+ }
+
public List<String> list() {
return this.client.graphs().listGraph();
}
@@ -44,6 +52,10 @@
this.client.graphs().clearGraph(graph, confirmMessage);
}
+ public void drop(String graph, String confirmMessage) {
+ this.client.graphs().dropGraph(graph, confirmMessage);
+ }
+
public void mode(String graph, GraphMode mode) {
this.client.graphs().mode(graph, mode);
}