|
33 | 33 | package io.tiledb.java.api;
|
34 | 34 |
|
35 | 35 | import io.tiledb.libtiledb.*;
|
| 36 | +import java.nio.charset.Charset; |
36 | 37 | import java.nio.charset.StandardCharsets;
|
37 | 38 |
|
38 | 39 | public class NativeArray implements AutoCloseable {
|
@@ -197,9 +198,15 @@ private int getSize(Object buffer) throws TileDBError {
|
197 | 198 | return ((long[]) buffer).length;
|
198 | 199 | }
|
199 | 200 | case TILEDB_STRING_ASCII:
|
| 201 | + { |
| 202 | + Charset charset = StandardCharsets.ISO_8859_1; |
| 203 | + return stringToBytes((String) buffer, charset).length; |
| 204 | + } |
| 205 | + case TILEDB_STRING_UTF8: |
200 | 206 | case TILEDB_CHAR:
|
201 | 207 | {
|
202 |
| - return stringToBytes(buffer).length; |
| 208 | + Charset charset = StandardCharsets.UTF_8; |
| 209 | + return stringToBytes((String) buffer, charset).length; |
203 | 210 | }
|
204 | 211 | case TILEDB_DATETIME_YEAR:
|
205 | 212 | case TILEDB_DATETIME_MONTH:
|
@@ -277,10 +284,16 @@ private void createNativeArrayFromBuffer(Object buffer) throws TileDBError {
|
277 | 284 | break;
|
278 | 285 | }
|
279 | 286 | case TILEDB_STRING_ASCII:
|
| 287 | + { |
| 288 | + Charset charset = StandardCharsets.ISO_8859_1; |
| 289 | + int8_tArray = Utils.newInt8_tArray(stringToBytes((String) buffer, charset)); |
| 290 | + break; |
| 291 | + } |
| 292 | + case TILEDB_STRING_UTF8: |
280 | 293 | case TILEDB_CHAR:
|
281 | 294 | {
|
282 |
| - byte[] bytes = stringToBytes(buffer); |
283 |
| - int8_tArray = Utils.newInt8_tArray(bytes); |
| 295 | + Charset charset = StandardCharsets.UTF_8; |
| 296 | + int8_tArray = Utils.newInt8_tArray(stringToBytes((String) buffer, charset)); |
284 | 297 | break;
|
285 | 298 | }
|
286 | 299 | case TILEDB_DATETIME_YEAR:
|
@@ -532,9 +545,19 @@ public void setItem(int index, Object value) throws ArrayIndexOutOfBoundsExcepti
|
532 | 545 | break;
|
533 | 546 | }
|
534 | 547 | case TILEDB_STRING_ASCII:
|
| 548 | + { |
| 549 | + Charset charset = StandardCharsets.ISO_8859_1; |
| 550 | + for (byte b : stringToBytes((String) value, charset)) { |
| 551 | + int8_tArray.setitem(index, b); |
| 552 | + index++; |
| 553 | + } |
| 554 | + break; |
| 555 | + } |
| 556 | + case TILEDB_STRING_UTF8: |
535 | 557 | case TILEDB_CHAR:
|
536 | 558 | {
|
537 |
| - for (byte b : stringToBytes(value)) { |
| 559 | + Charset charset = StandardCharsets.UTF_8; |
| 560 | + for (byte b : stringToBytes((String) value, charset)) { |
538 | 561 | int8_tArray.setitem(index, b);
|
539 | 562 | index++;
|
540 | 563 | }
|
@@ -607,6 +630,7 @@ public SWIGTYPE_p_void toVoidPointer() throws TileDBError {
|
607 | 630 | return PointerUtils.toVoid(uint64_tArray);
|
608 | 631 | }
|
609 | 632 | case TILEDB_STRING_ASCII:
|
| 633 | + case TILEDB_STRING_UTF8: |
610 | 634 | case TILEDB_CHAR:
|
611 | 635 | {
|
612 | 636 | return PointerUtils.toVoid(int8_tArray);
|
@@ -778,6 +802,7 @@ public Object toJavaArray(int position, int elements) throws TileDBError {
|
778 | 802 | return Utils.int64ArrayGet(uint64_tArray, position, elements);
|
779 | 803 | }
|
780 | 804 | case TILEDB_STRING_ASCII:
|
| 805 | + case TILEDB_STRING_UTF8: |
781 | 806 | case TILEDB_CHAR:
|
782 | 807 | {
|
783 | 808 | return Utils.int8ArrayGet(int8_tArray, position, elements);
|
@@ -872,6 +897,8 @@ private void createNativeArrayFromVoidPointer(SWIGTYPE_p_p_void pointer) throws
|
872 | 897 | int64_tArray = PointerUtils.int64_tArrayFromVoid(pointer);
|
873 | 898 | break;
|
874 | 899 | }
|
| 900 | + case TILEDB_STRING_ASCII: |
| 901 | + case TILEDB_STRING_UTF8: |
875 | 902 | case TILEDB_CHAR:
|
876 | 903 | {
|
877 | 904 | int8_tArray = PointerUtils.int8_tArrayFromVoid(pointer);
|
@@ -959,8 +986,8 @@ private void createNativeArrayFromVoidPointer(SWIGTYPE_p_void pointer) throws Ti
|
959 | 986 | }
|
960 | 987 | }
|
961 | 988 |
|
962 |
| - private byte[] stringToBytes(Object buffer) { |
963 |
| - return ((String) buffer).getBytes(StandardCharsets.UTF_8); |
| 989 | + private byte[] stringToBytes(String buffer, Charset charset) { |
| 990 | + return buffer.getBytes(charset); |
964 | 991 | }
|
965 | 992 |
|
966 | 993 | protected Datatype getNativeType() {
|
|
0 commit comments