Example usage for com.google.common.collect TreeRangeSet create

List of usage examples for com.google.common.collect TreeRangeSet create

Introduction

In this page you can find the example usage for com.google.common.collect TreeRangeSet create.

Prototype

public static <C extends Comparable<?>> TreeRangeSet<C> create() 

Source Link

Document

Creates an empty TreeRangeSet instance.

Usage

From source file:org.kiji.schema.impl.cassandra.CassandraKijiPartition.java

/**
 * Convert a set of (start-token, host) pairs into a set of (token-range, host) pairs.
 *
 * Package private for testing./*from   www  .j  a  va  2 s . co m*/
 *
 * @param startTokens The set of start tokens with hosts.
 * @return The token corresponding token ranges.
 */
static Map<Range<Long>, InetAddress> getTokenRanges(final SortedMap<Long, InetAddress> startTokens) {

    ImmutableMap.Builder<Range<Long>, InetAddress> tokenRangesBldr = ImmutableMap.builder();

    final PeekingIterator<Entry<Long, InetAddress>> startTokensItr = Iterators
            .peekingIterator(startTokens.entrySet().iterator());

    // Add a range for [-, firstStartToken) owned by the final key (the wrap-around range).
    // For more information on Casandra VNode token ranges:
    //    http://www.datastax.com/dev/blog/virtual-nodes-in-cassandra-1-2
    tokenRangesBldr.put(Range.lessThan(startTokens.firstKey()), startTokens.get(startTokens.lastKey()));

    while (startTokensItr.hasNext()) {
        Entry<Long, InetAddress> startToken = startTokensItr.next();
        if (!startTokensItr.hasNext()) {
            // The final start token
            // Add a range for [lastStartToken, )
            tokenRangesBldr.put(Range.atLeast(startToken.getKey()), startToken.getValue());
        } else {
            // Add a range for [thisStartToken, nextStartToken)
            tokenRangesBldr.put(Range.closedOpen(startToken.getKey(), startTokensItr.peek().getKey()),
                    startToken.getValue());
        }
    }

    final Map<Range<Long>, InetAddress> tokenRanges = tokenRangesBldr.build();

    // Check that the returned ranges are coherent; most importantly that all possible tokens fall
    // within the returned range set.

    if (startTokens.size() + 1 != tokenRanges.size()) {
        throw new InternalKijiError(
                String.format("Unexpected number of token ranges. start-tokens: %s, token-ranges: %s.",
                        startTokens.size(), tokenRanges.size()));
    }

    final RangeSet<Long> ranges = TreeRangeSet.create();
    for (Range<Long> tokenRange : tokenRanges.keySet()) {
        ranges.add(tokenRange);
    }

    if (!ranges.encloses(Range.closed(Long.MIN_VALUE, Long.MAX_VALUE))) {
        throw new InternalKijiError("Token range does not include all possible tokens.");
    }

    return tokenRanges;
}

From source file:com.rockhoppertech.music.fx.cmn.model.MeasureSymbolManager.java

/**
 * Clear out the existing shapes, then calculate and add new ones. Draws a
 * simple representation. Does not pay any attention to the note's start
 * time. That what the MeasureCanvas will do when finished.
 *//*from ww  w  . j a va2  s .  c  o m*/
