Example usage for com.google.common.collect Range closed

List of usage examples for com.google.common.collect Range closed

Introduction

In this page you can find the example usage for com.google.common.collect Range closed.

Prototype

public static <C extends Comparable<?>> Range<C> closed(C lower, C upper) 

Source Link

Document

Returns a range that contains all values greater than or equal to lower and less than or equal to upper .

Usage

From source file:io.github.mzmine.util.jfreechart.IntelligentItemLabelGenerator.java

/**
 * @see org.jfree.chart.labels.XYItemLabelGenerator#generateLabel(org.jfree.data.xy.XYDataset,
 *      int, int)//  ww w.java2s .  c  o m
 */
public String generateLabel(XYDataset currentDataset, int currentSeries, int currentItem) {

    XYPlot plot = chartNode.getChart().getXYPlot();

    // X and Y values of the current data point
    final double currentXValue = currentDataset.getXValue(currentSeries, currentItem);
    final double currentYValue = currentDataset.getYValue(currentSeries, currentItem);

    // Calculate X axis span of 1 screen pixel
    final double xLength = plot.getDomainAxis().getRange().getLength();
    final double pixelX = xLength / chartNode.getWidth();

    // Calculate the distance from the current point where labels might
    // overlap
    final double dangerZoneX = (reservedPixels / 2) * pixelX;

    // Range on X axis that we're going to check for higher data points. If
    // a higher data point is found, we don't place a label on this one.
    final Range<Double> dangerZoneRange = Range.closed(currentXValue - dangerZoneX,
            currentXValue + dangerZoneX);

    // Iterate through data sets
    for (int datasetIndex = 0; datasetIndex < plot.getDatasetCount(); datasetIndex++) {

        XYDataset dataset = plot.getDataset(datasetIndex);

        // Some data sets could have been removed
        if (dataset == null)
            continue;

        final int seriesCount = dataset.getSeriesCount();

        // Iterate through series
        for (int seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) {

            final int itemCount = dataset.getItemCount(seriesIndex);

            // Find the index of a data point that is closest to
            // currentXValue
            int closestValueIndex;
            if (dataset == currentDataset && seriesIndex == currentSeries) {
                closestValueIndex = currentItem;
            } else {
                closestValueIndex = findClosestXIndex(dataset, seriesIndex, currentXValue, 0, itemCount - 1);
            }

            // Search to the left of the closest data point
            for (int i = closestValueIndex; (i >= 0)
                    && (dangerZoneRange.contains(dataset.getX(seriesIndex, i).doubleValue())); i--) {
                if (dataset.getYValue(seriesIndex, i) > currentYValue)
                    return null;

                // In the case there are equal values, only place the label
                // on the leftmost value
                if (dataset.getYValue(seriesIndex, i) == currentYValue
                        && (dataset.getXValue(seriesIndex, i) < currentXValue))
                    return null;

            }

            // Search to the right of the closest data point
            for (int i = closestValueIndex + 1; (i < itemCount)
                    && (dangerZoneRange.contains(dataset.getX(seriesIndex, i).doubleValue())); i++) {
                if (dataset.getYValue(seriesIndex, i) > currentYValue)
                    return null;
            }

        }

    }

    // If no higher data point was found, create the label
    String label = underlyingGenerator.generateLabel(currentDataset, currentSeries, currentItem);

    return label;

}

From source file:org.mskcc.shenkers.view.GenericStackedIntervalView.java

