use of com.alibaba.otter.shared.common.model.config.data.Column in project otter by alibaba.
the class ColumnPairAction method doSave.
/**
* 添加Channel
*
* @param channelInfo
* @param channelParameterInfo
* @throws Exception
*/
public void doSave(@Param("dataMediaPairId") Long dataMediaPairId, @Param("submitKey") String submitKey, @Param("channelId") Long channelId, @Param("pipelineId") Long pipelineId, @Param("sourceMediaId") Long sourceMediaId, @Param("targetMediaId") Long targetMediaId, @FormGroup("columnPairInfo") Group columnPairInfo, @FormField(name = "formColumnPairError", group = "columnPairInfo") CustomErrors err, Navigator nav) throws Exception {
String[] sourceColumns = columnPairInfo.getField("dltTarget_l").getStringValues();
String[] targetColumns = columnPairInfo.getField("dltTarget_r").getStringValues();
List<String> sourceColumnNames = new ArrayList<String>();
List<String> targetColumnNames = new ArrayList<String>();
for (String sourceColumn : sourceColumns) {
sourceColumnNames.add(sourceColumn);
}
for (String targetColumn : targetColumns) {
targetColumnNames.add(targetColumn);
}
DataMedia targetMedia = dataMediaPairService.findById(dataMediaPairId).getTarget();
if (!targetMedia.getSource().getType().isNapoli() && sourceColumnNames.size() != targetColumnNames.size()) {
err.setMessage("invalidColumnPair");
return;
}
List<ColumnPair> columnPairsInDb = dataColumnPairService.listByDataMediaPairId(dataMediaPairId);
List<ColumnPair> columnPairsTemp = new ArrayList<ColumnPair>();
List<String> columnPairsNameSource = new ArrayList<String>();
List<String> columnPairsNameTarget = new ArrayList<String>();
List<ColumnPair> columnPairs = new ArrayList<ColumnPair>();
if (targetMedia.getSource().getType().isNapoli()) {
for (ColumnPair columnPair : columnPairsInDb) {
for (String sourceColumnName : sourceColumnNames) {
if (StringUtils.isEquals(columnPair.getSourceColumn().getName(), sourceColumnName)) {
columnPairsTemp.add(columnPair);
columnPairsNameSource.add(sourceColumnName);
}
}
}
// 要从数据库中删除这些columnPair
columnPairsInDb.removeAll(columnPairsTemp);
sourceColumnNames.removeAll(columnPairsNameSource);
for (String columnName : sourceColumnNames) {
ColumnPair columnPair = new ColumnPair();
columnPair.setSourceColumn(new Column(columnName));
columnPair.setDataMediaPairId(dataMediaPairId);
columnPairs.add(columnPair);
}
} else if (targetMedia.getSource().getType().isMysql() || targetMedia.getSource().getType().isOracle()) {
for (ColumnPair columnPair : columnPairsInDb) {
int i = 0;
for (String sourceColumnName : sourceColumnNames) {
if (StringUtils.isEquals(columnPair.getSourceColumn().getName(), sourceColumnName) && StringUtils.isEquals(columnPair.getTargetColumn().getName(), targetColumnNames.get(i))) {
columnPairsTemp.add(columnPair);
columnPairsNameSource.add(sourceColumnName);
columnPairsNameTarget.add(targetColumnNames.get(i));
}
i++;
}
}
// 要从数据库中删除这些columnPair
columnPairsInDb.removeAll(columnPairsTemp);
sourceColumnNames.removeAll(columnPairsNameSource);
targetColumnNames.removeAll(columnPairsNameTarget);
int i = 0;
for (String columnName : sourceColumnNames) {
ColumnPair columnPair = new ColumnPair();
columnPair.setSourceColumn(new Column(columnName));
columnPair.setTargetColumn(new Column(targetColumnNames.get(i)));
columnPair.setDataMediaPairId(dataMediaPairId);
columnPairs.add(columnPair);
i++;
}
}
for (ColumnPair columnPair : columnPairsInDb) {
dataColumnPairService.remove(columnPair.getId());
}
dataColumnPairService.createBatch(columnPairs);
if (submitKey.equals("保存")) {
nav.redirectToLocation("dataMediaPairList.htm?pipelineId=" + pipelineId);
} else if (submitKey.equals("下一步")) {
nav.redirectToLocation("addColumnPairGroup.htm?dataMediaPairId=" + dataMediaPairId + "&channelId=" + channelId + "&pipelineId=" + pipelineId + "&sourceMediaId=" + sourceMediaId + "&targetMediaId=" + targetMediaId);
}
}
use of com.alibaba.otter.shared.common.model.config.data.Column in project otter by alibaba.
the class DataColumnPairServiceImpl method doToModel.
/*-------------------------------------------------------------*/
/**
* 用于DO对象转化为Model对象
*/
private ColumnPair doToModel(DataColumnPairDO dataColumnPairDo) {
Column sourceColumn = dataColumnPairDo.getSourceColumnName() == null ? null : new Column(dataColumnPairDo.getSourceColumnName());
Column targetColumn = dataColumnPairDo.getTargetColumnName() == null ? null : new Column(dataColumnPairDo.getTargetColumnName());
ColumnPair columnPair = new ColumnPair(sourceColumn, targetColumn);
columnPair.setId(dataColumnPairDo.getId());
columnPair.setDataMediaPairId(dataColumnPairDo.getDataMediaPairId());
columnPair.setGmtCreate(dataColumnPairDo.getGmtCreate());
columnPair.setGmtModified(dataColumnPairDo.getGmtModified());
return columnPair;
}
use of com.alibaba.otter.shared.common.model.config.data.Column in project otter by alibaba.
the class ColumnPairGroupAction method doSave.
public void doSave(@Param("dataMediaPairId") Long dataMediaPairId, @Param("submitKey") String submitKey, @Param("pipelineId") Long pipelineId, @FormGroup("columnPairGroupInfo") Group columnPairGroupInfo, @FormField(name = "formColumnPairGroupError", group = "columnPairGroupInfo") CustomErrors err, Navigator nav) throws Exception {
String[] columnPairStrings = columnPairGroupInfo.getField("groupResult").getStringValues();
ColumnGroup columnGroup = new ColumnGroup();
List<ColumnPair> columnPairs = new ArrayList<ColumnPair>();
for (String columnPairString : columnPairStrings) {
ColumnPair columnPair = new ColumnPair();
String[] temp = columnPairString.split(COLON);
columnPair.setSourceColumn(new Column(temp[0]));
columnPair.setTargetColumn(new Column(temp[1]));
columnPair.setDataMediaPairId(dataMediaPairId);
columnPairs.add(columnPair);
}
columnGroup.setColumnPairs(columnPairs);
columnGroup.setDataMediaPairId(dataMediaPairId);
dataColumnPairGroupService.removeByDataMediaPairId(dataMediaPairId);
dataColumnPairGroupService.create(columnGroup);
nav.redirectToLocation("dataMediaPairList.htm?pipelineId=" + pipelineId);
}
Aggregations