List of usage examples for com.google.common.collect TreeRangeSet create
public static <C extends Comparable<?>> TreeRangeSet<C> create()
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*/ }); }