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

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

Introduction

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

Prototype

public boolean contains(C value) 

Source Link

Document

Returns true if value is within the bounds of this range.

Usage

From source file:net.sf.mzmine.project.impl.RawDataFileImpl.java

/**
 * @see net.sf.mzmine.datamodel.RawDataFile#getScanNumbers(int, double,
 *      double)/*from   w  w  w . j a  va 2s  . c  o  m*/
 */
public @Nonnull int[] getScanNumbers(int msLevel, @Nonnull Range<Double> rtRange) {

    assert rtRange != null;

    ArrayList<Integer> eligibleScanNumbers = new ArrayList<Integer>();

    Enumeration<StorableScan> scansEnum = scans.elements();
    while (scansEnum.hasMoreElements()) {
        Scan scan = scansEnum.nextElement();

        if ((scan.getMSLevel() == msLevel) && (rtRange.contains(scan.getRetentionTime())))
            eligibleScanNumbers.add(scan.getScanNumber());
    }

    int[] numbersArray = Ints.toArray(eligibleScanNumbers);
    Arrays.sort(numbersArray);

    return numbersArray;
}

From source file:com.haulmont.yarg.formatters.impl.XlsxFormatter.java

protected int processInnerFormulas(CTCalcChain calculationChain) {
    int formulaCount = 1;

    for (Cell cellWithFormula : innerFormulas) {
        Row row = (Row) cellWithFormula.getParent();
        Worksheet worksheet = getWorksheet(row);
        Set<Range> formulaRanges = Range.fromCellFormula(result.getSheetName(worksheet), cellWithFormula);
        for (Range templateRange : rangeDependencies.templates()) {
            if (templateRange.containsAny(formulaRanges)) {
                List<Range> resultRanges = rangeDependencies.resultsForTemplate(templateRange);

                CellReference cellReference = new CellReference(result.getSheetName(worksheet),
                        cellWithFormula.getR());
                for (Range resultRange : resultRanges) {
                    if (resultRange.contains(cellReference)) {
                        Offset offset = calculateOffset(templateRange, resultRange);

                        for (Range formulaRange : formulaRanges) {
                            Range shiftedFormulaRange = formulaRange.copy().shift(offset.downOffset,
                                    offset.rightOffset);
                            updateFormula(cellWithFormula, formulaRange, shiftedFormulaRange, calculationChain,
                                    formulaCount++);
                        }/*from  w w  w. j  a v  a 2s. co m*/
                        break;
                    }
                }
            }
        }
    }
    return formulaCount;
}

From source file:com.haulmont.yarg.formatters.impl.XlsxFormatter.java

protected void updateConditionalFormatting() {
    for (Document.SheetWrapper sheetWrapper : result.getWorksheets()) {
        Worksheet worksheet = sheetWrapper.getWorksheet().getJaxbElement();
        for (CTConditionalFormatting ctConditionalFormatting : worksheet.getConditionalFormatting()) {
            List<String> references = new ArrayList<String>();
            for (String ref : ctConditionalFormatting.getSqref()) {
                Range formulaRange = Range.fromRange(sheetWrapper.getName(), ref);
                for (Range templateRange : rangeDependencies.templates()) {
                    if (templateRange.contains(formulaRange)) {
                        List<Range> resultRanges = new ArrayList<Range>(
                                rangeDependencies.resultsForTemplate(templateRange));
                        for (Range resultRange : resultRanges) {
                            Offset offset = calculateOffset(templateRange, resultRange);
                            Range shift = formulaRange.copy().shift(offset.downOffset, offset.rightOffset);
                            references.add(shift.toRange());
                        }/*from  w w  w  .ja  va 2 s  .c  om*/
                    }
                }
            }

            ctConditionalFormatting.getSqref().clear();
            ctConditionalFormatting.getSqref().addAll(references);
        }
    }
}

From source file:com.haulmont.yarg.formatters.impl.XlsxFormatter.java

