com.google.common.collect.ImmutableRangeSet#Builder ( )源码实例Demo

下面列出了com.google.common.collect.ImmutableRangeSet#Builder ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Override
public RangeSet<Comparable<?>> deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
    if (genericRangeListType == null) {
        throw new JsonParseException(p, "RangeSetJsonSerializer was not contextualized (no deserialize target type). " +
                "You need to specify the generic type down to the generic parameter of RangeSet.");
    } else {
        @SuppressWarnings("unchecked") final Iterable<Range<Comparable<?>>> ranges
                = (Iterable<Range<Comparable<?>>>) ctxt
                .findContextualValueDeserializer(genericRangeListType, null).deserialize(p, ctxt);
        ImmutableRangeSet.Builder<Comparable<?>> builder = ImmutableRangeSet.builder();
        for (Range<Comparable<?>> range : ranges) {
            builder.add(range);
        }
        return builder.build();
    }
}
 
源代码2 项目: nomulus   文件: IdnTable.java
/** Creates an IDN table given the lines from text file. */
static IdnTable createFrom(
    String language, Iterable<String> data, Optional<LanguageValidator> languageValidator) {
  ImmutableRangeSet.Builder<Integer> rangeSet = new ImmutableRangeSet.Builder<>();
  URI url = null;
  URI policy = null;
  for (String line : data) {
    // Remove leading and trailing whitespace.
    line = line.trim();

    // Handle special comment lines.
    if (line.startsWith(URL_LINE_PREFIX)) {
      url = URI.create(line.substring(URL_LINE_PREFIX.length()));
    } else if (line.startsWith(POLICY_LINE_PREFIX)) {
      policy = URI.create(line.substring(POLICY_LINE_PREFIX.length()));
    }

    // Skip empty and comment lines.
    if (line.isEmpty() || line.startsWith("#")) {
      continue;
    }

    int codepoint = readCodepoint(line);
    rangeSet.add(Range.singleton(codepoint));
  }
  return new IdnTable(language, url, policy, rangeSet.build(), languageValidator);
}
 
源代码3 项目: tac-kbp-eal   文件: QuoteFilter.java
public static QuoteFilter loadFrom(ByteSource source) throws IOException {
  final ImmutableList<String> input = source.asCharSource(Charsets.UTF_8).readLines();
  if (input.isEmpty()) {
    throw new IOException("Attempted to load QuoteFilter from empty file");
  }

  final int numEntries = Integer.parseInt(input.get(0));
  final int expectedLines = 2 * numEntries + 1;
  if (input.size() != expectedLines) {
    throw new IOException(String.format(
        "Invalid number of lines when loading QuoteFiler. Expected %d, got %d",
        expectedLines, input.size()));
  }

  final ImmutableMap.Builder<Symbol, ImmutableRangeSet<Integer>> ret = ImmutableMap.builder();
  int curLine = 1;
  for (int i = 0; i < numEntries; ++i) {
    final Symbol docid = Symbol.from(input.get(curLine++));
    final ImmutableRangeSet.Builder<Integer> ranges = ImmutableRangeSet.builder();
    for (final String part : StringUtils.onSpaces().split(input.get(curLine++))) {
      final List<String> endPointStrings = DASH_SPLITTER.splitToList(part);
      if (endPointStrings.size() != 2) {
        throw new IOException(String.format("Invalid range serialization %s", part));
      }
      ranges.add(Range.closed(Integer.parseInt(endPointStrings.get(0)),
          Integer.parseInt(endPointStrings.get(1))));
    }
    ret.put(docid, ranges.build());
  }
  return QuoteFilter.createFromBannedRegions(ret.build());
}
 
