Skip to content

Commit

Permalink
Added method to get list of settings, make sure workdir is available …
Browse files Browse the repository at this point in the history
…for sparql/convert/load/export/verify
  • Loading branch information
barthanssens committed Sep 5, 2019
1 parent 7bd136a commit 0da054b
Show file tree
Hide file tree
Showing 16 changed files with 195 additions and 53 deletions.
Expand Up @@ -22,4 +22,11 @@ public interface Command {
* @throws IOException if a problem occurs reading or writing
*/
void execute(String... parameters) throws IOException;

/**
* Return the names of the settings used.
*
* @return string array of settings
*/
String[] usesSettings();
}
Expand Up @@ -239,11 +239,11 @@ public void set(Boolean val) {
register(new Create(consoleIO, STATE));
register(new Drop(consoleIO, STATE, close));
// handling data
register(new Verify(consoleIO));
register(new Load(consoleIO, STATE));
register(new Verify(consoleIO, settingMap));
register(new Load(consoleIO, STATE, settingMap));
register(new Clear(consoleIO, STATE));
register(new Export(consoleIO, STATE));
register(new Convert(consoleIO, STATE));
register(new Export(consoleIO, STATE, settingMap));
register(new Convert(consoleIO, STATE, settingMap));
// parameters
register(new SetParameters(consoleIO, STATE, settingMap));
}
Expand Down
27 changes: 27 additions & 0 deletions tools/console/src/main/java/org/eclipse/rdf4j/console/Util.java
Expand Up @@ -13,6 +13,7 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Map;
import org.eclipse.rdf4j.console.setting.WorkDir;

import org.eclipse.rdf4j.model.IRI;
import org.eclipse.rdf4j.model.Literal;
Expand Down Expand Up @@ -86,6 +87,32 @@ public static Path getPath(String file) {
return path;
}

/**
* Check if a string looks like a HTTP, HTTPS or file URI.
*
* @param str string
* @return true if
*/
public static boolean isHttpOrFile(String str) {
String lower = str.toLowerCase();
return lower.startsWith("http://") || lower.startsWith("https://") || lower.startsWith("file://");
}

/**
* Get path from file string if it's absolute, or from working directory if the file is relative.
*
* @param workDir working dir
* @param file file name
* @return path normalized path
*/
public static Path getNormalizedPath(Path workDir, String file) {
Path path = Paths.get(file);
if (!path.isAbsolute() && (workDir != null)) {
path = workDir.resolve(file);
}
return path.normalize();
}