protected void processOuterFormulas(int formulaCount, CTCalcChain calculationChain) {
    for (Cell cellWithFormula : outerFormulas) {
        Row row = (Row) cellWithFormula.getParent();
        Worksheet worksheet = getWorksheet(row);
        Set<Range> formulaRanges = Range.fromCellFormula(result.getSheetName(worksheet), cellWithFormula);
        CellReference formulaCellReference = new CellReference(result.getSheetName(worksheet),
                cellWithFormula.getR());

        BandData formulaParentBand = null;
        BandData formulaBand = null;//from  w  w  w  .  j a  v a 2 s  .  c  o  m

        for (Range resultRange : rangeDependencies.results()) {
            if (resultRange.contains(formulaCellReference)) {
                formulaBand = bandsForRanges.bandForResultRange(resultRange);
                formulaParentBand = formulaBand.getParentBand();
            }
        }

        for (Range templateRange : rangeDependencies.templates()) {
            if (templateRange.containsAny(formulaRanges)) {
                List<Range> resultRanges = new ArrayList<Range>(
                        rangeDependencies.resultsForTemplate(templateRange));
                for (Iterator<Range> iterator = resultRanges.iterator(); iterator.hasNext();) {
                    Range resultRange = iterator.next();
                    BandData bandData = bandsForRanges.bandForResultRange(resultRange);
                    if (!bandData.getParentBand().equals(formulaParentBand)
                            && !bandData.getParentBand().equals(formulaBand)) {
                        iterator.remove();
                    }
                }

                for (Range formulaRange : formulaRanges) {
                    if (resultRanges.size() > 0) {
                        Range shiftedRange = calculateFormulaRangeChange(formulaRange, templateRange,
                                resultRanges);
                        updateFormula(cellWithFormula, formulaRange, shiftedRange, calculationChain,
                                formulaCount++);
                    } else {
                        cellWithFormula.setF(null);
                        cellWithFormula.setV("ERROR: Formula references to empty range");
                        cellWithFormula.setT(STCellType.STR);
                    }
                }
                break;
            }
        }
    }
}

From source file:net.sf.mzmine.modules.visualization.neutralloss.NeutralLossDataSet.java

public void updateOnRangeDataPoints(String rangeType) {

    NeutralLossPlot plot = visualizer.getPlot();
    Range<Double> prRange = plot.getHighlightedPrecursorRange();
    Range<Double> nlRange = plot.getHighlightedNeutralLossRange();

    // Set type of search
    int level = NEUTRALLOSS_LEVEL;
    if (rangeType.equals("HIGHLIGHT_PRECURSOR"))
        level = PRECURSOR_LEVEL;//from  w w w  . j a va2  s . c  om

    // Clean previous selection
    dataSeries.get(level).clear();

    NeutralLossDataPoint point;
    boolean b = false;
    for (int i = 0; i < dataSeries.get(RAW_LEVEL).size(); i++) {
        point = dataSeries.get(RAW_LEVEL).get(i);
        // Verify if the point is on range
        if (level == PRECURSOR_LEVEL)
            b = prRange.contains(point.getPrecursorMass());
        else
            b = nlRange.contains(point.getNeutralLoss());
        if (b)
            dataSeries.get(level).add(point);
    }

    fireDatasetChanged();
}

From source file:com.haulmont.yarg.formatters.impl.XlsxFormatter.java

