You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2014/10/15 14:44:53 UTC
git commit: add missing substring function (accidently forgotten)
Repository: marmotta
Updated Branches:
refs/heads/develop 1420a56d6 -> 174ad5abd
add missing substring function (accidently forgotten)
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/174ad5ab
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/174ad5ab
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/174ad5ab
Branch: refs/heads/develop
Commit: 174ad5abd80af45195887402154748459c9062ce
Parents: 1420a56
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Wed Oct 15 14:45:04 2014 +0200
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Wed Oct 15 14:45:04 2014 +0200
----------------------------------------------------------------------
.../kiwi/sparql/function/string/NSubstring.java | 123 +++++++++++++++++++
...marmotta.kiwi.sparql.function.NativeFunction | 3 +-
2 files changed, 125 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/marmotta/blob/174ad5ab/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/string/NSubstring.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/string/NSubstring.java b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/string/NSubstring.java
new file mode 100644
index 0000000..afdddd9
--- /dev/null
+++ b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/string/NSubstring.java
@@ -0,0 +1,123 @@
+/*
+ * 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.marmotta.kiwi.sparql.function.string;
+
+import org.apache.marmotta.kiwi.persistence.KiWiDialect;
+import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
+import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
+import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
+import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
+import org.openrdf.query.algebra.evaluation.function.string.Substring;
+
+/**
+ * Add file description here!
+ *
+ * @author Sebastian Schaffert (sschaffert@apache.org)
+ */
+public class NSubstring extends Substring implements NativeFunction {
+
+ /**
+ * Return true if this function has available native support for the given dialect
+ *
+ * @param dialect
+ * @return
+ */
+ @Override
+ public boolean isSupported(KiWiDialect dialect) {
+ return dialect instanceof PostgreSQLDialect || dialect instanceof H2Dialect || dialect instanceof MySQLDialect;
+ }
+
+
+ /**
+ * Return a string representing how this function is translated into SQL in the given dialect
+ *
+ * @param dialect
+ * @param args
+ * @return
+ */
+ @Override
+ public String getNative(KiWiDialect dialect, String... args) {
+ if (dialect instanceof PostgreSQLDialect) {
+ if(args.length == 2) {
+ return String.format("substring(%1$s from %2$s)", args[0], args[1]);
+ } else if(args.length == 3) {
+ return String.format("substring(%1$s from %2$s for %3$s)", args[0], args[1], args[2]);
+ }
+ } else if (dialect instanceof H2Dialect) {
+ if(args.length == 2) {
+ return String.format("substring(%1$s,%2$s)", args[0], args[1]);
+ } else if(args.length == 3) {
+ return String.format("substring(%1$s,%2$s,%3$s)", args[0], args[1], args[2]);
+ }
+ } else if(dialect instanceof MySQLDialect) {
+ if(args.length == 2) {
+ return String.format("substring(%1$s,%2$s)", args[0], args[1]);
+ } else if(args.length == 3) {
+ return String.format("substring(%1$s,%2$s,%3$s)", args[0], args[1], args[2]);
+ }
+ }
+ throw new UnsupportedOperationException("SUBSTRING-AFTER not supported in dialect "+dialect);
+ }
+
+ /**
+ * Get the return type of the function. This is needed for SQL type casting inside KiWi.
+ *
+ * @return
+ */
+ @Override
+ public OPTypes getReturnType() {
+ return OPTypes.STRING;
+ }
+
+ /**
+ * Get the argument type of the function for the arg'th argument (starting to count at 0).
+ * This is needed for SQL type casting inside KiWi.
+ *
+ * @param arg
+ * @return
+ */
+ @Override
+ public OPTypes getArgumentType(int arg) {
+ if(arg == 0) {
+ return OPTypes.STRING;
+ } else {
+ return OPTypes.INT;
+ }
+ }
+
+ /**
+ * Return the minimum number of arguments this function requires.
+ *
+ * @return
+ */
+ @Override
+ public int getMinArgs() {
+ return 2;
+ }
+
+ /**
+ * Return the maximum number of arguments this function can take
+ *
+ * @return
+ */
+ @Override
+ public int getMaxArgs() {
+ return 3;
+ }
+}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/174ad5ab/libraries/kiwi/kiwi-sparql/src/main/resources/META-INF/services/org.apache.marmotta.kiwi.sparql.function.NativeFunction
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-sparql/src/main/resources/META-INF/services/org.apache.marmotta.kiwi.sparql.function.NativeFunction b/libraries/kiwi/kiwi-sparql/src/main/resources/META-INF/services/org.apache.marmotta.kiwi.sparql.function.NativeFunction
index 2a1d428..7fd19fb 100644
--- a/libraries/kiwi/kiwi-sparql/src/main/resources/META-INF/services/org.apache.marmotta.kiwi.sparql.function.NativeFunction
+++ b/libraries/kiwi/kiwi-sparql/src/main/resources/META-INF/services/org.apache.marmotta.kiwi.sparql.function.NativeFunction
@@ -60,4 +60,5 @@ org.apache.marmotta.kiwi.sparql.function.string.NStrBefore
org.apache.marmotta.kiwi.sparql.function.string.NStrEnds
org.apache.marmotta.kiwi.sparql.function.string.NStrLen
org.apache.marmotta.kiwi.sparql.function.string.NStrStarts
-org.apache.marmotta.kiwi.sparql.function.string.NUpperCase
\ No newline at end of file
+org.apache.marmotta.kiwi.sparql.function.string.NUpperCase
+org.apache.marmotta.kiwi.sparql.function.string.NSubstring
\ No newline at end of file