public void rebuildModelInputs(List<? extends IConnection> inputConn, PigMapData mapData) { // remove no used input table if (mapData.getInputTables().size() != inputConn.size()) { List tableToRemove = new ArrayList(); for (InputTable inputTable : mapData.getInputTables()) { boolean found = false; for (IConnection connection : inputConn) { if (inputTable.getName().equals(connection.getName())) { found = true; } } if (!found) { for (TableNode tableNode : inputTable.getNodes()) { PigMapUtil.detachNodeConnections(tableNode, mapData); } tableToRemove.add(inputTable); PigMapUtil.detachFilterSource(inputTable, mapData); } } mapData.getInputTables().removeAll(tableToRemove); } for (IConnection inData : inputConn) { String name = inData.getName(); InputTable inputTable = null; for (InputTable in : mapData.getInputTables()) { if (in.getName() != null && in.getName().equals(name)) { inputTable = in; break; } } if (inputTable == null) { inputTable = PigmapFactory.eINSTANCE.createInputTable(); inputTable.setName(name); inputTable.setLookup(EConnectionType.FLOW_MAIN != inData.getLineStyle()); mapData .getInputTables() .add(inputTable.isLookup() ? mapData.getInputTables().size() : 0, inputTable); } else { inputTable.setLookup(EConnectionType.FLOW_MAIN != inData.getLineStyle()); } // by default if (inputTable.isLookup() && inputTable.getJoinModel() == null) { inputTable.setJoinModel(TableSettingsConstant.LEFT_OUTER_JOIN); } if (inputTable.isLookup() && inputTable.getJoinOptimization() == null) { inputTable.setJoinOptimization(PIG_MAP_JOIN_OPTIMIZATION.NONE.toString()); } rebuildInputTable(inputTable, inData.getMetadataTable(), mapData); } }