Example usage for com.facebook.react.bridge ReadableArray size

List of usage examples for com.facebook.react.bridge ReadableArray size

Introduction

In this page you can find the example usage for com.facebook.react.bridge ReadableArray size.

Prototype

int size();

Source Link

Usage

From source file:co.rewen.statex.StateX.java

License:Open Source License

public static ArrayList<String> toStringArray(ReadableArray array) {
    ArrayList<String> strings = new ArrayList<>();
    for (int i = 0; i < array.size(); i++) {
        strings.add(array.getString(i));
    }//from   w  w w. j a v  a 2  s .  c om
    return strings;
}

From source file:co.rewen.statex.StateXModule.java

License:Open Source License

/**
 * Given an array of keys, this returns a map of (key, value) pairs for the keys found, and
 * (key, null) for the keys that haven't been found.
 *//*from   w  w  w . ja v  a2  s . c om*/
@ReactMethod
public void multiGet(final ReadableArray keys, final Callback callback) {
    if (keys == null) {
        callback.invoke(AsyncStorageErrorUtil.getInvalidKeyError(null), null);
        return;
    }

    new GuardedAsyncTask<Void, Void>(getReactApplicationContext()) {
        @Override
        protected void doInBackgroundGuarded(Void... params) {
            if (!ensureDatabase()) {
                callback.invoke(AsyncStorageErrorUtil.getDBError(null), null);
                return;
            }

            String[] columns = { KEY_COLUMN, VALUE_COLUMN };
            HashSet<String> keysRemaining = SetBuilder.newHashSet();
            WritableArray data = Arguments.createArray();
            for (int keyStart = 0; keyStart < keys.size(); keyStart += MAX_SQL_KEYS) {
                int keyCount = Math.min(keys.size() - keyStart, MAX_SQL_KEYS);
                Cursor cursor = mStateXDatabaseSupplier.get().query(TABLE_STATE, columns,
                        AsyncLocalStorageUtil.buildKeySelection(keyCount),
                        AsyncLocalStorageUtil.buildKeySelectionArgs(keys, keyStart, keyCount), null, null,
                        null);
                keysRemaining.clear();
                try {
                    if (cursor.getCount() != keys.size()) {
                        // some keys have not been found - insert them with null into the final array
                        for (int keyIndex = keyStart; keyIndex < keyStart + keyCount; keyIndex++) {
                            keysRemaining.add(keys.getString(keyIndex));
                        }
                    }

                    if (cursor.moveToFirst()) {
                        do {
                            WritableArray row = Arguments.createArray();
                            row.pushString(cursor.getString(0));
                            row.pushString(cursor.getString(1));
                            data.pushArray(row);
                            keysRemaining.remove(cursor.getString(0));
                        } while (cursor.moveToNext());
                    }
                } catch (Exception e) {
                    FLog.w(ReactConstants.TAG, e.getMessage(), e);
                    callback.invoke(AsyncStorageErrorUtil.getError(null, e.getMessage()), null);
                    return;
                } finally {
                    cursor.close();
                }

                for (String key : keysRemaining) {
                    WritableArray row = Arguments.createArray();
                    row.pushString(key);
                    row.pushNull();
                    data.pushArray(row);
                }
                keysRemaining.clear();
            }

            callback.invoke(null, data);
        }
    }.execute();
}

From source file:co.rewen.statex.StateXModule.java

License:Open Source License

/**
 * Inserts multiple (key, value) pairs. If one or more of the pairs cannot be inserted, this will
 * return StateXFailure, but all other pairs will have been inserted.
 * The insertion will replace conflicting (key, value) pairs.
 *///w  ww  . j  a v  a  2s  .  c o  m