源代码4 项目: batfish   文件: CumulusNcluConfigurationBuilder.java
private static @Nonnull Set<String> toStrings(Glob_range_setContext ctx, long maxValue) {
  if (ctx.unnumbered != null) {
    return ImmutableSet.of(ctx.unnumbered.getText());
  }
  String baseWord = ctx.base_word.getText();
  if (ctx.first_interval_end == null && ctx.other_numeric_ranges == null) {
    return ImmutableSet.of(baseWord);
  }
  Matcher matcher = NUMBERED_WORD_PATTERN.matcher(baseWord);
  matcher.matches(); // parser+lexer guarantee match
  String prefix = matcher.group(1);
  long firstIntervalStart = Long.parseLong(matcher.group(2), 10);
  long firstIntervalEnd =
      ctx.first_interval_end != null
          ? Long.parseLong(ctx.first_interval_end.getText(), 10)
          : firstIntervalStart;
  checkArgument(firstIntervalStart <= maxValue && firstIntervalEnd <= maxValue);
  // attempt to add first interval
  ImmutableRangeSet.Builder<Long> builder = ImmutableRangeSet.builder();
  try {
    // TODO have better parsing for globs: https://github.com/batfish/batfish/issues/4386
    builder.add(Range.closed(firstIntervalStart, firstIntervalEnd));
  } catch (IllegalArgumentException e) {
    return ImmutableSet.of();
  }
  // All good, proceed to numeric ranges
  if (ctx.other_numeric_ranges != null) {
    // add other intervals
    RangeSet<Long> rangeSet = toRangeSet(ctx.other_numeric_ranges);
    checkUpperBound(rangeSet, maxValue);
    builder.addAll(rangeSet);
  }
  return builder.build().asRanges().stream()
      .flatMapToLong(r -> LongStream.rangeClosed(r.lowerEndpoint(), r.upperEndpoint()))
      .mapToObj(i -> String.format("%s%d", prefix, i))
      .collect(ImmutableSet.toImmutableSet());
}
 
源代码5 项目: attic-aurora   文件: Numbers.java
/**
 * Performs {@link #toRange(IRange)} for a collection of ranges, and convert the result to a set
 * of integers.
 *
 * @param ranges Ranges to convert.
 * @return A set representing {@code ranges}.
 */
public static Set<Integer> rangesToInstanceIds(Iterable<IRange> ranges) {
  ImmutableRangeSet.Builder<Integer> instanceIds = ImmutableRangeSet.builder();
  for (IRange range : ranges) {
    instanceIds.add(toRange(range));
  }

  return instanceIds.build().asSet(DiscreteDomain.integers());
}
 
源代码6 项目: attic-aurora   文件: Updates.java
/**
 * Creates a range set representing all instance IDs represented by a set of instance
 * configurations included in a job update.
 *
 * @param configs Job update components.
 * @return A range set representing the instance IDs mentioned in instance groupings.
 */
public static ImmutableRangeSet<Integer> getInstanceIds(Set<IInstanceTaskConfig> configs) {
  ImmutableRangeSet.Builder<Integer> builder = ImmutableRangeSet.builder();
  for (IInstanceTaskConfig config : configs) {
    for (IRange range : config.getInstances()) {
      builder.add(Range.closed(range.getFirst(), range.getLast()));
    }
  }

  return builder.build();
}
 
源代码7 项目: hop   文件: SampleRows.java
public boolean processRow() throws HopException {
  meta = (SampleRowsMeta) smi;
  data = (SampleRowsData) sdi;

  Object[] r = getRow(); // get row, set busy!
  if ( r == null ) { // no more input to be expected...

    setOutputDone();
    return false;
  }
  if ( first ) {
    first = false;

    String realRange = environmentSubstitute( meta.getLinesRange() );
    data.addlineField = ( !Utils.isEmpty( environmentSubstitute( meta.getLineNumberField() ) ) );

    // get the RowMeta
    data.previousRowMeta = getInputRowMeta().clone();
    data.NrPrevFields = data.previousRowMeta.size();
    data.outputRowMeta = data.previousRowMeta;
    if ( data.addlineField ) {
      meta.getFields( data.outputRowMeta, getTransformName(), null, null, this, metadataProvider );
    }

    String[] rangePart = realRange.split( "," );
    ImmutableRangeSet.Builder<Integer> setBuilder = ImmutableRangeSet.builder();

    for ( String part : rangePart ) {
      if ( part.matches( "\\d+" ) ) {
        if ( log.isDebug() ) {
          logDebug( BaseMessages.getString( PKG, "SampleRows.Log.RangeValue", part ) );
        }
        int vpart = Integer.valueOf( part );
        setBuilder.add( Range.singleton( vpart ) );

      } else if ( part.matches( "\\d+\\.\\.\\d+" ) ) {
        String[] rangeMultiPart = part.split( "\\.\\." );
        Integer start = Integer.valueOf( rangeMultiPart[ 0 ] );
        Integer end = Integer.valueOf( rangeMultiPart[ 1 ] );
        Range<Integer> range = Range.closed( start, end );
        if ( log.isDebug() ) {
          logDebug( BaseMessages.getString( PKG, "SampleRows.Log.RangeValue", range ) );
        }
        setBuilder.add( range );
      }
    }
    data.rangeSet = setBuilder.build();
  } // end if first

  if ( data.addlineField ) {
    data.outputRow = RowDataUtil.allocateRowData( data.outputRowMeta.size() );
    for ( int i = 0; i < data.NrPrevFields; i++ ) {
      data.outputRow[ i ] = r[ i ];
    }
  } else {
    data.outputRow = r;
  }

  int linesRead = (int) getLinesRead();
  if ( data.rangeSet.contains( linesRead ) ) {
    if ( data.addlineField ) {
      data.outputRow[ data.NrPrevFields ] = getLinesRead();
    }

    // copy row to possible alternate rowset(s).
    //
    putRow( data.outputRowMeta, data.outputRow );

    if ( log.isRowLevel() ) {
      logRowlevel( BaseMessages.getString( PKG, "SampleRows.Log.LineNumber", linesRead
        + " : " + getInputRowMeta().getString( r ) ) );
    }
  }

  // Check if maximum value has been exceeded
  if ( data.rangeSet.isEmpty() || linesRead >= data.rangeSet.span().upperEndpoint() ) {
    setOutputDone();
  }

  // Allowed to continue to read in data
  return true;
}
 
