/* * 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.ambari.infra.model; import com.fasterxml.jackson.annotation.JsonIgnore; import org.apache.ambari.infra.model.wrapper.StepExecutionData; import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.StepExecution; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; public class StepExecutionInfoResponse { private Long id; private Long jobExecutionId; private String jobName; private String name; private String startDate = "-"; private String startTime = "-"; private String duration = "-"; private StepExecutionData stepExecutionData; private long durationMillis; public StepExecutionInfoResponse(String jobName, Long jobExecutionId, String name, TimeZone timeZone) { this.jobName = jobName; this.jobExecutionId = jobExecutionId; this.name = name; this.stepExecutionData = new StepExecutionData(new StepExecution(name, new JobExecution(jobExecutionId))); } public StepExecutionInfoResponse(StepExecution stepExecution, TimeZone timeZone) { this.stepExecutionData = new StepExecutionData(stepExecution); this.id = stepExecutionData.getId(); this.name = stepExecutionData.getStepName(); this.jobName = stepExecutionData.getJobExecution() != null && stepExecutionData.getJobExecution().getJobInstance() != null? stepExecutionData.getJobExecution().getJobInstance().getJobName():"?"; this.jobExecutionId = stepExecutionData.getJobExecutionId(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"); SimpleDateFormat durationFormat = new SimpleDateFormat("HH:mm:ss"); durationFormat.setTimeZone(TimeZone.getTimeZone("GMT")); timeFormat.setTimeZone(timeZone); dateFormat.setTimeZone(timeZone); if(stepExecutionData.getStartTime() != null) { this.startDate = dateFormat.format(stepExecutionData.getStartTime()); this.startTime = timeFormat.format(stepExecutionData.getStartTime()); Date endTime = stepExecutionData.getEndTime() != null? stepExecutionData.getEndTime():new Date(); this.durationMillis = endTime.getTime() - stepExecutionData.getStartTime().getTime(); this.duration = durationFormat.format(new Date(this.durationMillis)); } } public Long getId() { return this.id; } public Long getJobExecutionId() { return this.jobExecutionId; } public String getName() { return this.name; } public String getJobName() { return this.jobName; } public String getStartDate() { return this.startDate; } public String getStartTime() { return this.startTime; } public String getDuration() { return this.duration; } public long getDurationMillis() { return this.durationMillis; } public String getStatus() { return this.id != null?this.stepExecutionData.getStatus().toString():"NONE"; } public String getExitCode() { return this.id != null?this.stepExecutionData.getExitStatus().getExitCode():"NONE"; } @JsonIgnore public StepExecutionData getStepExecution() { return this.stepExecutionData; } }