public void refresh() {
    logger.debug("refreshing");

    if (model == null) {
        return;
    }
    shapes.clear();
    symbols.clear();
    //
    // double x = model.getStartX() + 1d
    // * model.getFontSize();

    double x = model.getBeginningBarlineX();

    // this will be at model startx
    // sets first note x
    x = createStaves();
    // x = this.model.getStartX();

    if (this.drawTimeSignature) {
        if (!this.drawKeySignature)
            x += model.getFontSize() / 2d;
        x = addTimeSignature(x, 4, 4);
    }

    // model.setFirstNoteX(x);
    this.createBeatRectangles();

    if (noteList == null) {
        return;
    }

    if (noteList.isEmpty()) {
        return;
    }
    logger.debug("notelist {}", this.noteList);

    // TODO this doesn't cover initial rests i.e. when start beat > 1
    // TODO rests > 5 beats long don't work well
    MIDINote previousNote = noteList.get(0);
    MIDINote firstNote = noteList.get(0);
    double gap = firstNote.getStartBeat() - 1d;
    double eb = 1d;

    double beats = (double) measure.getTimeSignature().getNumerator();
    RangeSet<Double> durSet = TreeRangeSet.create();
    durSet.add(Range.closed(1d, beats));
    logger.debug("initial durSet {} beats {}", durSet, beats);

    for (MIDINote note : noteList) {

        Range<Double> noteRange = Range.closed(note.getStartBeat(), note.getEndBeat());
        durSet.remove(noteRange);
        logger.debug("durSet {} after removing {}", durSet, noteRange);

        logger.debug("beat {} beat in measure {}", note.getStartBeat(), measure.getBeatInMeasure(note));

        // figure out if there is a rest
        double sb = note.getStartBeat();
        if (sb > 1d) {
            eb = previousNote.getEndBeat();
        }
        gap = sb - eb;
        double restbeat = (sb - gap) - this.measure.getStartBeat() + 1d;
        x = getXofBeatN(restbeat);
        logger.debug("sb {} eb {} gap {} x {} restbeat {}", sb, eb, gap, x, restbeat);
        if (gap > 0) {
            int pitch = note.getPitch().getMidiNumber();
            x = addRests(x, gap, pitch);
            x += model.getFontSize() / 2d;
            logger.debug("x {} after adding rest", x);
        } else {
            x += model.getFontSize() / 2d;
        }

        // now worry about the note
        x = getXofBeatN(measure.getBeatInMeasure(note));
        // x = createSymbol(note, x);
        x = createStaffSymbol(note, x);

        logger.debug("x {} after adding symbol", x);
        if (gap >= 0) {
            logger.debug("adding padding");
            // some padding between the symbols
            x += model.getFontSize() / 2d;
            logger.debug("x {} after adding gap 0 spacingl", x);
        }

        gap = 0;
        previousNote = note;
    }

    logger.debug("final durSet {}", durSet);
    if (!durSet.isEmpty()) {
        // then there are rests
        for (Range<Double> restRange : durSet.asRanges()) {
            logger.debug("restRange {}", restRange);
        }
    }

    // push all the x locations to be the previous x + width
    // make sure all the rects are large enough, adjust widths and x
    // locations.
    enlargeBeatRectangles();
    // resize the staves to the new rectangles
    createStaves();
}

From source file:org.robotframework.red.nattable.painter.RedTableTextPainter.java

private RangeSet<Integer> mapOriginalRangesToCurrentLabel(final Collection<Range<Integer>> ranges,
        final String text, final String originalText) {
    final RangeSet<Integer> mappedRanges = TreeRangeSet.create();
    if (wrapText && calculateByTextLength) {
        mappedRanges.addAll(ranges.stream()
                .flatMap(r -> splitRangesForWrappedLabel(
                        calculateOriginalToWrappedLabelMapping(text, originalText), text, r))
                .collect(toList()));//from   w ww .  ja  v a  2  s. com
    } else {
        mappedRanges.addAll(ranges);
    }
    return mappedRanges;
}

From source file:org.jpmml.evaluator.ArgumentUtil.java

static private RangeSet<Double> parseValidRanges(DataField dataField) {
    RangeSet<Double> result = TreeRangeSet.create();

    List<Interval> intervals = dataField.getIntervals();
    for (Interval interval : intervals) {
        Range<Double> range = DiscretizationUtil.toRange(interval);

        result.add(range);/*from  w w w  . j  a v a 2 s .  c  o  m*/
    }

    return result;
}

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

/**
 * Converts zero-indexed, [closed, open) line ranges in the given source file to character ranges.
 *///from w  ww  .  ja va 2s.  c  o  m
public static RangeSet<Integer> lineRangesToCharRanges(String input, RangeSet<Integer> lineRanges) {
    List<Integer> lines = new ArrayList<>();
    Iterators.addAll(lines, Newlines.lineOffsetIterator(input));
    lines.add(input.length() + 1);

    final RangeSet<Integer> characterRanges = TreeRangeSet.create();
    for (Range<Integer> lineRange : lineRanges.subRangeSet(Range.closedOpen(0, lines.size() - 1)).asRanges()) {
        int lineStart = lines.get(lineRange.lowerEndpoint());
        // Exclude the trailing newline. This isn't strictly necessary, but handling blank lines
        // as empty ranges is convenient.
        int lineEnd = lines.get(lineRange.upperEndpoint()) - 1;
        Range<Integer> range = Range.closedOpen(lineStart, lineEnd);
        characterRanges.add(range);
    }
    return characterRanges;
}

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

