/** * This method update the type mapped inside a give column and updates the underlying model * @param columnIndex * @param column * @param value * @param lastLevelClassName * @param keepData */ public void updateColumnProperty(int columnIndex, final GridColumn<?> column, String value, String lastLevelClassName, boolean keepData) { checkSimulation(); List<GridCellValue<?>> originalValues = new ArrayList<>(); if (keepData) { IntStream.range(0, getRowCount()) .forEach(rowIndex -> originalValues.add(getCell(rowIndex, columnIndex).getValue())); } deleteColumn(columnIndex); String group = ((ScenarioGridColumn) column).getInformationHeaderMetaData().getColumnGroup(); String columnId = ((ScenarioGridColumn) column).getInformationHeaderMetaData().getColumnId(); String[] elements = value.split("\\."); ExpressionIdentifier ei = ExpressionIdentifier.create(columnId, FactMappingType.valueOf(group)); commonAddColumn(columnIndex, column, ei); final FactMapping factMappingByIndex = simulation.getSimulationDescriptor().getFactMappingByIndex(columnIndex); IntStream.range(0, elements.length) .forEach(stepIndex -> factMappingByIndex.addExpressionElement(elements[stepIndex], lastLevelClassName)); if (keepData) { IntStream.range(0, getRowCount()) .forEach(rowIndex -> setCellValue(rowIndex, columnIndex, originalValues.get(rowIndex))); } }
public void commonInsertColumnCommand(ScenarioSimulationContext context, ScenarioSimulationContext.Status status, int index) { FactMappingType factMappingType = FactMappingType.valueOf(status.getColumnGroup().toUpperCase()); Map.Entry<String, String> validPlaceholders = context.getModel().getValidPlaceholders(); String instanceTitle = validPlaceholders.getKey(); String propertyTitle = validPlaceholders.getValue(); final ScenarioGridColumn scenarioGridColumnLocal = getScenarioGridColumnLocal(instanceTitle, propertyTitle, status.getColumnId(), status.getColumnGroup(), factMappingType, context.getScenarioGridPanel(), context.getScenarioGridLayer(), ScenarioSimulationEditorConstants.INSTANCE.defineValidType()); context.getModel().insertColumn(index, scenarioGridColumnLocal); } }
/** * This method <i>add</i> or <i>insert</i> a new column to the grid <b>and</b> to the underlying model, depending on the index value. * If index == -1 -> add, otherwise insert. It automatically creates default <code>FactIdentifier</code> (for String class) and <code>ExpressionIdentifier</code> * @param index * @param column */ protected void commonAddColumn(final int index, final GridColumn<?> column) { String group = ((ScenarioGridColumn) column).getInformationHeaderMetaData().getColumnGroup(); String columnId = ((ScenarioGridColumn) column).getInformationHeaderMetaData().getColumnId(); final ExpressionIdentifier ei = ExpressionIdentifier.create(columnId, FactMappingType.valueOf(group)); commonAddColumn(index, column, ei); }
/** * This method update the instance mapped inside a given column * @param columnIndex * @param column */ public void updateColumnInstance(int columnIndex, final GridColumn<?> column) { checkSimulation(); deleteColumn(columnIndex); String group = ((ScenarioGridColumn) column).getInformationHeaderMetaData().getColumnGroup(); String columnId = ((ScenarioGridColumn) column).getInformationHeaderMetaData().getColumnId(); ExpressionIdentifier ei = ExpressionIdentifier.create(columnId, FactMappingType.valueOf(group)); commonAddColumn(columnIndex, column, ei); }
@Override protected void internalExecute(ScenarioSimulationContext context) { final ScenarioSimulationContext.Status status = context.getStatus(); context.getModel().deleteColumn(status.getColumnIndex()); if (context.getModel().getGroupSize(status.getColumnGroup()) < 1) { FactMappingType factMappingType = FactMappingType.valueOf(status.getColumnGroup().toUpperCase()); Map.Entry<String, String> validPlaceholders = context.getModel().getValidPlaceholders(); String instanceTitle = validPlaceholders.getKey(); String propertyTitle = validPlaceholders.getValue(); context.getModel().insertColumn(status.getColumnIndex(), getScenarioGridColumnLocal(instanceTitle, propertyTitle, String.valueOf(new Date().getTime()), status.getColumnGroup(), factMappingType, context.getScenarioGridPanel(), context.getScenarioGridLayer(), ScenarioSimulationEditorConstants.INSTANCE.defineValidType())); } GridColumn<?> selectedColumn = context.getModel().getSelectedColumn(); boolean toDisable = selectedColumn == null || context.getModel().getColumns().indexOf(selectedColumn) == status.getColumnIndex(); if (context.getRightPanelPresenter() != null && toDisable) { new DisableRightPanelCommand().execute(context); } } }
String columnGroup = selectedInformationHeaderMetaData.getColumnGroup(); String originalInstanceTitle = selectedInformationHeaderMetaData.getTitle(); FactMappingType factMappingType = FactMappingType.valueOf(columnGroup.toUpperCase()); Map.Entry<String, String> validPlaceholders = context.getModel().getValidPlaceholders(); boolean cloneInstance = status.isAsProperty() && selectedColumn.isInstanceAssigned();