Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.landawn.abacus.util.Builder Maven / Gradle / Ivy
/*
* Copyright (C) 2016 HaiYang Li
*
* Licensed 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 com.landawn.abacus.util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import com.landawn.abacus.DataSet;
import com.landawn.abacus.core.RowDataSet;
import com.landawn.abacus.util.NoCachingNoUpdating.DisposableObjArray;
import com.landawn.abacus.util.Throwables.Predicate;
import com.landawn.abacus.util.Tuple.Tuple2;
import com.landawn.abacus.util.Tuple.Tuple3;
import com.landawn.abacus.util.u.Optional;
import com.landawn.abacus.util.function.Function;
import com.landawn.abacus.util.function.Supplier;
/**
*
* @author haiyangl
* @param
* @since 0.8
*/
public class Builder {
final T val;
Builder(T val) {
N.checkArgNotNull(val);
this.val = val;
}
/**
*
* @param
* @param
* @param val
* @return
* @throws IllegalArgumentException if the specified {@code val} is {@code null}.
*/
public static final > ListBuilder of(L val) throws IllegalArgumentException {
return new ListBuilder<>(val);
}
/**
*
* @param
* @param
* @param val
* @return
* @throws IllegalArgumentException if the specified {@code val} is {@code null}.
*/
public static final > CollectionBuilder of(C val) throws IllegalArgumentException {
return new CollectionBuilder<>(val);
}
/**
*
* @param the key type
* @param the value type
* @param
* @param val
* @return
* @throws IllegalArgumentException if the specified {@code val} is {@code null}.
*/
public static final > MapBuilder of(M val) throws IllegalArgumentException {
return new MapBuilder<>(val);
}
/**
*
* @param
* @param val
* @return
* @throws IllegalArgumentException if the specified {@code val} is {@code null}.
*/
public static final MultisetBuilder of(Multiset val) throws IllegalArgumentException {
return new MultisetBuilder<>(val);
}
/**
*
* @param the key type
* @param
* @param the value type
* @param
* @param val
* @return
* @throws IllegalArgumentException if the specified {@code val} is {@code null}.
*/
public static final , M extends Multimap> MultimapBuilder of(M val) throws IllegalArgumentException {
return new MultimapBuilder<>(val);
}
/**
*
* @param
* @param val
* @return
* @throws IllegalArgumentException if the specified {@code val} is {@code null}.
*/
public static final DataSetBuilder of(final DataSet val) throws IllegalArgumentException {
return new DataSetBuilder(val);
}
@SuppressWarnings("rawtypes")
private static final Map, Function> creatorMap = new HashMap<>();
static {
initCreatorMap();
}
@SuppressWarnings("rawtypes")
private static void initCreatorMap() {
creatorMap.put(List.class, val -> Builder.of((List) val));
creatorMap.put(ArrayList.class, val -> Builder.of((List) val));
creatorMap.put(LinkedList.class, val -> Builder.of((List) val));
creatorMap.put(Set.class, val -> Builder.of((Collection) val));
creatorMap.put(HashSet.class, val -> Builder.of((Collection) val));
creatorMap.put(LinkedHashSet.class, val -> Builder.of((Collection) val));
creatorMap.put(Map.class, val -> Builder.of((Map) val));
creatorMap.put(HashMap.class, val -> Builder.of((Map) val));
creatorMap.put(LinkedHashMap.class, val -> Builder.of((Map) val));
creatorMap.put(TreeMap.class, val -> Builder.of((Map) val));
creatorMap.put(Multiset.class, val -> Builder.of((Multiset) val));
creatorMap.put(Multimap.class, val -> Builder.of((Multimap) val));
creatorMap.put(ListMultimap.class, val -> Builder.of((Multimap) val));
creatorMap.put(SetMultimap.class, val -> Builder.of((Multimap) val));
creatorMap.put(DataSet.class, val -> Builder.of((DataSet) val));
creatorMap.put(RowDataSet.class, val -> Builder.of((DataSet) val));
}
/**
*
* @param
* @param val
* @return
* @throws IllegalArgumentException if the specified {@code val} is {@code null}.
*/
@SuppressWarnings("rawtypes")
public static final Builder of(T val) {
N.checkArgNotNull(val);
final Function func = creatorMap.get(val.getClass());
if (func != null) {
return func.apply(val);
}
Builder result = null;
if (val instanceof List) {
result = of((List) val);
} else if (val instanceof Collection) {
result = of((Collection) val);
} else if (val instanceof Map) {
result = of((Map) val);
} else if (val instanceof Multimap) {
result = of((Multimap) val);
} else if (val instanceof DataSet) {
result = of((DataSet) val);
} else if (val instanceof Multiset) {
result = of((Multiset) val);
} else {
result = new Builder<>(val);
}
return result;
}
// public static Builder get(final Supplier supplier) {
// return new Builder<>(supplier.get());
// }
public T val() {
return val;
}
/**
*
* @param
* @param
* @param mapper
* @return
* @throws E the e
*/
public Builder map(final Throwables.Function super T, R, E> mapper) throws E {
return of(mapper.apply(val));
}
/**
*
* @param
* @param predicate
* @return Optional
with the value if predicate
returns true,
* otherwise, return an empty Optional
* @throws E the e
*/
public Optional filter(final Throwables.Predicate super T, E> predicate) throws E {
return predicate.test(val) ? Optional.of(val) : Optional. empty();
}
/**
*
* @param
* @param consumer
* @return
* @throws E the e
*/
public Builder accept(final Throwables.Consumer super T, E> consumer) throws E {
consumer.accept(val);
return this;
}
/**
*
* @param
* @param
* @param func
* @return
* @throws E the e
*/
public R apply(final Throwables.Function super T, R, E> func) throws E {
return func.apply(val);
}
// /**
// * Returns an empty Nullable
if {@code val()} is {@code null} while {@code targetType} is primitive or can't be assigned to {@code targetType}.
// * Please be aware that {@code null} can be assigned to any {@code Object} type except primitive types: {@code boolean/char/byte/short/int/long/double}.
// *
// * @param val
// * @param targetType
// * @return
// */
// @SuppressWarnings("unchecked")
// public Nullable castIfAssignable(final Class targetType) {
// if (N.isPrimitive(targetType)) {
// return val != null && N.wrapperOf(targetType).isAssignableFrom(val.getClass()) ? Nullable.of((TT) val) : Nullable. empty();
// }
//
// return val == null || targetType.isAssignableFrom(val.getClass()) ? Nullable.of((TT) val) : Nullable. empty();
// }
//
// /**
// *
// * @param b
// * @param actionForTrue do nothing if it's {@code null} even {@code b} is true.
// * @param actionForFalse do nothing if it's {@code null} even {@code b} is false.
// * @throws E1
// * @throws E2
// */
// public void ifOrElse(final boolean b, final Try.Consumer super T, E1> actionForTrue,
// final Try.Consumer super T, E2> actionForFalse) throws E1, E2 {
// if (b) {
// if (actionForTrue != null) {
// actionForTrue.accept(val);
// }
// } else {
// if (actionForFalse != null) {
// actionForFalse.accept(val);
// }
// }
// }
//
// /**
// *
// * @param predicate
// * @param actionForTrue do nothing if it's {@code null} even {@code b} is true.
// * @param actionForFalse do nothing if it's {@code null} even {@code b} is false.
// * @throws E0
// * @throws E1
// * @throws E2
// */
// public void ifOrElse(final Try.Predicate super T, E0> predicate,
// final Try.Consumer super T, E1> actionForTrue, final Try.Consumer super T, E2> actionForFalse) throws E0, E1, E2 {
// if (predicate.test(val)) {
// if (actionForTrue != null) {
// actionForTrue.accept(val);
// }
// } else {
// if (actionForFalse != null) {
// actionForFalse.accept(val);
// }
// }
// }
//
// /**
// * Returns an empty {@code Optional} if {@code cmd} is executed successfully, otherwise a {@code Optional} with the exception threw.
// *
// * @param cmd
// * @return
// */
// public Optional run(final Try.Consumer super T, ? extends Exception> cmd) {
// try {
// cmd.accept(val);
// return Optional.empty();
// } catch (Exception e) {
// return Optional.of(e);
// }
// }
//
// /**
// * Returns a {@code Pair} with {@code left=returnedValue, right=null} if {@code cmd} is executed successfully, otherwise a {@code Pair} with {@code left=null, right=exception}.
// *
// * @param cmd
// * @return
// */
// public Pair call(final Try.Function super T, R, ? extends Exception> cmd) {
// try {
// return Pair.of(cmd.apply(val), null);
// } catch (Exception e) {
// return Pair.of(null, e);
// }
// }
//
// /**
// * Returns a {@code Nullable} with the value returned by {@code action} or an empty {@code Nullable} if exception happens.
// *
// * @param cmd
// * @return
// */
// public Nullable tryOrEmpty(final Try.Function super T, R, ? extends Exception> cmd) {
// try {
// return Nullable.of(cmd.apply(val));
// } catch (Exception e) {
// return Nullable. empty();
// }
// }
/**
* The Class ListBuilder.
*
* @param
* @param
*/
public static final class ListBuilder> extends CollectionBuilder {
/**
* Instantiates a new list builder.
*
* @param c
*/
ListBuilder(L c) {
super(c);
}
/**
*
* @param index
* @param e
* @return
*/
public ListBuilder add(int index, T e) {
val.add(index, e);
return this;
}
/**
* Adds the all.
*
* @param index
* @param c
* @return
*/
public ListBuilder addAll(int index, Collection extends T> c) {
N.checkIndex(index, val.size());
if (N.notNullOrEmpty(c)) {
val.addAll(index, c);
}
return this;
}
/**
*
* @param index
* @return
*/
public ListBuilder remove(int index) {
val.remove(index);
return this;
}
}
/**
* The Class CollectionBuilder.
*
* @param
* @param
*/
public static class CollectionBuilder> extends Builder {
/**
* Instantiates a new collection builder.
*
* @param c
*/
CollectionBuilder(C c) {
super(c);
}
/**
*
* @param e
* @return
*/
public CollectionBuilder add(T e) {
val.add(e);
return this;
}
/**
* Adds the all.
*
* @param c
* @return
*/
public CollectionBuilder addAll(final Collection extends T> c) {
if (N.notNullOrEmpty(c)) {
val.addAll(c);
}
return this;
}
/**
*
* @param e
* @return
*/
public CollectionBuilder remove(Object e) {
val.remove(e);
return this;
}
/**
* Removes the all.
*
* @param c
* @return
*/
public CollectionBuilder removeAll(Collection> c) {
if (N.notNullOrEmpty(c)) {
val.removeAll(c);
}
return this;
}
}
/**
* The Class MultisetBuilder.
*
* @param
*/
public static final class MultisetBuilder extends Builder> {
/**
* Instantiates a new multiset builder.
*
* @param c
*/
MultisetBuilder(Multiset c) {
super(c);
}
/**
*
* @param e
* @return
*/
public MultisetBuilder add(T e) {
val.add(e);
return this;
}
/**
* Adds the all.
*
* @param c
* @return
*/
public MultisetBuilder addAll(final Collection extends T> c) {
val.addAll(c);
return this;
}
/**
* Adds the all.
*
* @param m
* @return
*/
public MultisetBuilder addAll(final Map extends T, Integer> m) {
val.addAll(m);
return this;
}
/**
* Adds the all.
*
* @param multiset
* @return
*/
public MultisetBuilder addAll(final Multiset extends T> multiset) {
val.addAll(multiset);
return this;
}
/**
*
* @param e
* @return
*/
public MultisetBuilder remove(Object e) {
val.remove(e);
return this;
}
/**
* Removes the all.
*
* @param c
* @return
*/
public MultisetBuilder removeAll(Collection> c) {
val.removeAll(c);
return this;
}
/**
* Removes the all.
*
* @param m
* @return
*/
public MultisetBuilder removeAll(final Map extends T, Integer> m) {
val.removeAll(m);
return this;
}
/**
* Removes the all.
*
* @param multiset
* @return
*/
public MultisetBuilder removeAll(Multiset extends T> multiset) {
val.removeAll(multiset);
return this;
}
}
/**
* The Class MapBuilder.
*
* @param the key type
* @param the value type
* @param
*/
public static final class MapBuilder> extends Builder {
/**
* Instantiates a new map builder.
*
* @param m
*/
MapBuilder(M m) {
super(m);
}
/**
*
* @param k
* @param v
* @return
*/
public MapBuilder put(K k, V v) {
val.put(k, v);
return this;
}
/**
*
* @param m
* @return
*/
public MapBuilder putAll(Map extends K, ? extends V> m) {
if (N.notNullOrEmpty(m)) {
val.putAll(m);
}
return this;
}
/**
* Put if absent.
*
* @param key
* @param value
* @return
*/
public MapBuilder putIfAbsent(K key, V value) {
V v = val.get(key);
if (v == null) {
v = val.put(key, value);
}
return this;
}
/**
* Put if absent.
*
* @param key
* @param supplier
* @return
*/
public MapBuilder putIfAbsent(K key, Supplier supplier) {
V v = val.get(key);
if (v == null) {
v = val.put(key, supplier.get());
}
return this;
}
/**
*
* @param k
* @return
*/
public MapBuilder remove(Object k) {
val.remove(k);
return this;
}
/**
* Removes the all.
*
* @param keysToRemove
* @return
*/
public MapBuilder removeAll(Collection> keysToRemove) {
if (N.notNullOrEmpty(keysToRemove)) {
for (Object k : keysToRemove) {
val.remove(k);
}
}
return this;
}
}
/**
* The Class MultimapBuilder.
*
* @param the key type
* @param
* @param the value type
* @param
*/
public static final class MultimapBuilder, M extends Multimap> extends Builder {
/**
* Instantiates a new multimap builder.
*
* @param m
*/
MultimapBuilder(M m) {
super(m);
}
/**
*
* @param key
* @param e
* @return
*/
public MultimapBuilder put(K key, E e) {
val.put(key, e);
return this;
}
/**
*
* @param k
* @param c
* @return
*/
public MultimapBuilder putAll(final K k, final Collection extends E> c) {
val.putAll(k, c);
return this;
}
/**
*
* @param m
* @return
*/
public MultimapBuilder putAll(Map extends K, ? extends E> m) {
val.putAll(m);
return this;
}
/**
*
* @param m
* @return
*/
public MultimapBuilder putAll(Multimap extends K, ? extends E, ? extends V> m) {
val.putAll(m);
return this;
}
/**
*
* @param k
* @param e
* @return
*/
public MultimapBuilder remove(Object k, Object e) {
val.remove(k, e);
return this;
}
/**
* Removes the all.
*
* @param k
* @return
*/
public MultimapBuilder removeAll(Object k) {
val.removeAll(k);
return this;
}
/**
* Removes the all.
*
* @param k
* @param valuesToRemove
* @return
*/
public MultimapBuilder removeAll(Object k, Collection> valuesToRemove) {
val.removeAll(k, valuesToRemove);
return this;
}
/**
* Removes the all.
*
* @param m
* @return
*/
public MultimapBuilder removeAll(Map extends K, ? extends E> m) {
val.removeAll(m);
return this;
}
/**
* Removes the all.
*
* @param m
* @return
*/
public MultimapBuilder removeAll(Multimap, ?, ?> m) {
val.removeAll(m);
return this;
}
}
/**
* The Class DataSetBuilder.
*/
public static final class DataSetBuilder extends Builder {
/**
* Instantiates a new data set builder.
*
* @param ds
*/
DataSetBuilder(DataSet ds) {
super(ds);
}
/**
*
* @param columnName
* @param newColumnName
* @return
*/
public DataSetBuilder renameColumn(String columnName, String newColumnName) {
val.renameColumn(columnName, newColumnName);
return this;
}
/**
*
* @param oldNewNames
* @return
*/
public DataSetBuilder renameColumns(Map oldNewNames) {
val.renameColumns(oldNewNames);
return this;
}
/**
*
* @param
* @param columnName
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder renameColumn(String columnName, Throwables.Function func) throws E {
val.renameColumn(columnName, func);
return this;
}
/**
*
* @param
* @param columnNames
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder renameColumns(Collection columnNames, Throwables.Function func) throws E {
val.renameColumns(columnNames, func);
return this;
}
/**
*
* @param
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder renameColumns(Throwables.Function func) throws E {
val.renameColumns(func);
return this;
}
/**
* Adds the column.
*
* @param columnName
* @param column
* @return
*/
public DataSetBuilder addColumn(String columnName, List> column) {
val.addColumn(columnName, column);
return this;
}
/**
* Adds the column.
*
* @param columnIndex
* @param columnName
* @param column
* @return
*/
public DataSetBuilder addColumn(int columnIndex, String columnName, List> column) {
val.addColumn(columnIndex, columnName, column);
return this;
}
/**
* Adds the column.
*
* @param
* @param
* @param newColumnName
* @param fromColumnName
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder addColumn(String newColumnName, String fromColumnName, Throwables.Function func) throws E {
val.addColumn(newColumnName, fromColumnName, func);
return this;
}
/**
* Adds the column.
*
* @param
* @param
* @param columnIndex
* @param newColumnName
* @param fromColumnName
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder addColumn(int columnIndex, String newColumnName, String fromColumnName,
Throwables.Function func) throws E {
val.addColumn(columnIndex, newColumnName, fromColumnName, func);
return this;
}
/**
* Adds the column.
*
* @param
* @param newColumnName
* @param fromColumnNames
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder addColumn(String newColumnName, Collection fromColumnNames,
Throwables.Function super DisposableObjArray, ?, E> func) throws E {
val.addColumn(newColumnName, fromColumnNames, func);
return this;
}
/**
* Adds the column.
*
* @param
* @param columnIndex
* @param newColumnName
* @param fromColumnNames
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder addColumn(int columnIndex, String newColumnName, Collection fromColumnNames,
Throwables.Function super DisposableObjArray, ?, E> func) throws E {
val.addColumn(columnIndex, newColumnName, fromColumnNames, func);
return this;
}
/**
* Adds the column.
*
* @param
* @param newColumnName
* @param fromColumnNames
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder addColumn(String newColumnName, Tuple2 fromColumnNames,
Throwables.BiFunction, ?, ?, E> func) throws E {
val.addColumn(newColumnName, fromColumnNames, func);
return this;
}
/**
* Adds the column.
*
* @param
* @param columnIndex
* @param newColumnName
* @param fromColumnNames
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder addColumn(int columnIndex, String newColumnName, Tuple2 fromColumnNames,
Throwables.BiFunction, ?, ?, E> func) throws E {
val.addColumn(columnIndex, newColumnName, fromColumnNames, func);
return this;
}
/**
* Adds the column.
*
* @param
* @param newColumnName
* @param fromColumnNames
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder addColumn(String newColumnName, Tuple3 fromColumnNames,
Throwables.TriFunction, ?, ?, ?, E> func) throws E {
val.addColumn(newColumnName, fromColumnNames, func);
return this;
}
/**
* Adds the column.
*
* @param
* @param columnIndex
* @param newColumnName
* @param fromColumnNames
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder addColumn(int columnIndex, String newColumnName, Tuple3 fromColumnNames,
Throwables.TriFunction, ?, ?, ?, E> func) throws E {
val.addColumn(columnIndex, newColumnName, fromColumnNames, func);
return this;
}
/**
* Removes the column.
*
* @param columnName
* @return
*/
public DataSetBuilder removeColumn(String columnName) {
val.removeColumn(columnName);
return this;
}
/**
* Removes the columns.
*
* @param columnNames
* @return
*/
public DataSetBuilder removeColumns(Collection columnNames) {
val.removeColumns(columnNames);
return this;
}
/**
* Removes the columns.
*
* @param
* @param filter
* @return
* @throws E the e
*/
public DataSetBuilder removeColumns(Predicate filter) throws E {
val.removeColumns(filter);
return this;
}
/**
* Removes the columns if.
*
* @param
* @param filter
* @return
* @throws E the e
* @deprecated replaced by {@code removeColumns}.
*/
@Deprecated
public DataSetBuilder removeColumnsIf(Predicate filter) throws E {
val.removeColumnsIf(filter);
return this;
}
/**
*
* @param
* @param
* @param columnName
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder updateColumn(String columnName, Throwables.Function func) throws E {
val.updateColumn(columnName, func);
return this;
}
/**
*
* @param
* @param
* @param columnNames
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder updateColumns(Collection columnNames, Throwables.Function, ?, E> func) throws E {
val.updateColumns(columnNames, func);
return this;
}
/**
*
* @param columnName
* @param targetType
* @return
*/
public DataSetBuilder convertColumn(String columnName, Class> targetType) {
val.convertColumn(columnName, targetType);
return this;
}
/**
*
* @param columnTargetTypes
* @return
*/
public DataSetBuilder convertColumns(Map> columnTargetTypes) {
val.convertColumns(columnTargetTypes);
return this;
}
/**
*
* @param columnNames
* @param newColumnName
* @param newColumnClass
* @return
*/
public DataSetBuilder combineColumns(Collection columnNames, String newColumnName, Class> newColumnClass) {
val.combineColumns(columnNames, newColumnName, newColumnClass);
return this;
}
/**
*
* @param
* @param columnNames
* @param newColumnName
* @param combineFunc
* @return
* @throws E the e
*/
public DataSetBuilder combineColumns(Collection columnNames, String newColumnName,
Throwables.Function super DisposableObjArray, ?, E> combineFunc) throws E {
val.combineColumns(columnNames, newColumnName, combineFunc);
return this;
}
/**
*
* @param
* @param columnNames
* @param newColumnName
* @param combineFunc
* @return
* @throws E the e
*/
public DataSetBuilder combineColumns(Tuple2 columnNames, String newColumnName,
Throwables.BiFunction, ?, ?, E> combineFunc) throws E {
val.combineColumns(columnNames, newColumnName, combineFunc);
return this;
}
/**
*
* @param
* @param columnNames
* @param newColumnName
* @param combineFunc
* @return
* @throws E the e
*/
public DataSetBuilder combineColumns(Tuple3 columnNames, String newColumnName,
Throwables.TriFunction, ?, ?, ?, E> combineFunc) throws E {
val.combineColumns(columnNames, newColumnName, combineFunc);
return this;
}
/**
*
* @param
* @param columnNameFilter
* @param newColumnName
* @param newColumnClass
* @return
* @throws E the e
*/
public DataSetBuilder combineColumns(Throwables.Predicate columnNameFilter, String newColumnName,
Class> newColumnClass) throws E {
val.combineColumns(columnNameFilter, newColumnName, newColumnClass);
return this;
}
/**
*
* @param
* @param
* @param columnNameFilter
* @param newColumnName
* @param combineFunc
* @return
* @throws E the e
* @throws E2 the e2
*/
public DataSetBuilder combineColumns(Throwables.Predicate columnNameFilter, String newColumnName,
Throwables.Function super DisposableObjArray, ?, E2> combineFunc) throws E, E2 {
val.combineColumns(columnNameFilter, newColumnName, combineFunc);
return this;
}
/**
*
* @param
* @param
* @param columnName
* @param newColumnNames
* @param divideFunc
* @return
* @throws E the e
*/
public DataSetBuilder divideColumn(String columnName, Collection newColumnNames,
Throwables.Function, E> divideFunc) throws E {
val.divideColumn(columnName, newColumnNames, divideFunc);
return this;
}
/**
*
* @param
* @param
* @param columnName
* @param newColumnNames
* @param output
* @return
* @throws E the e
*/
public DataSetBuilder divideColumn(String columnName, Collection newColumnNames,
Throwables.BiConsumer output) throws E {
val.divideColumn(columnName, newColumnNames, output);
return this;
}
/**
*
* @param
* @param
* @param columnName
* @param newColumnNames
* @param output
* @return
* @throws E the e
*/
public DataSetBuilder divideColumn(String columnName, Tuple2 newColumnNames,
Throwables.BiConsumer, E> output) throws E {
val.divideColumn(columnName, newColumnNames, output);
return this;
}
/**
*
* @param
* @param
* @param columnName
* @param newColumnNames
* @param output
* @return
* @throws E the e
*/
public DataSetBuilder divideColumn(String columnName, Tuple3 newColumnNames,
Throwables.BiConsumer, E> output) throws E {
val.divideColumn(columnName, newColumnNames, output);
return this;
}
/**
*
* @param
* @param func
* @return
* @throws E the e
*/
public DataSetBuilder updateAll(Throwables.Function, ?, E> func) throws E {
val.updateAll(func);
return this;
}
/**
*
* @param
* @param func
* @param newValue
* @return
* @throws E the e
*/
public DataSetBuilder replaceIf(Throwables.Predicate, E> func, Object newValue) throws E {
val.replaceIf(func, newValue);
return this;
}
/**
*
* @param columnName
* @return
*/
public DataSetBuilder sortBy(String columnName) {
val.sortBy(columnName);
return this;
}
/**
*
* @param
* @param columnName
* @param cmp
* @return
*/
public DataSetBuilder sortBy(String columnName, Comparator cmp) {
val.sortBy(columnName, cmp);
return this;
}
/**
*
* @param columnNames
* @return
*/
public DataSetBuilder sortBy(Collection columnNames) {
val.sortBy(columnNames);
return this;
}
/**
*
* @param columnNames
* @param cmp
* @return
*/
public DataSetBuilder sortBy(Collection columnNames, Comparator super Object[]> cmp) {
val.sortBy(columnNames, cmp);
return this;
}
/**
*
* @param columnNames
* @param keyMapper
* @return
*/
@SuppressWarnings("rawtypes")
public DataSetBuilder sortBy(Collection columnNames, Function super DisposableObjArray, ? extends Comparable> keyMapper) {
val.sortBy(columnNames, keyMapper);
return this;
}
/**
* Parallel sort by.
*
* @param columnName
* @return
*/
public DataSetBuilder parallelSortBy(String columnName) {
val.parallelSortBy(columnName);
return this;
}
/**
* Parallel sort by.
*
* @param
* @param columnName
* @param cmp
* @return
*/
public DataSetBuilder parallelSortBy(String columnName, Comparator cmp) {
val.parallelSortBy(columnName, cmp);
return this;
}
/**
* Parallel sort by.
*
* @param columnNames
* @return
*/
public DataSetBuilder parallelSortBy(Collection columnNames) {
val.parallelSortBy(columnNames);
return this;
}
/**
* Parallel sort by.
*
* @param columnNames
* @param cmp
* @return
*/
public DataSetBuilder parallelSortBy(Collection columnNames, Comparator super Object[]> cmp) {
val.parallelSortBy(columnNames, cmp);
return this;
}
/**
* Parallel sort by.
*
* @param columnNames
* @param keyMapper
* @return
*/
@SuppressWarnings("rawtypes")
public DataSetBuilder parallelSortBy(Collection columnNames, Function super DisposableObjArray, ? extends Comparable> keyMapper) {
val.parallelSortBy(columnNames, keyMapper);
return this;
}
}
/**
* The Class X.
*
* @param
*/
public static final class X extends Builder {
/**
* Instantiates a new x.
*
* @param val
*/
private X(T val) {
super(val);
}
// /**
// *
// * @param output
// * @param e
// * @return return the specified {@code output}
// */
// public static > C add(final C output, final E e) {
// output.add(e);
// return output;
// }
//
// /**
// *
// * @param output
// * @param e
// * @return return the specified {@code output}
// */
// public static > C addAll(final C output, final Collection extends E> c) {
// if (c == null || c.size() == 0) {
// return output;
// }
//
// output.addAll(c);
// return output;
// }
//
// /**
// *
// * @param output
// * @param e
// * @return return the specified {@code output}
// */
// public static > C remove(final C output, final Object e) {
// if (output == null || output.size() == 0) {
// return output;
// }
//
// output.remove(e);
// return output;
// }
//
// /**
// *
// * @param output
// * @param e
// * @return return the specified {@code output}
// */
// public static > C removeAll(final C output, final Collection> c) {
// if (output == null || output.size() == 0 || c == null || c.size() == 0) {
// return output;
// }
//
// output.removeAll(c);
// return output;
// }
//
// /**
// *
// * @param output
// * @param key
// * @param value
// * @return
// * @return return the specified {@code output}
// */
// public static > M put(final M output, K key, final V value) {
// output.put(key, value);
// return output;
// }
//
// /**
// *
// * @param output
// * @param entryToAdd
// * @return
// * @return return the specified {@code output}
// */
// public static > M put(final M output, final Map.Entry extends K, ? extends V> entryToAdd) {
// output.put(entryToAdd.getKey(), entryToAdd.getValue());
// return output;
// }
//
// /**
// *
// * @param output
// * @param entriesToAdd
// * @return
// * @return return the specified {@code output}
// */
// public static > M putAll(final M output, final Map extends K, ? extends V> entriesToAdd) {
// if (entriesToAdd == null || entriesToAdd.size() == 0) {
// return output;
// }
//
// output.putAll(entriesToAdd);
// return output;
// }
//
// /**
// *
// * @param output
// * @param key
// * @param value
// * @return
// * @return return the specified {@code output}
// */
// public static > M putIfAbsent(final M output, K key, final V value) {
// if (!output.containsKey(key)) {
// output.put(key, value);
// }
//
// return output;
// }
//
// /**
// *
// * @param output
// * @param entryToAdd
// * @return
// * @return return the specified {@code output}
// */
// public static > M putIfAbsent(final M output, final Map.Entry extends K, ? extends V> entryToAdd) {
// if (!output.containsKey(entryToAdd.getKey())) {
// output.put(entryToAdd.getKey(), entryToAdd.getValue());
// }
// return output;
// }
//
// /**
// *
// * @param output
// * @param key
// * @param oldValue
// * @param newValue
// * @return return the specified {@code output}
// */
// public static > M replace(final M output, final K key, final V newValue) {
// if (output == null || output.size() == 0) {
// return output;
// }
//
// final V curValue = output.get(key);
//
// if ((curValue != null || output.containsKey(key))) {
// output.put(key, newValue);
// }
//
// return output;
// }
//
// /**
// *
// * @param output
// * @param key
// * @param oldValue
// * @param newValue
// * @return return the specified {@code output}
// */
// public static > M replace(final M output, final K key, final V oldValue, final V newValue) {
// if (output == null || output.size() == 0) {
// return output;
// }
//
// final V curValue = output.get(key);
//
// if ((curValue != null || output.containsKey(key)) && N.equals(curValue, oldValue)) {
// output.put(key, newValue);
// }
//
// return output;
// }
//
// /**
// *
// * @param output
// * @param key
// * @return
// * @return return the specified {@code output}
// */
// public static > M remove(final M output, final Object key) {
// if (output == null || output.size() == 0) {
// return output;
// }
//
// output.remove(key);
// return output;
// }
//
// /**
// *
// * @param output
// * @param key
// * @return
// * @return return the specified {@code output}
// */
// public static > M remove(final M output, final Map.Entry, ?> entryToRemove) {
// if (output == null || output.size() == 0) {
// return output;
// }
//
// if (N.equals(output.get(entryToRemove.getKey()), entryToRemove.getValue())) {
// output.remove(entryToRemove.getKey());
// }
//
// return output;
// }
//
// /**
// *
// * @param output
// * @param key
// * @param value
// * @return
// * @return return the specified {@code output}
// */
// public static > M remove(final M output, final Object key, final Object value) {
// if (output == null || output.size() == 0) {
// return output;
// }
//
// if (N.equals(output.get(key), value)) {
// output.remove(key);
// }
//
// return output;
// }
//
// /**
// *
// * @param output
// * @param keys
// * @return
// * @return return the specified {@code output}
// */
// public static > M removeAll(final M output, final Collection> keys) {
// if (output == null || output.size() == 0 || keys == null || keys.size() == 0) {
// return output;
// }
//
// for (Object key : keys) {
// output.remove(key);
// }
//
// return output;
// }
//
// /**
// *
// * @param output
// * @param entriesToRemove
// * @return
// * @return return the specified {@code output}
// */
// public static > M removeAll(final M output, final Map, ?> entriesToRemove) {
// if (output == null || output.size() == 0 || entriesToRemove == null || entriesToRemove.size() == 0) {
// return output;
// }
//
// for (Map.Entry, ?> entry : entriesToRemove.entrySet()) {
// if (N.equals(output.get(entry.getKey()), entry.getValue())) {
// output.remove(entry.getKey());
// }
// }
//
// return output;
// }
}
}