@ReactMethod
public void multiSet(final ReadableArray keyValueArray, final Callback callback) {
    if (keyValueArray.size() == 0) {
        callback.invoke(AsyncStorageErrorUtil.getInvalidKeyError(null));
        return;
    }

    new GuardedAsyncTask<Void, Void>(getReactApplicationContext()) {
        @Override
        protected void doInBackgroundGuarded(Void... params) {
            if (!ensureDatabase()) {
                callback.invoke(AsyncStorageErrorUtil.getDBError(null));
                return;
            }

            String sql = "INSERT OR REPLACE INTO " + TABLE_STATE + " VALUES (?, ?);";
            SQLiteStatement statement = mStateXDatabaseSupplier.get().compileStatement(sql);
            WritableMap error = null;
            ArrayList<String> keys = new ArrayList<>();
            try {
                mStateXDatabaseSupplier.get().beginTransaction();
                for (int idx = 0; idx < keyValueArray.size(); idx++) {
                    if (keyValueArray.getArray(idx).size() != 2) {
                        error = AsyncStorageErrorUtil.getInvalidValueError(null);
                        break;
                    }
                    String key = keyValueArray.getArray(idx).getString(0);
                    if (key == null) {
                        error = AsyncStorageErrorUtil.getInvalidKeyError(null);
                        break;
                    }
                    String value = keyValueArray.getArray(idx).getString(1);
                    if (value == null) {
                        error = AsyncStorageErrorUtil.getInvalidValueError(null);
                        break;
                    }

                    keys.add(key);
                    statement.clearBindings();
                    statement.bindString(1, key);
                    statement.bindString(2, value);
                    statement.execute();
                }
                mStateXDatabaseSupplier.get().setTransactionSuccessful();
            } catch (Exception e) {
                FLog.w(ReactConstants.TAG, e.getMessage(), e);
                error = AsyncStorageErrorUtil.getError(null, e.getMessage());
            } finally {
                try {
                    mStateXDatabaseSupplier.get().endTransaction();
                } catch (Exception e) {
                    FLog.w(ReactConstants.TAG, e.getMessage(), e);
                    if (error == null) {
                        error = AsyncStorageErrorUtil.getError(null, e.getMessage());
                    }
                }
            }
            if (error != null) {
                callback.invoke(error);
            } else {
                callback.invoke();
                notifyStateChanged(keys);
            }
        }
    }.execute();
}

From source file:co.rewen.statex.StateXModule.java

License:Open Source License

/**
 * Removes all rows of the keys given.//w  ww  . j a v a 2 s .c o m
 */
@ReactMethod
public void multiRemove(final ReadableArray keys, final Callback callback) {
    if (keys.size() == 0) {
        callback.invoke(AsyncStorageErrorUtil.getInvalidKeyError(null));
        return;
    }

    new GuardedAsyncTask<Void, Void>(getReactApplicationContext()) {
        @Override
        protected void doInBackgroundGuarded(Void... params) {
            if (!ensureDatabase()) {
                callback.invoke(AsyncStorageErrorUtil.getDBError(null));
                return;
            }

            WritableMap error = null;
            try {
                mStateXDatabaseSupplier.get().beginTransaction();
                for (int keyStart = 0; keyStart < keys.size(); keyStart += MAX_SQL_KEYS) {
                    int keyCount = Math.min(keys.size() - keyStart, MAX_SQL_KEYS);
                    mStateXDatabaseSupplier.get().delete(TABLE_STATE,
                            AsyncLocalStorageUtil.buildKeySelection(keyCount),
                            AsyncLocalStorageUtil.buildKeySelectionArgs(keys, keyStart, keyCount));
                }
                mStateXDatabaseSupplier.get().setTransactionSuccessful();
            } catch (Exception e) {
                FLog.w(ReactConstants.TAG, e.getMessage(), e);
                error = AsyncStorageErrorUtil.getError(null, e.getMessage());
            } finally {
                try {
                    mStateXDatabaseSupplier.get().endTransaction();
                } catch (Exception e) {
                    FLog.w(ReactConstants.TAG, e.getMessage(), e);
                    if (error == null) {
                        error = AsyncStorageErrorUtil.getError(null, e.getMessage());
                    }
                }
            }
            if (error != null) {
                callback.invoke(error);
            } else {
                callback.invoke();
                notifyStateChanged(StateX.toStringArray(keys));
            }
        }
    }.execute();
}

From source file:co.rewen.statex.StateXModule.java

License:Open Source License

/**
 * Given an array of (key, value) pairs, this will merge the given values with the stored values
 * of the given keys, if they exist./*from  w w  w.j  av a 2 s  .c om*/
 */
