@JsonCreator private static @Nonnull ColumnSortOption create( @JsonProperty(BfConsts.PROP_COLUMN) String column, @JsonProperty(BfConsts.PROP_REVERSED) Boolean reversed) { return new ColumnSortOption(requireNonNull(column), firstNonNull(reversed, false)); }
@VisibleForTesting @Nonnull Comparator<Row> buildComparator( Map<String, ColumnMetadata> rawColumnMap, List<ColumnSortOption> sortOrder) { ColumnSortOption firstColumnSortOption = sortOrder.get(0); ColumnMetadata firstMetadata = rawColumnMap.get(firstColumnSortOption.getColumn()); Comparator<Row> comparator = columnComparator(firstMetadata); if (firstColumnSortOption.getReversed()) { comparator = comparator.reversed(); } for (int i = 1; i < sortOrder.size(); i++) { ColumnSortOption columnSortOption = sortOrder.get(i); Comparator<Row> nextComparator = columnComparator(rawColumnMap.get(columnSortOption.getColumn())); if (columnSortOption.getReversed()) { nextComparator = nextComparator.reversed(); } comparator = comparator.thenComparing(nextComparator); } return comparator; }
@Test public void testEquals() { ColumnSortOption group1Elem1 = new ColumnSortOption("a", false); ColumnSortOption group1Elem2 = new ColumnSortOption("a", false); ColumnSortOption group2Elem1 = new ColumnSortOption("a", true); ColumnSortOption group3Elem1 = new ColumnSortOption("b", false); new EqualsTester() .addEqualityGroup(group1Elem1, group1Elem2) .addEqualityGroup(group2Elem1) .addEqualityGroup(group3Elem1) .testEquals(); } }
@Test public void testProcessAnswerRowsNotFound() throws IOException { String columnName = "issue"; int maxRows = 1; int rowOffset = 0; AnswerRowsOptions options = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(), maxRows, rowOffset, ImmutableList.of(new ColumnSortOption(columnName, true)), false); Answer processedAnswer = _manager.processAnswerRows(null, options); assertThat(processedAnswer.getStatus(), equalTo(AnswerStatus.NOTFOUND)); }
@Test public void testProcessAnswerRowsFailure() throws IOException { String columnName = "issue"; int maxRows = 1; int rowOffset = 0; AnswerRowsOptions options = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(), maxRows, rowOffset, ImmutableList.of(new ColumnSortOption(columnName, true)), false); Answer badInput = new Answer(); badInput.setStatus(AnswerStatus.SUCCESS); String rawAnswerStr = BatfishObjectMapper.writePrettyString(badInput); Answer processedAnswer = _manager.processAnswerRows(rawAnswerStr, options); assertThat(processedAnswer.getStatus(), equalTo(AnswerStatus.FAILURE)); }
@Test public void testProcessAnswerRowsStale() throws IOException { String columnName = "issue"; int maxRows = 1; int rowOffset = 0; AnswerRowsOptions options = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(), maxRows, rowOffset, ImmutableList.of(new ColumnSortOption(columnName, true)), false); Answer badInput = new Answer(); badInput.setStatus(AnswerStatus.STALE); String rawAnswerStr = BatfishObjectMapper.writePrettyString(badInput); Answer processedAnswer = _manager.processAnswerRows(rawAnswerStr, options); assertThat(processedAnswer.getStatus(), equalTo(AnswerStatus.STALE)); }
1, 2, ImmutableList.of(new ColumnSortOption("c", false)), false); AnswerRowsOptions group1Elem2 = 1, 2, ImmutableList.of(new ColumnSortOption("c", false)), false); AnswerRowsOptions group2Elem1 = 1, 2, ImmutableList.of(new ColumnSortOption("c", false)), false); AnswerRowsOptions group3Elem1 = 1, 2, ImmutableList.of(new ColumnSortOption("c", false)), false); AnswerRowsOptions group4Elem1 = 3, 2, ImmutableList.of(new ColumnSortOption("c", false)), false); AnswerRowsOptions group5Elem1 =
new ColumnMetadata(col2, Schema.INTEGER, "bloop")); Comparator<Row> comCol1 = _manager.buildComparator(rawColumnMap, ImmutableList.of(new ColumnSortOption(col1, false))); Comparator<Row> comCol1Reversed = _manager.buildComparator(rawColumnMap, ImmutableList.of(new ColumnSortOption(col1, true))); Comparator<Row> comCol2 = _manager.buildComparator(rawColumnMap, ImmutableList.of(new ColumnSortOption(col2, false))); Comparator<Row> comCol2Reversed = _manager.buildComparator(rawColumnMap, ImmutableList.of(new ColumnSortOption(col2, true))); Comparator<Row> comCol1Then2 = _manager.buildComparator( rawColumnMap, ImmutableList.of(new ColumnSortOption(col1, false), new ColumnSortOption(col2, false))); Comparator<Row> comCol2Then1 = _manager.buildComparator( rawColumnMap, ImmutableList.of(new ColumnSortOption(col2, false), new ColumnSortOption(col1, false)));
Integer.MAX_VALUE, 0, ImmutableList.of(new ColumnSortOption(columnName, false)), false); AnswerRowsOptions optionsSortingReverse = Integer.MAX_VALUE, 0, ImmutableList.of(new ColumnSortOption(columnName, true)), false);
maxRows, rowOffset, ImmutableList.of(new ColumnSortOption(columnName, true)), false); Map<String, AnswerRowsOptions> analysisAnswersOptions = ImmutableMap.of(questionName, options);
@Test public void testProcessAnswerRows2() throws IOException { String columnName = "issue"; int maxRows = 1; int rowOffset = 0; TableAnswerElement table = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata(columnName, Schema.ISSUE, "foobar")))); table.addRow(Row.of(columnName, new Issue("blah", 5, new Issue.Type("m", "n")))); Answer answer = new Answer(); answer.addAnswerElement(table); answer.setStatus(AnswerStatus.SUCCESS); String answerStr = BatfishObjectMapper.writePrettyString(answer); AnswerRowsOptions options = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(), maxRows, rowOffset, ImmutableList.of(new ColumnSortOption(columnName, true)), false); List<Row> processedRows = ((TableView) _manager.processAnswerRows2(answerStr, options).getAnswerElements().get(0)) .getInnerRows(); assertThat(processedRows, equalTo(table.getRowsList())); }
@Test public void testProcessAnswerRows() throws IOException { String columnName = "issue"; int maxRows = 1; int rowOffset = 0; TableAnswerElement table = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata(columnName, Schema.ISSUE, "foobar")))); table.addRow(Row.of(columnName, new Issue("blah", 5, new Issue.Type("m", "n")))); Answer answer = new Answer(); answer.addAnswerElement(table); answer.setStatus(AnswerStatus.SUCCESS); String answerStr = BatfishObjectMapper.writePrettyString(answer); AnswerRowsOptions options = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(), maxRows, rowOffset, ImmutableList.of(new ColumnSortOption(columnName, true)), false); List<Row> processedRows = ((TableAnswerElement) _manager.processAnswerRows(answerStr, options).getAnswerElements().get(0)) .getRowsList(); assertThat(processedRows, equalTo(table.getRowsList())); }
Integer.MAX_VALUE, 0, ImmutableList.of(new ColumnSortOption(columnName, false)), false)); String analysisAnswersOptionsStr =
Integer.MAX_VALUE, 0, ImmutableList.of(new ColumnSortOption(columnName, false)), false); String answerRowsOptionsStr = BatfishObjectMapper.writePrettyString(answersRowsOptions);
Integer.MAX_VALUE, 0, ImmutableList.of(new ColumnSortOption(columnName, false)), false); String answerRowsOptionsStr = BatfishObjectMapper.writePrettyString(answersRowsOptions);
Integer.MAX_VALUE, 0, ImmutableList.of(new ColumnSortOption(columnName, false)), false); String answerRowsOptionsStr = BatfishObjectMapper.writePrettyString(answersRowsOptions);
Integer.MAX_VALUE, 0, ImmutableList.of(new ColumnSortOption(columnName, false)), false); String answerRowsOptionsStr = BatfishObjectMapper.writePrettyString(answersRowsOptions);