blob: bc370c2db5ddb60ee6bef85e4e169530ba142106 [file] [log] [blame]
/*
* Copyright 2019 WeBank
*
* 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.webank.wedatasphere.linkis.jobhistory.conversions
import java.io.File
import java.util
import com.webank.wedatasphere.linkis.common.utils.{Logging, Utils}
import com.webank.wedatasphere.linkis.protocol.query.{RequestPersistTask, RequestQueryTask}
import com.webank.wedatasphere.linkis.protocol.utils.ZuulEntranceUtils
import com.webank.wedatasphere.linkis.jobhistory.entity.{QueryTask, QueryTaskVO}
import com.webank.wedatasphere.linkis.jobhistory.transitional.TaskStatus
import com.webank.wedatasphere.linkis.jobhistory.util.QueryUtils
import com.webank.wedatasphere.linkis.protocol.constants.TaskConstant
import com.webank.wedatasphere.linkis.server.BDPJettyServerHelper
import org.springframework.beans.BeanUtils
import org.springframework.util.StringUtils
/**
* Created by johnnwang on 2019/2/25.
*/
object TaskConversions extends Logging{
@Deprecated
implicit def requestQueryTask2QueryTask(requestQueryTask: RequestQueryTask): QueryTask = {
val task: QueryTask = new QueryTask
BeanUtils.copyProperties(requestQueryTask, task)
if (requestQueryTask.getParams != null)
task.setParamsJson(BDPJettyServerHelper.gson.toJson(requestQueryTask.getParams))
else
task.setParamsJson(null)
task
}
implicit def queryTask2RequestPersistTask(queryTask: QueryTask): RequestPersistTask = {
QueryUtils.exchangeExecutionCode(queryTask)
val task = new RequestPersistTask
BeanUtils.copyProperties(queryTask, task)
task.setSource(BDPJettyServerHelper.gson.fromJson(queryTask.getSourceJson, classOf[java.util.HashMap[String, String]]))
task.setParams(BDPJettyServerHelper.gson.fromJson(queryTask.getParamsJson, classOf[java.util.HashMap[String, Object]]))
task
}
@Deprecated
implicit def requestPersistTaskTask2QueryTask(requestPersistTask: RequestPersistTask): QueryTask = {
val task: QueryTask = new QueryTask
BeanUtils.copyProperties(requestPersistTask, task)
if (requestPersistTask.getParams != null)
task.setParamsJson(BDPJettyServerHelper.gson.toJson(requestPersistTask.getParams))
else
task.setParamsJson(null)
task
}
implicit def queryTask2QueryTaskVO(queryTask: QueryTask): QueryTaskVO = {
QueryUtils.exchangeExecutionCode(queryTask)
val taskVO = new QueryTaskVO
BeanUtils.copyProperties(queryTask, taskVO)
if(!StringUtils.isEmpty(taskVO.getSourceJson)){
Utils.tryCatch{
val source = BDPJettyServerHelper.gson.fromJson(taskVO.getSourceJson,classOf[util.Map[String,String]])
import scala.collection.JavaConversions._
taskVO.setSourceTailor(source.map(_._2).foldLeft("")(_ + _ + "-").stripSuffix("-"))
}{
case _ =>warn("sourceJson deserializae failed,this task may be the old data")
}
}
if (queryTask.getExecId() != null && queryTask.getExecuteApplicationName() != null && queryTask.getInstance() != null) {
taskVO.setStrongerExecId(ZuulEntranceUtils.generateExecID(queryTask.getExecId(),
queryTask.getExecuteApplicationName(), queryTask.getInstance(), queryTask.getRequestApplicationName))
}
val status = queryTask.getStatus()
val createdTime = queryTask.getCreatedTime()
val updatedTime = queryTask.getUpdatedTime()
if (isJobFinished(status) && createdTime != null && updatedTime != null) {
taskVO.setCostTime(queryTask.getUpdatedTime().getTime() - queryTask.getCreatedTime().getTime());
} else if (createdTime != null) {
taskVO.setCostTime(System.currentTimeMillis() - queryTask.getCreatedTime().getTime());
}
taskVO
}
def isJobFinished(status: String): Boolean = {
TaskStatus.Succeed.toString.equals(status) ||
TaskStatus.Failed.toString.equals(status) ||
TaskStatus.Cancelled.toString.equals(status) ||
TaskStatus.Timeout.toString.equals(status)
}
}