Example usage for com.google.common.collect ImmutableRangeSet builder

List of usage examples for com.google.common.collect ImmutableRangeSet builder

Introduction

In this page you can find the example usage for com.google.common.collect ImmutableRangeSet builder.

Prototype

public static <C extends Comparable<?>> Builder<C> builder() 

Source Link

Document

Returns a new builder for an immutable range set.

Usage

From source file:org.apache.aurora.scheduler.updater.Updates.java

/**
 * Creates a range set representing all instance IDs represented by a set of instance
 * configurations included in a job update.
 *
 * @param configs Job update components.
 * @return A range set representing the instance IDs mentioned in instance groupings.
 *//*from w ww.ja va 2s  .c om*/
public static ImmutableRangeSet<Integer> getInstanceIds(Set<IInstanceTaskConfig> configs) {
    ImmutableRangeSet.Builder<Integer> builder = ImmutableRangeSet.builder();
    for (IInstanceTaskConfig config : configs) {
        for (IRange range : config.getInstances()) {
            builder.add(Range.closed(range.getFirst(), range.getLast()));
        }
    }

    return builder.build();
}

From source file:io.v.todos.persistence.syncbase.DigitMappings.java

/**
 * @see #fromRangeSet(RangeSet)//from w  w w .jav  a 2 s . c o  m
 */
@SafeVarargs
public static DigitMapping fromRangeSet(Range<Character>... ranges) {
    ImmutableRangeSet.Builder<Character> builder = ImmutableRangeSet.builder();
    for (Range<Character> range : ranges) {
        builder.add(range);
    }
    return fromRangeSet(builder.build());
}

From source file:org.opendaylight.controller.cluster.datastore.persisted.FrontendClientMetadata.java

public static FrontendClientMetadata readFrom(final DataInput in) throws IOException, ClassNotFoundException {
    final ClientIdentifier id = ClientIdentifier.readFrom(in);

    final int purgedSize = in.readInt();
    final Builder<UnsignedLong> b = ImmutableRangeSet.builder();
    for (int i = 0; i < purgedSize; ++i) {
        final byte header = WritableObjects.readLongHeader(in);
        final UnsignedLong lower = UnsignedLong.fromLongBits(WritableObjects.readFirstLong(in, header));
        final UnsignedLong upper = UnsignedLong.fromLongBits(WritableObjects.readSecondLong(in, header));

        b.add(Range.closed(lower, upper));
    }/*w  w  w .  j a v  a  2s  .  co m*/

    final int currentSize = in.readInt();
    final Collection<FrontendHistoryMetadata> currentHistories = new ArrayList<>(currentSize);
    for (int i = 0; i < currentSize; ++i) {
        currentHistories.add(FrontendHistoryMetadata.readFrom(in));
    }

    return new FrontendClientMetadata(id, b.build(), currentHistories);
}

From source file:org.apache.aurora.scheduler.base.Numbers.java

/**
 * Performs {@link #toRange(IRange)} for a collection of ranges, and convert the result to a set
 * of integers./*w ww .ja v a 2  s .  c om*/
 *
 * @param ranges Ranges to convert.
 * @return A set representing {@code ranges}.
 */
public static Set<Integer> rangesToInstanceIds(Iterable<IRange> ranges) {
    ImmutableRangeSet.Builder<Integer> instanceIds = ImmutableRangeSet.builder();
    for (IRange range : ranges) {
        instanceIds.add(toRange(range));
    }

    return instanceIds.build().asSet(DiscreteDomain.integers());
}

From source file:google.registry.tldconfig.idn.IdnTable.java

/** Creates an IDN table given the lines from text file. */
static IdnTable createFrom(String language, Iterable<String> data,
        Optional<LanguageValidator> languageValidator) {
    ImmutableRangeSet.Builder<Integer> rangeSet = new ImmutableRangeSet.Builder<>();
    URI url = null;/*from w  w w  .  j a  v  a  2  s  .  c o m*/
    URI policy = null;
    for (String line : data) {
        // Remove leading and trailing whitespace.
        line = line.trim();

        // Handle special comment lines.
        if (line.startsWith(URL_LINE_PREFIX)) {
            url = URI.create(line.substring(URL_LINE_PREFIX.length()));
        } else if (line.startsWith(POLICY_LINE_PREFIX)) {
            policy = URI.create(line.substring(POLICY_LINE_PREFIX.length()));
        }

        // Skip empty and comment lines.
        if (line.isEmpty() || line.startsWith("#")) {
            continue;
        }

        int codepoint = readCodepoint(line);
        rangeSet.add(Range.<Integer>singleton(codepoint));
    }
    return new IdnTable(language, url, policy, rangeSet.build(), languageValidator);
}

From source file:io.horizondb.model.core.predicates.AndPredicate.java

/**
 * {@inheritDoc}/* w  w w  . j av  a  2s .co  m*/
 */
@Override
public RangeSet<Field> getTimestampRanges() {

    RangeSet<Field> leftRanges = this.left.getTimestampRanges();
    RangeSet<Field> rightRanges = this.right.getTimestampRanges();

    Builder<Field> builder = ImmutableRangeSet.builder();

    for (Range<Field> range : leftRanges.asRanges()) {

        builder.addAll(rightRanges.subRangeSet(range));
    }

    return builder.build();
}

