/** * Alias for {@link Array#of(Object)} * * @param <T> Component type of element. * @param element An element. * @return A new {@link Array} instance containing the given element */ public static <T> Array<T> Array(T element) { return Array.of(element); }
@Override public Array<Array<T>> permutations() { if (isEmpty()) { return empty(); } else if (delegate.length == 1) { return of(this); } else { final Array<Array<T>> zero = empty(); return distinct().foldLeft(zero, (xs, x) -> { final Function<Array<T>, Array<T>> prepend = l -> l.prepend(x); return xs.appendAll(remove(x).permutations().map(prepend)); }); } }
/** * {@inheritDoc} */ @Override public Seq<AsyncRetry> getAllRetries() { return Array.ofAll(retries.values()); }
Array<Tuple3<Type, Integer, Option<String>>> resolveKeyValueColumns(ConfigRegistry config, Array<Tuple2<Type, Integer>> tupleTypes) { Array<Tuple3<Type, Integer, Option<String>>> withConfiguredColumnName; Tuple2<Type, Integer> keyType = tupleTypes.get(0); Tuple2<Type, Integer> valueType = tupleTypes.get(1); withConfiguredColumnName = Array.of( Tuple.of(keyType._1, keyType._2, Option.of(config.get(TupleMappers.class).getKeyColumn())), Tuple.of(valueType._1, valueType._2, Option.of(config.get(TupleMappers.class).getValueColumn())) ); return withConfiguredColumnName; }
Array<Tuple2<Type, Integer>> tupleTypes = Array.of(tupleClass.getTypeParameters()) .map(tp -> resolveType(tp, type)) .zipWithIndex((t, i) -> Tuple.of(t, i + 1)); } else { withConfiguredColumnName = tupleTypes .map(t -> Tuple.of(t._1, t._2, getConfiguredColumnName(t._2, config))); boolean anyColumnSet = withConfiguredColumnName.map(t -> t._3).exists(Option::isDefined); if (anyColumnSet) { Array<Optional<RowMapper<?>>> mappers = withConfiguredColumnName .map(t -> t._3.isDefined() ? getColumnMapperForDefinedColumn(t._1, t._3.get(), config) : getRowMapper(t._1, config)); boolean mappableWithConfigured = mappers.forAll(Optional::isPresent); if (mappableWithConfigured) { return buildMapper(tupleClass, mappers); .map(t -> t._2 + ": " + t._3.getOrNull()); throw new NoSuchMapperException(type + " cannot be mapped. " + "If tuple columns are configured (TupleMappers config class), " + "each tuple entry must be mappable via " + "specified column name or existing RowMapper. " + "Currently configured: " + configuredColumns.mkString(", ")); } else { Array<Optional<RowMapper<?>>> colMappers = tupleTypes .map(t -> getColumnMapper(t._1, t._2, config));
@Override public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters params) { DataFrame dataFrame = params.dataFrame; java.util.List<MarkupTableColumn> columnSpecs = dataFrame.getColumns().map(column -> { Integer widthRatio = Integer.valueOf(column.getMetaData().get(WIDTH_RATIO).getOrElse("0")); return new MarkupTableColumn(column.getId().getName()) .withWidthRatio(widthRatio) .withHeaderColumn(Boolean.parseBoolean(column.getMetaData().get(HEADER_COLUMN).getOrElse("false"))) .withMarkupSpecifiers(MarkupLanguage.ASCIIDOC, ".^" + widthRatio + "a"); } ).toJavaList(); IndexedSeq<IndexedSeq<String>> columnValues = dataFrame.getColumns() .map(column -> ((StringColumn) column).getValues()); java.util.List<java.util.List<String>> cells = Array.range(0, dataFrame.getRowCount()) .map(rowNumber -> columnValues.map(values -> values.get(rowNumber)).toJavaList()).toJavaList(); return markupDocBuilder.tableWithColumnSpecs(columnSpecs, cells); }
contactPoints = Array.of(this.hostnames) .map(hostName -> hostName.split(":")) .map(array -> Tuple.of(array[0], array.length == 2 ? Integer.parseInt(array[1]) : this.port)) .map(tuple -> new InetSocketAddress(tuple._1, tuple._2)) .toJavaList(); } catch (SecurityException | ArrayIndexOutOfBoundsException | NumberFormatException e) { throw new PermanentBackendException("Error initialising cluster contact points", e);
@Override public Array<T> replaceAll(T currentElement, T newElement) { final Object[] arr = new Object[length()]; boolean changed = false; for (int i = 0; i < length(); i++) { final T value = get(i); if (Objects.equals(currentElement, value)) { arr[i] = newElement; changed = true; } else { arr[i] = delegate[i]; } } return changed ? wrap(arr) : this; }
@Override public Array<Array<T>> combinations() { return rangeClosed(0, length()).map(this::combinations).flatMap(Function.identity()); }
@Override public <T1, T2, T3> Tuple3<Array<T1>, Array<T2>, Array<T3>> unzip3(Function<? super T, Tuple3<? extends T1, ? extends T2, ? extends T3>> unzipper) { Objects.requireNonNull(unzipper, "unzipper is null"); if (isEmpty()) { return Tuple.of(empty(), empty(), empty()); } else { final Object[] xs = new Object[delegate.length]; final Object[] ys = new Object[delegate.length]; final Object[] zs = new Object[delegate.length]; for (int i = 0; i < delegate.length; i++) { final Tuple3<? extends T1, ? extends T2, ? extends T3> t = unzipper.apply(get(i)); xs[i] = t._1; ys[i] = t._2; zs[i] = t._3; } return Tuple.of(wrap(xs), wrap(ys), wrap(zs)); } }
@Override Array<Tuple3<Type, Integer, Option<String>>> resolveKeyValueColumns(ConfigRegistry config, Array<Tuple2<Type, Integer>> tupleTypes) { return tupleTypes.map(t -> Tuple.of(t._1, t._2, Option.<String>none())); } };
@SuppressWarnings("unchecked") static <T> T asPrimitives(Class<?> primitiveClass, Iterable<?> values) { final Object[] array = Array.ofAll(values).toJavaArray(); final ArrayType<T> type = of((Class<T>) primitiveClass); final Object results = type.newInstance(array.length); for (int i = 0; i < array.length; i++) { type.setAt(results, i, (T) array[i]); } return (T) results; }