@Override public boolean evaluate(Graph graph, Element element) { if (pattern == null) { return true; } Object val = element.getAttribute(column, graph.getView()); if (val != null) { String valString = column.isArray() ? AttributeUtils.printArray(val) : val.toString(); if (useRegex) { return regex.matcher(valString).matches(); } else { return pattern.equals(valString); } } return false; }
private String buildText(Graph graph, Element element, Column column) { Object val = element.getAttribute(column, graph.getView()); if (val == null) { return ""; } if (column.isArray()) { return AttributeUtils.printArray(val); } else { return val.toString(); } }
@Override public FilterBuilder[] getBuilders(Workspace workspace) { List<FilterBuilder> builders = new ArrayList<>(); GraphModel am = Lookup.getDefault().lookup(GraphController.class).getGraphModel(workspace); List<Column> columns = new ArrayList<>(); columns.addAll(am.getNodeTable().toList()); columns.addAll(am.getEdgeTable().toList()); for (Column c : columns) { if (!c.isProperty() && !c.isArray()) { if (AttributeUtils.isNumberType(c.getTypeClass())) { AttributeRangeFilterBuilder b = new AttributeRangeFilterBuilder(c); builders.add(b); } } } return builders.toArray(new FilterBuilder[0]); }
@Override public FilterBuilder[] getBuilders(Workspace workspace) { List<FilterBuilder> builders = new ArrayList<>(); GraphModel am = Lookup.getDefault().lookup(GraphController.class).getGraphModel(workspace); List<Column> columns = new ArrayList<>(); columns.addAll(am.getNodeTable().toList()); columns.addAll(am.getEdgeTable().toList()); for (Column c : columns) { if (!c.isProperty()) { if (c.getTypeClass().equals(String.class) || c.getTypeClass().equals(TimestampStringMap.class) || c.getTypeClass().equals(IntervalStringMap.class) || c.isArray()) { EqualStringFilterBuilder b = new EqualStringFilterBuilder(c); builders.add(b); } else if (AttributeUtils.isNumberType(c.getTypeClass())) { EqualNumberFilterBuilder b = new EqualNumberFilterBuilder(c); builders.add(b); } else if (c.getTypeClass().equals(Boolean.class) || c.getTypeClass().equals(TimestampBooleanMap.class) || c.getTypeClass().equals(IntervalBooleanMap.class)) { EqualBooleanFilterBuilder b = new EqualBooleanFilterBuilder(c); builders.add(b); } } } return builders.toArray(new FilterBuilder[0]); }
@Override public void setup(Element row, Column column) { this.column = column; //Prepare data for sparkline and validation: Object value = row.getAttribute(column); if (value != null) { if (AttributeUtils.isDynamicType(column.getTypeClass())) { Number[][] values = getDynamicNumberNumbers((IntervalMap) value); xValues = values[0]; yValues = values[1]; } else if (column.isArray() && AttributeUtils.isNumberType(column.getTypeClass().getComponentType())) { yValues = getNumberListNumbers(value); }//else: no valid column type for a sparkline at all } }
private boolean isRanking(Graph graph, Column column) { if (column.isDynamic() && column.isNumber()) { ElementIterable<? extends Element> iterable = AttributeUtils.isNodeColumn(column) ? graph.getNodes() : graph.getEdges(); for (Element el : iterable) { if (el.getAttribute(column, graph.getView()) != null) { iterable.doBreak(); return true; } } } else if (!column.isDynamic() && !column.isArray() && column.isIndexed() && column.isNumber()) { Index index; if (AttributeUtils.isNodeColumn(column)) { index = localScale ? graphModel.getNodeIndex(graph.getView()) : graphModel.getNodeIndex(); } else { index = localScale ? graphModel.getEdgeIndex(graph.getView()) : graphModel.getEdgeIndex(); } if (index.countValues(column) > 0) { return true; } } return false; }