@ReactMethod
public void multiMerge(final ReadableArray keyValueArray, final Callback callback) {
    new GuardedAsyncTask<Void, Void>(getReactApplicationContext()) {
        @Override
        protected void doInBackgroundGuarded(Void... params) {
            if (!ensureDatabase()) {
                callback.invoke(AsyncStorageErrorUtil.getDBError(null));
                return;
            }
            WritableMap error = null;
            ArrayList<String> keys = new ArrayList<>();
            try {
                mStateXDatabaseSupplier.get().beginTransaction();
                for (int idx = 0; idx < keyValueArray.size(); idx++) {
                    if (keyValueArray.getArray(idx).size() != 2) {
                        error = AsyncStorageErrorUtil.getInvalidValueError(null);
                        return;
                    }

                    String key = keyValueArray.getArray(idx).getString(0);
                    if (key == null) {
                        error = AsyncStorageErrorUtil.getInvalidKeyError(null);
                        return;
                    } else {
                        keys.add(key);
                    }

                    if (keyValueArray.getArray(idx).getString(1) == null) {
                        error = AsyncStorageErrorUtil.getInvalidValueError(null);
                        return;
                    }

                    if (!AsyncLocalStorageUtil.mergeImpl(mStateXDatabaseSupplier.get(), key,
                            keyValueArray.getArray(idx).getString(1))) {
                        error = AsyncStorageErrorUtil.getDBError(null);
                        return;
                    }
                }
                mStateXDatabaseSupplier.get().setTransactionSuccessful();
            } catch (Exception e) {
                FLog.w(ReactConstants.TAG, e.getMessage(), e);
                error = AsyncStorageErrorUtil.getError(null, e.getMessage());
            } finally {
                try {
                    mStateXDatabaseSupplier.get().endTransaction();
                } catch (Exception e) {
                    FLog.w(ReactConstants.TAG, e.getMessage(), e);
                    if (error == null) {
                        error = AsyncStorageErrorUtil.getError(null, e.getMessage());
                    }
                }
            }
            if (error != null) {
                callback.invoke(error);
            } else {
                callback.invoke();
                notifyStateChanged(keys);
            }
        }
    }.execute();
}

From source file:com.adjust.nativemodule.AdjustUtil.java

License:Open Source License

/** 
 * toList converts a {@link ReadableArray} into an ArrayList. 
 * /*from  w  ww .j  a v  a  2  s  .c  om*/
 * @param readableArray The ReadableArray to be conveted. 
 * @return An ArrayList containing the data that was in the ReadableArray. 
 */
public static List<Object> toList(@Nullable ReadableArray readableArray) {
    if (readableArray == null) {
        return null;
    }

    List<Object> result = new ArrayList<>(readableArray.size());

    for (int index = 0; index < readableArray.size(); index++) {
        ReadableType readableType = readableArray.getType(index);

        switch (readableType) {
        case Null:
            break;
        case Boolean:
            result.add(readableArray.getBoolean(index));
            break;
        case Number:
            // Can be int or double. 
            double tmp = readableArray.getDouble(index);

            if (tmp == (int) tmp) {
                result.add((int) tmp);
            } else {
                result.add(tmp);
            }

            break;
        case String:
            result.add(readableArray.getString(index));
            break;
        case Map:
            result.add(toMap(readableArray.getMap(index)));
            break;
        case Array:
            result = toList(readableArray.getArray(index));
            break;
        default:
            AdjustFactory.getLogger().error("Could not convert object with index: " + index + ".");
        }
    }

    return result;
}

From source file:com.amazonaws.reactnative.core.AWSRNClientMarshaller.java

License:Open Source License

/**
 * toList converts a {@link ReadableArray} into an ArrayList.
 *
 * @param readableArray The ReadableArray to be conveted.
 * @return An ArrayList containing the data that was in the ReadableArray.
 *//*ww  w . ja va 2s. co m*/
public static List<Object> readableArrayToList(final @Nullable ReadableArray readableArray) {
    if (readableArray == null) {
        return null;
    }

    List<Object> result = new ArrayList<>(readableArray.size());
    for (int index = 0; index < readableArray.size(); index++) {
        final ReadableType readableType = readableArray.getType(index);
        switch (readableType) {
        case Null:
            result.add(String.valueOf(index));
            break;
        case Boolean:
            result.add(readableArray.getBoolean(index));
            break;
        case Number:
            // Can be int or double.
            double tmp = readableArray.getDouble(index);
            if (tmp == (int) tmp) {
                result.add((int) tmp);
            } else {
                result.add(tmp);
            }
            break;
        case String:
            result.add(readableArray.getString(index));
            break;
        case Map:
            result.add(readableMapToMap(readableArray.getMap(index)));
            break;
        case Array:
            result = readableArrayToList(readableArray.getArray(index));
            break;
        default:
            throw new IllegalArgumentException("Could not convert object with index: " + index + ".");
        }
    }

    return result;
}

From source file:com.auth0.lock.react.bridge.ShowOptions.java

License:Open Source License