private void processSeries(ListSer o) {
    List<SerContent> ser = o.getSer();
    for (SerContent ctBarSer : ser) {
        CTAxDataSource captions = ctBarSer.getCat();
        if (captions != null && captions.getStrRef() != null) {
            Range temlpateCaptionsRange = Range.fromFormula(captions.getStrRef().getF());
            for (Range bandRange : rangeDependencies.templates()) {
                if (bandRange.contains(temlpateCaptionsRange)) {
                    List<Range> seriesResultRanges = rangeDependencies.resultsForTemplate(bandRange);

                    Range seriesFirstRange = getFirst(seriesResultRanges);
                    Range seriesLastRange = getLast(seriesResultRanges);

                    Offset offset = calculateOffset(temlpateCaptionsRange, seriesFirstRange);
                    Offset initialOffset = calculateOffset(temlpateCaptionsRange, bandRange);
                    temlpateCaptionsRange = temlpateCaptionsRange.shift(
                            offset.downOffset - initialOffset.downOffset,
                            offset.rightOffset - initialOffset.rightOffset);

                    Offset grow = calculateOffset(seriesFirstRange, seriesLastRange);
                    temlpateCaptionsRange.grow(grow.downOffset, grow.rightOffset);

                    captions.getStrRef().setF(temlpateCaptionsRange.toFormula());
                    break;
                }//ww  w .j  av  a2  s  .c om
            }
        }

        CTNumDataSource data = ctBarSer.getVal();
        if (data != null && data.getNumRef() != null) {
            Range templateDataRange = Range.fromFormula(data.getNumRef().getF());
            for (Range bandRange : rangeDependencies.templates()) {
                if (bandRange.contains(templateDataRange)) {
                    List<Range> seriesResultRanges = rangeDependencies.resultsForTemplate(bandRange);

                    Range seriesFirstRange = getFirst(seriesResultRanges);
                    Range seriesLastRange = getLast(seriesResultRanges);

                    Offset offset = calculateOffset(templateDataRange, seriesFirstRange);
                    Offset initialOffset = calculateOffset(templateDataRange, bandRange);
                    templateDataRange = templateDataRange.shift(offset.downOffset - initialOffset.downOffset,
                            offset.rightOffset - initialOffset.rightOffset);

                    Offset grow = calculateOffset(seriesFirstRange, seriesLastRange);
                    templateDataRange.grow(grow.downOffset, grow.rightOffset);

                    data.getNumRef().setF(templateDataRange.toFormula());
                    break;
                }
            }
        }
    }
}

From source file:org.apache.calcite.rex.RexSimplify.java

