Example usage for org.apache.commons.lang.math IntRange IntRange

List of usage examples for org.apache.commons.lang.math IntRange IntRange

Introduction

In this page you can find the example usage for org.apache.commons.lang.math IntRange IntRange.

Prototype

public IntRange(Number number) 

Source Link

Document

Constructs a new IntRange using the specified number as both the minimum and maximum in this range.

Usage

From source file:edu.harvard.med.screensaver.util.CollectionUtilsTest.java

public void testSplitIntoSequentialRanges() {
    assertEquals(ImmutableList.of(new IntRange(1)),
            CollectionUtils.splitIntoSequentialRanges(ImmutableSortedSet.of(1)));
    assertEquals(ImmutableList.of(new IntRange(1, 3)),
            CollectionUtils.splitIntoSequentialRanges(ImmutableSortedSet.of(1, 2, 3)));
    assertEquals(ImmutableList.of(new IntRange(1, 1), new IntRange(3, 3)),
            CollectionUtils.splitIntoSequentialRanges(ImmutableSortedSet.of(1, 3)));
    assertEquals(ImmutableList.of(new IntRange(1, 2), new IntRange(4, 5)),
            CollectionUtils.splitIntoSequentialRanges(ImmutableSortedSet.of(1, 2, 4, 5)));
    assertEquals(ImmutableList.of(new IntRange(1, 2), new IntRange(4, 4)),
            CollectionUtils.splitIntoSequentialRanges(ImmutableSortedSet.of(1, 2, 4)));
    assertEquals(ImmutableList.of(new IntRange(1, 2), new IntRange(4, 4), new IntRange(6, 8)),
            CollectionUtils.splitIntoSequentialRanges(ImmutableSortedSet.of(1, 2, 4, 6, 7, 8)));
}

From source file:com.linkedin.pinot.broker.pruner.SegmentZKMetadataPrunerTest.java

@Test
public void testPruner() {
    SegmentZKMetadata metadata = new OfflineSegmentZKMetadata();
    Map<String, ColumnPartitionMetadata> columnPartitionMap = new HashMap<>();

    int expectedPartition = 3;
    columnPartitionMap.put(PARTITION_COLUMN, new ColumnPartitionMetadata(PARTITION_FUNCTION_NAME, NUM_PARTITION,
            Collections.singletonList(new IntRange(expectedPartition))));

    SegmentZKMetadataPrunerService prunerService = new SegmentZKMetadataPrunerService(
            new String[] { PRUNER_NAME });
    SegmentPartitionMetadata segmentPartitionMetadata = new SegmentPartitionMetadata(columnPartitionMap);
    metadata.setPartitionMetadata(segmentPartitionMetadata);

    Pql2Compiler compiler = new Pql2Compiler();
    for (int actualPartition = 0; actualPartition < NUM_PARTITION; actualPartition++) {
        String query = "select count(*) from myTable where " + PARTITION_COLUMN + " = " + actualPartition;
        BrokerRequest brokerRequest = compiler.compileToBrokerRequest(query);
        SegmentPrunerContext prunerContext = new SegmentPrunerContext(brokerRequest);
        Assert.assertEquals(prunerService.prune(metadata, prunerContext),
                (actualPartition != expectedPartition));
    }/*w w  w .  j a  va  2 s.  c  o m*/
}

From source file:edu.harvard.med.screensaver.util.CollectionUtils.java

public static List<IntRange> splitIntoSequentialRanges(SortedSet<Integer> integers) {
    List<IntRange> ranges = Lists.newArrayList();
    Iterator<Integer> iter = integers.iterator();
    if (iter.hasNext()) {
        IntRange range = new IntRange(iter.next());
        while (iter.hasNext()) {
            int next = iter.next();
            if (next - 1 == range.getMaximumInteger()) {
                range = new IntRange(range.getMinimumInteger(), next);
            } else {
                ranges.add(range);/* www.j ava2 s . c  o m*/
                range = new IntRange(next);
            }
        }
        ranges.add(range);
    }
    return ranges;
}

From source file:com.linkedin.pinot.controller.utils.SegmentMetadataMockUtils.java

public static SegmentMetadata mockSegmentMetadataWithPartitionInfo(String tableName, String segmentName,
        String columnName, int partitionNumber) {
    ColumnMetadata columnMetadata = mock(ColumnMetadata.class);
    List<IntRange> partitionRanges = new ArrayList<>();
    partitionRanges.add(new IntRange(partitionNumber));
    when(columnMetadata.getPartitionRanges()).thenReturn(partitionRanges);

    SegmentMetadataImpl segmentMetadata = mock(SegmentMetadataImpl.class);
    if (columnName != null) {
        when(segmentMetadata.getColumnMetadataFor(columnName)).thenReturn(columnMetadata);
    }// w ww  .j  a va2  s. c  o m
    when(segmentMetadata.getTableName()).thenReturn(tableName);
    when(segmentMetadata.getName()).thenReturn(segmentName);
    when(segmentMetadata.getCrc()).thenReturn("0");
    return segmentMetadata;
}

