min = Integer.parseInt(range[0].trim()); ranges[i] = new Range(min); } else if ((range.length == 2) && (StringUtils.hasText(range[0])) && (StringUtils.hasText(range[1]))) { min = Integer.parseInt(range[0].trim()); max = Integer.parseInt(range[1].trim()); ranges[i] = new Range(min,max); } else { throw new IllegalArgumentException("Range[" + i + "]: range (" + strRanges[i] + ") is invalid");
private void calculateMaxRange(Range[] ranges) { if (ranges == null || ranges.length == 0) { maxRange = 0; return; } open = false; maxRange = ranges[0].getMin(); for (int i = 0; i < ranges.length; i++) { int upperBound; if (ranges[i].hasMaxValue()) { upperBound = ranges[i].getMax(); } else { upperBound = ranges[i].getMin(); if (upperBound > maxRange) { open = true; } } if (upperBound > maxRange) { maxRange = upperBound; } } }
public Range(int min, int max) { checkMinMaxValues(min, max); this.min = min; this.max = max; }
private void setMaxValues(final Range[] ranges) { // Array of integers to track range values by index Integer[] c = new Integer[ranges.length]; for (int i=0; i<c.length; i++) { c[i] = i; } //sort array of Ranges Arrays.sort(c, new Comparator<Integer>() { @Override public int compare(Integer r1, Integer r2) { return ranges[r1].getMin()-ranges[r2].getMin(); } } ); //set max values for all unbound ranges (except last range) for (int i = 0; i < c.length - 1; i++) { if (!ranges[c[i]].hasMaxValue()) { //set max value to (min value - 1) of the next range ranges[c[i]] = new Range(ranges[c[i]].getMin(),ranges[c[i+1]].getMin() - 1); } } if (forceDisjointRanges) { verifyRanges(ranges); } }
@Override public String toString() { return hasMaxValue() ? min + "-" + max : String.valueOf(min); }
private void setMaxValues(final Range[] ranges) { // Array of integers to track range values by index Integer[] c = new Integer[ranges.length]; for (int i=0; i<c.length; i++) { c[i] = i; } //sort array of Ranges Arrays.sort(c, new Comparator<Integer>() { @Override public int compare(Integer r1, Integer r2) { return ranges[r1].getMin()-ranges[r2].getMin(); } } ); //set max values for all unbound ranges (except last range) for (int i = 0; i < c.length - 1; i++) { if (!ranges[c[i]].hasMaxValue()) { //set max value to (min value - 1) of the next range ranges[c[i]] = new Range(ranges[c[i]].getMin(),ranges[c[i+1]].getMin() - 1); } } if (forceDisjointRanges) { verifyRanges(ranges); } }
@Override public String toString() { return hasMaxValue() ? min + "-" + max : String.valueOf(min); }
public void testSetAsText() { pe.setAsText("15, 32, 1-10, 33"); // result should be 15-31, 32-32, 1-10, 33-unbound assertEquals(4, ranges.length); assertEquals(15, ranges[0].getMin()); assertEquals(31, ranges[0].getMax()); assertEquals(32, ranges[1].getMin()); assertEquals(32, ranges[1].getMax()); assertEquals(1, ranges[2].getMin()); assertEquals(10, ranges[2].getMax()); assertEquals(33, ranges[3].getMin()); assertFalse(ranges[3].hasMaxValue()); }
public Range(int min, int max) { checkMinMaxValues(min, max); this.min = min; this.max = max; }
public void testSetAsTextWithNoSpaces() { pe.setAsText("15,32"); // result should be 15-31, 32-unbound assertEquals(2, ranges.length); assertEquals(15, ranges[0].getMin()); assertEquals(31, ranges[0].getMax()); assertEquals(32, ranges[1].getMin()); assertFalse(ranges[1].hasMaxValue()); }
public void testValidDisjointRanges() { pe.setForceDisjointRanges(true); // test disjoint ranges pe.setAsText("1-5,11-15"); assertEquals(2, ranges.length); assertEquals(1, ranges[0].getMin()); assertEquals(5, ranges[0].getMax()); assertEquals(11, ranges[1].getMin()); assertEquals(15, ranges[1].getMax()); }
@Test public void testFillerAtEnd() throws Exception { tokenizer.setColumns(new Range[] { new Range(1, 5), new Range(6, 15), new Range(16, 25), new Range(26, 27), new Range(34) }); // test another type of record line = "H2 123456 12345 12-123456"; FieldSet tokens = tokenizer.tokenize(line); assertEquals(5, tokens.getFieldCount()); assertEquals(line.substring(0, 5).trim(), tokens.readString(0)); assertEquals(line.substring(5, 15).trim(), tokens.readString(1)); assertEquals(line.substring(15, 25).trim(), tokens.readString(2)); assertEquals(line.substring(25, 27).trim(), tokens.readString(3)); }
private void calculateMaxRange(Range[] ranges) { if (ranges == null || ranges.length == 0) { maxRange = 0; return; } open = false; maxRange = ranges[0].getMin(); for (int i = 0; i < ranges.length; i++) { int upperBound; if (ranges[i].hasMaxValue()) { upperBound = ranges[i].getMax(); } else { upperBound = ranges[i].getMin(); if (upperBound > maxRange) { open = true; } } if (upperBound > maxRange) { maxRange = upperBound; } } }