ImmutableRangeSet.Builder<Integer> linesBuilder() {
    return lines;
}
 
源代码9 项目: javaide   文件: CommandLineOptions.java
ImmutableRangeSet.Builder<Integer> linesBuilder() {
    return lines;
}
 
源代码10 项目: google-java-format   文件: CommandLineOptions.java
ImmutableRangeSet.Builder<Integer> linesBuilder() {
  return lines;
}
 
源代码11 项目: tac-kbp-eal   文件: QuoteFilter.java
/**
 * Given the string contents of a document, will return the offset ranges of those portions within
 * <quote> tags. This does not pay attention to the attributes of the quote tags.
 */
public static ImmutableRangeSet<Integer> computeQuotedRegions(String s) {
  checkNotNull(s);
  final ImmutableRangeSet.Builder<Integer> ret = ImmutableRangeSet.builder();

  // current search position
  int curPos = 0;
  // search for first opening <quote> tag
  int regionStart = StringUtils.earliestIndexOfAny(s, BANNED_REGION_STARTS, curPos);

  // if we found a <quote> tag
  while (regionStart != -1) {
    curPos = regionStart;
    int nestingCount = 1;

    // until we find the matching </quote> tag..
    while (nestingCount > 0) {
      final int nextStart = StringUtils.earliestIndexOfAny(s, BANNED_REGION_STARTS, curPos + 1);
      final int nextEnd = s.indexOf(BANNED_REGION_END, curPos + 1);

      if (nextEnd == -1) {
        // (a) uh-oh, we reached the end without ever finding a match
        throw new RuntimeException(
            String.format("<quote> tag opened at %d is never closed.", regionStart));
      } else if (nextStart == -1 || nextEnd < nextStart) {
        // (b) we find a </quote> before another <quote>, so
        // we reduce the nesting level and remember the location
        // of the closing tag
        --nestingCount;
        curPos = nextEnd;
      } else if (nextEnd > nextStart) {
        // (c) we found another <quote> before the end of the current
        // <quote>, so there must be nesting.
        ++nestingCount;
        curPos = nextStart;
      } else {
        throw new RuntimeException("It is impossible for nextEnd == nextStart");
      }
    }

    // the only way we successfully exited is case (b)
    // where curPos is the beginning of the </quote> tag
    ret.add(Range.closed(regionStart, curPos + BANNED_REGION_END.length() - 1));

    regionStart = StringUtils.earliestIndexOfAny(s, BANNED_REGION_STARTS, curPos + 1);
  }

  return ret.build();
}
 