From source file:au.org.ala.delta.rtf.RTFUtils.java

public static IntRange markKeyword(String text) {
    FirstRTFKeywordMarker handler = new FirstRTFKeywordMarker();
    RTFReader reader = new RTFReader(text, handler);
    handler.setReader(reader);/*w w  w. jav a2  s.  co m*/
    try {
        reader.parse();
    } catch (Exception ex) {
        // Ignore, and return the original text
        return new IntRange(-1);
    }

    return handler.getFirstKeywordPosition();
}

From source file:com.linkedin.pinot.common.metadata.SegmentZKMetadataTest.java

@Test
public void segmentPartitionMetadataTest() throws IOException {

    // Test for partition metadata serialization/de-serialization.
    String expectedMetadataString = "{\"columnPartitionMap\":{"
            + "\"column1\":{\"functionName\":\"func1\",\"numPartitions\":7,\"partitionRanges\":\"[5 5],[7 7]\"},"
            + "\"column2\":{\"functionName\":\"func2\",\"numPartitions\":11,\"partitionRanges\":\"[11 11],[13 13]\"}}}";

    Assert.assertEquals(SegmentPartitionMetadata.fromJsonString(expectedMetadataString).toJsonString(),
            expectedMetadataString);/*from  w ww  . j  a v  a2s.co m*/

    Map<String, ColumnPartitionMetadata> columnPartitionMetadataMap = new HashMap<>();
    columnPartitionMetadataMap.put("column",
            new ColumnPartitionMetadata("foo", 7, Collections.singletonList(new IntRange(11))));
    SegmentPartitionMetadata expectedPartitionMetadata = new SegmentPartitionMetadata(
            columnPartitionMetadataMap);

    // Test partition metadata in OfflineSegmentZkMetadata
    ZNRecord znRecord = getTestOfflineSegmentZNRecord();
    znRecord.setSimpleField(CommonConstants.Segment.PARTITION_METADATA,
            expectedPartitionMetadata.toJsonString());
    SegmentZKMetadata expectedSegmentMetadata = new OfflineSegmentZKMetadata(znRecord);
    SegmentPartitionMetadata actualPartitionMetadata = expectedSegmentMetadata.getPartitionMetadata();
    Assert.assertEquals(actualPartitionMetadata, expectedPartitionMetadata);
    Assert.assertEquals(expectedSegmentMetadata,
            new OfflineSegmentZKMetadata(expectedSegmentMetadata.toZNRecord()));

    // Test partition metadata in RealtimeSegmentZkMetadata
    znRecord = getTestDoneRealtimeSegmentZNRecord();
    znRecord.setSimpleField(CommonConstants.Segment.PARTITION_METADATA,
            expectedPartitionMetadata.toJsonString());
    expectedSegmentMetadata = new RealtimeSegmentZKMetadata(znRecord);

    actualPartitionMetadata = expectedSegmentMetadata.getPartitionMetadata();
    Assert.assertEquals(actualPartitionMetadata, expectedPartitionMetadata);
    Assert.assertEquals(expectedSegmentMetadata,
            new RealtimeSegmentZKMetadata(expectedSegmentMetadata.toZNRecord()));
}

From source file:au.org.ala.delta.translation.intkey.IntkeyItemsFileWriter.java

public Pair<List<IntRange>, Set<Integer>> writeIntegerAttributes() {
    List<IntRange> intRanges = new ArrayList<IntRange>();
    Iterator<IdentificationKeyCharacter> keyChars = _dataSet.identificationKeyCharacterIterator();
    Set<Integer> convertToReal = new HashSet<Integer>();

    while (keyChars.hasNext()) {
        IdentificationKeyCharacter keyChar = keyChars.next();
        IntRange minMax = new IntRange(WriteOnceIntkeyItemsFile.CONFOR_INT_MAX);

        if (keyChar.getCharacterType() == CharacterType.IntegerNumeric) {
            Pair<IntRange, Boolean> result = writeIntegerAttributes(keyChar.getFilteredCharacterNumber(),
                    keyChar.getCharacter());
            minMax = result.getFirst();/*from   w w w  . java2s .  c om*/
            if (result.getSecond()) {
                convertToReal.add(keyChar.getCharacterNumber());
            }
        }

        intRanges.add(minMax);
    }

    return new Pair<List<IntRange>, Set<Integer>>(intRanges, convertToReal);

}