From source file:org.pentaho.di.trans.steps.samplerows.SampleRows.java

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
    meta = (SampleRowsMeta) smi;/*w  ww . j  a v a2 s .c om*/
    data = (SampleRowsData) sdi;

    Object[] r = getRow(); // get row, set busy!
    if (r == null) { // no more input to be expected...

        setOutputDone();
        return false;
    }
    if (first) {
        first = false;

        String realRange = environmentSubstitute(meta.getLinesRange());
        data.addlineField = (!Utils.isEmpty(environmentSubstitute(meta.getLineNumberField())));

        // get the RowMeta
        data.previousRowMeta = getInputRowMeta().clone();
        data.NrPrevFields = data.previousRowMeta.size();
        data.outputRowMeta = data.previousRowMeta;
        if (data.addlineField) {
            meta.getFields(data.outputRowMeta, getStepname(), null, null, this, repository, metaStore);
        }

        String[] rangePart = realRange.split(",");
        ImmutableRangeSet.Builder<Integer> setBuilder = ImmutableRangeSet.builder();

        for (String part : rangePart) {
            if (part.matches("\\d+")) {
                if (log.isDebug()) {
                    logDebug(BaseMessages.getString(PKG, "SampleRows.Log.RangeValue", part));
                }
                int vpart = Integer.valueOf(part);
                setBuilder.add(Range.singleton(vpart));

            } else if (part.matches("\\d+\\.\\.\\d+")) {
                String[] rangeMultiPart = part.split("\\.\\.");
                Integer start = Integer.valueOf(rangeMultiPart[0]);
                Integer end = Integer.valueOf(rangeMultiPart[1]);
                Range<Integer> range = Range.closed(start, end);
                if (log.isDebug()) {
                    logDebug(BaseMessages.getString(PKG, "SampleRows.Log.RangeValue", range));
                }
                setBuilder.add(range);
            }
        }
        data.rangeSet = setBuilder.build();
    } // end if first

    if (data.addlineField) {
        data.outputRow = RowDataUtil.allocateRowData(data.outputRowMeta.size());
        for (int i = 0; i < data.NrPrevFields; i++) {
            data.outputRow[i] = r[i];
        }
    } else {
        data.outputRow = r;
    }

    int linesRead = (int) getLinesRead();
    if (data.rangeSet.contains(linesRead)) {
        if (data.addlineField) {
            data.outputRow[data.NrPrevFields] = getLinesRead();
        }

        // copy row to possible alternate rowset(s).
        //
        putRow(data.outputRowMeta, data.outputRow);

        if (log.isRowLevel()) {
            logRowlevel(BaseMessages.getString(PKG, "SampleRows.Log.LineNumber",
                    linesRead + " : " + getInputRowMeta().getString(r)));
        }
    }

    // Check if maximum value has been exceeded
    if (data.rangeSet.isEmpty() || linesRead >= data.rangeSet.span().upperEndpoint()) {
        setOutputDone();
    }

    // Allowed to continue to read in data
    return true;
}

From source file:io.horizondb.model.core.predicates.InPredicate.java

/**    
 * {@inheritDoc}/*w  w w.  j a va 2 s . c  o  m*/
 */
@Override
public RangeSet<Field> getTimestampRanges() {

    if (!isTimestamp()) {
        return TimestampField.ALL;
    }

    ImmutableRangeSet.Builder<Field> builder = ImmutableRangeSet.builder();

    for (Field field : this.values) {

        builder.add(Range.closed(field, field));
    }

    RangeSet<Field> rangeSet = builder.build();

    if (this.notIn) {
        return rangeSet.complement();
    }

    return rangeSet;
}

From source file:org.apache.cassandra.cql3.restrictions.TokenFilter.java

/**
 * Converts the specified list into a range set.
 *
 * @param buffers the token restriction values
 * @return the range set corresponding to the specified list
 *//*from  www  . j  a v a  2 s .  c  o m*/
private static RangeSet<Token> toRangeSet(List<ByteBuffer> buffers) {
    ImmutableRangeSet.Builder<Token> builder = ImmutableRangeSet.builder();

    for (ByteBuffer buffer : buffers)
        builder.add(Range.singleton(deserializeToken(buffer)));

    return builder.build();
}

From source file:com.google.googlejavaformat.java.CommandLineOptionsParser.java

/**
 * Parse multiple --lines flags, like {"1:12,14,20:36", "40:45,50"}. Multiple ranges can be given
 * with multiple --lines flags or separated by commas. A single line can be set by a single
 * number. Line numbers are {@code 1}-based, but are converted to the {@code 0}-based numbering
 * used internally by google-java-format.
 */// w w  w .j  av  a2 s .c  om
private static void parseRangeSet(ImmutableRangeSet.Builder<Integer> result, String ranges) {
    for (String range : COMMA_SPLITTER.split(ranges)) {
        result.add(parseRange(range));
    }
}