源代码12 项目: pentaho-kettle   文件: SampleRows.java
public boolean processRow( StepMetaInterface smi, StepDataInterface sdi ) throws KettleException {
  meta = (SampleRowsMeta) smi;
  data = (SampleRowsData) sdi;

  Object[] r = getRow(); // get row, set busy!
  if ( r == null ) { // no more input to be expected...

    setOutputDone();
    return false;
  }
  if ( first ) {
    first = false;

    String realRange = environmentSubstitute( meta.getLinesRange() );
    data.addlineField = ( !Utils.isEmpty( environmentSubstitute( meta.getLineNumberField() ) ) );

    // get the RowMeta
    data.previousRowMeta = getInputRowMeta().clone();
    data.NrPrevFields = data.previousRowMeta.size();
    data.outputRowMeta = data.previousRowMeta;
    if ( data.addlineField ) {
      meta.getFields( data.outputRowMeta, getStepname(), null, null, this, repository, metaStore );
    }

    String[] rangePart = realRange.split( "," );
    ImmutableRangeSet.Builder<Integer> setBuilder = ImmutableRangeSet.builder();

    for ( String part : rangePart ) {
      if ( part.matches( "\\d+" ) ) {
        if ( log.isDebug() ) {
          logDebug( BaseMessages.getString( PKG, "SampleRows.Log.RangeValue", part ) );
        }
        int vpart = Integer.valueOf( part );
        setBuilder.add( Range.singleton( vpart ) );

      } else if ( part.matches( "\\d+\\.\\.\\d+" ) ) {
        String[] rangeMultiPart = part.split( "\\.\\." );
        Integer start = Integer.valueOf( rangeMultiPart[0] );
        Integer end = Integer.valueOf( rangeMultiPart[1] );
        Range<Integer> range = Range.closed( start, end );
        if ( log.isDebug() ) {
          logDebug( BaseMessages.getString( PKG, "SampleRows.Log.RangeValue", range ) );
        }
        setBuilder.add( range );
      }
    }
    data.rangeSet = setBuilder.build();
  } // end if first

  if ( data.addlineField ) {
    data.outputRow = RowDataUtil.allocateRowData( data.outputRowMeta.size() );
    for ( int i = 0; i < data.NrPrevFields; i++ ) {
      data.outputRow[i] = r[i];
    }
  } else {
    data.outputRow = r;
  }

  int linesRead = (int) getLinesRead();
  if ( data.rangeSet.contains( linesRead ) ) {
    if ( data.addlineField ) {
      data.outputRow[data.NrPrevFields] = getLinesRead();
    }

    // copy row to possible alternate rowset(s).
    //
    putRow( data.outputRowMeta, data.outputRow );

    if ( log.isRowLevel() ) {
      logRowlevel( BaseMessages.getString( PKG, "SampleRows.Log.LineNumber", linesRead
        + " : " + getInputRowMeta().getString( r ) ) );
    }
  }

  // Check if maximum value has been exceeded
  if ( data.rangeSet.isEmpty() || linesRead >= data.rangeSet.span().upperEndpoint() ) {
    setOutputDone();
  }

  // Allowed to continue to read in data
  return true;
}
 
/**
 * Parse multiple --lines flags, like {"1:12,14,20:36", "40:45,50"}. Multiple ranges can be given
 * with multiple --lines flags or separated by commas. A single line can be set by a single
 * number. Line numbers are {@code 1}-based, but are converted to the {@code 0}-based numbering
 * used internally by google-java-format.
 */
private static void parseRangeSet(ImmutableRangeSet.Builder<Integer> result, String ranges) {
    for (String range : COMMA_SPLITTER.split(ranges)) {
        result.add(parseRange(range));
    }
}
 
源代码14 项目: javaide   文件: CommandLineOptionsParser.java
/**
 * Parse multiple --lines flags, like {"1:12,14,20:36", "40:45,50"}. Multiple ranges can be given
 * with multiple --lines flags or separated by commas. A single line can be set by a single
 * number. Line numbers are {@code 1}-based, but are converted to the {@code 0}-based numbering
 * used internally by google-java-format.
 */
private static void parseRangeSet(ImmutableRangeSet.Builder<Integer> result, String ranges) {
    for (String range : COMMA_SPLITTER.split(ranges)) {
        result.add(parseRange(range));
    }
}
 
/**
 * Parse multiple --lines flags, like {"1:12,14,20:36", "40:45,50"}. Multiple ranges can be given
 * with multiple --lines flags or separated by commas. A single line can be set by a single
 * number. Line numbers are {@code 1}-based, but are converted to the {@code 0}-based numbering
 * used internally by google-java-format.
 */
private static void parseRangeSet(ImmutableRangeSet.Builder<Integer> result, String ranges) {
  for (String range : COMMA_SPLITTER.split(ranges)) {
    result.add(parseRange(range));
  }
}