Java tutorial
/* * Copyright (C) 2010-2101 Alibaba Group Holding Limited. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.alibaba.otter.manager.web.home.module.action; import java.util.Arrays; import java.util.List; import javax.annotation.Resource; import org.apache.commons.lang.StringUtils; import com.alibaba.citrus.service.form.CustomErrors; import com.alibaba.citrus.service.form.Group; import com.alibaba.citrus.turbine.Navigator; import com.alibaba.citrus.turbine.dataresolver.FormField; import com.alibaba.citrus.turbine.dataresolver.FormGroup; import com.alibaba.citrus.turbine.dataresolver.Param; import com.alibaba.citrus.webx.WebxException; import com.alibaba.otter.manager.biz.common.exceptions.ManagerException; import com.alibaba.otter.manager.biz.common.exceptions.RepeatConfigureException; import com.alibaba.otter.manager.biz.config.channel.ChannelService; import com.alibaba.otter.manager.biz.config.datamedia.DataMediaService; import com.alibaba.otter.manager.biz.config.datamediapair.DataMediaPairService; import com.alibaba.otter.manager.biz.config.datamediasource.DataMediaSourceService; import com.alibaba.otter.manager.web.common.WebConstant; import com.alibaba.otter.shared.common.model.config.channel.Channel; import com.alibaba.otter.shared.common.model.config.data.DataMedia; import com.alibaba.otter.shared.common.model.config.data.DataMediaPair; import com.alibaba.otter.shared.common.model.config.data.DataMediaSource; import com.alibaba.otter.shared.common.model.config.data.ExtensionData; import com.alibaba.otter.shared.common.model.config.data.ExtensionDataType; public class DataMediaPairAction { @Resource(name = "dataMediaPairService") private DataMediaPairService dataMediaPairService; @Resource(name = "dataMediaService") private DataMediaService dataMediaService; @Resource(name = "dataMediaSourceService") private DataMediaSourceService dataMediaSourceService; @Resource(name = "channelService") private ChannelService channelService; /** * DataMediaPair * * @param channelInfo * @param channelParameterInfo * @throws Exception */ public void doAdd(@Param("submitKey") String submitKey, @FormGroup("dataMediaPairInfo") Group dataMediaPairInfo, @FormField(name = "formDataMediaPairError", group = "dataMediaPairInfo") CustomErrors err, Navigator nav) throws Exception { DataMediaPair dataMediaPair = new DataMediaPair(); DataMedia sourceDataMedia = new DataMedia(); DataMedia targetDataMedia = new DataMedia(); dataMediaPairInfo.setProperties(dataMediaPair); // filter? ExtensionDataType filterType = ExtensionDataType .valueOf(dataMediaPairInfo.getField("filterType").getStringValue()); ExtensionData filterData = new ExtensionData(); filterData.setExtensionDataType(filterType); if (filterType.isClazz()) { filterData.setClazzPath(dataMediaPairInfo.getField("filterText").getStringValue()); } else if (filterType.isSource()) { filterData.setSourceText(dataMediaPairInfo.getField("filterText").getStringValue()); } dataMediaPair.setFilterData(filterData); // fileresovler? ExtensionDataType resolverType = ExtensionDataType .valueOf(dataMediaPairInfo.getField("resolverType").getStringValue()); ExtensionData resolverData = new ExtensionData(); resolverData.setExtensionDataType(resolverType); if (resolverType.isClazz()) { resolverData.setClazzPath(dataMediaPairInfo.getField("resolverText").getStringValue()); } else if (resolverType.isSource()) { resolverData.setSourceText(dataMediaPairInfo.getField("resolverText").getStringValue()); } dataMediaPair.setResolverData(resolverData); sourceDataMedia.setId(dataMediaPairInfo.getField("sourceDataMediaId").getLongValue()); dataMediaPair.setSource(sourceDataMedia); targetDataMedia.setId(dataMediaPairInfo.getField("targetDataMediaId").getLongValue()); dataMediaPair.setTarget(targetDataMedia); Long id = 0L; try { id = dataMediaPairService.createAndReturnId(dataMediaPair); } catch (RepeatConfigureException rce) { err.setMessage("invalidDataMediaPair"); return; } if (submitKey.equals("?")) { nav.redirectToLocation("dataMediaPairList.htm?pipelineId=" + dataMediaPair.getPipelineId()); } else if (submitKey.equals("")) { nav.redirectToLocation("addColumnPair.htm?dataMediaPairId=" + id + "&pipelineId=" + dataMediaPair.getPipelineId() + "&dataMediaPairId=" + id + "&sourceMediaId=" + sourceDataMedia.getId() + "&targetMediaId=" + targetDataMedia.getId()); } } /** * ?DataMediaPair * * @param dataMediaPairInfo * @throws Exception */ public void doBatchAdd(@FormGroup("batchDataMediaPairInfo") Group batchDataMediaPairInfo, @Param("pipelineId") Long pipelineId, @FormField(name = "formBatchDataMediaPairError", group = "batchDataMediaPairInfo") CustomErrors err, Navigator nav) throws Exception { String batchPairContent = batchDataMediaPairInfo.getField("batchPairContent").getStringValue(); List<String> StringPairs = Arrays.asList(batchPairContent.split("\r\n")); try { for (String stringPair : StringPairs) { List<String> pairData = Arrays.asList(stringPair.split(",")); if (pairData.size() < 4) { throw new ManagerException("[" + stringPair + "] the line not all parameters"); } // build the pair source DataMedia sourceDataMedia = new DataMedia(); DataMediaSource sourceDataMediaSource = dataMediaSourceService .findById(Long.parseLong(StringUtils.trimToNull(pairData.get(2)))); sourceDataMedia.setNamespace(StringUtils.trimToNull(pairData.get(0))); sourceDataMedia.setName(StringUtils.trimToNull(pairData.get(1))); sourceDataMedia.setSource(sourceDataMediaSource); Long sourceMediaId = dataMediaService.createReturnId(sourceDataMedia); sourceDataMedia.setId(sourceMediaId); // build the pair target DataMedia targetDataMedia = new DataMedia(); Long weight = 5L; if (StringUtils.isNumeric(pairData.get(3)) && pairData.size() <= 5) {// ?? DataMediaSource targetDataMediaSource = dataMediaSourceService .findById(Long.parseLong(StringUtils.trimToNull(pairData.get(3)))); targetDataMedia.setNamespace(StringUtils.trimToNull(pairData.get(0))); targetDataMedia.setName(StringUtils.trimToNull(pairData.get(1))); targetDataMedia.setSource(targetDataMediaSource); Long targetMediaId = dataMediaService.createReturnId(targetDataMedia); targetDataMedia.setId(targetMediaId); if (pairData.size() >= 5) { weight = Long.parseLong(StringUtils.trimToNull(pairData.get(4))); } } else { DataMediaSource targetDataMediaSource = dataMediaSourceService .findById(Long.parseLong(StringUtils.trimToNull(pairData.get(5)))); targetDataMedia.setNamespace(StringUtils.trimToNull(pairData.get(3))); targetDataMedia.setName(StringUtils.trimToNull(pairData.get(4))); targetDataMedia.setSource(targetDataMediaSource); Long targetMediaId = dataMediaService.createReturnId(targetDataMedia); targetDataMedia.setId(targetMediaId); if (pairData.size() >= 7) { weight = Long.parseLong(StringUtils.trimToNull(pairData.get(6))); } } // build the pair DataMediaPair dataMediaPair = new DataMediaPair(); dataMediaPair.setSource(sourceDataMedia); dataMediaPair.setTarget(targetDataMedia); dataMediaPair.setPushWeight(weight); dataMediaPair.setPipelineId(pipelineId); dataMediaPairService.createIfNotExist(dataMediaPair); } } catch (Exception e) { err.setMessage("invalidBatchDataMediaPair"); return; } nav.redirectToLocation("dataMediaPairList.htm?pipelineId=" + pipelineId); } public void doEdit(@Param("submitKey") String submitKey, @Param("channelId") Long channelId, @FormGroup("dataMediaPairInfo") Group dataMediaPairInfo, @FormField(name = "formDataMediaPairError", group = "dataMediaPairInfo") CustomErrors err, Navigator nav) throws Exception { DataMediaPair dataMediaPair = new DataMediaPair(); DataMedia sourceDataMedia = new DataMedia(); DataMedia targetDataMedia = new DataMedia(); dataMediaPairInfo.setProperties(dataMediaPair); // filter? ExtensionDataType filterType = ExtensionDataType .valueOf(dataMediaPairInfo.getField("filterType").getStringValue()); ExtensionData filterData = new ExtensionData(); filterData.setExtensionDataType(filterType); if (filterType.isClazz()) { filterData.setClazzPath(dataMediaPairInfo.getField("filterText").getStringValue()); } else if (filterType.isSource()) { filterData.setSourceText(dataMediaPairInfo.getField("filterText").getStringValue()); } dataMediaPair.setFilterData(filterData); // fileresovler? ExtensionDataType resolverType = ExtensionDataType .valueOf(dataMediaPairInfo.getField("resolverType").getStringValue()); ExtensionData resolverData = new ExtensionData(); resolverData.setExtensionDataType(resolverType); if (resolverType.isClazz()) { resolverData.setClazzPath(dataMediaPairInfo.getField("resolverText").getStringValue()); } else if (resolverType.isSource()) { resolverData.setSourceText(dataMediaPairInfo.getField("resolverText").getStringValue()); } dataMediaPair.setResolverData(resolverData); sourceDataMedia.setId(dataMediaPairInfo.getField("sourceDataMediaId").getLongValue()); dataMediaPair.setSource(sourceDataMedia); targetDataMedia.setId(dataMediaPairInfo.getField("targetDataMediaId").getLongValue()); dataMediaPair.setTarget(targetDataMedia); try { dataMediaPairService.modify(dataMediaPair); } catch (RepeatConfigureException rce) { err.setMessage("invalidDataMediaPair"); return; } if (submitKey.equals("?")) { nav.redirectToLocation("dataMediaPairList.htm?pipelineId=" + dataMediaPair.getPipelineId()); } else if (submitKey.equals("")) { nav.redirectToLocation("addColumnPair.htm?pipelineId=" + dataMediaPair.getPipelineId() + "&channelId=" + channelId + "&dataMediaPairId=" + dataMediaPair.getId() + "&sourceMediaId=" + sourceDataMedia.getId() + "&targetMediaId=" + targetDataMedia.getId()); } } /** * */ public void doDelete(@Param("dataMediaPairId") Long dataMediaPairId, @Param("pipelineId") Long pipelineId, Navigator nav) throws WebxException { Channel channel = channelService.findByPipelineId(pipelineId); if (channel.getStatus().isStart()) { nav.redirectTo(WebConstant.ERROR_FORBIDDEN_Link); return; } dataMediaPairService.remove(dataMediaPairId); nav.redirectToLocation("dataMediaPairList.htm?pipelineId=" + pipelineId); } /** * ? * * @param channelInfo * @param channelParameterInfo * @throws Exception */ public void doNextToView(@FormGroup("dataMediaPairInfo") Group dataMediaPairInfo, @FormField(name = "formDataMediaPairError", group = "dataMediaPairInfo") CustomErrors err, Navigator nav) throws Exception { DataMediaPair dataMediaPair = new DataMediaPair(); DataMedia sourceDataMedia = new DataMedia(); DataMedia targetDataMedia = new DataMedia(); dataMediaPairInfo.setProperties(dataMediaPair); sourceDataMedia.setId(dataMediaPairInfo.getField("sourceDataMediaId").getLongValue()); dataMediaPair.setSource(sourceDataMedia); targetDataMedia.setId(dataMediaPairInfo.getField("targetDataMediaId").getLongValue()); dataMediaPair.setTarget(targetDataMedia); try { dataMediaPairService.create(dataMediaPair); } catch (RepeatConfigureException rce) { err.setMessage("invalidDataMediaPair"); return; } nav.redirectToLocation("dataMediaPairList.htm?pipelineId=" + dataMediaPair.getPipelineId()); } }