Browse Source
* remove the depreated data quality module * fix lint Co-authored-by: Yao <ywang46@paypal.com>pull/3/MERGE
Yao WANG
4 years ago
committed by
GitHub
7 changed files with 7 additions and 698 deletions
@ -1,123 +0,0 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You 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 org.apache.dolphinscheduler.api.controller; |
||||
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.QUERY_TASK_RECORD_LIST_PAGING_ERROR; |
||||
|
||||
import org.apache.dolphinscheduler.api.aspect.AccessLogAnnotation; |
||||
import org.apache.dolphinscheduler.api.exceptions.ApiException; |
||||
import org.apache.dolphinscheduler.api.service.TaskRecordService; |
||||
import org.apache.dolphinscheduler.api.utils.Result; |
||||
import org.apache.dolphinscheduler.common.Constants; |
||||
import org.apache.dolphinscheduler.dao.entity.User; |
||||
|
||||
import java.util.Map; |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.http.HttpStatus; |
||||
import org.springframework.web.bind.annotation.GetMapping; |
||||
import org.springframework.web.bind.annotation.RequestAttribute; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.RequestParam; |
||||
import org.springframework.web.bind.annotation.ResponseStatus; |
||||
import org.springframework.web.bind.annotation.RestController; |
||||
|
||||
import springfox.documentation.annotations.ApiIgnore; |
||||
|
||||
/** |
||||
* task record controller |
||||
*/ |
||||
@ApiIgnore |
||||
@RestController |
||||
@RequestMapping("/projects/task-record") |
||||
public class TaskRecordController extends BaseController { |
||||
|
||||
@Autowired |
||||
TaskRecordService taskRecordService; |
||||
|
||||
/** |
||||
* query task record list page |
||||
* |
||||
* @param loginUser login user |
||||
* @param taskName task name |
||||
* @param state state |
||||
* @param sourceTable source table |
||||
* @param destTable destination table |
||||
* @param taskDate task date |
||||
* @param startTime start time |
||||
* @param endTime end time |
||||
* @param pageNo page number |
||||
* @param pageSize page size |
||||
* @return task record list |
||||
*/ |
||||
@GetMapping("/list-paging") |
||||
@ResponseStatus(HttpStatus.OK) |
||||
@ApiException(QUERY_TASK_RECORD_LIST_PAGING_ERROR) |
||||
@AccessLogAnnotation(ignoreRequestArgs = "loginUser") |
||||
public Result queryTaskRecordListPaging(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser, |
||||
@RequestParam(value = "taskName", required = false) String taskName, |
||||
@RequestParam(value = "state", required = false) String state, |
||||
@RequestParam(value = "sourceTable", required = false) String sourceTable, |
||||
@RequestParam(value = "destTable", required = false) String destTable, |
||||
@RequestParam(value = "taskDate", required = false) String taskDate, |
||||
@RequestParam(value = "startDate", required = false) String startTime, |
||||
@RequestParam(value = "endDate", required = false) String endTime, |
||||
@RequestParam("pageNo") Integer pageNo, |
||||
@RequestParam("pageSize") Integer pageSize |
||||
) { |
||||
|
||||
Map<String, Object> result = taskRecordService.queryTaskRecordListPaging(false, taskName, startTime, taskDate, sourceTable, destTable, endTime, state, pageNo, pageSize); |
||||
return returnDataListPaging(result); |
||||
} |
||||
|
||||
/** |
||||
* query history task record list paging |
||||
* |
||||
* @param loginUser login user |
||||
* @param taskName task name |
||||
* @param state state |
||||
* @param sourceTable source table |
||||
* @param destTable destination table |
||||
* @param taskDate task date |
||||
* @param startTime start time |
||||
* @param endTime end time |
||||
* @param pageNo page number |
||||
* @param pageSize page size |
||||
* @return history task record list |
||||
*/ |
||||
@GetMapping("/history-list-paging") |
||||
@ResponseStatus(HttpStatus.OK) |
||||
@ApiException(QUERY_TASK_RECORD_LIST_PAGING_ERROR) |
||||
@AccessLogAnnotation(ignoreRequestArgs = "loginUser") |
||||
public Result queryHistoryTaskRecordListPaging(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser, |
||||
@RequestParam(value = "taskName", required = false) String taskName, |
||||
@RequestParam(value = "state", required = false) String state, |
||||
@RequestParam(value = "sourceTable", required = false) String sourceTable, |
||||
@RequestParam(value = "destTable", required = false) String destTable, |
||||
@RequestParam(value = "taskDate", required = false) String taskDate, |
||||
@RequestParam(value = "startDate", required = false) String startTime, |
||||
@RequestParam(value = "endDate", required = false) String endTime, |
||||
@RequestParam("pageNo") Integer pageNo, |
||||
@RequestParam("pageSize") Integer pageSize |
||||
) { |
||||
|
||||
Map<String, Object> result = taskRecordService.queryTaskRecordListPaging(true, taskName, startTime, taskDate, sourceTable, destTable, endTime, state, pageNo, pageSize); |
||||
return returnDataListPaging(result); |
||||
} |
||||
|
||||
} |
@ -1,46 +0,0 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You 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 org.apache.dolphinscheduler.api.service; |
||||
|
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* task record service |
||||
*/ |
||||
public interface TaskRecordService { |
||||
|
||||
/** |
||||
* query task record list paging |
||||
* |
||||
* @param taskName task name |
||||
* @param state state |
||||
* @param sourceTable source table |
||||
* @param destTable destination table |
||||
* @param taskDate task date |
||||
* @param startDate start time |
||||
* @param endDate end time |
||||
* @param pageNo page numbere |
||||
* @param pageSize page size |
||||
* @param isHistory is history |
||||
* @return task record list |
||||
*/ |
||||
Map<String,Object> queryTaskRecordListPaging(boolean isHistory, String taskName, String startDate, |
||||
String taskDate, String sourceTable, |
||||
String destTable, String endDate, |
||||
String state, Integer pageNo, Integer pageSize); |
||||
} |
@ -1,86 +0,0 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You 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 org.apache.dolphinscheduler.api.service.impl; |
||||
|
||||
import static org.apache.dolphinscheduler.common.Constants.TASK_RECORD_TABLE_HISTORY_HIVE_LOG; |
||||
import static org.apache.dolphinscheduler.common.Constants.TASK_RECORD_TABLE_HIVE_LOG; |
||||
|
||||
import org.apache.dolphinscheduler.api.enums.Status; |
||||
import org.apache.dolphinscheduler.api.service.TaskRecordService; |
||||
import org.apache.dolphinscheduler.api.utils.PageInfo; |
||||
import org.apache.dolphinscheduler.common.Constants; |
||||
import org.apache.dolphinscheduler.dao.TaskRecordDao; |
||||
import org.apache.dolphinscheduler.dao.entity.TaskRecord; |
||||
|
||||
import java.util.HashMap; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
import org.springframework.stereotype.Service; |
||||
|
||||
/** |
||||
* task record service impl |
||||
*/ |
||||
@Service |
||||
public class TaskRecordServiceImpl extends BaseServiceImpl implements TaskRecordService { |
||||
|
||||
/** |
||||
* query task record list paging |
||||
* |
||||
* @param taskName task name |
||||
* @param state state |
||||
* @param sourceTable source table |
||||
* @param destTable destination table |
||||
* @param taskDate task date |
||||
* @param startDate start time |
||||
* @param endDate end time |
||||
* @param pageNo page numbere |
||||
* @param pageSize page size |
||||
* @param isHistory is history |
||||
* @return task record list |
||||
*/ |
||||
@Override |
||||
public Map<String,Object> queryTaskRecordListPaging(boolean isHistory, String taskName, String startDate, |
||||
String taskDate, String sourceTable, |
||||
String destTable, String endDate, |
||||
String state, Integer pageNo, Integer pageSize) { |
||||
Map<String, Object> result = new HashMap<>(); |
||||
PageInfo<TaskRecord> pageInfo = new PageInfo<>(pageNo, pageSize); |
||||
|
||||
Map<String, String> map = new HashMap<>(); |
||||
map.put("taskName", taskName); |
||||
map.put("taskDate", taskDate); |
||||
map.put("state", state); |
||||
map.put("sourceTable", sourceTable); |
||||
map.put("targetTable", destTable); |
||||
map.put("startTime", startDate); |
||||
map.put("endTime", endDate); |
||||
map.put("offset", pageInfo.getStart().toString()); |
||||
map.put("pageSize", pageInfo.getPageSize().toString()); |
||||
|
||||
String table = isHistory ? TASK_RECORD_TABLE_HISTORY_HIVE_LOG : TASK_RECORD_TABLE_HIVE_LOG; |
||||
int count = TaskRecordDao.countTaskRecord(map, table); |
||||
List<TaskRecord> recordList = TaskRecordDao.queryAllTaskRecord(map, table); |
||||
pageInfo.setTotalCount(count); |
||||
pageInfo.setLists(recordList); |
||||
result.put(Constants.DATA_LIST, pageInfo); |
||||
putMsg(result, Status.SUCCESS); |
||||
|
||||
return result; |
||||
} |
||||
} |
@ -1,95 +0,0 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You 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 org.apache.dolphinscheduler.api.controller; |
||||
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; |
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; |
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; |
||||
|
||||
import org.apache.dolphinscheduler.api.enums.Status; |
||||
import org.apache.dolphinscheduler.api.utils.Result; |
||||
import org.apache.dolphinscheduler.common.utils.JSONUtils; |
||||
|
||||
import org.junit.Assert; |
||||
import org.junit.Test; |
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
import org.springframework.http.MediaType; |
||||
import org.springframework.test.web.servlet.MvcResult; |
||||
import org.springframework.util.LinkedMultiValueMap; |
||||
import org.springframework.util.MultiValueMap; |
||||
|
||||
/** |
||||
* task record controller test |
||||
*/ |
||||
public class TaskRecordControllerTest extends AbstractControllerTest { |
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(TaskRecordControllerTest.class); |
||||
|
||||
@Test |
||||
public void testQueryTaskRecordListPaging() throws Exception { |
||||
MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>(); |
||||
paramsMap.add("taskName","taskName"); |
||||
paramsMap.add("state","state"); |
||||
paramsMap.add("sourceTable",""); |
||||
paramsMap.add("destTable",""); |
||||
paramsMap.add("taskDate",""); |
||||
paramsMap.add("startDate","2019-12-16 00:00:00"); |
||||
paramsMap.add("endDate","2019-12-17 00:00:00"); |
||||
paramsMap.add("pageNo","1"); |
||||
paramsMap.add("pageSize","30"); |
||||
|
||||
MvcResult mvcResult = mockMvc.perform(get("/projects/task-record/list-paging") |
||||
.header(SESSION_ID, sessionId) |
||||
.params(paramsMap)) |
||||
.andExpect(status().isOk()) |
||||
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) |
||||
.andReturn(); |
||||
|
||||
Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class); |
||||
Assert.assertEquals(Status.SUCCESS.getCode(),result.getCode().intValue()); |
||||
logger.info(mvcResult.getResponse().getContentAsString()); |
||||
} |
||||
|
||||
|
||||
@Test |
||||
public void testQueryHistoryTaskRecordListPaging() throws Exception { |
||||
MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>(); |
||||
paramsMap.add("taskName","taskName"); |
||||
paramsMap.add("state","state"); |
||||
paramsMap.add("sourceTable",""); |
||||
paramsMap.add("destTable",""); |
||||
paramsMap.add("taskDate",""); |
||||
paramsMap.add("startDate","2019-12-16 00:00:00"); |
||||
paramsMap.add("endDate","2019-12-17 00:00:00"); |
||||
paramsMap.add("pageNo","1"); |
||||
paramsMap.add("pageSize","30"); |
||||
|
||||
MvcResult mvcResult = mockMvc.perform(get("/projects/task-record/history-list-paging") |
||||
.header(SESSION_ID, sessionId) |
||||
.params(paramsMap)) |
||||
.andExpect(status().isOk()) |
||||
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) |
||||
.andReturn(); |
||||
|
||||
Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class); |
||||
Assert.assertEquals(Status.SUCCESS.getCode(),result.getCode().intValue()); |
||||
logger.info(mvcResult.getResponse().getContentAsString()); |
||||
|
||||
} |
||||
} |
@ -1,291 +0,0 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You 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 org.apache.dolphinscheduler.dao; |
||||
|
||||
import static org.apache.dolphinscheduler.common.Constants.DATASOURCE_PROPERTIES; |
||||
|
||||
import org.apache.dolphinscheduler.common.Constants; |
||||
import org.apache.dolphinscheduler.common.enums.TaskRecordStatus; |
||||
import org.apache.dolphinscheduler.common.utils.CollectionUtils; |
||||
import org.apache.dolphinscheduler.common.utils.ConnectionUtils; |
||||
import org.apache.dolphinscheduler.common.utils.DateUtils; |
||||
import org.apache.dolphinscheduler.common.utils.PropertyUtils; |
||||
import org.apache.dolphinscheduler.common.utils.StringUtils; |
||||
import org.apache.dolphinscheduler.dao.entity.TaskRecord; |
||||
|
||||
import java.sql.Connection; |
||||
import java.sql.DriverManager; |
||||
import java.sql.PreparedStatement; |
||||
import java.sql.ResultSet; |
||||
import java.sql.SQLException; |
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
|
||||
/** |
||||
* task record dao |
||||
*/ |
||||
public class TaskRecordDao { |
||||
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(TaskRecordDao.class.getName()); |
||||
|
||||
static { |
||||
PropertyUtils.loadPropertyFile(DATASOURCE_PROPERTIES); |
||||
} |
||||
|
||||
/** |
||||
* get task record flag |
||||
* |
||||
* @return whether startup taskrecord |
||||
*/ |
||||
public static boolean getTaskRecordFlag() { |
||||
return PropertyUtils.getBoolean(Constants.TASK_RECORD_FLAG, false); |
||||
} |
||||
|
||||
/** |
||||
* create connection |
||||
* |
||||
* @return connection |
||||
*/ |
||||
private static Connection getConn() { |
||||
if (!getTaskRecordFlag()) { |
||||
return null; |
||||
} |
||||
String driver = "com.mysql.jdbc.Driver"; |
||||
String url = PropertyUtils.getString(Constants.TASK_RECORD_URL); |
||||
String username = PropertyUtils.getString(Constants.TASK_RECORD_USER); |
||||
String password = PropertyUtils.getString(Constants.TASK_RECORD_PWD); |
||||
Connection conn = null; |
||||
try { |
||||
//classLoader,load driver
|
||||
Class.forName(driver); |
||||
conn = DriverManager.getConnection(url, username, password); |
||||
} catch (ClassNotFoundException e) { |
||||
logger.error("Class not found Exception ", e); |
||||
} catch (SQLException e) { |
||||
logger.error("SQL Exception ", e); |
||||
} |
||||
return conn; |
||||
} |
||||
|
||||
/** |
||||
* generate where sql string |
||||
* |
||||
* @param filterMap filterMap |
||||
* @return sql string |
||||
*/ |
||||
private static String getWhereString(Map<String, String> filterMap) { |
||||
if (filterMap.size() == 0) { |
||||
return ""; |
||||
} |
||||
|
||||
String result = " where 1=1 "; |
||||
|
||||
Object taskName = filterMap.get("taskName"); |
||||
if (taskName != null && StringUtils.isNotEmpty(taskName.toString())) { |
||||
result += " and PROC_NAME like concat('%', '" + taskName.toString() + "', '%') "; |
||||
} |
||||
|
||||
Object taskDate = filterMap.get("taskDate"); |
||||
if (taskDate != null && StringUtils.isNotEmpty(taskDate.toString())) { |
||||
result += " and PROC_DATE='" + taskDate.toString() + "'"; |
||||
} |
||||
|
||||
Object state = filterMap.get("state"); |
||||
if (state != null && StringUtils.isNotEmpty(state.toString())) { |
||||
result += " and NOTE='" + state.toString() + "'"; |
||||
} |
||||
|
||||
Object sourceTable = filterMap.get("sourceTable"); |
||||
if (sourceTable != null && StringUtils.isNotEmpty(sourceTable.toString())) { |
||||
result += " and SOURCE_TAB like concat('%', '" + sourceTable.toString() + "', '%')"; |
||||
} |
||||
|
||||
Object targetTable = filterMap.get("targetTable"); |
||||
if (sourceTable != null && StringUtils.isNotEmpty(targetTable.toString())) { |
||||
result += " and TARGET_TAB like concat('%', '" + targetTable.toString() + "', '%') "; |
||||
} |
||||
|
||||
Object start = filterMap.get("startTime"); |
||||
if (start != null && StringUtils.isNotEmpty(start.toString())) { |
||||
result += " and STARTDATE>='" + start.toString() + "'"; |
||||
} |
||||
|
||||
Object end = filterMap.get("endTime"); |
||||
if (end != null && StringUtils.isNotEmpty(end.toString())) { |
||||
result += " and ENDDATE>='" + end.toString() + "'"; |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
/** |
||||
* count task record |
||||
* |
||||
* @param filterMap filterMap |
||||
* @param table table |
||||
* @return task record count |
||||
*/ |
||||
public static int countTaskRecord(Map<String, String> filterMap, String table) { |
||||
|
||||
int count = 0; |
||||
Connection conn = null; |
||||
PreparedStatement pstmt = null; |
||||
ResultSet rs = null; |
||||
try { |
||||
conn = getConn(); |
||||
if (conn == null) { |
||||
return count; |
||||
} |
||||
String sql = String.format("select count(1) as count from %s", table); |
||||
sql += getWhereString(filterMap); |
||||
pstmt = conn.prepareStatement(sql); |
||||
rs = pstmt.executeQuery(); |
||||
while (rs.next()) { |
||||
count = rs.getInt("count"); |
||||
break; |
||||
} |
||||
} catch (SQLException e) { |
||||
logger.error("Exception ", e); |
||||
} finally { |
||||
ConnectionUtils.releaseResource(rs, pstmt, conn); |
||||
} |
||||
return count; |
||||
} |
||||
|
||||
/** |
||||
* query task record by filter map paging |
||||
* |
||||
* @param filterMap filterMap |
||||
* @param table table |
||||
* @return task record list |
||||
*/ |
||||
public static List<TaskRecord> queryAllTaskRecord(Map<String, String> filterMap, String table) { |
||||
|
||||
String sql = String.format("select * from %s", table); |
||||
sql += getWhereString(filterMap); |
||||
|
||||
int offset = Integer.parseInt(filterMap.get("offset")); |
||||
int pageSize = Integer.parseInt(filterMap.get("pageSize")); |
||||
sql += String.format(" order by STARTDATE desc limit %d,%d", offset, pageSize); |
||||
|
||||
List<TaskRecord> recordList = new ArrayList<>(); |
||||
try { |
||||
recordList = getQueryResult(sql); |
||||
} catch (Exception e) { |
||||
logger.error("Exception ", e); |
||||
} |
||||
return recordList; |
||||
} |
||||
|
||||
/** |
||||
* convert result set to task record |
||||
* |
||||
* @param resultSet resultSet |
||||
* @return task record |
||||
* @throws SQLException if error throws SQLException |
||||
*/ |
||||
private static TaskRecord convertToTaskRecord(ResultSet resultSet) throws SQLException { |
||||
|
||||
TaskRecord taskRecord = new TaskRecord(); |
||||
taskRecord.setId(resultSet.getInt("ID")); |
||||
taskRecord.setProcId(resultSet.getInt("PROC_ID")); |
||||
taskRecord.setProcName(resultSet.getString("PROC_NAME")); |
||||
taskRecord.setProcDate(resultSet.getString("PROC_DATE")); |
||||
taskRecord.setStartTime(DateUtils.stringToDate(resultSet.getString("STARTDATE"))); |
||||
taskRecord.setEndTime(DateUtils.stringToDate(resultSet.getString("ENDDATE"))); |
||||
taskRecord.setResult(resultSet.getString("RESULT")); |
||||
taskRecord.setDuration(resultSet.getInt("DURATION")); |
||||
taskRecord.setNote(resultSet.getString("NOTE")); |
||||
taskRecord.setSchema(resultSet.getString("SCHEMA")); |
||||
taskRecord.setJobId(resultSet.getString("JOB_ID")); |
||||
taskRecord.setSourceTab(resultSet.getString("SOURCE_TAB")); |
||||
taskRecord.setSourceRowCount(resultSet.getLong("SOURCE_ROW_COUNT")); |
||||
taskRecord.setTargetTab(resultSet.getString("TARGET_TAB")); |
||||
taskRecord.setTargetRowCount(resultSet.getLong("TARGET_ROW_COUNT")); |
||||
taskRecord.setErrorCode(resultSet.getString("ERROR_CODE")); |
||||
return taskRecord; |
||||
} |
||||
|
||||
/** |
||||
* query task list by select sql |
||||
* |
||||
* @param selectSql select sql |
||||
* @return task record list |
||||
*/ |
||||
private static List<TaskRecord> getQueryResult(String selectSql) { |
||||
List<TaskRecord> recordList = new ArrayList<>(); |
||||
Connection conn = null; |
||||
PreparedStatement pstmt = null; |
||||
ResultSet rs = null; |
||||
try { |
||||
conn = getConn(); |
||||
if (conn == null) { |
||||
return recordList; |
||||
} |
||||
pstmt = conn.prepareStatement(selectSql); |
||||
rs = pstmt.executeQuery(); |
||||
|
||||
while (rs.next()) { |
||||
TaskRecord taskRecord = convertToTaskRecord(rs); |
||||
recordList.add(taskRecord); |
||||
} |
||||
} catch (SQLException e) { |
||||
logger.error("Exception ", e); |
||||
} finally { |
||||
ConnectionUtils.releaseResource(rs, pstmt, conn); |
||||
} |
||||
return recordList; |
||||
} |
||||
|
||||
/** |
||||
* according to procname and procdate query task record |
||||
* |
||||
* @param procName procName |
||||
* @param procDate procDate |
||||
* @return task record status |
||||
*/ |
||||
public static TaskRecordStatus getTaskRecordState(String procName, String procDate) { |
||||
String sql = String.format("SELECT * FROM eamp_hive_log_hd WHERE PROC_NAME='%s' and PROC_DATE like '%s'" |
||||
, procName, procDate + "%"); |
||||
List<TaskRecord> taskRecordList = getQueryResult(sql); |
||||
|
||||
// contains no record and sql exception
|
||||
if (CollectionUtils.isEmpty(taskRecordList)) { |
||||
// exception
|
||||
return TaskRecordStatus.EXCEPTION; |
||||
} else if (taskRecordList.size() > 1) { |
||||
return TaskRecordStatus.EXCEPTION; |
||||
} else { |
||||
TaskRecord taskRecord = taskRecordList.get(0); |
||||
if (taskRecord == null) { |
||||
return TaskRecordStatus.EXCEPTION; |
||||
} |
||||
Long targetRowCount = taskRecord.getTargetRowCount(); |
||||
if (targetRowCount <= 0) { |
||||
return TaskRecordStatus.FAILURE; |
||||
} else { |
||||
return TaskRecordStatus.SUCCESS; |
||||
} |
||||
|
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue