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

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

Introduction

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

Prototype

public C lowerEndpoint() 

Source Link

Document

Returns the lower endpoint of this range.

Usage

From source file:org.pshdl.model.simulation.RangeTool.java

/**
 * Splits a list into ValueRange Objects that do not overlap each other, but
 * fully represent the ranges given by value
 *
 * @param value/*from w  w w. jav a2  s .com*/
 *            a list of RangeVal Objects that need to be split
 * @return
 */
public static SortedSet<Range<BigInteger>> split(List<RangeVal> value) {
    preSort(value);
    final SortedSet<Range<BigInteger>> res = new TreeSet<Range<BigInteger>>(
            new Comparator<Range<BigInteger>>() {
                @Override
                public int compare(Range<BigInteger> arg0, Range<BigInteger> arg1) {
                    return ComparisonChain.start() //
                            .compare(arg0.lowerEndpoint(), arg1.lowerEndpoint()) //
                            .compare(arg0.upperEndpoint(), arg1.upperEndpoint()) //
                            .result();
                }
            });
    RangeVal last = null;
    int count = 0;
    for (final RangeVal current : value) {
        if (last != null) {
            if (last.isStart()) {
                if (current.isStart()) {
                    res.add(createRange(last.value, current.value.subtract(BigInteger.ONE)));
                } else {
                    res.add(createRange(last.value, current.value));
                }
            } else {
                if (current.isStart()) {
                    if ((count > 0) && (current.value.subtract(last.value).compareTo(BigInteger.ONE) > 0)) {
                        res.add(createRange(last.value.add(BigInteger.ONE),
                                current.value.subtract(BigInteger.ONE)));
                    }
                } else {
                    res.add(createRange(last.value.add(BigInteger.ONE), current.value));
                }
            }
        } else {
            if (!current.isStart())
                throw new IllegalArgumentException("this should not happen");
        }
        count += current.count;
        last = current;
    }
    return res;
}

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

/**
 * Return an ordering by lower endpoint over ranges.
 *
 * @param <C> range endpoint type/*w ww  . ja va  2 s  . com*/
 * @return an ordering by lower endpoint over ranges
 */
public static <C extends Comparable> Ordering<Range<C>> orderingByLowerEndpoint() {
    return new Ordering<Range<C>>() {
        @Override
        public int compare(final Range<C> left, final Range<C> right) {
            return ComparisonChain.start().compare(left.hasLowerBound(), right.hasLowerBound())
                    .compare(left.lowerEndpoint(), right.lowerEndpoint()).result();
        }
    };
}

From source file:org.learningu.scheduling.util.bst.GeneralRange.java

/**
 * Converts a Range to a GeneralRange.// ww  w .  ja v  a 2 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:com.google.errorprone.bugpatterns.javadoc.UnescapedEntity.java

private static SuggestedFix wrapInCodeTag(Range<Integer> containingPre) {
    return SuggestedFix.builder()
            .replace(containingPre.lowerEndpoint(), containingPre.lowerEndpoint(), "{@code ")
            .replace(containingPre.upperEndpoint(), containingPre.upperEndpoint(), "}").build();
}

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 {// ww  w  . j  av a2s .co m
        final int maxArgs = range.upperEndpoint();
        return "from " + minArgs + " to " + maxArgs + " arguments";
    }
}

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

private static Set<Range<IPAddress>> findOneConnected(final Set<Range<IPAddress>> intervals) {
    Range<IPAddress> f1 = null;/*from w  w  w  .  j  a v a  2  s  .co m*/
    Range<IPAddress> f2 = null;
    for (final Range<IPAddress> s : intervals) {
        for (final Range<IPAddress> s2 : intervals) {
            final Range<IPAddress> sc = IPAddresses.canonical(s, s.lowerEndpoint().getDomain());
            final Range<IPAddress> sc2 = IPAddresses.canonical(s, s2.lowerEndpoint().getDomain());
            if ((sc.equals(sc2)) || (s.isConnected(s2))) {
                f1 = s;
                f2 = s2;
                break;
            }
        }
        if (f1 != null) {
            break;
        }
    }
    if (f1 != null) {
        final Set<Range<IPAddress>> newIntervals = new TreeSet<>(IPAddressRangeComparator.getComparator());
        newIntervals.addAll(intervals);
        final Range<IPAddress> f = f1.span(f2);
        newIntervals.remove(f1);
        newIntervals.remove(f2);
        newIntervals.add(f);
        return newIntervals;
    }
    return intervals;
}

From source file:org.dishevelled.bio.align.Alignments.java

/**
 * Return the start/lower endpoints in the specified ranges.
 *
 * @param ranges ranges, must not be null, must not contain any null ranges, and all ranges must be [closed, open)
 * @return the start/lower endpoints in the specified ranges
 *///from w  w  w .  j  a  v  a 2 s .  co m
public static List<Long> starts(final Iterable<Range<Long>> ranges) {
    List<Long> starts = new ArrayList<Long>();
    for (Range<Long> range : ranges) {
        checkClosedOpen(range);
        starts.add(range.lowerEndpoint());
    }
    return starts;
}

From source file:net.sf.mzmine.util.XMLUtils.java

public static void appendRange(Element xmlElement, String tagName, Range<?> range) {
    if (range == null)
        return;// w  ww .j  a  v a 2s . c om
    Document parentDocument = xmlElement.getOwnerDocument();
    Element newElement = parentDocument.createElement(tagName);
    Element minElement = parentDocument.createElement("min");
    minElement.setTextContent(String.valueOf(range.lowerEndpoint()));
    newElement.appendChild(minElement);
    Element maxElement = parentDocument.createElement("max");
    maxElement.setTextContent(String.valueOf(range.upperEndpoint()));
    newElement.appendChild(maxElement);
    xmlElement.appendChild(newElement);

}

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

@SuppressWarnings("unchecked")
public static Range<Long> toLongRange(@NonNull Range<? extends Number> range) {
    if (range.hasLowerBound()) {
        if (range.hasUpperBound()) {
            if (range.lowerEndpoint() instanceof Long && range.upperEndpoint() instanceof Long) {
                return (Range<Long>) range;
            }//from   w  w  w . j  av  a  2s  .  c o m
            return Range.range(range.lowerEndpoint().longValue(), range.lowerBoundType(),
                    range.upperEndpoint().longValue(), range.upperBoundType());
        } else {
            if (range.lowerEndpoint() instanceof Long) {
                return (Range<Long>) range;
            }
            return Range.downTo(range.lowerEndpoint().longValue(), range.lowerBoundType());
        }
    } else if (range.hasUpperBound()) {
        if (range.upperEndpoint() instanceof Long) {
            return (Range<Long>) range;
        }
        return Range.upTo(range.upperEndpoint().longValue(), range.upperBoundType());
    } else {
        return Range.all();
    }
}

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

private static Set<Range<IPAddress>> fromConnectedInterval(final Range<IPAddress> interval) {
    if (interval.isEmpty()) {
        return null;
    }//from  w  w  w.  j av  a2 s . c  o  m
    int prefix = 0;
    final LongDiscreteDomain<IPAddress> domain = interval.lowerEndpoint().getDomain();
    while (prefix <= domain.maxPrefix()) {
        final Range<IPAddress> thisRange = IPAddresses.canonical(interval, domain);
        final Range<IPAddress> otherRange = IPAddresses.fromCIDR(new CIDR(thisRange.lowerEndpoint(), prefix));
        if (thisRange.equals(otherRange)) {
            TreeSet<Range<IPAddress>> result = new TreeSet<>(IPAddressRangeComparator.getComparator());
            result.add(otherRange);
            return result;
        } else if (thisRange.encloses(otherRange)) {
            final Set<Range<IPAddress>> result = new TreeSet<>(IPAddressRangeComparator.getComparator());
            result.add(otherRange);
            Range<IPAddress> newRange1 = Range.closedOpen(thisRange.lowerEndpoint(),
                    otherRange.lowerEndpoint());
            Range<IPAddress> newRange2 = Range.openClosed(otherRange.upperEndpoint(),
                    thisRange.upperEndpoint());
            final Set<Range<IPAddress>> results1 = IPAddresses.fromConnectedInterval(newRange1);
            if (results1 != null) {
                result.addAll(results1);
            }
            final Set<Range<IPAddress>> results2 = IPAddresses.fromConnectedInterval(newRange2);
            if (results2 != null) {
                result.addAll(results2);
            }
            return result;
        }
        prefix++;
    }
    return new TreeSet<>(Collections.singleton(interval));
}