public ShowOptions(@Nullable ReadableMap options) {
    if (options == null) {
        return;/*w w  w  .  j a v  a 2 s.co m*/
    }

    if (options.hasKey(CLOSABLE_KEY)) {
        closable = options.getBoolean(CLOSABLE_KEY);
        Log.d(TAG, CLOSABLE_KEY + closable);
    }

    if (options.hasKey(DISABLE_SIGNUP)) {
        disableSignUp = options.getBoolean(DISABLE_SIGNUP);
        Log.d(TAG, DISABLE_SIGNUP + disableSignUp);
    }

    if (options.hasKey(DISABLE_RESET_PASSWORD)) {
        disableResetPassword = options.getBoolean(DISABLE_RESET_PASSWORD);
        Log.d(TAG, DISABLE_RESET_PASSWORD + disableResetPassword);
    }

    if (options.hasKey(USE_MAGIC_LINK_KEY)) {
        useMagicLink = options.getBoolean(USE_MAGIC_LINK_KEY);
        Log.d(TAG, USE_MAGIC_LINK_KEY + useMagicLink);
    }

    if (options.hasKey(AUTH_PARAMS_KEY)) {
        ReadableMap reactMap = options.getMap(AUTH_PARAMS_KEY);
        authParams = OptionsHelper.convertReadableMapToMap(reactMap);
        Log.d(TAG, AUTH_PARAMS_KEY + authParams);
    }

    if (options.hasKey(CONNECTIONS_KEY)) {
        ReadableArray connections = options.getArray(CONNECTIONS_KEY);
        List<String> list = new ArrayList<>(connections.size());
        for (int i = 0; i < connections.size(); i++) {
            String connectionName = connections.getString(i);
            switch (connectionName) {
            case LockReactModule.CONNECTION_EMAIL:
                connectionType = LockReactModule.CONNECTION_EMAIL;
                break;
            case LockReactModule.CONNECTION_SMS:
                connectionType = LockReactModule.CONNECTION_SMS;
                break;
            }
            list.add(connectionName);
        }
        this.connections = new String[list.size()];
        this.connections = list.toArray(this.connections);
        Log.d(TAG, CONNECTIONS_KEY + list);
    }
}

From source file:com.boundlessgeo.spatialconnect.jsbridge.RNSpatialConnect.java

License:Apache License

@ReactMethod
public void addRasterLayers(final ReadableArray storeIdArray) {
    UIManagerModule uiManager = this.reactContext.getNativeModule(UIManagerModule.class);
    uiManager.addUIBlock(new UIBlock() {
        public void execute(NativeViewHierarchyManager nvhm) {
            List<String> storeIds = new ArrayList<>(storeIdArray.size());
            for (int index = 0; index < storeIdArray.size(); index++) {
                storeIds.add(storeIdArray.getString(index));
            }//from  w  ww  . j  av a2  s . com
            List<SCDataStore> stores = SpatialConnect.getInstance().getDataService().getActiveStores();
            for (SCDataStore store : stores) {
                List<TileOverlay> tiles = tileoverlays.get(store.getStoreId());
                if (storeIds.contains(store.getStoreId())) {
                    if (tiles == null) {
                        if (store instanceof GeoPackageStore
                                && ((GeoPackageStore) store).getTileSources().size() > 0) {
                            SCRasterStore rs = new GpkgRasterSource((GeoPackageStore) store);
                            List<TileOverlay> newTiles = new ArrayList<TileOverlay>();
                            for (String tableName : rs.rasterLayers()) {
                                TileOverlay t = rs.overlayFromLayer(tableName, mGoogleMap);
                                newTiles.add(t);
                            }
                            tileoverlays.put(store.getStoreId(), newTiles);
                        }
                    }
                } else {
                    if (tiles != null) {
                        for (TileOverlay tile : tiles) {
                            tile.remove();
                        }
                        tileoverlays.remove(store.getStoreId());
                    }
                }
            }
        }
    });
}

From source file:com.boundlessgeo.spatialconnect.jsbridge.RNSpatialConnect.java

License:Apache License

private ArrayList<Object> convertArrayToArrayList(ReadableArray readableArray) {
    ArrayList<Object> jsonArray = new ArrayList<>();
    for (int i = 0; i < readableArray.size(); i++) {
        switch (readableArray.getType(i)) {
        case Null:
            break;
        case Boolean:
            jsonArray.add(readableArray.getBoolean(i));
            break;
        case Number:
            jsonArray.add(readableArray.getDouble(i));
            break;
        case String:
            jsonArray.add(readableArray.getString(i));
            break;
        case Map:
            jsonArray.add(convertMapToHashMap(readableArray.getMap(i)));
            break;
        case Array:
            jsonArray.add(convertArrayToArrayList(readableArray.getArray(i)));
            break;
        }/*from  w  w w  .j  a  va 2s.co m*/
    }

    return jsonArray;
}