Skip to content

Commit

Permalink
Merge branch 'FilterableColumns' into 'master'
Browse files Browse the repository at this point in the history
TestCop#getNumberOfFilterableColumns() replaced by #columnNonFilterable

See merge request exedio/copeconsole!112
  • Loading branch information
rw7 committed Oct 1, 2024
2 parents 6eac8e9 + cc5a711 commit 1e143f7
Show file tree
Hide file tree
Showing 12 changed files with 41 additions and 56 deletions.
8 changes: 1 addition & 7 deletions src/com/exedio/cope/console/CharacterNulCop.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,6 @@ List<StringField> getItems()
return result;
}

@Override
int getNumberOfFilterableColumns()
{
return 1;
}

@Override
List<Column<StringField>> columns()
{
Expand All @@ -97,7 +91,7 @@ List<Column<StringField>> columns()

private static final List<Column<StringField>> COLUMNS = List.of(
column("Field", StringField::getID),
column("CharSet", (out, field) ->
columnNonFilterable("CharSet", (out, field) ->
{
final CharSet charSet = field.getCharSet();
if(charSet!=null)
Expand Down
2 changes: 1 addition & 1 deletion src/com/exedio/cope/console/FeatureFieldCop.java
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ List<Column<FeatureField<?>>> columns()
private static final List<Column<FeatureField<?>>> COLUMNS = List.of(
column("Type", field -> field.getType().getID()),
column("Name", field -> field.getName()),
column("Values", (out, field) -> writeValueLong(out, field.getValues().toString()))
columnNonFilterable("Values", (out, field) -> writeValueLong(out, field.getValues().toString()))
);

@Override
Expand Down
12 changes: 3 additions & 9 deletions src/com/exedio/cope/console/HashConstraintCop.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,6 @@ List<HashConstraint> getItems()
return result;
}

@Override
int getNumberOfFilterableColumns()
{
return 1;
}

@Override
List<Column<HashConstraint>> columns()
{
Expand All @@ -109,13 +103,13 @@ List<Column<HashConstraint>> columns()
if(pattern instanceof Media)
out.writeRaw("</a>");
}),
column("Content Type", (out, constraint) ->
columnNonFilterable("Content Type", (out, constraint) ->
{
final Pattern pattern = constraint.getData().getPattern();
if(pattern instanceof Media)
out.write(((Media)pattern).getContentTypeDescription().replaceAll(",", ", "));
}),
column("Hash", (out, constraint) ->
columnNonFilterable("Hash", (out, constraint) ->
{
final String algorithm = constraint.getAlgorithm();
out.write(algorithm);
Expand All @@ -124,7 +118,7 @@ List<Column<HashConstraint>> columns()
model.isConnected() &&
!model.getSupportedDataHashAlgorithms().contains(algorithm));
}),
column("SQL", (out, constraint) ->
columnNonFilterable("SQL", (out, constraint) ->
{
final Query<?> query = getQuery(constraint);
if(!query.getType().getModel().isConnected())
Expand Down
6 changes: 0 additions & 6 deletions src/com/exedio/cope/console/MediaTestableCop.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,6 @@ List<MediaTestable> getItems()
return result;
}

@Override
int getNumberOfFilterableColumns()
{
return 3;
}

@Override
List<Column<MediaTestable>> columns()
{
Expand Down
4 changes: 2 additions & 2 deletions src/com/exedio/cope/console/MediaTypeCop.java
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ List<Column<Media>> columns()
out.write(media.getName());
out.writeRaw("</a>");
}),
column("Content Type", media -> media.getContentTypeDescription().replaceAll(",", ", ")),
column("Query", (out, media) ->
columnNonFilterable("Content Type", media -> media.getContentTypeDescription().replaceAll(",", ", ")),
columnNonFilterable("Query", (out, media) ->
{
final Condition c = media.bodyMismatchesContentTypeIfSupported();
if(c!=Condition.FALSE)
Expand Down
8 changes: 1 addition & 7 deletions src/com/exedio/cope/console/MinLengthStringFieldCop.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,6 @@ List<StringField> getItems()
return result;
}

@Override
int getNumberOfFilterableColumns()
{
return 1;
}

@Override
List<Column<StringField>> columns()
{
Expand All @@ -76,7 +70,7 @@ List<Column<StringField>> columns()

private static final List<Column<StringField>> COLUMNS = List.of(
column("Field", StringField::toString),
column("Min Length", field -> Format.formatAndHide(0, field.getMinimumLength()))
columnNonFilterable("Min Length", field -> Format.formatAndHide(0, field.getMinimumLength()))
);

@Override
Expand Down
12 changes: 6 additions & 6 deletions src/com/exedio/cope/console/SequenceCop.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,12 +96,12 @@ List<Column<SequenceInfo>> columns()
private static final List<Column<SequenceInfo>> COLUMNS = List.of(
column("Type", info -> info.getFeature().getType().getID()),
column("Name", info -> info.getFeature().getName()),
column("Start", info -> format(info.getStartL())),
column("Min", info -> format(info.getMinimumL())),
column("Max", info -> format(info.getMaximumL())),
column("Count", info -> format(info.getCountL())),
column("First", (out, info) -> { if(info.isKnown()) out.write(format(info.getFirstL())); }),
column("Last", (out, info) -> { if(info.isKnown()) out.write(format(info.getLastL())); })
columnNonFilterable("Start", info -> format(info.getStartL())),
columnNonFilterable("Min", info -> format(info.getMinimumL())),
columnNonFilterable("Max", info -> format(info.getMaximumL())),
columnNonFilterable("Count", info -> format(info.getCountL())),
columnNonFilterable("First", (out, info) -> { if(info.isKnown()) out.write(format(info.getFirstL())); }),
columnNonFilterable("Last", (out, info) -> { if(info.isKnown()) out.write(format(info.getLastL())); })
);

@Override
Expand Down
2 changes: 1 addition & 1 deletion src/com/exedio/cope/console/Test.jspm
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ final class Test_Jspm
%>
<th>
<%=column.heading%>
<%if (i<cop.getNumberOfFilterableColumns()) { %>
<%if (column.filterable) { %>
<input class="filter" type="text" onkeyup="filterRows(this.value, <%=i%>);" placeholder="Filter"></input>
<%}%>
</th><%
Expand Down
31 changes: 23 additions & 8 deletions src/com/exedio/cope/console/TestCop.java
Original file line number Diff line number Diff line change
Expand Up @@ -449,11 +449,6 @@ String getNoItemsMessage()
return "There are no "+name+" in this model.";
}

int getNumberOfFilterableColumns()
{
return 2;
}

final String getViolationSqlIfConnected(final I item)
{
try
Expand All @@ -479,23 +474,43 @@ String getViolationSql(final I item)

static final <I> Column<I> column(final String heading, final Function<I,String> cell)
{
return new Column<>(heading, (out, field) -> out.write(cell.apply(field)));
return new Column<>(heading, toConsumer(cell), true);
}

// TODO
// I'd rather want to have a modifier method Column#nonFilterable,
// but this causes compiler errors I don't understand.
static final <I> Column<I> columnNonFilterable(final String heading, final Function<I,String> cell)
{
return new Column<>(heading, toConsumer(cell), false);
}

private static <I> BiConsumer<Out, I> toConsumer(final Function<I,String> cell)
{
return (out, field) -> out.write(cell.apply(field));
}

static final <I> Column<I> column(final String heading, final BiConsumer<Out, I> cell)
{
return new Column<>(heading, cell);
return new Column<>(heading, cell, true);
}

static final <I> Column<I> columnNonFilterable(final String heading, final BiConsumer<Out, I> cell)
{
return new Column<>(heading, cell, false);
}

protected static final class Column<I>
{
final String heading;
final BiConsumer<Out, I> cell;
final boolean filterable;

Column(final String heading, final BiConsumer<Out, I> cell)
Column(final String heading, final BiConsumer<Out, I> cell, final boolean filterable)
{
this.heading = requireNonNull(heading);
this.cell = requireNonNull(cell);
this.filterable = filterable;
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/com/exedio/cope/console/TypeFieldCop.java
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ List<Column<TypeField<?>>> columns()
private static final List<Column<TypeField<?>>> COLUMNS = List.of(
column("Type", field -> field.getType().getID()),
column("Name", field -> field.getName()),
column("Values", (out, field) -> writeValueLong(out, field.getValues().toString()))
columnNonFilterable("Values", (out, field) -> writeValueLong(out, field.getValues().toString()))
);

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,12 +106,6 @@ List<Table> getItems()
return result;
}

@Override
int getNumberOfFilterableColumns()
{
return 1;
}

UnsupportedConstraintCop toTable(final Table table)
{
return new UnsupportedConstraintCop(args, testArgs, table.getName());
Expand All @@ -122,7 +116,7 @@ List<Column<Table>> columns()
{
return List.of(
column("Table", (out, table) -> UnsupportedCheckConstraintByTable_Jspm.writeTableValue(this, out, table)),
column("Condition", (out, table) ->
columnNonFilterable("Condition", (out, table) ->
{
final StringBuilder bf = new StringBuilder();
appendSQL(table, bf);
Expand Down
2 changes: 1 addition & 1 deletion src/com/exedio/cope/console/UnsupportedConstraintCop.java
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ List<Column<Constraint>> columns()
private static final List<Column<Constraint>> COLUMNS = List.of(
column("Table", constraint -> constraint.getTable().getName()),
column("Name", constraint -> constraint.getName()),
column("Condition", (out, constraint) -> writeValueLong(out, constraint.getRequiredCondition()))
columnNonFilterable("Condition", (out, constraint) -> writeValueLong(out, constraint.getRequiredCondition()))
);

@Override
Expand Down

0 comments on commit 1e143f7

Please sign in to comment.