RYA-325 Renamed rya.console to rya.shell. Closes #194
Project: http://git-wip-us.apache.org/repos/asf/incubator-rya/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-rya/commit/2564ac0a Tree: http://git-wip-us.apache.org/repos/asf/incubator-rya/tree/2564ac0a Diff: http://git-wip-us.apache.org/repos/asf/incubator-rya/diff/2564ac0a Branch: refs/heads/master Commit: 2564ac0ab7f1f0bbfad88d1bf671b9e7b0eea1f0 Parents: ec74291 Author: jdasch <jdasch@localhost.localdomain> Authored: Thu Aug 3 14:53:41 2017 -0400 Committer: Aaron Mihalik <aaron.miha...@gmail.com> Committed: Thu Aug 3 22:16:26 2017 -0400 ---------------------------------------------------------------------- extras/pom.xml | 2 +- extras/rya.console/.gitignore | 8 - extras/rya.console/pom.xml | 221 --------- .../src/main/assembly/binary-release.xml | 33 -- .../src/main/assembly/component-release.xml | 90 ---- .../src/main/config/log4j.properties | 35 -- .../rya.console/src/main/examples/Query1.sparql | 24 - .../src/main/examples/example.script | 26 - extras/rya.console/src/main/examples/triples.nt | 25 - .../org/apache/rya/shell/RyaAdminCommands.java | 388 --------------- .../org/apache/rya/shell/RyaBannerProvider.java | 97 ---- .../java/org/apache/rya/shell/RyaCommands.java | 166 ------- .../apache/rya/shell/RyaConnectionCommands.java | 166 ------- .../org/apache/rya/shell/RyaPromptProvider.java | 62 --- .../rya/shell/RyaShellHistoryProvider.java | 51 -- .../org/apache/rya/shell/SharedShellState.java | 339 ------------- .../apache/rya/shell/util/ConnectorFactory.java | 67 --- .../apache/rya/shell/util/ConsolePrinter.java | 85 ---- .../apache/rya/shell/util/InstallPrompt.java | 139 ------ .../rya/shell/util/InstanceNamesFormatter.java | 78 --- .../org/apache/rya/shell/util/JLinePrompt.java | 211 --------- .../apache/rya/shell/util/PasswordPrompt.java | 72 --- .../rya/shell/util/RyaDetailsFormatter.java | 120 ----- .../org/apache/rya/shell/util/SparqlPrompt.java | 82 ---- .../apache/rya/shell/util/UninstallPrompt.java | 58 --- .../rya.console/src/main/resources/LICENSE.txt | 16 - .../META-INF/spring/spring-shell-plugin.xml | 50 -- extras/rya.console/src/main/scripts/rya | 33 -- .../apache/rya/shell/RyaAdminCommandsTest.java | 474 ------------------- .../org/apache/rya/shell/RyaCommandsTest.java | 278 ----------- .../rya/shell/RyaConnectionCommandsIT.java | 250 ---------- .../apache/rya/shell/RyaPromptProviderTest.java | 80 ---- .../org/apache/rya/shell/RyaShellITBase.java | 102 ---- .../apache/rya/shell/SharedShellStateTest.java | 167 ------- .../rya/shell/util/ConnectorFactoryIT.java | 57 --- .../shell/util/InstanceNamesFormatterTest.java | 81 ---- .../rya/shell/util/RyaDetailsFormatterTest.java | 111 ----- .../src/test/resources/Query1.sparql | 20 - .../src/test/resources/RyaShellTest-context.xml | 63 --- extras/shell/.gitignore | 8 + extras/shell/pom.xml | 223 +++++++++ .../shell/src/main/assembly/binary-release.xml | 33 ++ .../src/main/assembly/component-release.xml | 90 ++++ extras/shell/src/main/config/log4j.properties | 35 ++ extras/shell/src/main/examples/Query1.sparql | 24 + extras/shell/src/main/examples/example.script | 26 + extras/shell/src/main/examples/triples.nt | 25 + .../org/apache/rya/shell/RyaAdminCommands.java | 388 +++++++++++++++ .../org/apache/rya/shell/RyaBannerProvider.java | 97 ++++ .../java/org/apache/rya/shell/RyaCommands.java | 166 +++++++ .../apache/rya/shell/RyaConnectionCommands.java | 166 +++++++ .../org/apache/rya/shell/RyaPromptProvider.java | 62 +++ .../rya/shell/RyaShellHistoryProvider.java | 51 ++ .../org/apache/rya/shell/SharedShellState.java | 339 +++++++++++++ .../apache/rya/shell/util/ConnectorFactory.java | 67 +++ .../apache/rya/shell/util/ConsolePrinter.java | 85 ++++ .../apache/rya/shell/util/InstallPrompt.java | 139 ++++++ .../rya/shell/util/InstanceNamesFormatter.java | 78 +++ .../org/apache/rya/shell/util/JLinePrompt.java | 211 +++++++++ .../apache/rya/shell/util/PasswordPrompt.java | 72 +++ .../rya/shell/util/RyaDetailsFormatter.java | 120 +++++ .../org/apache/rya/shell/util/SparqlPrompt.java | 82 ++++ .../apache/rya/shell/util/UninstallPrompt.java | 58 +++ extras/shell/src/main/resources/LICENSE.txt | 16 + .../META-INF/spring/spring-shell-plugin.xml | 50 ++ extras/shell/src/main/scripts/rya | 33 ++ .../apache/rya/shell/RyaAdminCommandsTest.java | 474 +++++++++++++++++++ .../org/apache/rya/shell/RyaCommandsTest.java | 278 +++++++++++ .../rya/shell/RyaConnectionCommandsIT.java | 250 ++++++++++ .../apache/rya/shell/RyaPromptProviderTest.java | 80 ++++ .../org/apache/rya/shell/RyaShellITBase.java | 102 ++++ .../apache/rya/shell/SharedShellStateTest.java | 167 +++++++ .../rya/shell/util/ConnectorFactoryIT.java | 57 +++ .../shell/util/InstanceNamesFormatterTest.java | 81 ++++ .../rya/shell/util/RyaDetailsFormatterTest.java | 111 +++++ extras/shell/src/test/resources/Query1.sparql | 20 + .../src/test/resources/RyaShellTest-context.xml | 63 +++ 77 files changed, 4428 insertions(+), 4426 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/pom.xml ---------------------------------------------------------------------- diff --git a/extras/pom.xml b/extras/pom.xml index a2c8d58..8823031 100644 --- a/extras/pom.xml +++ b/extras/pom.xml @@ -34,7 +34,7 @@ under the License. <module>rya.prospector</module> <module>rya.manual</module> <module>rya.periodic.service</module> - <module>rya.console</module> + <module>shell</module> <module>indexing</module> <module>rya.indexing.pcj</module> <module>indexingExample</module> http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/.gitignore ---------------------------------------------------------------------- diff --git a/extras/rya.console/.gitignore b/extras/rya.console/.gitignore deleted file mode 100644 index 5d1172a..0000000 --- a/extras/rya.console/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -/.classpath -/.project -.settings/ -target/ -/log.roo -*.log - -/bin/ http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/pom.xml ---------------------------------------------------------------------- diff --git a/extras/rya.console/pom.xml b/extras/rya.console/pom.xml deleted file mode 100644 index dec339b..0000000 --- a/extras/rya.console/pom.xml +++ /dev/null @@ -1,221 +0,0 @@ -<?xml version='1.0'?> -<!-- - - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.apache.rya</groupId> - <artifactId>rya.extras</artifactId> - <version>3.2.11-incubating-SNAPSHOT</version> - </parent> - - <artifactId>rya.console</artifactId> - <name>Apache Rya Console</name> - - <dependencies> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.rya</groupId> - <artifactId>rya.api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.rya</groupId> - <artifactId>accumulo.rya</artifactId> - <exclusions> - <exclusion> - <groupId>jline</groupId> - <artifactId>jline</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.rya</groupId> - <artifactId>rya.indexing</artifactId> - </dependency> - <dependency> - <groupId>org.apache.rya</groupId> - <artifactId>rya.pcj.fluo.api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.fluo</groupId> - <artifactId>fluo-core</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.shell</groupId> - <artifactId>spring-shell</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.security</groupId> - <artifactId>spring-security-web</artifactId> - <version>4.1.0.RELEASE</version> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.accumulo</groupId> - <artifactId>accumulo-minicluster</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.fluo</groupId> - <artifactId>fluo-mini</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.rya</groupId> - <artifactId>accumulo.rya</artifactId> - <version>${project.version}</version> - <type>test-jar</type> - </dependency> - </dependencies> - - <build> - <pluginManagement> - <plugins> - <plugin> - <groupId>org.apache.rat</groupId> - <artifactId>apache-rat-plugin</artifactId> - <configuration> - <excludes> - <exclude>spring-shell.log</exclude> - </excludes> - </configuration> - </plugin> - </plugins> - </pluginManagement> - <plugins> - <!-- Automatically place Apache 2 license headers at the top of all of the project's Java files. - Rat runs during the 'validate' lifecycle step, so it will fail the build before this one - executes if any of the headers are missing. Run the build with rat turned off to add - missing headers to the Java files. --> - <plugin> - <groupId>com.mycila</groupId> - <artifactId>license-maven-plugin</artifactId> - <version>2.6</version> - <configuration> - <!-- We use a custome Apache 2.0 license because we do not include a copywrite section. --> - <header>src/main/resources/LICENSE.txt</header> - </configuration> - <executions> - <execution> - <phase>process-sources</phase> - <goals> - <goal>format</goal> - </goals> - </execution> - </executions> - </plugin> - - <!-- Create an executable jar file for the shell. --> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>shade</goal> - </goals> - <configuration> - <transformers> - <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> - <resource>META-INF/spring.handlers</resource> - </transformer> - <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> - <resource>META-INF/spring.schemas</resource> - </transformer> - <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> - <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> - <mainClass>org.springframework.shell.Bootstrap</mainClass> - </transformer> - </transformers> - <filters> - <filter> - <!-- - Shading signed JARs will fail without this. - http://stackoverflow.com/questions/999489/invalid-signature-file-when-attempting-to-run-a-jar - --> - <artifact>*:*</artifact> - <excludes> - <exclude>META-INF/*.SF</exclude> - <exclude>META-INF/*.DSA</exclude> - <exclude>META-INF/*.RSA</exclude> - </excludes> - </filter> - </filters> - </configuration> - </execution> - </executions> - </plugin> - - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <executions> - <execution> - <id>create-binary-distribution</id> - <goals> - <goal>single</goal> - </goals> - <phase>package</phase> - <configuration> - <descriptors> - <descriptor>src/main/assembly/binary-release.xml</descriptor> - </descriptors> - </configuration> - </execution> - </executions> - </plugin> - - <!-- Generate Code Coverage report. --> - <plugin> - <groupId>org.jacoco</groupId> - <artifactId>jacoco-maven-plugin</artifactId> - <executions> - <execution> - <id>default-prepare-agent</id> - <goals> - <goal>prepare-agent</goal> - </goals> - </execution> - <execution> - <id>default-report</id> - <phase>prepare-package</phase> - <goals> - <goal>report</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/src/main/assembly/binary-release.xml ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/main/assembly/binary-release.xml b/extras/rya.console/src/main/assembly/binary-release.xml deleted file mode 100644 index 374213f..0000000 --- a/extras/rya.console/src/main/assembly/binary-release.xml +++ /dev/null @@ -1,33 +0,0 @@ -<!-- - - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - ---> -<assembly - xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> - <id>bin</id> - <formats> - <format>tar.gz</format> - </formats> - <includeBaseDirectory>true</includeBaseDirectory> - <componentDescriptors> - <componentDescriptor>src/main/assembly/component-release.xml</componentDescriptor> - </componentDescriptors> -</assembly> http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/src/main/assembly/component-release.xml ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/main/assembly/component-release.xml b/extras/rya.console/src/main/assembly/component-release.xml deleted file mode 100644 index 72c74d1..0000000 --- a/extras/rya.console/src/main/assembly/component-release.xml +++ /dev/null @@ -1,90 +0,0 @@ -<!-- - - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - ---> -<component - xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/component/1.1.3" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/component/1.1.3 http://maven.apache.org/xsd/component-1.1.3.xsd"> - <fileSets> - <fileSet> - <directory>src/main/config</directory> - <outputDirectory>conf</outputDirectory> - <directoryMode>0755</directoryMode> - <fileMode>0644</fileMode> - <lineEnding>unix</lineEnding> - <filtered>false</filtered> - <includes> - <include>*.properties</include> - </includes> - </fileSet> - <fileSet> - <directory>src/main/scripts</directory> - <outputDirectory>bin</outputDirectory> - <directoryMode>0755</directoryMode> - <fileMode>0755</fileMode> - <includes> - <include>rya</include> - </includes> - <lineEnding>unix</lineEnding> - <filtered>true</filtered> - </fileSet> - <fileSet> - <directory>src/main/scripts</directory> - <outputDirectory>bin</outputDirectory> - <directoryMode>0755</directoryMode> - <fileMode>0644</fileMode> - <includes> - <include>*.bat</include> - </includes> - <lineEnding>dos</lineEnding> - <filtered>true</filtered> - </fileSet> - <fileSet> - <directory>src/main/examples</directory> - <outputDirectory>examples</outputDirectory> - <directoryMode>0755</directoryMode> - <fileMode>0644</fileMode> - <!-- <includes> <include>*.script</include> </includes> --> - <lineEnding>unix</lineEnding> - <filtered>false</filtered> - </fileSet> - - <!-- create an empty directory for log files --> - <fileSet> - <directory>src/main/assembly</directory> - <outputDirectory>logs</outputDirectory> - <directoryMode>755</directoryMode> - <excludes> - <exclude>*</exclude> - </excludes> - </fileSet> - - - <fileSet> - <directory>${project.build.directory}</directory> - <outputDirectory>lib</outputDirectory> - <directoryMode>755</directoryMode> - <fileMode>0644</fileMode> - <includes> - <include>${project.artifactId}-${project.version}-shaded.jar</include> - </includes> - </fileSet> - </fileSets> -</component> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/src/main/config/log4j.properties ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/main/config/log4j.properties b/extras/rya.console/src/main/config/log4j.properties deleted file mode 100644 index 49d6822..0000000 --- a/extras/rya.console/src/main/config/log4j.properties +++ /dev/null @@ -1,35 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -# Valid levels: -# TRACE, DEBUG, INFO, WARN, ERROR and FATAL -log4j.rootCategory=INFO, LOGFILE - -# LOGFILE is set to be a File appender using a PatternLayout. -log4j.appender.LOGFILE=org.apache.log4j.FileAppender -log4j.appender.LOGFILE.File=${rya.shell.home}logs/rya-shell.log -#log4j.appender.LOGFILE.Threshold=DEBUG -log4j.appender.LOGFILE.Append=true - -log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout -log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c - %m%n - -#log4j.appender.LOGFILE.layout=org.apache.log4j.EnhancedPatternLayout -#log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c{1.} - %m%n - http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/src/main/examples/Query1.sparql ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/main/examples/Query1.sparql b/extras/rya.console/src/main/examples/Query1.sparql deleted file mode 100644 index 33619fb..0000000 --- a/extras/rya.console/src/main/examples/Query1.sparql +++ /dev/null @@ -1,24 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> -SELECT ?thing ?name WHERE { - ?thing <http://predicates#name> ?name . - ?thing rdf:type <http://types#Monkey> . -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/src/main/examples/example.script ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/main/examples/example.script b/extras/rya.console/src/main/examples/example.script deleted file mode 100644 index 529ea61..0000000 --- a/extras/rya.console/src/main/examples/example.script +++ /dev/null @@ -1,26 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -connect-accumulo --username accumulo_user --instanceName accumulo_instance --zookeepers zoo1,zoo2,zoo3,zoo4,zoo5 -install-with-parameters --instanceName rya_example_ -connect-rya --instance rya_example_ -#load-data --file examples/ontology.owl -load-data --file examples/triples.nt -sparql-query --file examples/Query1.sparql -# uninstall \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/src/main/examples/triples.nt ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/main/examples/triples.nt b/extras/rya.console/src/main/examples/triples.nt deleted file mode 100644 index 38b6c6f..0000000 --- a/extras/rya.console/src/main/examples/triples.nt +++ /dev/null @@ -1,25 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -<http://Thing1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://types#Monkey> . -<http://Thing1> <http://predicates#name> "Thing 1". -<http://Thing2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://types#Gorilla> . -<http://Thing2> <http://predicates#name> "Thing 2". -<http://Thing3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://types#Monkey> . -<http://Thing3> <http://predicates#name> "Thing 3". http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaAdminCommands.java ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaAdminCommands.java b/extras/rya.console/src/main/java/org/apache/rya/shell/RyaAdminCommands.java deleted file mode 100644 index 9239dc7..0000000 --- a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaAdminCommands.java +++ /dev/null @@ -1,388 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.rya.shell; - -import static java.util.Objects.requireNonNull; - -import java.io.IOException; -import java.util.Collections; -import java.util.List; - -import org.apache.rya.api.client.GetInstanceDetails; -import org.apache.rya.api.client.Install.DuplicateInstanceNameException; -import org.apache.rya.api.client.Install.InstallConfiguration; -import org.apache.rya.api.client.InstanceDoesNotExistException; -import org.apache.rya.api.client.RyaClient; -import org.apache.rya.api.client.RyaClientException; -import org.apache.rya.api.instance.RyaDetails; -import org.apache.rya.shell.SharedShellState.ConnectionState; -import org.apache.rya.shell.SharedShellState.ShellState; -import org.apache.rya.shell.util.InstallPrompt; -import org.apache.rya.shell.util.InstanceNamesFormatter; -import org.apache.rya.shell.util.RyaDetailsFormatter; -import org.apache.rya.shell.util.SparqlPrompt; -import org.apache.rya.shell.util.UninstallPrompt; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.shell.core.CommandMarker; -import org.springframework.shell.core.annotation.CliAvailabilityIndicator; -import org.springframework.shell.core.annotation.CliCommand; -import org.springframework.shell.core.annotation.CliOption; -import org.springframework.stereotype.Component; - -import com.google.common.base.Optional; - -/** - * Rya Shell commands that have to do with administrative tasks. - */ -@Component -public class RyaAdminCommands implements CommandMarker { - - public static final String CREATE_PCJ_CMD = "create-pcj"; - public static final String DELETE_PCJ_CMD = "delete-pcj"; - public static final String PRINT_INSTANCE_DETAILS_CMD = "print-instance-details"; - public static final String INSTALL_CMD = "install"; - public static final String INSTALL_PARAMETERS_CMD = "install-with-parameters"; - public static final String LIST_INSTANCES_CMD = "list-instances"; - public static final String UNINSTALL_CMD = "uninstall"; - public static final String ADD_USER_CMD = "add-user"; - public static final String REMOVE_USER_CMD = "remove-user"; - - private final SharedShellState state; - private final InstallPrompt installPrompt; - private final SparqlPrompt sparqlPrompt; - private final UninstallPrompt uninstallPrompt; - - /** - * Constructs an instance of {@link RyaAdminCommands}. - * - * @param state - Holds shared state between all of the command classes. (not null) - * @param installPrompt - Prompts a user for installation details. (not null) - * @param sparqlPrompt - Prompts a user for a SPARQL query. (not null) - * @param uninstallPrompt - Prompts a user when uninstalling. (not null) - */ - @Autowired - public RyaAdminCommands( - final SharedShellState state, - final InstallPrompt installPrompt, - final SparqlPrompt sparqlPrompt, - final UninstallPrompt uninstallPrompt) { - this.state = requireNonNull( state ); - this.installPrompt = requireNonNull(installPrompt); - this.sparqlPrompt = requireNonNull(sparqlPrompt); - this.uninstallPrompt = requireNonNull(uninstallPrompt); - } - - /** - * Enables commands that only become available once the Shell has been connected to a Rya Storage. - */ - @CliAvailabilityIndicator({ - LIST_INSTANCES_CMD, - INSTALL_CMD }) - public boolean areStorageCommandsAvailable() { - switch(state.getShellState().getConnectionState()) { - case CONNECTED_TO_STORAGE: - case CONNECTED_TO_INSTANCE: - return true; - default: - return false; - } - } - - /** - * Enables commands that are always available once the Shell is connected to a Rya Instance. - */ - @CliAvailabilityIndicator({ - PRINT_INSTANCE_DETAILS_CMD, - UNINSTALL_CMD, - ADD_USER_CMD, - REMOVE_USER_CMD}) - public boolean areInstanceCommandsAvailable() { - switch(state.getShellState().getConnectionState()) { - case CONNECTED_TO_INSTANCE: - return true; - default: - return false; - } - } - - /** - * Enables commands that are available when the Shell is connected to a Rya Instance that supports PCJ Indexing. - */ - @CliAvailabilityIndicator({ - CREATE_PCJ_CMD, - DELETE_PCJ_CMD }) - public boolean arePCJCommandsAvailable() { - // The PCJ commands are only available if the Shell is connected to an instance of Rya - // that is new enough to use the RyaDetailsRepository and is configured to maintain PCJs. - final ShellState shellState = state.getShellState(); - if(shellState.getConnectionState() == ConnectionState.CONNECTED_TO_INSTANCE) { - final GetInstanceDetails getInstanceDetails = shellState.getConnectedCommands().get().getGetInstanceDetails(); - final String ryaInstanceName = state.getShellState().getRyaInstanceName().get(); - try { - final Optional<RyaDetails> instanceDetails = getInstanceDetails.getDetails( ryaInstanceName ); - if(instanceDetails.isPresent()) { - return instanceDetails.get().getPCJIndexDetails().isEnabled(); - } - } catch (final RyaClientException e) { - return false; - } - } - return false; - } - - @CliCommand(value = LIST_INSTANCES_CMD, help = "List the names of the installed Rya instances.") - public String listInstances() { - // Fetch the command that is connected to the store. - final ShellState shellState = state.getShellState(); - final RyaClient commands = shellState.getConnectedCommands().get(); - final Optional<String> ryaInstance = shellState.getRyaInstanceName(); - - try { - // Sort the names alphabetically. - final List<String> instanceNames = commands.getListInstances().listInstances(); - Collections.sort( instanceNames ); - - final String report; - final InstanceNamesFormatter formatter = new InstanceNamesFormatter(); - if(ryaInstance.isPresent()) { - report = formatter.format(instanceNames, ryaInstance.get()); - } else { - report = formatter.format(instanceNames); - } - return report; - - } catch (final RyaClientException e) { - throw new RuntimeException("Can not list the Rya instances. Reason: " + e.getMessage(), e); - } - } - - @CliCommand(value = INSTALL_CMD, help = "Create a new instance of Rya interactively.") - public String install() { - // Fetch the commands that are connected to the store. - final RyaClient commands = state.getShellState().getConnectedCommands().get(); - - String instanceName = null; - InstallConfiguration installConfig = null; - try { - boolean verified = false; - while(!verified) { - // Use the install prompt to fetch the user's installation options. - instanceName = installPrompt.promptInstanceName(); - installConfig = installPrompt.promptInstallConfiguration(instanceName); - - // Verify the configuration is what the user actually wants to do. - verified = installPrompt.promptVerified(instanceName, installConfig); - } - - // Execute the command. - commands.getInstall().install(instanceName, installConfig); - return String.format("The Rya instance named '%s' has been installed.", instanceName); - - } catch(final DuplicateInstanceNameException e) { - throw new RuntimeException(String.format("A Rya instance named '%s' already exists. Try again with a different name.", instanceName), e); - } catch (final IOException | RyaClientException e) { - throw new RuntimeException("Could not install a new instance of Rya. Reason: " + e.getMessage(), e); - } - } - - @CliCommand(value = INSTALL_PARAMETERS_CMD, help = "Create a new instance of Rya with command line parameters.") - public String installWithParameters( - @CliOption(key = {"instanceName"}, mandatory = true, help = "The name of the Rya instance to create.") - final String instanceName, - - @CliOption(key = {"enableTableHashPrefix"}, mandatory = false, help = "Use Shard Balancing (improves streamed input write speeds).", unspecifiedDefaultValue = "false", specifiedDefaultValue = "true") - final boolean enableTableHashPrefix, - - @CliOption(key = {"enableEntityCentricIndex"}, mandatory = false, help = "Use Entity Centric Indexing.", unspecifiedDefaultValue = "false", specifiedDefaultValue = "true") - final boolean enableEntityCentricIndex, - - @CliOption(key = {"enableFreeTextIndex"}, mandatory = false, help = "Use Free Text Indexing.", unspecifiedDefaultValue = "false", specifiedDefaultValue = "true") - final boolean enableFreeTextIndex, - - @CliOption(key = {"enableGeospatialIndex"}, mandatory = false, help = "Use Geospatial Indexing.", unspecifiedDefaultValue = "false", specifiedDefaultValue = "true") - final boolean enableGeospatialIndex, - - @CliOption(key = {"enableTemporalIndex"}, mandatory = false, help = "Use Temporal Indexing.", unspecifiedDefaultValue = "false", specifiedDefaultValue = "true") - final boolean enableTemporalIndex, - - @CliOption(key = {"enablePcjIndex"}, mandatory = false, help = "Use Precomputed Join (PCJ) Indexing.", unspecifiedDefaultValue = "false", specifiedDefaultValue = "true") - final boolean enablePcjIndex, - - @CliOption(key = {"fluoPcjAppName"}, mandatory = false, help = "Fluo Application Name for PCJ Index Updater (fluo app must be initialized and enablePcjIndex=true).") - final String fluoPcjAppName - ) { - - // Fetch the commands that are connected to the store. - final RyaClient commands = state.getShellState().getConnectedCommands().get(); - - try { - final InstallConfiguration installConfig = InstallConfiguration.builder() - .setEnableTableHashPrefix(enableTableHashPrefix) - .setEnableEntityCentricIndex(enableEntityCentricIndex) - .setEnableFreeTextIndex(enableFreeTextIndex) - .setEnableGeoIndex(enableGeospatialIndex) - .setEnableTemporalIndex(enableTemporalIndex) - .setEnablePcjIndex(enablePcjIndex) - .setFluoPcjAppName(fluoPcjAppName) - .build(); - - // Verify the configuration is what the user actually wants to do. - if (!installPrompt.promptVerified(instanceName, installConfig)) { - return "Skipping Installation."; - } - - // Execute the command. - commands.getInstall().install(instanceName, installConfig); - return String.format("The Rya instance named '%s' has been installed.", instanceName); - - } catch(final DuplicateInstanceNameException e) { - throw new RuntimeException(String.format("A Rya instance named '%s' already exists. Try again with a different name.", instanceName), e); - } catch (final IOException | RyaClientException e) { - throw new RuntimeException("Could not install a new instance of Rya. Reason: " + e.getMessage(), e); - } - } - - @CliCommand(value = PRINT_INSTANCE_DETAILS_CMD, help = "Print information about how the Rya instance is configured.") - public String printInstanceDetails() { - // Fetch the command that is connected to the store. - final ShellState shellState = state.getShellState(); - final RyaClient commands = shellState.getConnectedCommands().get(); - final String ryaInstance = shellState.getRyaInstanceName().get(); - - try { - final Optional<RyaDetails> details = commands.getGetInstanceDetails().getDetails(ryaInstance); - if(details.isPresent()) { - return new RyaDetailsFormatter().format(details.get()); - } else { - return "This instance of Rya does not have a Rya Details table. Consider migrating to a newer version of Rya."; - } - } catch(final InstanceDoesNotExistException e) { - throw new RuntimeException(String.format("A Rya instance named '%s' does not exist.", ryaInstance), e); - } catch (final RyaClientException e) { - throw new RuntimeException("Could not get the instance details. Reason: " + e.getMessage(), e); - } - } - - @CliCommand(value = CREATE_PCJ_CMD, help = "Creates and starts the maintenance of a new PCJ using a Fluo application.") - public String createPcj() { - // Fetch the command that is connected to the store. - final ShellState shellState = state.getShellState(); - final RyaClient commands = shellState.getConnectedCommands().get(); - final String ryaInstance = shellState.getRyaInstanceName().get(); - - try { - // Prompt the user for the SPARQL. - final Optional<String> sparql = sparqlPrompt.getSparql(); - if (sparql.isPresent()) { - // Execute the command. - final String pcjId = commands.getCreatePCJ().createPCJ(ryaInstance, sparql.get()); - // Return a message that indicates the ID of the newly created ID. - return String.format("The PCJ has been created. Its ID is '%s'.", pcjId); - } else { - return ""; // user aborted the SPARQL prompt. - } - } catch (final InstanceDoesNotExistException e) { - throw new RuntimeException(String.format("A Rya instance named '%s' does not exist.", ryaInstance), e); - } catch (final IOException | RyaClientException e) { - throw new RuntimeException("Could not create the PCJ. Provided reasons: " + e.getMessage(), e); - } - } - - @CliCommand(value = DELETE_PCJ_CMD, help = "Deletes and halts maintenance of a PCJ.") - public String deletePcj( - @CliOption(key = {"pcjId"}, mandatory = true, help = "The ID of the PCJ that will be deleted.") - final String pcjId) { - // Fetch the command that is connected to the store. - final ShellState shellState = state.getShellState(); - final RyaClient commands = shellState.getConnectedCommands().get(); - final String ryaInstance = shellState.getRyaInstanceName().get(); - - try { - // Execute the command. - commands.getDeletePCJ().deletePCJ(ryaInstance, pcjId); - return "The PCJ has been deleted."; - - } catch (final InstanceDoesNotExistException e) { - throw new RuntimeException(String.format("A Rya instance named '%s' does not exist.", ryaInstance), e); - } catch (final RyaClientException e) { - throw new RuntimeException("The PCJ could not be deleted. Provided reason: " + e.getMessage(), e); - } - } - - @CliCommand(value = ADD_USER_CMD, help = "Adds an authorized user to the Rya instance.") - public void addUser( - @CliOption(key = {"username"}, mandatory = true, help = "The username of the user that will be granted access.") - final String username) { - // Fetch the Rya client that is connected to the store. - final ShellState shellState = state.getShellState(); - final RyaClient ryaClient = shellState.getConnectedCommands().get(); - final String ryaInstance = shellState.getRyaInstanceName().get(); - - try { - ryaClient.getAddUser().addUser(ryaInstance, username); - } catch (final InstanceDoesNotExistException e) { - throw new RuntimeException(String.format("A Rya instance named '%s' does not exist.", ryaInstance), e); - } catch (final RyaClientException e) { - throw new RuntimeException("The user's access could not be granted. Provided reason: " + e.getMessage(), e); - } - } - - @CliCommand(value = REMOVE_USER_CMD, help = "Removes an authorized user from the Rya instance.") - public void removeUser( - @CliOption(key = {"username"}, mandatory = true, help = "The username of the user whose access will be revoked.") - final String username) { - // Fetch the Rya client that is connected to the store. - final ShellState shellState = state.getShellState(); - final RyaClient ryaClient = shellState.getConnectedCommands().get(); - final String ryaInstance = shellState.getRyaInstanceName().get(); - - try { - ryaClient.getRemoveUser().removeUser(ryaInstance, username); - } catch (final InstanceDoesNotExistException e) { - throw new RuntimeException(String.format("A Rya instance named '%s' does not exist.", ryaInstance), e); - } catch (final RyaClientException e) { - throw new RuntimeException("The user's access could not be revoked. Provided reason: " + e.getMessage(), e); - } - } - - @CliCommand(value = UNINSTALL_CMD, help = "Uninstall an instance of Rya.") - public String uninstall() { - // Fetch the command that is connected to the store. - final ShellState shellState = state.getShellState(); - final RyaClient commands = shellState.getConnectedCommands().get(); - final String ryaInstanceName = shellState.getRyaInstanceName().get(); - - try { - // Make sure the user meant to uninstall the Rya instance. - if(!uninstallPrompt.promptAreYouSure(ryaInstanceName)) { - return "Cancelled."; - } - - // Perform the uninstall. - commands.getUninstall().uninstall(ryaInstanceName); - - } catch (final InstanceDoesNotExistException e) { - throw new RuntimeException(String.format("A Rya instance named '%s' does not exist.", ryaInstanceName), e); - } catch (final IOException | RyaClientException e) { - throw new RuntimeException("The Rya instance could not be uninstalled. Provided reason: " + e.getMessage(), e); - } - - return "The Rya instance named '" + ryaInstanceName +"' has been uninstalled."; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaBannerProvider.java ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaBannerProvider.java b/extras/rya.console/src/main/java/org/apache/rya/shell/RyaBannerProvider.java deleted file mode 100644 index 42581ed..0000000 --- a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaBannerProvider.java +++ /dev/null @@ -1,97 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.rya.shell; - -import java.io.IOException; -import java.net.JarURLConnection; -import java.net.URL; -import java.util.jar.Attributes; -import java.util.jar.Manifest; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.shell.core.CommandMarker; -import org.springframework.shell.plugin.support.DefaultBannerProvider; -import org.springframework.stereotype.Component; - -/** - * Customizes the Rya Shell's banner. - */ -@Component -@Order(Ordered.HIGHEST_PRECEDENCE) -public class RyaBannerProvider extends DefaultBannerProvider implements CommandMarker { - private final Logger log = LoggerFactory.getLogger(RyaBannerProvider.class); - - private static final String BANNER = - " _____ _____ _ _ _ \n" + - "| __ \\ / ____| | | | |\n" + - "| |__) | _ __ _ | (___ | |__ ___| | |\n" + - "| _ / | | |/ _` | \\___ \\| '_ \\ / _ \\ | |\n" + - "| | \\ \\ |_| | (_| | ____) | | | | __/ | |\n" + - "|_| \\_\\__, |\\__,_| |_____/|_| |_|\\___|_|_|\n" + - " __/ | \n" + - " |___/ "; - - private String version = null; - - @Override - public String getBanner() { - return BANNER + "\n" + getVersion() + "\n"; - } - - @Override - public String getWelcomeMessage() { - return "Welcome to the Rya Shell.\n" + - "\n" + - "Execute one of the connect commands to start interacting with an instance of Rya.\n" + - "You may press tab at any time to see which of the commands are available."; - } - - @Override - public String getVersion() { - if(version == null) { - version = loadVersion(); - } - return version; - } - - /** - * Loads the version number from the Rya Shell's MANIFEST.MF file. - * - * @return The version number of the Rya Shell. - */ - private String loadVersion() { - final String className = getClass().getSimpleName() + ".class"; - final String classPath = getClass().getResource( className ).toString(); - - try { - final URL classUrl = new URL(classPath); - final JarURLConnection jarConnection = (JarURLConnection) classUrl.openConnection(); - final Manifest manifest = jarConnection.getManifest(); - final Attributes attributes = manifest.getMainAttributes(); - return attributes.getValue("Implementation-Version"); - } catch (final IOException e) { - log.error("Could not load the application's version from it's manifest.", e); - } - - return "UNKNOWN"; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaCommands.java ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaCommands.java b/extras/rya.console/src/main/java/org/apache/rya/shell/RyaCommands.java deleted file mode 100644 index 09ee410..0000000 --- a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaCommands.java +++ /dev/null @@ -1,166 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.rya.shell; - -import static java.util.Objects.requireNonNull; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.text.DecimalFormat; -import java.util.Objects; - -import org.apache.rya.api.client.RyaClient; -import org.apache.rya.api.client.RyaClientException; -import org.apache.rya.shell.SharedShellState.ShellState; -import org.apache.rya.shell.util.ConsolePrinter; -import org.apache.rya.shell.util.SparqlPrompt; -import org.openrdf.rio.RDFFormat; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.shell.core.CommandMarker; -import org.springframework.shell.core.annotation.CliAvailabilityIndicator; -import org.springframework.shell.core.annotation.CliCommand; -import org.springframework.shell.core.annotation.CliOption; -import org.springframework.stereotype.Component; - -import com.google.common.base.Optional; - -/** - * Rya Shell commands that have to do with common tasks (loading and querying data) - */ -@Component -public class RyaCommands implements CommandMarker { - - private static final Logger log = LoggerFactory.getLogger(RyaCommands.class); - - public static final String LOAD_DATA_CMD = "load-data"; - public static final String SPARQL_QUERY_CMD = "sparql-query"; - - private final SharedShellState state; - private final SparqlPrompt sparqlPrompt; - private final ConsolePrinter consolePrinter; - - /** - * Constructs an instance of {@link RyaCommands}. - * - * @param state - Holds shared state between all of the command classes. (not null) - * @param sparqlPrompt - Prompts a user for a SPARQL query. (not null) - * @param consolePrinter - Allows the command to print feedback to the user. (not null) - */ - @Autowired - public RyaCommands(final SharedShellState state, final SparqlPrompt sparqlPrompt, - final ConsolePrinter consolePrinter) { - this.state = Objects.requireNonNull(state); - this.sparqlPrompt = requireNonNull(sparqlPrompt); - this.consolePrinter = Objects.requireNonNull(consolePrinter); - } - - /** - * Enables commands that are always available once the Shell is connected to a Rya Instance. - */ - @CliAvailabilityIndicator({ LOAD_DATA_CMD, SPARQL_QUERY_CMD }) - public boolean areInstanceCommandsAvailable() { - switch (state.getShellState().getConnectionState()) { - case CONNECTED_TO_INSTANCE: - return true; - default: - return false; - } - } - - @CliCommand(value = LOAD_DATA_CMD, help = "Loads RDF Statement data from a local file to the connected Rya instance.") - public String loadData( - @CliOption(key = { "file" }, mandatory = true, help = "A local file containing RDF Statements that is to be loaded.") - final String file, - @CliOption(key = { "format" }, mandatory = false, help = "The format of the supplied RDF Statements file. [RDF/XML, N-Triples, Turtle, N3, TriX, TriG, BinaryRDF, N-Quads, JSON-LD, RDF/JSON, RDFa]") - final String format - ) { - // Fetch the command that is connected to the store. - final ShellState shellState = state.getShellState(); - final RyaClient commands = shellState.getConnectedCommands().get(); - final Optional<String> ryaInstanceName = shellState.getRyaInstanceName(); - try { - final long start = System.currentTimeMillis(); - final File rdfInputFile = new File(file); - - RDFFormat rdfFormat = null; - if (format != null) { - rdfFormat = RDFFormat.valueOf(format); - if (rdfFormat == null) { - throw new RuntimeException("Unsupported RDF Statement data input format: " + format); - } - } - if (rdfFormat == null) { - rdfFormat = RDFFormat.forFileName(rdfInputFile.getName()); - if (rdfFormat == null) { - throw new RuntimeException("Unable to detect RDF Statement data input format for file: " + rdfInputFile); - } else { - consolePrinter.println("Detected RDF Format: " + rdfFormat); - consolePrinter.flush(); - } - } - commands.getLoadStatementsFile().loadStatements(ryaInstanceName.get(), rdfInputFile.toPath(), rdfFormat); - - final String seconds = new DecimalFormat("0.0##").format((System.currentTimeMillis() - start) / 1000.0); - return "Loaded the file: '" + file + "' successfully in " + seconds + " seconds."; - - } catch (final RyaClientException | IOException e) { - log.error("Error", e); - throw new RuntimeException("Can not load the RDF Statement data. Reason: " + e.getMessage(), e); - } - } - - @CliCommand(value = SPARQL_QUERY_CMD, help = "Executes the provided SPARQL Query on the connected Rya instance.") - public String sparqlQuery( - @CliOption(key = { "file" }, mandatory = false, help = "A local file containing the SPARQL Query that is to be read and executed.") - final String file) { - // Fetch the command that is connected to the store. - final ShellState shellState = state.getShellState(); - final RyaClient commands = shellState.getConnectedCommands().get(); - final Optional<String> ryaInstanceName = shellState.getRyaInstanceName(); - - try { - // file option specified - String sparqlQuery; - if (file != null) { - sparqlQuery = new String(Files.readAllBytes(new File(file).toPath()), StandardCharsets.UTF_8); - consolePrinter.println("Loaded Query:"); - consolePrinter.println(sparqlQuery); - } else { - // No Options specified. Show the user the SPARQL Prompt - final Optional<String> sparqlQueryOpt = sparqlPrompt.getSparql(); - if (sparqlQueryOpt.isPresent()) { - sparqlQuery = sparqlQueryOpt.get(); - } else { - return ""; // user aborted the SPARQL prompt. - } - } - - consolePrinter.println("Executing Query..."); - consolePrinter.flush(); - return commands.getExecuteSparqlQuery().executeSparqlQuery(ryaInstanceName.get(), sparqlQuery); - } catch (final RyaClientException | IOException e) { - log.error("Error", e); - throw new RuntimeException("Can not execute the SPARQL Query. Reason: " + e.getMessage(), e); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaConnectionCommands.java ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaConnectionCommands.java b/extras/rya.console/src/main/java/org/apache/rya/shell/RyaConnectionCommands.java deleted file mode 100644 index f5ba451..0000000 --- a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaConnectionCommands.java +++ /dev/null @@ -1,166 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.rya.shell; - -import static java.util.Objects.requireNonNull; - -import java.io.IOException; -import java.nio.CharBuffer; - -import org.apache.accumulo.core.client.AccumuloException; -import org.apache.accumulo.core.client.AccumuloSecurityException; -import org.apache.accumulo.core.client.Connector; -import org.apache.rya.api.client.InstanceExists; -import org.apache.rya.api.client.RyaClient; -import org.apache.rya.api.client.RyaClientException; -import org.apache.rya.api.client.accumulo.AccumuloConnectionDetails; -import org.apache.rya.api.client.accumulo.AccumuloRyaClientFactory; -import org.apache.rya.shell.SharedShellState.ConnectionState; -import org.apache.rya.shell.util.ConnectorFactory; -import org.apache.rya.shell.util.PasswordPrompt; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.shell.core.CommandMarker; -import org.springframework.shell.core.annotation.CliAvailabilityIndicator; -import org.springframework.shell.core.annotation.CliCommand; -import org.springframework.shell.core.annotation.CliOption; -import org.springframework.stereotype.Component; - -import com.google.common.base.Optional; - -/** - * Spring Shell commands that manage the connection that is used by the shell. - */ -@Component -public class RyaConnectionCommands implements CommandMarker { - - // Command line commands. - public static final String PRINT_CONNECTION_DETAILS_CMD = "print-connection-details"; - public static final String CONNECT_ACCUMULO_CMD = "connect-accumulo"; - public static final String CONNECT_INSTANCE_CMD = "connect-rya"; - public static final String DISCONNECT_COMMAND_NAME_CMD = "disconnect"; - - private final SharedShellState sharedState; - private final PasswordPrompt passwordPrompt; - - /** - * Constructs an instance of {@link RyaConnectionCommands}. - * - * @param state - Holds shared state between all of the command classes. (not null) - * @param passwordPrompt - Prompts the user for their password when connecting to a Rya store. (not null) - */ - @Autowired - public RyaConnectionCommands(final SharedShellState state, final PasswordPrompt passwordPrompt) { - this.sharedState = requireNonNull( state ); - this.passwordPrompt = requireNonNull(passwordPrompt); - } - - @CliAvailabilityIndicator({PRINT_CONNECTION_DETAILS_CMD}) - public boolean isPrintConnectionDetailsAvailable() { - return true; - } - - @CliAvailabilityIndicator({CONNECT_ACCUMULO_CMD}) - public boolean areConnectCommandsAvailable() { - return sharedState.getShellState().getConnectionState() == ConnectionState.DISCONNECTED; - } - - @CliAvailabilityIndicator({CONNECT_INSTANCE_CMD}) - public boolean isConnectToInstanceAvailable() { - switch(sharedState.getShellState().getConnectionState()) { - case CONNECTED_TO_STORAGE: - case CONNECTED_TO_INSTANCE: - return true; - default: - return false; - } - } - - @CliAvailabilityIndicator({DISCONNECT_COMMAND_NAME_CMD}) - public boolean isDisconnectAvailable() { - return sharedState.getShellState().getConnectionState() != ConnectionState.DISCONNECTED; - } - - @CliCommand(value = PRINT_CONNECTION_DETAILS_CMD, help = "Print information about the Shell's Rya storage connection.") - public String printConnectionDetails() { - final Optional<AccumuloConnectionDetails> detailsHolder = sharedState.getShellState().getConnectionDetails(); - - if(detailsHolder.isPresent()) { - final AccumuloConnectionDetails details = detailsHolder.get(); - return "The shell is connected to an instance of Accumulo using the following parameters:\n" + - " Username: " + details.getUsername() + "\n" + - " Instance Name: " + details.getInstanceName() + "\n" + - " Zookeepers: " + details.getZookeepers(); - } else { - return "The shell is not connected to anything."; - } - } - - @CliCommand(value = CONNECT_ACCUMULO_CMD, help = "Connect the shell to an instance of Accumulo.") - public String connectToAccumulo( - @CliOption(key = {"username"}, mandatory = true, help = "The username that will be used to connect to Accummulo.") - final String username, - @CliOption(key = {"instanceName"}, mandatory = true, help = "The name of the Accumulo instance that will be connected to.") - final String instanceName, - @CliOption(key = {"zookeepers"}, mandatory = true, help = "A comma delimited list of zookeeper server hostnames.") - final String zookeepers - ) { - - try { - // Prompt the user for their password. - final char[] password = passwordPrompt.getPassword(); - final Connector connector= new ConnectorFactory().connect(username, CharBuffer.wrap(password), instanceName, zookeepers); - - // Initialize the connected to Accumulo shared state. - final AccumuloConnectionDetails accumuloDetails = new AccumuloConnectionDetails(username, password, instanceName, zookeepers); - final RyaClient commands = AccumuloRyaClientFactory.build(accumuloDetails, connector); - sharedState.connectedToAccumulo(accumuloDetails, commands); - - } catch(IOException | AccumuloException | AccumuloSecurityException e) { - throw new RuntimeException("Could not connect to Accumulo. Reason: " + e.getMessage(), e); - } - - return "Connected. You must select a Rya instance to interact with next."; - } - - @CliCommand(value = CONNECT_INSTANCE_CMD, help = "Connect to a specific Rya instance") - public void connectToInstance( - @CliOption(key = {"instance"}, mandatory = true, help = "The name of the Rya instance the shell will interact with.") - final String instance) { - try { - final InstanceExists instanceExists = sharedState.getShellState().getConnectedCommands().get().getInstanceExists(); - - // TODO gracefully fail if that version doen't support it. maybe the list command should go ahead - - // Make sure the requested instance exists. - if(!instanceExists.exists(instance)) { - throw new RuntimeException(String.format("'%s' does not match an existing Rya instance.", instance)); - } - } catch(final RyaClientException e) { - throw new RuntimeException("Could not connect to Rya instance. Reason: " + e.getMessage(), e); - } - - // Store the instance name in the shared state. - sharedState.connectedToInstance(instance); - } - - @CliCommand(value = DISCONNECT_COMMAND_NAME_CMD, help = "Disconnect the shell's Rya storage connection (Accumulo).") - public void disconnect() { - sharedState.disconnected(); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaPromptProvider.java ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaPromptProvider.java b/extras/rya.console/src/main/java/org/apache/rya/shell/RyaPromptProvider.java deleted file mode 100644 index ed5f261..0000000 --- a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaPromptProvider.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.rya.shell; - -import static java.util.Objects.requireNonNull; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.shell.plugin.support.DefaultPromptProvider; -import org.springframework.stereotype.Component; - -import org.apache.rya.shell.SharedShellState.ShellState; - -/** - * Customizes the Rya Shell's prompt. - */ -@Component -@Order(Ordered.HIGHEST_PRECEDENCE) -public class RyaPromptProvider extends DefaultPromptProvider { - - private final SharedShellState sharedState; - - @Autowired - public RyaPromptProvider(final SharedShellState sharedState) { - this.sharedState = requireNonNull(sharedState); - } - - @Override - public String getPrompt() { - final ShellState state = sharedState.getShellState(); - - switch(state.getConnectionState()) { - case DISCONNECTED: - return "rya> "; - case CONNECTED_TO_STORAGE: - return String.format("rya/%s> ", state.getConnectionDetails().get().getInstanceName()); - case CONNECTED_TO_INSTANCE: - return String.format("rya/%s:%s> ", - state.getConnectionDetails().get().getInstanceName(), - state.getRyaInstanceName().get()); - default: - return "rya> "; - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaShellHistoryProvider.java ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaShellHistoryProvider.java b/extras/rya.console/src/main/java/org/apache/rya/shell/RyaShellHistoryProvider.java deleted file mode 100644 index b4ade8f..0000000 --- a/extras/rya.console/src/main/java/org/apache/rya/shell/RyaShellHistoryProvider.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.rya.shell; - -import java.io.File; - -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.shell.plugin.HistoryFileNameProvider; -import org.springframework.stereotype.Component; - -/** - * Customizes the Rya Shell's history file. - */ -@Component -@Order(Ordered.HIGHEST_PRECEDENCE) -public class RyaShellHistoryProvider implements HistoryFileNameProvider { - - public static final String RYA_SHELL_HISTORY_FILENAME = ".rya_shell_history"; - - @Override - public String getHistoryFileName() { - final String userHome = System.getProperty("user.home"); - if(userHome == null) { - return RYA_SHELL_HISTORY_FILENAME; - } else { - return new File(userHome, RYA_SHELL_HISTORY_FILENAME).getAbsolutePath(); - } - } - - @Override - public String getProviderName() { - return this.getClass().getSimpleName(); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/2564ac0a/extras/rya.console/src/main/java/org/apache/rya/shell/SharedShellState.java ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/main/java/org/apache/rya/shell/SharedShellState.java b/extras/rya.console/src/main/java/org/apache/rya/shell/SharedShellState.java deleted file mode 100644 index 526b031..0000000 --- a/extras/rya.console/src/main/java/org/apache/rya/shell/SharedShellState.java +++ /dev/null @@ -1,339 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.rya.shell; - -import static java.util.Objects.requireNonNull; - -import java.util.Objects; -import java.util.concurrent.locks.ReentrantLock; - -import edu.umd.cs.findbugs.annotations.Nullable; -import edu.umd.cs.findbugs.annotations.DefaultAnnotation; -import edu.umd.cs.findbugs.annotations.NonNull; -import net.jcip.annotations.Immutable; -import net.jcip.annotations.ThreadSafe; - -import com.google.common.base.Optional; - -import org.apache.rya.api.client.RyaClient; -import org.apache.rya.api.client.accumulo.AccumuloConnectionDetails; - -/** - * Holds values that are shared between the various Rya command classes. - */ -@ThreadSafe -@DefaultAnnotation(NonNull.class) -public class SharedShellState { - // The shared nature of this object means we shouldn't assume only a single thread is accessing it. - private final ReentrantLock lock = new ReentrantLock(); - - // The current state. - private ShellState shellState = ShellState.builder() - .setConnectionState( ConnectionState.DISCONNECTED ) - .build(); - - /** - * @return The values that define the state of the Rya Shell. - */ - public ShellState getShellState() { - lock.lock(); - try { - return shellState; - } finally { - lock.unlock(); - } - } - - /** - * This method indicates a shift into the {@link ConnectionState#CONNECTED_TO_STORAGE} state. - * <p/> - * Store the values used by an Accumulo Rya Storage connection. This may - * only be called when the shell is disconnected. - * - * @param connectionDetails - Metadata about the Accumulo connection. (not null) - * @param connectedCommands - Rya Commands that will execute against the Accumulo instance. (not null) - * @throws IllegalStateException Thrown if the shell is already connected to a Rya storage. - */ - public void connectedToAccumulo( - final AccumuloConnectionDetails connectionDetails, - final RyaClient connectedCommands) throws IllegalStateException { - requireNonNull(connectionDetails); - requireNonNull(connectedCommands); - - lock.lock(); - try { - // Ensure the Rya Shell is disconnected. - if(shellState.getConnectionState() != ConnectionState.DISCONNECTED) { - throw new IllegalStateException("You must clear the old connection state before you may set a new connection state."); - } - - // Store the connection details. - shellState = ShellState.builder() - .setConnectionState( ConnectionState.CONNECTED_TO_STORAGE ) - .setAccumuloConnectionDetails( connectionDetails ) - .setConnectedCommands( connectedCommands ) - .build(); - } finally { - lock.unlock(); - } - } - - /** - * This method indicates a shift into the {@link ConnectionState#CONNECTED_TO_INSTANCE} state. - * <p/> - * Store the name of the Rya instance all commands will be executed against. - * - * @param instanceName - The name of the Rya instance. (not null) - * @throws IllegalStateException Thrown if the shell is disconnected. - */ - public void connectedToInstance(final String instanceName) throws IllegalStateException { - requireNonNull(instanceName); - - lock.lock(); - try { - // Verify the Rya Shell is connected to a storage. - if(shellState.getConnectionState() == ConnectionState.DISCONNECTED) { - throw new IllegalStateException("You can not set a Rya Instance Name before connecting to a Rya Storage."); - } - - // Set the instance name. - shellState = ShellState.builder( shellState ) - .setConnectionState(ConnectionState.CONNECTED_TO_INSTANCE) - .setRyaInstanceName( instanceName ) - .build(); - } finally { - lock.unlock(); - } - } - - /** - * This method indicates a shift into the {@link DISCONNECTED} state. - * <p/> - * Clears all of the values associated with a Rya Storage/Instance connection. - * If the shell is already disconnected, then this method does not do anything. - */ - public void disconnected() { - lock.lock(); - try { - shellState = ShellState.builder() - .setConnectionState(ConnectionState.DISCONNECTED) - .build(); - } finally { - lock.unlock(); - } - } - - /** - * Enumerates the various states a Rya Shell may be in. - */ - public static enum ConnectionState { - /** - * The shell is not connected to a Rya Storage. - */ - DISCONNECTED, - - /** - * The shell is connected to a Rya Storage, but a specific instance hasn't been set. - */ - CONNECTED_TO_STORAGE, - - /** - * The shell is connected to Rya Storage and a specific Rya Instance. - */ - CONNECTED_TO_INSTANCE; - } - - /** - * Values that define the state of a Rya Shell. - */ - @Immutable - @DefaultAnnotation(NonNull.class) - public static final class ShellState { - // Indicates the state of the shell. - private final ConnectionState connectionState; - - // Connection specific values. - private final Optional<AccumuloConnectionDetails> connectionDetails; - private final Optional<RyaClient> connectedCommands; - - // Instance specific values. - private final Optional<String> instanceName; - - private ShellState( - final ConnectionState connectionState, - final Optional<AccumuloConnectionDetails> connectionDetails, - final Optional<RyaClient> connectedCommands, - final Optional<String> instanceName) { - this.connectionState = requireNonNull(connectionState); - this.connectionDetails = requireNonNull(connectionDetails); - this.connectedCommands = requireNonNull(connectedCommands); - this.instanceName = requireNonNull(instanceName); - } - - /** - * @return The {@link ConnectionState} of the Rya Shell. - */ - public ConnectionState getConnectionState() { - return connectionState; - } - - /** - * @return Metadata about the Accumulo connection. The value will not be present - * if the Rya Shell is not connected to a storage. - */ - public Optional<AccumuloConnectionDetails> getConnectionDetails() { - return connectionDetails; - } - - /** - * @return The {@link RyaClient} to use when a command on the shell is issued. - * The value will not be present if the Rya Shell is not connected to a storage. - */ - public Optional<RyaClient> getConnectedCommands() { - return connectedCommands; - } - - /** - * @return The name of the Rya Instance the Rya Shell is issuing commands to. - * The value will not be present if the Rya Shell is not connected to a - * storage or if a target instance has not been set yet. - */ - public Optional<String> getRyaInstanceName() { - return instanceName; - } - - @Override - public int hashCode() { - return Objects.hash(connectionState, connectionDetails, connectedCommands, instanceName); - } - - @Override - public boolean equals(final Object obj) { - if(this == obj) { - return true; - } - if(obj instanceof ShellState) { - final ShellState state = (ShellState)obj; - return Objects.equals(connectionState, state.connectionState) && - Objects.equals(connectionDetails, state.connectionDetails) && - Objects.equals(connectedCommands, state.connectedCommands) && - Objects.equals(instanceName, state.instanceName); - } - return false; - } - - /** - * @return An empty instance of {@link Builder}. - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Create an instance of {@link Builder} populated with the values of {code shellState}. - * - * @param shellState - The initial state of the Builder. - * @return An instance of {@link Builder} populated with the values - * of {code shellState}. - */ - public static Builder builder(final ShellState shellState) { - return new Builder(shellState); - } - - /** - * Builds instances of {@link ShellState}. - */ - @DefaultAnnotation(NonNull.class) - public static class Builder { - private ConnectionState connectionState; - - // Connection specific values. - private AccumuloConnectionDetails connectionDetails; - private RyaClient connectedCommands; - - // Instance specific values. - private String instanceName; - - /** - * Constructs an empty instance of {@link Builder}. - */ - public Builder() { } - - /** - * Constructs an instance of {@builder} initialized with the values - * of a {@link ShellState}. - * - * @param shellState - The initial state of the builder. (not null) - */ - public Builder(final ShellState shellState) { - this.connectionState = shellState.getConnectionState(); - this.connectionDetails = shellState.getConnectionDetails().orNull(); - this.connectedCommands = shellState.getConnectedCommands().orNull(); - this.instanceName = shellState.getRyaInstanceName().orNull(); - } - - /** - * @param connectionState - The {@link ConnectionState} of the Rya Shell. - * @return This {@link Builder} so that method invocations may be chained. - */ - public Builder setConnectionState(@Nullable final ConnectionState connectionState) { - this.connectionState = connectionState; - return this; - } - - /** - * @param connectionDetails - Metadata about the Accumulo connection. - * @return This {@link Builder} so that method invocations may be chained. - */ - public Builder setAccumuloConnectionDetails(@Nullable final AccumuloConnectionDetails connectionDetails) { - this.connectionDetails = connectionDetails; - return this; - } - - /** - * @param connectedCommands - The {@link RyaClient} to use when a command on the shell is issued. - * @return This {@link Builder} so that method invocations may be chained. - */ - public Builder setConnectedCommands(@Nullable final RyaClient connectedCommands) { - this.connectedCommands = connectedCommands; - return this; - } - - /** - * @param instanceName - The name of the Rya Instance the Rya Shell is issuing commands to. - * @return This {@link Builder} so that method invocations may be chained. - */ - public Builder setRyaInstanceName(@Nullable final String instanceName) { - this.instanceName = instanceName; - return this; - } - - /** - * @return An instance of {@link ShellState} built using this builder's values. - */ - public ShellState build() { - return new ShellState( - connectionState, - Optional.fromNullable(connectionDetails), - Optional.fromNullable(connectedCommands), - Optional.fromNullable(instanceName)); - } - } - } -} \ No newline at end of file