/** Applies the replacements to the given source, and re-format any edited javadoc. */
private static String applyReplacements(String source, RangeMap<Integer, String> replacements) {
    // save non-empty fixed ranges for reformatting after fixes are applied
    RangeSet<Integer> fixedRanges = TreeRangeSet.create();

    // Apply the fixes in increasing order, adjusting ranges to account for
    // earlier fixes that change the length of the source. The output ranges are
    // needed so we can reformat fixed regions, otherwise the fixes could just
    // be applied in descending order without adjusting offsets.
    StringBuilder sb = new StringBuilder(source);
    int offset = 0;
    for (Map.Entry<Range<Integer>, String> replacement : replacements.asMapOfRanges().entrySet()) {
        Range<Integer> range = replacement.getKey();
        String replaceWith = replacement.getValue();
        int start = offset + range.lowerEndpoint();
        int end = offset + range.upperEndpoint();
        sb.replace(start, end, replaceWith);
        if (!replaceWith.isEmpty()) {
            fixedRanges.add(Range.closedOpen(start, end));
        }/*from   w w  w .  ja  v  a2  s .  co  m*/
        offset += replaceWith.length() - (range.upperEndpoint() - range.lowerEndpoint());
    }
    String result = sb.toString();

    // If there were any non-empty replaced ranges (e.g. javadoc), reformat the fixed regions.
    // We could avoid formatting twice in --fix-imports=also mode, but that is not the default
    // and removing imports won't usually affect javadoc.
    if (!fixedRanges.isEmpty()) {
        try {
            result = new Formatter().formatSource(result, fixedRanges.asRanges());
        } catch (FormatterException e) {
            // javadoc reformatting is best-effort
        }
    }
    return result;
}

From source file:com.github.rinde.datgen.pdptw.DatasetGenerator.java

Dataset<GeneratedScenario> doGenerate() {

    final ListeningExecutorService service = MoreExecutors
            .listeningDecorator(Executors.newFixedThreadPool(builder.numThreads));
    final Dataset<GeneratedScenario> dataset = Dataset.naturalOrder();

    final List<ScenarioCreator> jobs = new ArrayList<>();

    final RandomGenerator rng = new MersenneTwister(builder.randomSeed);
    final Map<GeneratorSettings, IdSeedGenerator> rngMap = new LinkedHashMap<>();

    for (final Long urgency : builder.urgencyLevels) {
        for (final Double scale : builder.scaleLevels) {
            for (final Entry<TimeSeriesType, Collection<Range<Double>>> dynLevel : builder.dynamismLevels
                    .asMap().entrySet()) {

                final int reps = builder.numInstances * dynLevel.getValue().size();

                final long urg = urgency * 60 * 1000L;
                // The office hours is the period in which new orders are accepted,
                // it is defined as [0,officeHoursLength).
                final long officeHoursLength;
                if (urg < halfDiagTT) {
                    officeHoursLength = builder.scenarioLengthMs - twoDiagTT - PICKUP_DURATION
                            - DELIVERY_DURATION;
                } else {
                    officeHoursLength = builder.scenarioLengthMs - urg - oneAndHalfDiagTT - PICKUP_DURATION
                            - DELIVERY_DURATION;
                }//from w ww .  j  a va2  s .  com

                final int numOrders = DoubleMath.roundToInt(scale * numOrdersPerScale,
                        RoundingMode.UNNECESSARY);

                final ImmutableMap.Builder<String, String> props = ImmutableMap.builder();

                props.put("expected_num_orders", Integer.toString(numOrders));
                props.put("pickup_duration", Long.toString(PICKUP_DURATION));
                props.put("delivery_duration", Long.toString(DELIVERY_DURATION));
                props.put("width_height", String.format("%1.1fx%1.1f", AREA_WIDTH, AREA_WIDTH));

                // TODO store this in TimeSeriesType?
                final RangeSet<Double> rset = TreeRangeSet.create();
                for (final Range<Double> r : dynLevel.getValue()) {
                    rset.add(r);
                }

                // createTimeSeriesGenerator(dynLevel.getKey(), officeHoursLength,
                // numOrders, numOrdersPerScale, props);

                final GeneratorSettings set = GeneratorSettings.builder().setDayLength(builder.scenarioLengthMs)
                        .setOfficeHours(officeHoursLength).setTimeSeriesType(dynLevel.getKey())
                        .setDynamismRangeCenters(builder.dynamismRangeMap.subRangeMap(rset.span()))
                        .setUrgency(urg).setScale(scale).setNumOrders(numOrders).setProperties(props.build())
                        .build();

                final IdSeedGenerator isg = new IdSeedGenerator(rng.nextLong());
                rngMap.put(set, isg);

                for (int i = 0; i < reps; i++) {
                    final LocationGenerator lg = Locations.builder().min(0d).max(AREA_WIDTH).buildUniform();

                    final TimeSeriesGenerator tsg2 = createTimeSeriesGenerator(dynLevel.getKey(),
                            officeHoursLength, numOrders, numOrdersPerScale,
                            ImmutableMap.<String, String>builder());
                    final ScenarioGenerator gen = createGenerator(officeHoursLength, urg, scale, tsg2,
                            set.getDynamismRangeCenters(), lg, builder, numOrdersPerScale);

                    jobs.add(ScenarioCreator.create(isg.next(), set, gen));
                }
            }
        }
    }

    final AtomicLong currentJobs = new AtomicLong(0L);
    final AtomicLong datasetSize = new AtomicLong(0L);

    LOGGER.info(" - Submitting " + jobs.size() + " Jobs");
    for (final ScenarioCreator job : jobs) {
        submitJob(currentJobs, service, job, builder.numInstances, dataset, rngMap, datasetSize);
    }

    final long targetSize = builder.numInstances * builder.dynamismLevels.values().size()
            * builder.scaleLevels.size() * builder.urgencyLevels.size();
    while (datasetSize.get() < targetSize || dataset.size() < targetSize) {
        try {
            // LOGGER.info(" - Waiting, current size ==" + dataset.size());
            Thread.sleep(THREAD_SLEEP_DURATION);
        } catch (final InterruptedException e) {
            throw new IllegalStateException(e);
        }
    }

    LOGGER.info(" - Shutdown Service, Awaiting Termination");
    service.shutdown();
    try {
        service.awaitTermination(1L, TimeUnit.HOURS);
    } catch (final InterruptedException e) {
        throw new IllegalStateException(e);
    }

    LOGGER.info(" - Returning dataset");

    return dataset;
}

