List of usage examples for com.google.common.collect RangeSet add
void add(Range<C> range);
From source file:org.apache.druid.query.filter.BoundDimFilter.java
@Override public RangeSet<String> getDimensionRangeSet(String dimension) { if (!(Objects.equals(getDimension(), dimension) && getExtractionFn() == null && ordering.equals(StringComparators.LEXICOGRAPHIC))) { return null; }/*w ww . j a v a 2 s.c om*/ RangeSet<String> retSet = TreeRangeSet.create(); Range<String> range; if (getLower() == null) { range = isUpperStrict() ? Range.lessThan(getUpper()) : Range.atMost(getUpper()); } else if (getUpper() == null) { range = isLowerStrict() ? Range.greaterThan(getLower()) : Range.atLeast(getLower()); } else { range = Range.range(getLower(), isLowerStrict() ? BoundType.OPEN : BoundType.CLOSED, getUpper(), isUpperStrict() ? BoundType.OPEN : BoundType.CLOSED); } retSet.add(range); return retSet; }
From source file:com.cinchapi.concourse.server.storage.Engine.java
@Override @Restricted/*from w w w . j ava 2s.co m*/ 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: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; }//w w w . j av a2 s . c o m 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 onLineChange(Observable o) { RangeSet<Integer> toUpdate = TreeRangeSet.create(); RangeSet<Integer> toRelease = TreeRangeSet.create(); double offsetY = offsetYProperty().get(); com.google.common.collect.Range<Integer> visibleLines = visibleLinesProperty().get(); ContiguousSet<Integer> set = ContiguousSet.create(visibleLines, DiscreteDomain.integers()); double lineHeight = lineHeightProperty().get(); // schedule visible line updates if (this.curVisibleLines == null) { toUpdate.add(visibleLines); } else {//from w ww.java 2 s . co m RangeSet<Integer> hiddenLines = TreeRangeSet.create(); hiddenLines.add(this.curVisibleLines); hiddenLines.remove(visibleLines); RangeSet<Integer> shownLines = TreeRangeSet.create(); shownLines.add(visibleLines); shownLines.remove(this.curVisibleLines); toUpdate.addAll(shownLines); toRelease.addAll(hiddenLines); } this.curVisibleLines = visibleLines; // store precomputed y data for (int index : set) { double y = index * lineHeight - offsetY; this.yOffsetData.put(Integer.valueOf(index), Double.valueOf(y)); // this.forceLayout = true; } releaseNodesNow(toRelease); updateNodesNow(toUpdate); this.lineLayer.requestLayout(); // scheduleUpdate(); }
From source file:hudson.model.Fingerprint.java
void addWithoutSaving(@Nonnull String jobFullName, int n) { synchronized (usages) { // TODO why not synchronized (this) like some, though not all, other accesses? RangeSet r = usages.get(jobFullName); if (r == null) { r = new RangeSet(); usages.put(jobFullName, r);/* w w w. j av a2 s . co m*/ } r.add(n); } }
From source file:hudson.model.Fingerprint.java
/** * Trim off references to non-existent builds and jobs, thereby making the fingerprint smaller. * * @return true/*w w w. ja v a2s . c o m*/ * if this record was modified. * * @throws IOException Save failure */ public synchronized boolean trim() throws IOException { boolean modified = false; for (Entry<String, RangeSet> e : new Hashtable<String, RangeSet>(usages).entrySet()) {// copy because we mutate Job j = Jenkins.getInstance().getItemByFullName(e.getKey(), Job.class); if (j == null) {// no such job any more. recycle the record modified = true; usages.remove(e.getKey()); continue; } Run firstBuild = j.getFirstBuild(); if (firstBuild == null) {// no builds. recycle the whole record modified = true; usages.remove(e.getKey()); continue; } RangeSet cur = e.getValue(); // builds that are around without the keepLog flag on are normally clustered together (in terms of build #) // so our basic strategy is to discard everything up to the first ephemeral build, except those builds // that are marked as kept RangeSet kept = new RangeSet(); Run r = firstBuild; while (r != null && r.isKeepLog()) { kept.add(r.getNumber()); r = r.getNextBuild(); } if (r == null) { // all the build records are permanently kept ones, so we'll just have to keep 'kept' out of whatever currently in 'cur' modified |= cur.retainAll(kept); } else { // otherwise we are ready to discard [0,r.number) except those marked as 'kept' RangeSet discarding = new RangeSet(new Range(-1, r.getNumber())); discarding.removeAll(kept); modified |= cur.removeAll(discarding); } if (cur.isEmpty()) { usages.remove(e.getKey()); modified = true; } } if (modified) { if (logger.isLoggable(Level.FINE)) { logger.log(Level.FINE, "Saving trimmed {0}", getFingerprintFile(md5sum)); } save(); } return modified; }
From source file:hudson.model.AbstractBuild.java
/** * Gets the dependency relationship from this build (as the source) * and that project (as the sink.)/*w ww.ja va2 s . c o m*/ * * @return * range of build numbers that represent which downstream builds are using this build. * The range will be empty if no build of that project matches this (or there is no {@link FingerprintAction}), but it'll never be null. */ public RangeSet getDownstreamRelationship(AbstractProject that) { RangeSet rs = new RangeSet(); FingerprintAction f = getAction(FingerprintAction.class); if (f == null) return rs; // look for fingerprints that point to this build as the source, and merge them all for (Fingerprint e : f.getFingerprints().values()) { if (upstreamCulprits) { // With upstreamCulprits, we allow downstream relationships // from intermediate jobs rs.add(e.getRangeSet(that)); } else { BuildPtr o = e.getOriginal(); if (o != null && o.is(this)) rs.add(e.getRangeSet(that)); } } return rs; }
From source file:view.FXApplicationController.java
private void calculatePercentageKComplex() { double percentageSum = 0.0; RangeSet<Double> rangeset = TreeRangeSet.create(); for (int i = 0; i < lines.size(); i++) { Line line = lines.get(i); double lengthOfLine; Range r = Range.closed(//www . j a va 2s. c o m Math.min(line.getLayoutX(), line.getEndX() + line.getLayoutX()) / xAxis.getWidth() * 100. - 1e-9, Math.max(line.getLayoutX(), line.getEndX() + line.getLayoutX()) / xAxis.getWidth() * 100. + 1e-9); rangeset.add(r); } percentageSum = rangeset.asRanges().stream().mapToDouble(e -> (e.upperEndpoint() - e.lowerEndpoint())) .sum(); kComplexLabel.setText("K-Complex: " + Math.round(percentageSum) + "%"); }
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 w w w . j a v a 2 s. com 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(); }