public void setData(List<Pair<Integer, Integer>> intervals, List<T> content) {
    rows.clear();//from  w  w  w  .  j a  va2 s  .co  m
    rowNodes.clear();

    rows.add(TreeRangeSet.create());
    rowNodes.add(new ArrayList<>());

    List<IntervalNode<T>> nodes = Stream.iterate(0, i -> i + 1).limit(intervals.size())
            .map(i -> new IntervalNode<T>(intervals.get(i), content.get(i))).collect(Collectors.toList());

    Collections.sort(nodes, new Comparator<IntervalNode<T>>() {

        @Override
        public int compare(IntervalNode<T> o1, IntervalNode<T> o2) {
            return o1.interval.getKey() - o2.interval.getKey();
        }
    });

    for (IntervalNode inode : nodes) {
        Pair<Integer, Integer> interval = inode.interval;
        Range<Integer> range = Range.closed(interval.getKey(), interval.getValue());
        logger.info("stacking {}", interval);
        int i = 0;
        added: {
            // add the interval to the first row that doesn't intersect with
            while (i < rows.size()) {
                TreeRangeSet<Integer> set = rows.get(i);
                List<IntervalNode<T>> rowContent = rowNodes.get(i);
                RangeSet<Integer> intersection = set.subRangeSet(
                        Range.closed(interval.getKey() - minSpace, interval.getValue() + minSpace));
                if (intersection.isEmpty()) {
                    set.add(range);
                    rowContent.add(inode);
                    logger.info("no intersections in row {}", i);
                    break added;
                }
                logger.info("intersects in row {} {}", i, set);
                i++;
            }

            TreeRangeSet<Integer> row = TreeRangeSet.create();
            row.add(range);
            rows.add(row);

            List<IntervalNode<T>> rowContent = new ArrayList<>();
            rowContent.add(inode);
            rowNodes.add(rowContent);
        }
    }

    //        {
    //            Rectangle background = new Rectangle();
    //            background.setFill(Color.WHITE);
    //            background.widthProperty().bind(widthProperty());
    //            background.heightProperty().bind(heightProperty());
    //            getChildren().add(background);
    //        }

    List<T> children = new ArrayList<>();

    for (List<IntervalNode<T>> row : rowNodes) {
        GenericIntervalView<T> rowView = new GenericIntervalView<>(min, max);

        List<Pair<Integer, Integer>> rowIntervals = new ArrayList<>(row.size());
        List<T> rowContent = new ArrayList<>(row.size());
        row.stream().forEach(i -> {
            rowIntervals.add(i.interval);
            rowContent.add(i.content);
        });
        rowView.setData(rowIntervals, rowContent);
        rowView.flipDomainProperty().bind(flipDomain);

        children.add((T) rowView);
    }

    getChildren().addAll(children);
}

From source file:jetbrains.jetpad.geometry.Rectangle.java

public Range<Integer> yRange() {
    return Range.closed(origin.y, origin.y + dimension.y);
}

From source file:io.druid.timeline.partition.SingleDimensionShardSpec.java

@Override
public Map<String, Range<String>> getDomain() {
    Range<String> range;//from  ww w .  j a va  2  s  .  co m
    if (start == null && end == null) {
        range = Range.all();
    } else if (start == null) {
        range = Range.atMost(end);
    } else if (end == null) {
        range = Range.atLeast(start);
    } else {
        range = Range.closed(start, end);
    }
    return ImmutableMap.of(dimension, range);
}

From source file:net.joala.data.random.AbstractRandomNumberProvider.java

@Override
public T get() throws DataProvidingException {
    try {/*  w  w w. java  2  s .  c om*/
        return nextRandom(Range.closed(minValue, maxValue));
    } catch (IllegalArgumentException e) {
        throw new DataProvidingException("Illegal range.", e);
    }
}

From source file:net.sf.mzmine.parameters.parametertypes.ranges.IntRangeParameter.java

@Override
public void loadValueFromXML(Element xmlElement) {
    NodeList minNodes = xmlElement.getElementsByTagName("min");
    if (minNodes.getLength() != 1)
        return;//from   w w w  .  j  av  a  2s  . co  m
    NodeList maxNodes = xmlElement.getElementsByTagName("max");
    if (maxNodes.getLength() != 1)
        return;
    String minText = minNodes.item(0).getTextContent();
    String maxText = maxNodes.item(0).getTextContent();
    Integer min = Integer.valueOf(minText);
    Integer max = Integer.valueOf(maxText);
    value = Range.closed(min, max);
}

From source file:org.apache.druid.timeline.partition.SingleDimensionShardSpec.java

private Range<String> getRange() {
    Range<String> range;/* w w w. ja  v a  2s . c  o m*/
    if (start == null && end == null) {
        range = Range.all();
    } else if (start == null) {
        range = Range.atMost(end);
    } else if (end == null) {
        range = Range.atLeast(start);
    } else {
        range = Range.closed(start, end);
    }
    return range;
}