From source file:org.eclipse.fx.ui.controls.styledtext.internal.ContentView.java

private void bindCaretListener() {
    this.caretOffset.addListener((x, o, n) -> {
        int oldCaretLine = getContent().getLineAtOffset(o.intValue());
        int newCaretLine = getContent().getLineAtOffset(n.intValue());

        RangeSet<Integer> toUpdate = TreeRangeSet.create();
        toUpdate.add(Range.closed(Integer.valueOf(oldCaretLine), Integer.valueOf(oldCaretLine)));
        toUpdate.add(Range.closed(Integer.valueOf(newCaretLine), Integer.valueOf(newCaretLine)));

        updateNodesNow(toUpdate);/*w  w  w.j  a v a  2s .c o  m*/
    });
}

From source file:com.cinchapi.concourse.server.storage.Engine.java

@Override
@Restricted//from   w  w w  . j av a2s  .  com
public void addVersionChangeListener(Token token, VersionChangeListener listener) {
    if (token instanceof RangeToken) {
        Iterable<Range<Value>> ranges = RangeTokens.convertToRange((RangeToken) token);
        for (Range<Value> range : ranges) {
            Map<Text, RangeSet<Value>> map = rangeVersionChangeListeners.getIfPresent(listener);
            if (map == null) {
                map = Maps.newHashMap();
                rangeVersionChangeListeners.put(listener, map);
            }
            RangeSet<Value> set = map.get(((RangeToken) token).getKey());
            if (set == null) {
                set = TreeRangeSet.create();
                map.put(((RangeToken) token).getKey(), set);
            }
            set.add(range);
        }
    } else {
        WeakHashMap<VersionChangeListener, Boolean> existing = versionChangeListeners.get(token);
        if (existing == null) {
            WeakHashMap<VersionChangeListener, Boolean> created = new WeakHashMap<VersionChangeListener, Boolean>();
            existing = versionChangeListeners.putIfAbsent(token, created);
            existing = MoreObjects.firstNonNull(existing, created);
        }
        synchronized (existing) {
            existing.put(listener, Boolean.TRUE);
        }
    }
}

From source file:org.eclipse.fx.ui.controls.styledtext.internal.ContentView.java

private void bindSelectionListener() {
    this.textSelection.addListener((x, o, n) -> {
        RangeSet<Integer> toUpdate = TreeRangeSet.create();
        if (o != null)
            toUpdate.add(getAffectedLines(o));
        if (n != null)
            toUpdate.add(getAffectedLines(n));
        updateNodesNow(toUpdate);/* ww w .j  ava2 s .  c  om*/
    });
}