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

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

Introduction

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

Prototype

public C upperEndpoint() 

Source Link

Document

Returns the upper endpoint of this range.

Usage

From source file:org.nmdp.ngs.range.Ranges.java

/**
 * Return the center of the specified range.
 *
 * @param <C> range endpoint type//www.  j a  v a 2s. co m
 * @param range range, must not be null
 * @return the center of the specified range
 */
public static <C extends Comparable> C center(final Range<C> range) {
    checkNotNull(range);
    if (!range.hasLowerBound() && !range.hasUpperBound()) {
        throw new IllegalStateException("cannot find the center of a range without bounds");
    }
    if (!range.hasLowerBound()) {
        return range.upperEndpoint();
    }
    if (!range.hasUpperBound()) {
        return range.lowerEndpoint();
    }
    C lowerEndpoint = range.lowerEndpoint();
    C upperEndpoint = range.upperEndpoint();

    if (upperEndpoint instanceof Integer) {
        Integer upper = (Integer) upperEndpoint;
        Integer lower = (Integer) lowerEndpoint;
        return (C) Integer.valueOf((upper.intValue() + lower.intValue()) / 2);
    }
    if (upperEndpoint instanceof Long) {
        Long upper = (Long) upperEndpoint;
        Long lower = (Long) lowerEndpoint;
        return (C) Long.valueOf((upper.longValue() + lower.longValue()) / 2L);
    }
    if (upperEndpoint instanceof BigInteger) {
        BigInteger upper = (BigInteger) upperEndpoint;
        BigInteger lower = (BigInteger) lowerEndpoint;
        BigInteger two = BigInteger.valueOf(2L);
        return (C) upper.subtract(lower).divide(two);
    }

    // todo:  could potentially calculate the center of any range with a discrete domain
    throw new IllegalStateException(
            "cannot find the center of a range whose endpoint type is not Integer, Long, or BigInteger");
}

From source file:org.apache.hadoop.hive.ql.optimizer.calcite.druid.DruidIntervalUtils.java

protected static boolean mergeable(Range range1, Range range2) {
    Comparable x1 = range1.upperEndpoint();
    Comparable x2 = range2.lowerEndpoint();
    int compare = x1.compareTo(x2);
    return compare > 0 || (compare == 0 && range1.upperBoundType() == BoundType.CLOSED
            && range2.lowerBoundType() == BoundType.CLOSED);
}

From source file:org.apache.kylin.common.util.RangeUtil.java

/**
 * for NavigableMap sorted by C, given a range of C, return the sub map whose key falls in the range
 *//*from  www.  j  a va2s.  c o  m*/
public static <C extends Comparable<?>, V> NavigableMap<C, V> filter(NavigableMap<C, V> values,
        Range<C> filterRange) {
    if (filterRange == null || filterRange.isEmpty()) {
        return Maps.newTreeMap();
    } else if (filterRange.equals(Range.all())) {
        return values;
    }

    if (filterRange.hasUpperBound() && !filterRange.hasLowerBound()) {
        return values.headMap(filterRange.upperEndpoint(), upperBoundInclusive(filterRange));
    } else if (filterRange.hasLowerBound() && !filterRange.hasUpperBound()) {
        return values.tailMap(filterRange.lowerEndpoint(), lowerBoundInclusive(filterRange));
    } else {
        return values.subMap(filterRange.lowerEndpoint(), lowerBoundInclusive(filterRange), //
                filterRange.upperEndpoint(), upperBoundInclusive(filterRange));
    }
}

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  ww  .  ja  v a 2  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:org.learningu.scheduling.util.bst.GeneralRange.java

/**
 * Converts a Range to a GeneralRange./*from  www .ja  v  a2 s . c o  m*/
 */
@SuppressWarnings("rawtypes")
static <T extends Comparable> GeneralRange<T> from(Range<T> range) {
    @Nullable
    T lowerEndpoint = range.hasLowerBound() ? range.lowerEndpoint() : null;
    BoundType lowerBoundType = range.hasLowerBound() ? range.lowerBoundType() : OPEN;

    @Nullable
    T upperEndpoint = range.hasUpperBound() ? range.upperEndpoint() : null;
    BoundType upperBoundType = range.hasUpperBound() ? range.upperBoundType() : OPEN;
    return new GeneralRange<T>(Ordering.natural(), range.hasLowerBound(), lowerEndpoint, lowerBoundType,
            range.hasUpperBound(), upperEndpoint, upperBoundType);
}

From source file:net.sf.mzmine.modules.peaklistmethods.msms.msmsscore.MSMSScoreCalculator.java

/**
 * Returns a calculated similarity score of
 *///  ww w  . j  a v a2s.  c o m