private static RexNode processRange(RexBuilder rexBuilder, List<RexNode> terms,
        Map<String, Pair<Range, List<RexNode>>> rangeTerms, RexNode term, RexNode ref, RexLiteral constant,
        SqlKind comparison) {//  w ww . j  a va  2  s . co  m
    final Comparable v0 = constant.getValue();
    Pair<Range, List<RexNode>> p = rangeTerms.get(ref.toString());
    if (p == null) {
        Range r;
        switch (comparison) {
        case EQUALS:
            r = Range.singleton(v0);
            break;
        case LESS_THAN:
            r = Range.lessThan(v0);
            break;
        case LESS_THAN_OR_EQUAL:
            r = Range.atMost(v0);
            break;
        case GREATER_THAN:
            r = Range.greaterThan(v0);
            break;
        case GREATER_THAN_OR_EQUAL:
            r = Range.atLeast(v0);
            break;
        default:
            throw new AssertionError();
        }
        rangeTerms.put(ref.toString(), new Pair(r, ImmutableList.of(term)));
    } else {
        // Exists
        boolean removeUpperBound = false;
        boolean removeLowerBound = false;
        Range r = p.left;
        switch (comparison) {
        case EQUALS:
            if (!r.contains(v0)) {
                // Range is empty, not satisfiable
                return rexBuilder.makeLiteral(false);
            }
            rangeTerms.put(ref.toString(), new Pair(Range.singleton(v0), ImmutableList.of(term)));
            // remove
            terms.removeAll(p.right);
            break;
        case LESS_THAN: {
            int comparisonResult = 0;
            if (r.hasUpperBound()) {
                comparisonResult = v0.compareTo(r.upperEndpoint());
            }
            if (comparisonResult <= 0) {
                // 1) No upper bound, or
                // 2) We need to open the upper bound, or
                // 3) New upper bound is lower than old upper bound
                if (r.hasLowerBound()) {
                    if (v0.compareTo(r.lowerEndpoint()) < 0) {
                        // Range is empty, not satisfiable
                        return rexBuilder.makeLiteral(false);
                    }
                    // a <= x < b OR a < x < b
                    r = Range.range(r.lowerEndpoint(), r.lowerBoundType(), v0, BoundType.OPEN);
                } else {
                    // x < b
                    r = Range.lessThan(v0);
                }

                if (r.isEmpty()) {
                    // Range is empty, not satisfiable
                    return rexBuilder.makeLiteral(false);
                }

                // remove prev upper bound
                removeUpperBound = true;
            } else {
                // Remove this term as it is contained in current upper bound
                terms.remove(term);
            }
            break;
        }
        case LESS_THAN_OR_EQUAL: {
            int comparisonResult = -1;
            if (r.hasUpperBound()) {
                comparisonResult = v0.compareTo(r.upperEndpoint());
            }
            if (comparisonResult < 0) {
                // 1) No upper bound, or
                // 2) New upper bound is lower than old upper bound
                if (r.hasLowerBound()) {
                    if (v0.compareTo(r.lowerEndpoint()) < 0) {
                        // Range is empty, not satisfiable
                        return rexBuilder.makeLiteral(false);
                    }
                    // a <= x <= b OR a < x <= b
                    r = Range.range(r.lowerEndpoint(), r.lowerBoundType(), v0, BoundType.CLOSED);
                } else {
                    // x <= b
                    r = Range.atMost(v0);
                }

                if (r.isEmpty()) {
                    // Range is empty, not satisfiable
                    return rexBuilder.makeLiteral(false);
                }

                // remove prev upper bound
                removeUpperBound = true;
            } else {
                // Remove this term as it is contained in current upper bound
                terms.remove(term);
            }
            break;
        }
        case GREATER_THAN: {
            int comparisonResult = 0;
            if (r.hasLowerBound()) {
                comparisonResult = v0.compareTo(r.lowerEndpoint());
            }
            if (comparisonResult >= 0) {
                // 1) No lower bound, or
                // 2) We need to open the lower bound, or
                // 3) New lower bound is greater than old lower bound
                if (r.hasUpperBound()) {
                    if (v0.compareTo(r.upperEndpoint()) > 0) {
                        // Range is empty, not satisfiable
                        return rexBuilder.makeLiteral(false);
                    }
                    // a < x <= b OR a < x < b
                    r = Range.range(v0, BoundType.OPEN, r.upperEndpoint(), r.upperBoundType());
                } else {
                    // x > a
                    r = Range.greaterThan(v0);
                }

                if (r.isEmpty()) {
                    // Range is empty, not satisfiable
                    return rexBuilder.makeLiteral(false);
                }

                // remove prev lower bound
                removeLowerBound = true;
            } else {
                // Remove this term as it is contained in current lower bound
                terms.remove(term);
            }
            break;
        }
        case GREATER_THAN_OR_EQUAL: {
            int comparisonResult = 1;
            if (r.hasLowerBound()) {
                comparisonResult = v0.compareTo(r.lowerEndpoint());
            }
            if (comparisonResult > 0) {
                // 1) No lower bound, or
                // 2) New lower bound is greater than old lower bound
                if (r.hasUpperBound()) {
                    if (v0.compareTo(r.upperEndpoint()) > 0) {
                        // Range is empty, not satisfiable
                        return rexBuilder.makeLiteral(false);
                    }
                    // a <= x <= b OR a <= x < b
                    r = Range.range(v0, BoundType.CLOSED, r.upperEndpoint(), r.upperBoundType());
                } else {
                    // x >= a
                    r = Range.atLeast(v0);
                }

                if (r.isEmpty()) {
                    // Range is empty, not satisfiable
                    return rexBuilder.makeLiteral(false);
                }

                // remove prev lower bound
                removeLowerBound = true;
            } else {
                // Remove this term as it is contained in current lower bound
                terms.remove(term);
            }
            break;
        }
        default:
            throw new AssertionError();
        }
        if (removeUpperBound) {
            ImmutableList.Builder<RexNode> newBounds = ImmutableList.builder();
            for (RexNode e : p.right) {
                if (e.isA(SqlKind.LESS_THAN) || e.isA(SqlKind.LESS_THAN_OR_EQUAL)) {
                    terms.remove(e);
                } else {
                    newBounds.add(e);
                }
            }
            newBounds.add(term);
            rangeTerms.put(ref.toString(), new Pair(r, newBounds.build()));
        } else if (removeLowerBound) {
            ImmutableList.Builder<RexNode> newBounds = ImmutableList.builder();
            for (RexNode e : p.right) {
                if (e.isA(SqlKind.GREATER_THAN) || e.isA(SqlKind.GREATER_THAN_OR_EQUAL)) {
                    terms.remove(e);
                } else {
                    newBounds.add(e);
                }
            }
            newBounds.add(term);
            rangeTerms.put(ref.toString(), new Pair(r, newBounds.build()));
        }
    }
    // Default
    return null;
}

