private void checkSupportedIntervalTypes(Class type) { try { AttributeUtils.getIntervalMapType(type); } catch (Exception e) { throw new IllegalArgumentException("Unsupported dynamic type " + type.getName()); } }
private void checkSupportedIntervalTypes(Class type) { try { AttributeUtils.getIntervalMapType(type); } catch (Exception e) { throw new IllegalArgumentException("Unsupported dynamic type " + type.getName()); } }
valueSet = AttributeUtils.getIntervalMapType(value.getClass()).newInstance(); } else { valueSet = AttributeUtils.getTimestampMapType(value.getClass()).newInstance();
valueSet = AttributeUtils.getIntervalMapType(value.getClass()).newInstance(); } else { valueSet = AttributeUtils.getTimestampMapType(value.getClass()).newInstance();
@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 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]); } }
@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; } }
newType = AttributeUtils.getTimestampMapType(oldType); } else { newType = AttributeUtils.getIntervalMapType(oldType);