public static MSMSScore evaluateMSMS(IMolecularFormula parentFormula, Scan msmsScan, ParameterSet parameters) {

    MZTolerance msmsTolerance = parameters.getParameter(MSMSScoreParameters.msmsTolerance).getValue();
    String massListName = parameters.getParameter(MSMSScoreParameters.massList).getValue();

    MassList massList = msmsScan.getMassList(massListName);

    if (massList == null) {
        throw new IllegalArgumentException("Scan #" + msmsScan.getScanNumber()
                + " does not have a mass list called '" + massListName + "'");
    }

    DataPoint msmsIons[] = massList.getDataPoints();

    if (msmsIons == null) {
        throw new IllegalArgumentException(
                "Mass list " + massList + " does not contain data for scan #" + msmsScan.getScanNumber());
    }

    MolecularFormulaRange msmsElementRange = new MolecularFormulaRange();
    for (IIsotope isotope : parentFormula.isotopes()) {
        msmsElementRange.addIsotope(isotope, 0, parentFormula.getIsotopeCount(isotope));
    }

    int totalMSMSpeaks = 0, interpretedMSMSpeaks = 0;
    Map<DataPoint, String> msmsAnnotations = new Hashtable<DataPoint, String>();

    msmsCycle: for (DataPoint dp : msmsIons) {

        // Check if this is an isotope
        Range<Double> isotopeCheckRange = Range.closed(dp.getMZ() - 1.4, dp.getMZ() - 0.6);
        for (DataPoint dpCheck : msmsIons) {
            // If we have any MS/MS peak with 1 neutron mass smaller m/z
            // and higher intensity, it means the current peak is an
            // isotope and we should ignore it
            if (isotopeCheckRange.contains(dpCheck.getMZ()) && (dpCheck.getIntensity() > dp.getIntensity())) {
                continue msmsCycle;
            }
        }

        // If getPrecursorCharge() returns 0, it means charge is unknown. In
        // that case let's assume charge 1
        int precursorCharge = msmsScan.getPrecursorCharge();
        if (precursorCharge == 0)
            precursorCharge = 1;

        // We don't know the charge of the fragment, so we will simply
        // assume 1
        double neutralLoss = msmsScan.getPrecursorMZ() * precursorCharge - dp.getMZ();

        // Ignore negative neutral losses and parent ion, <5 may be a
        // good threshold
        if (neutralLoss < 5) {
            continue;
        }

        Range<Double> msmsTargetRange = msmsTolerance.getToleranceRange(neutralLoss);

        IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();

        MolecularFormulaGenerator msmsEngine;
        try {
            msmsEngine = new MolecularFormulaGenerator(builder, msmsTargetRange.lowerEndpoint(),
                    msmsTargetRange.upperEndpoint(), msmsElementRange);
        } catch (CDKException e) {
            e.printStackTrace();
            return null;
        }

        IMolecularFormula formula = msmsEngine.getNextFormula();
        if (formula != null) {
            String formulaString = MolecularFormulaManipulator.getString(formula);
            msmsAnnotations.put(dp, formulaString);
            interpretedMSMSpeaks++;
        }

        totalMSMSpeaks++;

    }

    // If we did not evaluate any MS/MS peaks, we cannot calculate a score
    if (totalMSMSpeaks == 0) {
        return null;
    }

    double msmsScore = (double) interpretedMSMSpeaks / totalMSMSpeaks;

    MSMSScore result = new MSMSScore(msmsScore, msmsAnnotations);

    return result;

}

From source file:com.tinspx.util.base.NumberUtils.java

@SuppressWarnings("rawtypes")
public static <F extends Comparable, T extends Comparable> Range<T> transform(@NonNull Range<F> range,
        @NonNull Function<? super F, ? extends T> function) {
    if (range.hasLowerBound()) {
        if (range.hasUpperBound()) {
            return Range.range(function.apply(range.lowerEndpoint()), range.lowerBoundType(),
                    function.apply(range.upperEndpoint()), range.upperBoundType());
        } else {/*from  ww w .  j  a  va2s. com*/
            return Range.downTo(function.apply(range.lowerEndpoint()), range.lowerBoundType());
        }
    } else if (range.hasUpperBound()) {
        return Range.upTo(function.apply(range.upperEndpoint()), range.upperBoundType());
    } else {
        return Range.all();
    }
}

From source file:net.bican.iplib.IPAddresses.java

static Range<IPAddress> canonical(final Range<IPAddress> range, final LongDiscreteDomain<IPAddress> domain) {
    if (range.isEmpty()) {
        return null;
    }//w w  w . ja  v a  2s . c o  m
    final boolean l = range.lowerBoundType() == BoundType.OPEN;
    final boolean u = range.upperBoundType() == BoundType.OPEN;
    final IPAddress s = range.lowerEndpoint();
    final IPAddress e = range.upperEndpoint();
    if (l && u) {
        Range.closed(domain.next(s), domain.previous(e));
    } else if (l) {
        return Range.closed(domain.next(s), e);
    } else if (u) {
        return Range.closed(s, domain.previous(e));
    }
    return range;
}

From source file:org.immutables.mongo.repository.internal.Support.java

@SuppressWarnings("unchecked")
public static <T extends Comparable<T>> Range<Comparable<Object>> writable(TypeAdapter<T> adapter,
        Range<T> range) {
    if (range.hasLowerBound() && range.hasUpperBound()) {
        return Range.range((Comparable<Object>) writable(adapter, range.lowerEndpoint()),
                range.lowerBoundType(), (Comparable<Object>) writable(adapter, range.upperEndpoint()),
                range.upperBoundType());
    } else if (range.hasLowerBound()) {
        return Range.downTo((Comparable<Object>) writable(adapter, range.lowerEndpoint()),
                range.lowerBoundType());
    } else if (range.hasUpperBound()) {
        return Range.upTo((Comparable<Object>) writable(adapter, range.upperEndpoint()),
                range.upperBoundType());
    }//from   ww w . ja  va  2  s  .co  m
    throw new AssertionError();
}

From source file:org.robotframework.ide.eclipse.main.plugin.project.build.validation.KeywordCallArgumentsValidator.java

private static String getRangesInfo(final Range<Integer> range) {
    final int minArgs = range.lowerEndpoint();
    if (!range.hasUpperBound()) {
        return "at least " + minArgs + " " + toPluralIfNeeded("argument", minArgs);
    } else if (range.lowerEndpoint().equals(range.upperEndpoint())) {
        return minArgs + " " + toPluralIfNeeded("argument", minArgs);
    } else {//from  w w  w  .j  a  v a  2  s  .c  o m
        final int maxArgs = range.upperEndpoint();
        return "from " + minArgs + " to " + maxArgs + " arguments";
    }
}