From source file:eu.interedition.collatex.medite.MediteAlgorithm.java

@Override
public void collate(VariantGraph graph, Iterable<Token> witness) {
    final VariantGraph.Vertex[][] vertices = VariantGraphRanking.of(graph).asArray();
    final Token[] tokens = Iterables.toArray(witness, Token.class);

    final SuffixTree<Token> suffixTree = SuffixTree.build(comparator, tokens);
    final MatchEvaluatorWrapper matchEvaluator = new MatchEvaluatorWrapper(this.matchEvaluator, tokens);

    final Matches matchCandidates = Matches.between(vertices, suffixTree, matchEvaluator);
    final SortedSet<SortedSet<VertexMatch.WithTokenIndex>> matches = Sets
            .newTreeSet(VertexMatch.<VertexMatch.WithTokenIndex>setComparator());

    while (true) {
        final SortedSet<SortedSet<VertexMatch.WithTokenIndex>> maximalUniqueMatches = matchCandidates
                .findMaximalUniqueMatches();
        if (maximalUniqueMatches.isEmpty()) {
            break;
        }//  w  w  w .jav a  2 s . c o m

        final IntegerRangeSet rankFilter = new IntegerRangeSet();
        final IntegerRangeSet tokenFilter = new IntegerRangeSet();

        for (SortedSet<VertexMatch.WithTokenIndex> phrase : AlignmentDecisionGraph.filter(maximalUniqueMatches,
                matchEvaluator)) {
            final VertexMatch.WithTokenIndex firstMatch = phrase.first();
            final VertexMatch.WithTokenIndex lastMatch = phrase.last();

            matches.add(phrase);
            rankFilter.add(Range.closed(firstMatch.vertexRank, lastMatch.vertexRank));
            tokenFilter.add(Range.closed(firstMatch.token, lastMatch.token));
        }

        Iterables.removeIf(matchCandidates, VertexMatch.filter(rankFilter, tokenFilter));
    }

    merge(graph, vertices, tokens, matches);
}

From source file:com.google.errorprone.refaster.UBlank.java

@Override
public Choice<UnifierWithUnconsumedStatements> apply(final UnifierWithUnconsumedStatements state) {
    int goodIndex = 0;
    while (goodIndex < state.unconsumedStatements().size()) {
        StatementTree stmt = state.unconsumedStatements().get(goodIndex);
        if (firstNonNull(FORBIDDEN_REFERENCE_SCANNER.scan(stmt, state.unifier()), false)
                && ControlFlowVisitor.INSTANCE.visitStatement(stmt) == ControlFlowVisitor.Result.NEVER_EXITS) {
            break;
        } else {//from   w w  w  .  ja va 2 s .  co m
            goodIndex++;
        }
    }
    Collection<Integer> breakPoints = ContiguousSet.create(Range.closed(0, goodIndex),
            DiscreteDomain.integers());
    return Choice.from(breakPoints).transform(new Function<Integer, UnifierWithUnconsumedStatements>() {
        @Override
        public UnifierWithUnconsumedStatements apply(Integer k) {
            Unifier unifier = state.unifier().fork();
            unifier.putBinding(key(), state.unconsumedStatements().subList(0, k));
            List<? extends StatementTree> remaining = state.unconsumedStatements().subList(k,
                    state.unconsumedStatements().size());
            return UnifierWithUnconsumedStatements.create(unifier, remaining);
        }
    });
}

From source file:org.caleydo.view.crossword.api.ui.band.Route.java

private Iterable<Vec2f> shiftCurve(final IDoubleFunction radius) {
    final int last = curve.length - 1;
    final float distanceFactor = 1.f / distances[last];
    return Iterables.transform(ContiguousSet.create(Range.closed(0, last), DiscreteDomain.integers()),
            new Function<Integer, Vec2f>() {
                @Override//from  w  ww.j av  a 2s  .  c o m
                public Vec2f apply(Integer input) {
                    int i = input.intValue();

                    final float t = distances[i] * distanceFactor;
                    final float r = (float) radius.apply(t);

                    Vec2f p = curve[i].addScaled(r, normals[i]);
                    return p;
                }
            });
}