private void copyColumns(TableImpl sourceTable, TableImpl destTable) { for (Column col : sourceTable.toArray()) { if (!col.isProperty() && !destTable.hasColumn(col.getId())) { destTable.addColumn(col.getId(), col.getTitle(), col.getTypeClass(), col.getOrigin(), col .getDefaultValue(), col.isIndexed()); } } }
private void createColumnObserver(Column column) { ColumnObserver observer = column.createColumnObserver(false); columnObservers.add(observer); }
/** * Set column that should be used to search with the current options. * If columnsToSearch is empty, all columns will be used to search. * @param columnsToSearch It is safe to specify invalid columns, they will be ignored */ public void setColumnsToSearch(Column[] columnsToSearch) { this.columnsToSearch.clear(); if (columnsToSearch != null) { for (Column c : columnsToSearch) { this.columnsToSearch.add(c.getIndex()); } } }
@Override public boolean canDeleteColumn(Column column) { return !column.isReadOnly() && column.getOrigin() != Origin.PROPERTY; }
@Override public String toString() { return column.getTitle() + " -- " + column.getTypeClass().getSimpleName(); } }
void checkReadOnlyColumn(Column column) { if (column.isReadOnly()) { throw new RuntimeException("Can't modify the read-only '" + column.getId() + "' column"); } }
@Override public String toString() { return column.getTitle(); } }
public AttributeDataColumn(AttributeColumnsController attributeColumnsController, Column column) { this.attributeColumnsController = attributeColumnsController; this.column = column; this.columnClassForTable = column.getTypeClass(); }
@Override public void execute(Table table, Column column) { Class dynamicType = AttributeUtils.getIntervalMapType(column.getTypeClass()); AttributeColumnsController ac = Lookup.getDefault().lookup(AttributeColumnsController.class); Element[] rows = ac.getTableAttributeRows(table); Object[] values = new Object[rows.length]; Interval interval = new Interval(Double.parseDouble(start), Double.parseDouble(end)); for (int i = 0; i < values.length; i++) { try { IntervalMap val = (IntervalMap) dynamicType.newInstance(); val.put(interval, rows[i].getAttribute(column)); } catch (Exception e) { } } table.removeColumn(column); Column dynamicColumn = table.addColumn(column.getId(), column.getTitle(), dynamicType, null); for (int i = 0; i < values.length; i++) { rows[i].setAttribute(dynamicColumn, values[i]); } }
if (!sourceCol.isProperty()) { Column destColumn = destNodeTable.getColumn(sourceCol.getId()); if (destColumn != null && !destColumn.getTypeClass().equals(sourceCol.getTypeClass())) { throw new RuntimeException( "A node column '" + destColumn.getId() + "' already exists with a different type"); if (!sourceCol.isProperty()) { Column destColumn = destEdgeTable.getColumn(sourceCol.getId()); if (destColumn != null && !destColumn.getTypeClass().equals(sourceCol.getTypeClass())) { throw new RuntimeException( "An edge column '" + destColumn.getId() + "' already exists with a different type");
@Override public boolean canConvertColumnToDynamic(Column column) { if (column.isReadOnly() || AttributeUtils.isDynamicType(column.getTypeClass())) { return false; } try { //Make sure the simple type can actually be part of a dynamic type of intervals/timestamps //For example array types cannot be converted to dynamic AttributeUtils.getIntervalMapType(column.getTypeClass()); AttributeUtils.getTimestampMapType(column.getTypeClass()); } catch (Exception e) { return false; } if (isNodeColumn(column) || isEdgeColumn(column)) { return !column.getTitle().equalsIgnoreCase("Label"); } else { return true; } }
@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]); }
private void updateConfiguration(Column changedColumn) { String columnId = changedColumn.getId(); if (Edge.class.equals(elementType)) { if (columnId.equals(GraphStoreConfiguration.EDGE_WEIGHT_COLUMN_ID)) { if (hasColumn(columnId)) { Class edgeWeightColumnClass = getColumn(columnId).getTypeClass(); configuration.setEdgeWeightType(edgeWeightColumnClass); configuration.setEdgeWeightColumn(true); } else { configuration.setEdgeWeightColumn(false); } } else if (columnId.equals(GraphStoreConfiguration.ELEMENT_ID_COLUMN_ID)) { configuration.setEdgeIdType(changedColumn.getTypeClass()); } } else if (Node.class.equals(elementType)) { if (columnId.equals(GraphStoreConfiguration.ELEMENT_ID_COLUMN_ID)) { configuration.setNodeIdType(changedColumn.getTypeClass()); } } }
private void copyAttributes(TableImpl sourceTable, TableImpl destTable, Element element, Element elementCopy) { TimeRepresentation tr = sourceTable.store.configuration.getTimeRepresentation(); for (Column col : sourceTable.toArray()) { if (!col.isProperty()) { Column colCopy = destTable.getColumn(col.getId()); if (col.isDynamic() && tr.equals(TimeRepresentation.TIMESTAMP)) { for (Map.Entry<Double, Object> entry : element.getAttributes(col)) { Double key = entry.getKey(); Object value = entry.getValue(); elementCopy.setAttribute(colCopy, value, key); } } else if (col.isDynamic() && tr.equals(TimeRepresentation.INTERVAL)) { for (Map.Entry<Interval, Object> entry : element.getAttributes(col)) { Interval key = entry.getKey(); Object value = entry.getValue(); elementCopy.setAttribute(colCopy, value, key); } } else { Object attribute = element.getAttribute(col); elementCopy.setAttribute(colCopy, attribute); } } } }
private void refreshColumns() { if (graphModel == null) { return; } columnsPanel.removeAll(); columnsPanel.setLayout(new MigLayout("", "[pref!]")); ArrayList<ColumnCheckboxWrapper> columnCheckboxesList = new ArrayList<>(); //Show rest of columns: Table table = getSelectedTable() == ExporterSpreadsheet.ExportTable.NODES ? graphModel.getNodeTable() : graphModel.getEdgeTable(); for (Column column : table) { columnCheckboxesList.add(new ColumnCheckboxWrapper(column.getId(), column.getTitle())); } columnsCheckBoxes = columnCheckboxesList.toArray(new ColumnCheckboxWrapper[0]); for (ColumnCheckboxWrapper columnCheckboxWrapper : columnsCheckBoxes) { columnsPanel.add(columnCheckboxWrapper, "wrap"); } columnsPanel.revalidate(); columnsPanel.repaint(); }
protected String getIdCol(Column column) { return (AttributeUtils.isNodeColumn(column) ? "node" : "edge") + "_column_" + column.getId(); }
@Override public boolean canManipulateColumn(Table at, Column c) { if (AttributeUtils.isNodeColumn(c)) { if (!c.isProperty()) { //Can't replace id or label column return AttributeUtils.getIntervalMapType(c.getTypeClass()) != null;//Is convertible to some dynamic type? } else { return false; } } else if (AttributeUtils.isEdgeColumn(c)) { if (!c.isProperty()) { //Can't replace id, label or weight column return AttributeUtils.getIntervalMapType(c.getTypeClass()) != null;//Is convertible to some dynamic type? } else { return false; } } else { return false; } }
@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 } }
public ColumnEstimator(Column column) { this.column = column; this.comboBox = new JComboBox(); this.label = new JLabel(column.getTitle()); initAvailableEstimators(); Estimator currentEstimator = column.getEstimator(); comboBox.setSelectedItem(new EstimatorWrapper(currentEstimator)); }
Column col = table.getColumn(id); if (col != null && !col.isReadOnly()) { try { Object val = AttributeUtils.parse(value, col.getTypeClass()); element.setAttribute(col, val); } catch (Exception e) {