From source file:com.linkedin.pinot.broker.routing.builder.PartitionAwareOfflineRoutingTableBuilderTest.java

private SegmentZKMetadata buildOfflineSegmentZKMetadata(String segmentName, int partition) {
    OfflineSegmentZKMetadata metadata = new OfflineSegmentZKMetadata();
    Map<String, ColumnPartitionMetadata> columnPartitionMap = new HashMap<>();
    columnPartitionMap.put(PARTITION_COLUMN, new ColumnPartitionMetadata(PARTITION_FUNCTION_NAME, NUM_PARTITION,
            Collections.singletonList(new IntRange(partition))));
    SegmentPartitionMetadata segmentPartitionMetadata = new SegmentPartitionMetadata(columnPartitionMap);

    metadata.setSegmentName(segmentName);
    metadata.setPartitionMetadata(segmentPartitionMetadata);

    return metadata;
}

From source file:au.org.ala.delta.translation.intkey.IntkeyItemsFileWriter.java

private Pair<IntRange, Boolean> writeIntegerAttributes(int filteredCharacterNumber, Character character) {

    // Returning null here will trigger a change from integer to real
    // character type.
    if (_context.getTreatIntegerCharacterAsReal(character.getCharacterId())) {
        return new Pair<IntRange, Boolean>(new IntRange(0), true);
    }/*from   ww w.j  a  v a2s.  c  o  m*/
    Pair<IntRange, Boolean> result = determineIntegerRange(character);
    IntRange characterRange = result.getFirst();
    if (!result.getSecond()) {

        int unfilteredCharNumber = character.getCharacterId();
        int numStates = characterRange.getMaximumInteger() - characterRange.getMinimumInteger();
        List<BitSet> attributes = new ArrayList<BitSet>();

        Iterator<FilteredItem> items = _dataSet.filteredItems();
        while (items.hasNext()) {
            FilteredItem item = items.next();

            // Turn into bitset.
            BitSet bits = new BitSet();
            IntegerAttribute attribute = (IntegerAttribute) _dataSet
                    .getAttribute(item.getItem().getItemNumber(), unfilteredCharNumber);
            if (isInapplicable(attribute)) {
                bits.set(numStates + 3);
                if (attribute.isInherited()) {
                    attributes.add(bits);
                    continue;
                }
            }
            if (attribute.isUnknown()) {
                attributes.add(bits);
                continue;
            }

            List<NumericRange> ranges = attribute.getNumericValue();

            for (NumericRange range : ranges) {
                Range usedRange;
                if (_context.getUseNormalValues(unfilteredCharNumber)) {
                    usedRange = range.getNormalRange();
                } else {
                    usedRange = range.getFullRange();
                }

                for (int j = usedRange.getMinimumInteger(); j <= usedRange.getMaximumInteger(); j++) {
                    if (j < characterRange.getMinimumInteger()) {
                        bits.set(0);
                    } else if (j <= characterRange.getMaximumInteger()) {
                        bits.set(j - characterRange.getMinimumInteger() + 1);
                    } else {
                        bits.set(numStates + 2);
                    }
                }
            }
            attributes.add(bits);

        }

        _itemsFile.writeAttributeBits(filteredCharacterNumber, attributes, numStates + 4);
    }
    return new Pair<IntRange, Boolean>(characterRange, result.getSecond());
}

From source file:au.org.ala.delta.translation.intkey.IntkeyItemsFileWriter.java

private Pair<IntRange, Boolean> determineIntegerRange(Character intChar) {

    List<Integer> values = new ArrayList<Integer>();
    boolean hasMultiRangeAttribute = populateValues(intChar.getCharacterId(), values);

    if (values.size() == 0) {
        return new Pair<IntRange, Boolean>(new IntRange(0), false);
    }//from  w  w w. j a v a  2 s. co m
    boolean outOfRange = false;

    IntRange minMax = findMinMaxOfRange(values);
    int min = minMax.getMinimumInteger();
    int max = minMax.getMaximumInteger();

    int upperLimit = hasMultiRangeAttribute ? INTEGER_RANGE_MAX_THRESHOLD : INTEGER_RANGE_WARNING_THRESHOLD;
    int range = max - min + 1;
    int originalSize = values.size();

    while (range > upperLimit && !outOfRange) {

        values = values.subList(0, values.size() - 1);
        minMax = findMinMaxOfRange(values);
        min = minMax.getMinimumInteger();
        max = minMax.getMaximumInteger();

        range = max - min + 1;

        if (values.size() < originalSize / 2d) {
            outOfRange = true;
        }
    }
    return new Pair<IntRange, Boolean>(new IntRange(min, max), outOfRange);
}