embulk-input-dynamodb 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/master.yml +34 -0
- data/.github/workflows/test.yml +30 -0
- data/.scalafmt.conf +5 -0
- data/CHANGELOG.md +49 -0
- data/README.md +204 -54
- data/build.gradle +53 -44
- data/example/config-deprecated.yml +20 -0
- data/example/config-query-as-json.yml +18 -0
- data/example/config-query.yml +22 -0
- data/example/config-scan.yml +18 -0
- data/example/prepare_dynamodb_table.sh +67 -0
- data/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/gradle/wrapper/gradle-wrapper.properties +1 -2
- data/gradlew +67 -48
- data/gradlew.bat +20 -10
- data/{test/run_dynamodb_local.sh → run_dynamodb_local.sh} +2 -1
- data/settings.gradle +1 -0
- data/src/main/scala/org/embulk/input/dynamodb/DeprecatedDynamodbInputPlugin.scala +73 -0
- data/src/main/scala/org/embulk/input/dynamodb/DynamodbInputPlugin.scala +76 -25
- data/src/main/scala/org/embulk/input/dynamodb/PluginTask.scala +132 -32
- data/src/main/scala/org/embulk/input/dynamodb/aws/Aws.scala +44 -0
- data/src/main/scala/org/embulk/input/dynamodb/aws/AwsClientConfiguration.scala +37 -0
- data/src/main/scala/org/embulk/input/dynamodb/aws/AwsCredentials.scala +240 -0
- data/src/main/scala/org/embulk/input/dynamodb/aws/AwsDynamodbConfiguration.scala +35 -0
- data/src/main/scala/org/embulk/input/dynamodb/aws/AwsEndpointConfiguration.scala +79 -0
- data/src/main/scala/org/embulk/input/dynamodb/aws/HttpProxy.scala +61 -0
- data/src/main/scala/org/embulk/input/dynamodb/deprecated/AttributeValueHelper.scala +72 -0
- data/src/main/scala/org/embulk/input/dynamodb/{Filter.scala → deprecated/Filter.scala} +3 -3
- data/src/main/scala/org/embulk/input/dynamodb/{FilterConfig.scala → deprecated/FilterConfig.scala} +13 -13
- data/src/main/scala/org/embulk/input/dynamodb/{ope → deprecated/ope}/AbstractOperation.scala +36 -18
- data/src/main/scala/org/embulk/input/dynamodb/{ope → deprecated/ope}/QueryOperation.scala +21 -13
- data/src/main/scala/org/embulk/input/dynamodb/{ope → deprecated/ope}/ScanOperation.scala +20 -13
- data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbAttributeValue.scala +154 -0
- data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbAttributeValueEmbulkTypeTransformable.scala +245 -0
- data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbAttributeValueType.scala +33 -0
- data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbItemColumnVisitor.scala +50 -0
- data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbItemConsumer.scala +40 -0
- data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbItemIterator.scala +19 -0
- data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbItemReader.scala +64 -0
- data/src/main/scala/org/embulk/input/dynamodb/item/DynamodbItemSchema.scala +135 -0
- data/src/main/scala/org/embulk/input/dynamodb/operation/AbstractDynamodbOperation.scala +169 -0
- data/src/main/scala/org/embulk/input/dynamodb/operation/DynamodbOperationProxy.scala +59 -0
- data/src/main/scala/org/embulk/input/dynamodb/operation/DynamodbQueryOperation.scala +72 -0
- data/src/main/scala/org/embulk/input/dynamodb/operation/DynamodbScanOperation.scala +93 -0
- data/src/main/scala/org/embulk/input/dynamodb/operation/EmbulkDynamodbOperation.scala +15 -0
- data/src/main/scala/org/embulk/input/dynamodb/package.scala +4 -9
- data/src/test/scala/org/embulk/input/dynamodb/AttributeValueHelperTest.scala +245 -101
- data/src/test/scala/org/embulk/input/dynamodb/AwsCredentialsTest.scala +150 -97
- data/src/test/scala/org/embulk/input/dynamodb/DynamodbQueryOperationTest.scala +188 -0
- data/src/test/scala/org/embulk/input/dynamodb/DynamodbScanOperationTest.scala +181 -0
- data/src/test/scala/org/embulk/input/dynamodb/testutil/EmbulkTestBase.scala +85 -0
- metadata +73 -49
- data/circle.yml +0 -16
- data/config/checkstyle/checkstyle.xml +0 -128
- data/config/checkstyle/default.xml +0 -108
- data/src/main/scala/org/embulk/input/dynamodb/AttributeValueHelper.scala +0 -41
- data/src/main/scala/org/embulk/input/dynamodb/AwsCredentials.scala +0 -63
- data/src/main/scala/org/embulk/input/dynamodb/DynamoDBClient.scala +0 -23
- data/src/test/resources/yaml/authMethodBasic.yml +0 -21
- data/src/test/resources/yaml/authMethodBasic_Error.yml +0 -19
- data/src/test/resources/yaml/authMethodEnv.yml +0 -19
- data/src/test/resources/yaml/authMethodProfile.yml +0 -20
- data/src/test/resources/yaml/dynamodb-local-query.yml +0 -25
- data/src/test/resources/yaml/dynamodb-local-scan.yml +0 -23
- data/src/test/resources/yaml/notSetAuthMethod.yml +0 -20
- data/src/test/scala/org/embulk/input/dynamodb/ope/QueryOperationTest.scala +0 -83
- data/src/test/scala/org/embulk/input/dynamodb/ope/ScanOperationTest.scala +0 -83
- data/test/create_table.sh +0 -16
- data/test/put_items.sh +0 -25
@@ -0,0 +1,20 @@
|
|
1
|
+
in:
|
2
|
+
type: dynamodb
|
3
|
+
region: us-east-1
|
4
|
+
endpoint: http://localhost:8000
|
5
|
+
operation: scan
|
6
|
+
table: embulk-input-dynamodb_example
|
7
|
+
auth_method: basic
|
8
|
+
access_key_id: dummy
|
9
|
+
secret_access_key: dummy
|
10
|
+
columns:
|
11
|
+
- {name: primary-key, type: string}
|
12
|
+
- {name: sort-key, type: long}
|
13
|
+
- {name: doubleValue, type: double}
|
14
|
+
- {name: boolValue, type: boolean}
|
15
|
+
- {name: listValue, type: json}
|
16
|
+
- {name: mapValue, type: json}
|
17
|
+
|
18
|
+
out:
|
19
|
+
type: stdout
|
20
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
in:
|
2
|
+
type: dynamodb
|
3
|
+
region: us-east-1
|
4
|
+
endpoint: http://localhost:8000
|
5
|
+
query:
|
6
|
+
key_condition_expression: "#x = :v"
|
7
|
+
expression_attribute_names:
|
8
|
+
"#x": primary-key
|
9
|
+
expression_attribute_values:
|
10
|
+
":v": {S: key-1}
|
11
|
+
table: embulk-input-dynamodb_example
|
12
|
+
auth_method: basic
|
13
|
+
access_key_id: dummy
|
14
|
+
secret_access_key: dummy
|
15
|
+
|
16
|
+
out:
|
17
|
+
type: stdout
|
18
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
in:
|
2
|
+
type: dynamodb
|
3
|
+
region: us-east-1
|
4
|
+
endpoint: http://localhost:8000
|
5
|
+
query:
|
6
|
+
key_condition_expression: "#x = :v"
|
7
|
+
expression_attribute_names:
|
8
|
+
"#x": primary-key
|
9
|
+
expression_attribute_values:
|
10
|
+
":v": {S: key-1}
|
11
|
+
table: embulk-input-dynamodb_example
|
12
|
+
auth_method: basic
|
13
|
+
access_key_id: dummy
|
14
|
+
secret_access_key: dummy
|
15
|
+
columns:
|
16
|
+
- {name: primary-key, type: string}
|
17
|
+
- {name: sort-key, type: long}
|
18
|
+
- {name: value, type: string}
|
19
|
+
|
20
|
+
out:
|
21
|
+
type: stdout
|
22
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
in:
|
2
|
+
type: dynamodb
|
3
|
+
region: us-east-1
|
4
|
+
endpoint: http://localhost:8000
|
5
|
+
scan:
|
6
|
+
total_segment: 20
|
7
|
+
table: embulk-input-dynamodb_example
|
8
|
+
auth_method: basic
|
9
|
+
access_key_id: dummy
|
10
|
+
secret_access_key: dummy
|
11
|
+
columns:
|
12
|
+
- {name: primary-key, type: string}
|
13
|
+
- {name: sort-key, type: long}
|
14
|
+
- {name: value, type: string}
|
15
|
+
|
16
|
+
out:
|
17
|
+
type: stdout
|
18
|
+
|
@@ -0,0 +1,67 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
if aws dynamodb describe-table --table-name='embulk-input-dynamodb_example' --endpoint-url http://localhost:8000 --region us-east-1 2>/dev/null; then
|
4
|
+
aws dynamodb delete-table --table-name='embulk-input-dynamodb_example' \
|
5
|
+
--endpoint-url http://localhost:8000 \
|
6
|
+
--region us-east-1
|
7
|
+
fi
|
8
|
+
|
9
|
+
aws dynamodb create-table \
|
10
|
+
--table-name='embulk-input-dynamodb_example' \
|
11
|
+
--attribute-definitions='[
|
12
|
+
{"AttributeName":"primary-key","AttributeType":"S"},
|
13
|
+
{"AttributeName":"sort-key","AttributeType":"N"}
|
14
|
+
]' \
|
15
|
+
--key-schema='[
|
16
|
+
{"AttributeName":"primary-key","KeyType":"HASH"},
|
17
|
+
{"AttributeName":"sort-key","KeyType":"RANGE"}
|
18
|
+
]' \
|
19
|
+
--provisioned-throughput='{"ReadCapacityUnits":5, "WriteCapacityUnits":5}' \
|
20
|
+
--endpoint-url http://localhost:8000 \
|
21
|
+
--region us-east-1
|
22
|
+
|
23
|
+
aws dynamodb put-item \
|
24
|
+
--table-name='embulk-input-dynamodb_example' \
|
25
|
+
--item='{
|
26
|
+
"primary-key" : { "S" : "key-1" },
|
27
|
+
"sort-key" : { "N" : "0" },
|
28
|
+
"doubleValue" : { "N" : "42.195" },
|
29
|
+
"boolValue" : { "BOOL" : true },
|
30
|
+
"listValue" : { "L":
|
31
|
+
[
|
32
|
+
{ "S" : "list-value"},
|
33
|
+
{ "N" : "123"}
|
34
|
+
]
|
35
|
+
},
|
36
|
+
"mapValue" : { "M":
|
37
|
+
{
|
38
|
+
"map-key-1" : { "S" : "map-value-1" },
|
39
|
+
"map-key-2" : { "N" : "456" }
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}' \
|
43
|
+
--endpoint-url http://localhost:8000 \
|
44
|
+
--region us-east-1
|
45
|
+
|
46
|
+
aws dynamodb put-item \
|
47
|
+
--table-name='embulk-input-dynamodb_example' \
|
48
|
+
--item='{
|
49
|
+
"primary-key" : { "S" : "key-1" },
|
50
|
+
"sort-key" : { "N" : "1" },
|
51
|
+
"doubleValue" : { "NULL" : true },
|
52
|
+
"boolValue" : { "N" : "1" },
|
53
|
+
"listValue" : { "L":
|
54
|
+
[
|
55
|
+
{ "NULL" : true},
|
56
|
+
{ "N" : "123"}
|
57
|
+
]
|
58
|
+
},
|
59
|
+
"mapValue" : { "M":
|
60
|
+
{
|
61
|
+
"map-key-1" : { "S" : "map-value-1" },
|
62
|
+
"map-key-2" : { "N" : "456" }
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}' \
|
66
|
+
--endpoint-url http://localhost:8000 \
|
67
|
+
--region us-east-1
|
Binary file
|
@@ -1,6 +1,5 @@
|
|
1
|
-
#Wed Jan 13 12:41:02 JST 2016
|
2
1
|
distributionBase=GRADLE_USER_HOME
|
3
2
|
distributionPath=wrapper/dists
|
3
|
+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-bin.zip
|
4
4
|
zipStoreBase=GRADLE_USER_HOME
|
5
5
|
zipStorePath=wrapper/dists
|
6
|
-
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-bin.zip
|
data/gradlew
CHANGED
@@ -1,4 +1,20 @@
|
|
1
|
-
#!/usr/bin/env
|
1
|
+
#!/usr/bin/env sh
|
2
|
+
|
3
|
+
#
|
4
|
+
# Copyright 2015 the original author or authors.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
2
18
|
|
3
19
|
##############################################################################
|
4
20
|
##
|
@@ -6,20 +22,38 @@
|
|
6
22
|
##
|
7
23
|
##############################################################################
|
8
24
|
|
9
|
-
#
|
10
|
-
|
25
|
+
# Attempt to set APP_HOME
|
26
|
+
# Resolve links: $0 may be a link
|
27
|
+
PRG="$0"
|
28
|
+
# Need this for relative symlinks.
|
29
|
+
while [ -h "$PRG" ] ; do
|
30
|
+
ls=`ls -ld "$PRG"`
|
31
|
+
link=`expr "$ls" : '.*-> \(.*\)$'`
|
32
|
+
if expr "$link" : '/.*' > /dev/null; then
|
33
|
+
PRG="$link"
|
34
|
+
else
|
35
|
+
PRG=`dirname "$PRG"`"/$link"
|
36
|
+
fi
|
37
|
+
done
|
38
|
+
SAVED="`pwd`"
|
39
|
+
cd "`dirname \"$PRG\"`/" >/dev/null
|
40
|
+
APP_HOME="`pwd -P`"
|
41
|
+
cd "$SAVED" >/dev/null
|
11
42
|
|
12
43
|
APP_NAME="Gradle"
|
13
44
|
APP_BASE_NAME=`basename "$0"`
|
14
45
|
|
46
|
+
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
47
|
+
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
48
|
+
|
15
49
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
16
50
|
MAX_FD="maximum"
|
17
51
|
|
18
|
-
warn (
|
52
|
+
warn () {
|
19
53
|
echo "$*"
|
20
54
|
}
|
21
55
|
|
22
|
-
die (
|
56
|
+
die () {
|
23
57
|
echo
|
24
58
|
echo "$*"
|
25
59
|
echo
|
@@ -30,6 +64,7 @@ die ( ) {
|
|
30
64
|
cygwin=false
|
31
65
|
msys=false
|
32
66
|
darwin=false
|
67
|
+
nonstop=false
|
33
68
|
case "`uname`" in
|
34
69
|
CYGWIN* )
|
35
70
|
cygwin=true
|
@@ -40,31 +75,11 @@ case "`uname`" in
|
|
40
75
|
MINGW* )
|
41
76
|
msys=true
|
42
77
|
;;
|
78
|
+
NONSTOP* )
|
79
|
+
nonstop=true
|
80
|
+
;;
|
43
81
|
esac
|
44
82
|
|
45
|
-
# For Cygwin, ensure paths are in UNIX format before anything is touched.
|
46
|
-
if $cygwin ; then
|
47
|
-
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
48
|
-
fi
|
49
|
-
|
50
|
-
# Attempt to set APP_HOME
|
51
|
-
# Resolve links: $0 may be a link
|
52
|
-
PRG="$0"
|
53
|
-
# Need this for relative symlinks.
|
54
|
-
while [ -h "$PRG" ] ; do
|
55
|
-
ls=`ls -ld "$PRG"`
|
56
|
-
link=`expr "$ls" : '.*-> \(.*\)$'`
|
57
|
-
if expr "$link" : '/.*' > /dev/null; then
|
58
|
-
PRG="$link"
|
59
|
-
else
|
60
|
-
PRG=`dirname "$PRG"`"/$link"
|
61
|
-
fi
|
62
|
-
done
|
63
|
-
SAVED="`pwd`"
|
64
|
-
cd "`dirname \"$PRG\"`/" >&-
|
65
|
-
APP_HOME="`pwd -P`"
|
66
|
-
cd "$SAVED" >&-
|
67
|
-
|
68
83
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
69
84
|
|
70
85
|
# Determine the Java command to use to start the JVM.
|
@@ -90,7 +105,7 @@ location of your Java installation."
|
|
90
105
|
fi
|
91
106
|
|
92
107
|
# Increase the maximum file descriptors if we can.
|
93
|
-
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
108
|
+
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
94
109
|
MAX_FD_LIMIT=`ulimit -H -n`
|
95
110
|
if [ $? -eq 0 ] ; then
|
96
111
|
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
@@ -110,10 +125,11 @@ if $darwin; then
|
|
110
125
|
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
111
126
|
fi
|
112
127
|
|
113
|
-
# For Cygwin, switch paths to Windows format before running java
|
114
|
-
if $cygwin ; then
|
128
|
+
# For Cygwin or MSYS, switch paths to Windows format before running java
|
129
|
+
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
115
130
|
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
116
131
|
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
132
|
+
JAVACMD=`cygpath --unix "$JAVACMD"`
|
117
133
|
|
118
134
|
# We build the pattern for arguments to be converted via cygpath
|
119
135
|
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
@@ -138,27 +154,30 @@ if $cygwin ; then
|
|
138
154
|
else
|
139
155
|
eval `echo args$i`="\"$arg\""
|
140
156
|
fi
|
141
|
-
i
|
157
|
+
i=`expr $i + 1`
|
142
158
|
done
|
143
159
|
case $i in
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
160
|
+
0) set -- ;;
|
161
|
+
1) set -- "$args0" ;;
|
162
|
+
2) set -- "$args0" "$args1" ;;
|
163
|
+
3) set -- "$args0" "$args1" "$args2" ;;
|
164
|
+
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
165
|
+
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
166
|
+
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
167
|
+
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
168
|
+
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
169
|
+
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
154
170
|
esac
|
155
171
|
fi
|
156
172
|
|
157
|
-
#
|
158
|
-
|
159
|
-
|
173
|
+
# Escape application args
|
174
|
+
save () {
|
175
|
+
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
176
|
+
echo " "
|
160
177
|
}
|
161
|
-
|
162
|
-
|
178
|
+
APP_ARGS=`save "$@"`
|
179
|
+
|
180
|
+
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
181
|
+
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
163
182
|
|
164
|
-
exec "$JAVACMD" "
|
183
|
+
exec "$JAVACMD" "$@"
|
data/gradlew.bat
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
@rem
|
2
|
+
@rem Copyright 2015 the original author or authors.
|
3
|
+
@rem
|
4
|
+
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
@rem you may not use this file except in compliance with the License.
|
6
|
+
@rem You may obtain a copy of the License at
|
7
|
+
@rem
|
8
|
+
@rem https://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
@rem
|
10
|
+
@rem Unless required by applicable law or agreed to in writing, software
|
11
|
+
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
@rem See the License for the specific language governing permissions and
|
14
|
+
@rem limitations under the License.
|
15
|
+
@rem
|
16
|
+
|
1
17
|
@if "%DEBUG%" == "" @echo off
|
2
18
|
@rem ##########################################################################
|
3
19
|
@rem
|
@@ -8,14 +24,14 @@
|
|
8
24
|
@rem Set local scope for the variables with windows NT shell
|
9
25
|
if "%OS%"=="Windows_NT" setlocal
|
10
26
|
|
11
|
-
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
12
|
-
set DEFAULT_JVM_OPTS=
|
13
|
-
|
14
27
|
set DIRNAME=%~dp0
|
15
28
|
if "%DIRNAME%" == "" set DIRNAME=.
|
16
29
|
set APP_BASE_NAME=%~n0
|
17
30
|
set APP_HOME=%DIRNAME%
|
18
31
|
|
32
|
+
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
33
|
+
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
34
|
+
|
19
35
|
@rem Find java.exe
|
20
36
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
21
37
|
|
@@ -46,10 +62,9 @@ echo location of your Java installation.
|
|
46
62
|
goto fail
|
47
63
|
|
48
64
|
:init
|
49
|
-
@rem Get command-line arguments, handling
|
65
|
+
@rem Get command-line arguments, handling Windows variants
|
50
66
|
|
51
67
|
if not "%OS%" == "Windows_NT" goto win9xME_args
|
52
|
-
if "%@eval[2+2]" == "4" goto 4NT_args
|
53
68
|
|
54
69
|
:win9xME_args
|
55
70
|
@rem Slurp the command line arguments.
|
@@ -60,11 +75,6 @@ set _SKIP=2
|
|
60
75
|
if "x%~1" == "x" goto execute
|
61
76
|
|
62
77
|
set CMD_LINE_ARGS=%*
|
63
|
-
goto execute
|
64
|
-
|
65
|
-
:4NT_args
|
66
|
-
@rem Get arguments from the 4NT Shell from JP Software
|
67
|
-
set CMD_LINE_ARGS=%$
|
68
78
|
|
69
79
|
:execute
|
70
80
|
@rem Setup the command line
|
data/settings.gradle
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rootProject.name = 'embulk-input-dynamodb'
|
@@ -0,0 +1,73 @@
|
|
1
|
+
package org.embulk.input.dynamodb
|
2
|
+
|
3
|
+
import java.util.{List => JList}
|
4
|
+
|
5
|
+
import org.embulk.config.{
|
6
|
+
ConfigDiff,
|
7
|
+
ConfigException,
|
8
|
+
ConfigSource,
|
9
|
+
TaskReport,
|
10
|
+
TaskSource
|
11
|
+
}
|
12
|
+
import org.embulk.input.dynamodb.aws.Aws
|
13
|
+
import org.embulk.input.dynamodb.deprecated.ope.{QueryOperation, ScanOperation}
|
14
|
+
import org.embulk.spi.{Exec, InputPlugin, PageOutput, Schema}
|
15
|
+
|
16
|
+
@deprecated(since = "0.3.0")
|
17
|
+
object DeprecatedDynamodbInputPlugin extends InputPlugin {
|
18
|
+
|
19
|
+
override def transaction(
|
20
|
+
config: ConfigSource,
|
21
|
+
control: InputPlugin.Control
|
22
|
+
): ConfigDiff = {
|
23
|
+
val task: PluginTask = PluginTask.load(config)
|
24
|
+
val schema: Schema = task.getColumns.toSchema
|
25
|
+
if (schema.isEmpty)
|
26
|
+
throw new ConfigException("\"columns\" option must be set.")
|
27
|
+
val taskCount: Int = 1
|
28
|
+
|
29
|
+
control.run(task.dump(), schema, taskCount)
|
30
|
+
Exec.newConfigDiff()
|
31
|
+
}
|
32
|
+
|
33
|
+
override def resume(
|
34
|
+
taskSource: TaskSource,
|
35
|
+
schema: Schema,
|
36
|
+
taskCount: Int,
|
37
|
+
control: InputPlugin.Control
|
38
|
+
): ConfigDiff = {
|
39
|
+
throw new UnsupportedOperationException
|
40
|
+
}
|
41
|
+
|
42
|
+
override def run(
|
43
|
+
taskSource: TaskSource,
|
44
|
+
schema: Schema,
|
45
|
+
taskIndex: Int,
|
46
|
+
output: PageOutput
|
47
|
+
): TaskReport = {
|
48
|
+
val task: PluginTask = PluginTask.load(taskSource)
|
49
|
+
|
50
|
+
Aws(task).withDynamodb { dynamodb =>
|
51
|
+
task.getOperation.ifPresent { ope =>
|
52
|
+
val o = ope.toLowerCase match {
|
53
|
+
case "scan" => new ScanOperation(dynamodb)
|
54
|
+
case "query" => new QueryOperation(dynamodb)
|
55
|
+
}
|
56
|
+
o.execute(task, schema, output)
|
57
|
+
}
|
58
|
+
}
|
59
|
+
|
60
|
+
Exec.newTaskReport()
|
61
|
+
}
|
62
|
+
|
63
|
+
override def cleanup(
|
64
|
+
taskSource: TaskSource,
|
65
|
+
schema: Schema,
|
66
|
+
taskCount: Int,
|
67
|
+
successTaskReports: JList[TaskReport]
|
68
|
+
): Unit = {}
|
69
|
+
|
70
|
+
override def guess(config: ConfigSource): ConfigDiff = {
|
71
|
+
throw new UnsupportedOperationException
|
72
|
+
}
|
73
|
+
}
|