/**
* Get string representation for a value. If the value is an IRI and is part of a known namespace, the prefix will
* be used to shorten it.
Expand Down
Expand Up @@ -8,11 +8,13 @@
package org.eclipse.rdf4j.console.command;

import java.io.IOException;
import java.util.Map;

import org.eclipse.rdf4j.console.Help;
import org.eclipse.rdf4j.console.Command;
import org.eclipse.rdf4j.console.ConsoleIO;
import org.eclipse.rdf4j.console.ConsoleState;
import org.eclipse.rdf4j.console.setting.ConsoleSetting;

/**
* Abstract command
Expand All @@ -23,10 +25,12 @@ public abstract class ConsoleCommand implements Command, Help {
final ConsoleIO consoleIO;
final ConsoleState state;

final Map<String, ConsoleSetting> settings;

/**
* Get console IO
*
* @return
* @return console IO
*/
public ConsoleIO getConsoleIO() {
return this.consoleIO;
Expand All @@ -35,12 +39,21 @@ public ConsoleIO getConsoleIO() {
/**
* Get console state
*
* @return
* @return console state
*/
public ConsoleState getConsoleState() {
return this.state;
}

/**
* Get console settings map
*
* @return map of console settings
*/
public Map<String, ConsoleSetting> getConsoleSettings() {
return this.settings;
}

/**
* Get short description, small enough to fit on one console row
*
Expand All @@ -62,8 +75,8 @@ public String getHelpLong() {
}

@Override
public void execute(String... parameters) throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
public String[] usesSettings() {
return new String[0];
}

/**
Expand All @@ -74,6 +87,7 @@ public void execute(String... parameters) throws IOException {
public ConsoleCommand(ConsoleIO consoleIO) {
this.consoleIO = consoleIO;
this.state = null;
this.settings = null;
}

/**
Expand All @@ -85,6 +99,24 @@ public ConsoleCommand(ConsoleIO consoleIO) {
public ConsoleCommand(ConsoleIO consoleIO, ConsoleState state) {
this.consoleIO = consoleIO;
this.state = state;
this.settings = null;
}

/**
* Constructor
*
* @param consoleIO console IO
* @param state console state
* @param settings console settings
*/
public ConsoleCommand(ConsoleIO consoleIO, ConsoleState state, Map<String, ConsoleSetting> settings) {
this.consoleIO = consoleIO;
this.state = state;
this.settings = settings;
}

@Override
public void execute(String... parameters) throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
}
Expand Up @@ -12,11 +12,14 @@
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Map;
import java.util.Optional;

import org.eclipse.rdf4j.console.ConsoleIO;
import org.eclipse.rdf4j.console.ConsoleState;
import org.eclipse.rdf4j.console.Util;
import org.eclipse.rdf4j.console.setting.ConsoleSetting;
import org.eclipse.rdf4j.console.setting.WorkDir;
import org.eclipse.rdf4j.rio.RDFFormat;
import org.eclipse.rdf4j.rio.RDFHandlerException;
import org.eclipse.rdf4j.rio.RDFParseException;
Expand Down Expand Up @@ -50,6 +53,22 @@ public String getHelpLong() {
return PrintHelp.USAGE + "convert <fileFrom> <fileTo> Converts a file from one RDF format to another\n";
}

@Override
public String[] usesSettings() {
return new String[] { WorkDir.NAME };
}

/**
* Constructor
*
* @param consoleIO
* @param state
* @param settings
*/
public Convert(ConsoleIO consoleIO, ConsoleState state, Map<String, ConsoleSetting> settings) {
super(consoleIO, state, settings);
}

@Override
public void execute(String... tokens) {
if (tokens.length < 3) {
Expand All @@ -60,6 +79,15 @@ public void execute(String... tokens) {
convert(tokens[1], tokens[2]);
}

/**
* Get working dir setting.
*
* @return path of working dir
*/
private Path getWorkDir() {
return ((WorkDir) settings.get(WorkDir.NAME)).get();
}

/**
* Convert a file
*
Expand Down Expand Up @@ -125,14 +153,4 @@ private void convert(String fileFrom, String fileTo) {
consoleIO.writeError("Failed to convert data: " + e.getMessage());
}
}

/**
* Constructor
*
* @param consoleIO
* @param state
*/
public Convert(ConsoleIO consoleIO, ConsoleState state) {
super(consoleIO, state);
}
}
Expand Up @@ -8,6 +8,7 @@
package org.eclipse.rdf4j.console.command;

import java.io.IOException;

import org.eclipse.rdf4j.console.ConsoleIO;
import org.eclipse.rdf4j.console.ConsoleState;
import org.eclipse.rdf4j.console.LockRemover;
Expand Down
Expand Up @@ -13,10 +13,13 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Map;

import org.eclipse.rdf4j.console.ConsoleIO;
import org.eclipse.rdf4j.console.ConsoleState;
import org.eclipse.rdf4j.console.Util;
import org.eclipse.rdf4j.console.setting.ConsoleSetting;
import org.eclipse.rdf4j.console.setting.WorkDir;

import org.eclipse.rdf4j.model.Resource;
import org.eclipse.rdf4j.repository.Repository;
Expand Down Expand Up @@ -53,6 +56,22 @@ public String getHelpLong() {
+ "export <file> (<uri>|null)... Exports the specified context(s) to a file\n";
}

@Override
public String[] usesSettings() {
return new String[] { WorkDir.NAME };
}

/**
* Constructor
*
* @param consoleIO
* @param state
* @param settings
*/
public Export(ConsoleIO consoleIO, ConsoleState state, Map<String, ConsoleSetting> settings) {
super(consoleIO, state, settings);
}

@Override
public void execute(String... tokens) {
Repository repository = state.getRepository();
Expand All @@ -78,6 +97,15 @@ public void execute(String... tokens) {
export(repository, fileName, contexts);
}

/**
* Get working dir setting.
*
* @return path of working dir
*/
private Path getWorkDir() {
return ((WorkDir) settings.get(WorkDir.NAME)).get();
}

/**
* Export to a file
*
Expand Down Expand Up @@ -124,14 +152,4 @@ private void export(Repository repository, String fileName, Resource... contexts
consoleIO.writeError("Failed to export data: " + e.getMessage());
}
}

/**
* Constructor
*
* @param consoleIO
* @param state
*/
public Export(ConsoleIO consoleIO, ConsoleState state) {
super(consoleIO, state);
}
}
Expand Up @@ -11,10 +11,15 @@
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.Path;
import java.util.Map;

import org.eclipse.rdf4j.console.ConsoleIO;
import org.eclipse.rdf4j.console.ConsoleState;
import org.eclipse.rdf4j.console.LockRemover;
import org.eclipse.rdf4j.console.Util;
import org.eclipse.rdf4j.console.setting.ConsoleSetting;
import org.eclipse.rdf4j.console.setting.WorkDir;

import org.eclipse.rdf4j.model.Resource;
import org.eclipse.rdf4j.repository.Repository;
Expand Down Expand Up @@ -54,14 +59,20 @@ public String getHelpLong() {
+ "Loads the specified data file into the current repository\n";
}

@Override
public String[] usesSettings() {
return new String[] { WorkDir.NAME };
}

/**
* Constructor
*
* @param consoleIO
* @param state
* @param settings
*/
public Load(ConsoleIO consoleIO, ConsoleState state) {
super(consoleIO, state);
public Load(ConsoleIO consoleIO, ConsoleState state, Map<String, ConsoleSetting> settings) {
super(consoleIO, state, settings);
}

@Override
Expand Down Expand Up @@ -94,6 +105,15 @@ public void execute(final String... tokens) {
}
}

/**
* Get working dir setting.
*
* @return path of working dir
*/
private Path getWorkDir() {
return ((WorkDir) settings.get(WorkDir.NAME)).get();
}

/**
* Load data into a repository
*
Expand All @@ -106,13 +126,18 @@ private void load(Repository repository, String baseURI, String context, final S
final String dataPath = tokens[1];
URL dataURL = null;
File dataFile = null;
try {
dataURL = new URL(dataPath);
// dataPath is a URI
} catch (MalformedURLException e) {

if (Util.isHttpOrFile(dataPath)) {
try {
dataURL = new URL(dataPath);
} catch (MalformedURLException e) {

}
} else {
// dataPath is a file
dataFile = new File(dataPath);
dataFile = Util.getNormalizedPath(getWorkDir(), dataPath).toFile();
}

try {
addData(repository, baseURI, context, dataURL, dataFile);
} catch (RepositoryReadOnlyException e) {
Expand Down

0 comments on commit 0da054b

Please sign in to comment.