From source file:net.sf.mzmine.modules.visualization.msms.MsMsBottomPanel.java

/**
 * Returns a peak list with the top peaks defined by the parameter
 * "threshold"//from w  ww  .ja v a 2  s.  c o m
 */
PeakList getTopThresholdPeakList(int threshold) {

    PeakList selectedPeakList = (PeakList) peakListSelector.getSelectedItem();
    if (selectedPeakList == null)
        return null;
    SimplePeakList newList = new SimplePeakList(selectedPeakList.getName(), selectedPeakList.getRawDataFiles());

    Vector<PeakListRow> peakRows = new Vector<PeakListRow>();

    Range<Double> mzRange = selectedPeakList.getRowsMZRange();
    Range<Double> rtRange = selectedPeakList.getRowsRTRange();

    PeakThresholdMode selectedPeakOption = (PeakThresholdMode) thresholdCombo.getSelectedItem();
    if (selectedPeakOption == PeakThresholdMode.TOP_PEAKS_AREA) {
        XYPlot xyPlot = masterFrame.getPlot().getXYPlot();
        org.jfree.data.Range yAxis = xyPlot.getRangeAxis().getRange();
        org.jfree.data.Range xAxis = xyPlot.getDomainAxis().getRange();
        rtRange = Range.closed(xAxis.getLowerBound(), xAxis.getUpperBound());
        mzRange = Range.closed(yAxis.getLowerBound(), yAxis.getUpperBound());
    }

    for (PeakListRow peakRow : selectedPeakList.getRows()) {
        if (mzRange.contains(peakRow.getAverageMZ()) && rtRange.contains(peakRow.getAverageRT())) {
            peakRows.add(peakRow);
        }
    }

    Collections.sort(peakRows, new PeakListRowSorter(SortingProperty.Intensity, SortingDirection.Descending));

    if (threshold > peakRows.size())
        threshold = peakRows.size();
    for (int i = 0; i < threshold; i++) {
        newList.addRow(peakRows.elementAt(i));
    }
    return newList;
}

From source file:com.b2international.snowowl.snomed.core.ecl.SnomedEclRefinementEvaluator.java

static Function<Collection<Property>, Collection<Property>> filterByCardinality(
        final boolean grouped, final Range<Long> groupCardinality, final Range<Long> cardinality,
        final Function<Property, Object> idProvider) {
    return matchingProperties -> {
        final Multimap<Object, Property> propertiesByMatchingIds = Multimaps.index(matchingProperties,
                idProvider);//w  w w  . j av a 2 s . c o m
        final Collection<Property> properties = newHashSet();

        final Range<Long> allowedRelationshipCardinality;
        if (grouped) {
            final long minRelationships = groupCardinality.lowerEndpoint() == 0 ? cardinality.lowerEndpoint()
                    : groupCardinality.lowerEndpoint() * cardinality.lowerEndpoint();
            final long maxRelationships;
            if (groupCardinality.hasUpperBound() && cardinality.hasUpperBound()) {
                if (groupCardinality.upperEndpoint() == Long.MAX_VALUE
                        || cardinality.upperEndpoint() == Long.MAX_VALUE) {
                    maxRelationships = Long.MAX_VALUE;
                } else {
                    maxRelationships = groupCardinality.upperEndpoint() * cardinality.upperEndpoint();
                }
            } else {
                // group and relationship cardinalities are unbounded
                maxRelationships = Long.MAX_VALUE;
            }
            allowedRelationshipCardinality = Range.closed(minRelationships, maxRelationships);
        } else {
            allowedRelationshipCardinality = cardinality;
        }

        for (Object matchingConceptId : propertiesByMatchingIds.keySet()) {
            final Collection<Property> propertiesOfConcept = propertiesByMatchingIds.get(matchingConceptId);
            if (allowedRelationshipCardinality.contains((long) propertiesOfConcept.size())) {
                if (grouped) {
                    final Multimap<Integer, Property> indexedByGroup = FluentIterable.from(propertiesOfConcept)
                            .index(Property::getGroup);
                    // if groups should be considered as well, then check group numbers in the matching sets
                    // check that the concept has at least the right amount of groups
                    final Multimap<Integer, Property> validGroups = ArrayListMultimap.create();

                    for (Integer group : indexedByGroup.keySet()) {
                        final Collection<Property> groupedRelationships = indexedByGroup.get(group);
                        if (cardinality.contains((long) groupedRelationships.size())) {
                            validGroups.putAll(group, groupedRelationships);
                        }
                    }

                    if (groupCardinality.contains((long) validGroups.keySet().size())) {
                        properties.addAll(validGroups.values());
                    }
                } else {
                    properties.addAll(propertiesOfConcept);
                }
            }
        }
        return properties;
    };
}

From source file:com.nimbits.server.process.BlobStoreImpl.java

@Override
public List<Value> getSeries(final ValueService valueService, final Entity entity,
        final Optional<Range<Date>> timespan, final Optional<Range<Integer>> range,
        final Optional<String> mask) {
    //TODO - some way to test if a count has been reached before reading all files if no timespan is give - like test the list by processing it to see if it's complete
    //enough to return while reading other files.
    String root = settingsService.getSetting(ServerSetting.storeDirectory);
    String path = root + "/" + entity.getKey();
    List<Value> allvalues = new ArrayList<>(INITIAL_CAPACITY);
    List<String> allReadFiles = new ArrayList<>(INITIAL_CAPACITY);
    File file = new File(path);

    Range<Date> maxRange = timespan.isPresent()
            ? Range.closed(defragmenter.zeroOutDateToStart(timespan.get().lowerEndpoint()),
                    defragmenter.zeroOutDateToStart(timespan.get().upperEndpoint()))
            : Range.closed(defragmenter.zeroOutDateToStart(new Date(0)),
                    defragmenter.zeroOutDateToStart(new Date())); // all dates

    if (file.exists()) {

        List<String> dailyFolderPaths = new ArrayList<>();

        for (String dailyFolderPath : file.list()) {

            File node = new File(dailyFolderPath);

            if (!node.getName().endsWith(SNAPSHOT)) {
                Long timestamp = Long.valueOf(dailyFolderPath);
                if (maxRange.contains(new Date(timestamp))) {

                    dailyFolderPaths.add(root + "/" + entity.getKey() + "/" + dailyFolderPath);
                }//from   w  ww.jav  a 2s.c  o m

            }

        }

        if (!dailyFolderPaths.isEmpty()) {
            Collections.sort(dailyFolderPaths);
            Collections.reverse(dailyFolderPaths);

            for (String sortedDayPath : dailyFolderPaths) {
                Iterator result2 = FileUtils.iterateFiles(new File(sortedDayPath), null, false);
                List<String> filePaths = new ArrayList<>();

                while (result2.hasNext()) {

                    File listItem = (File) result2.next();
                    String filePath = listItem.getName();
                    if (!filePath.endsWith(SNAPSHOT)) {
                        filePaths.add(sortedDayPath + "/" + filePath);
                    }

                }
                Collections.sort(filePaths);
                Collections.reverse(filePaths);

                for (String sortedFilePath : filePaths) {
                    List<Value> values = readValuesFromFile(sortedFilePath);
                    allvalues.addAll(values);
                    allReadFiles.add(sortedFilePath);

                }

            }
        }

        List<Value> filtered = storageIO.filterValues(allvalues, timespan, range, mask);

        if (allReadFiles.size() > INITIAL_CAPACITY) { //TODO will break if # of days = initial capacity
            //   logger.info("Defragmenting " + allReadFiles.size());
            deleteAndRestore(this, valueService, entity, allvalues, allReadFiles);
        }
        //  logger.info("****** returning " + filtered.size());
        return ImmutableList.copyOf(filtered);
    } else {
        logger.info("file not found");
        return Collections.emptyList();
    }

}