org.apache.ambari.server.orm.entities.HostRoleCommandEntity.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.ambari.server.orm.entities.HostRoleCommandEntity.java

Source

/*
 * 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.server.orm.entities;

import static org.apache.commons.lang.StringUtils.defaultString;

import java.util.Arrays;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;

import org.apache.ambari.server.Role;
import org.apache.ambari.server.RoleCommand;
import org.apache.ambari.server.actionmanager.HostRoleStatus;
import org.apache.commons.lang.ArrayUtils;

@Entity
@Table(name = "host_role_command")
@TableGenerator(name = "host_role_command_id_generator", table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "sequence_value", pkColumnValue = "host_role_command_id_seq", initialValue = 1, allocationSize = 50)
@NamedQueries({
        @NamedQuery(name = "HostRoleCommandEntity.findCountByCommandStatuses", query = "SELECT COUNT(command.taskId) FROM HostRoleCommandEntity command WHERE command.status IN :statuses"),
        @NamedQuery(name = "HostRoleCommandEntity.findByCommandStatuses", query = "SELECT command FROM HostRoleCommandEntity command WHERE command.status IN :statuses ORDER BY command.requestId, command.stageId") })
public class HostRoleCommandEntity {

    private static int MAX_COMMAND_DETAIL_LENGTH = 250;

    @Column(name = "task_id")
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "host_role_command_id_generator")
    private Long taskId;

    @Column(name = "request_id", insertable = false, updatable = false, nullable = false)
    @Basic
    private Long requestId;

    @Column(name = "stage_id", insertable = false, updatable = false, nullable = false)
    @Basic
    private Long stageId;

    @Column(name = "host_name", insertable = false, updatable = false, nullable = false)
    @Basic
    private String hostName;

    @Column(name = "role")
    private String role;

    @Column(name = "event", length = 32000)
    @Basic
    @Lob
    private String event = "";

    @Column(name = "exitcode", nullable = false)
    @Basic
    private Integer exitcode = 0;

    @Column(name = "status")
    @Enumerated(EnumType.STRING)
    private HostRoleStatus status;

    @Column(name = "std_error")
    @Lob
    @Basic
    private byte[] stdError = new byte[0];

    @Column(name = "std_out")
    @Lob
    @Basic
    private byte[] stdOut = new byte[0];

    @Column(name = "output_log")
    @Basic
    private String outputLog = null;

    @Column(name = "error_log")
    @Basic
    private String errorLog = null;

    @Column(name = "structured_out")
    @Lob
    @Basic
    private byte[] structuredOut = new byte[0];

    @Basic
    @Column(name = "start_time", nullable = false)
    private Long startTime = -1L;

    @Basic
    @Column(name = "end_time", nullable = false)
    private Long endTime = -1L;

    @Basic
    @Column(name = "last_attempt_time", nullable = false)
    private Long lastAttemptTime = -1L;

    @Basic
    @Column(name = "attempt_count", nullable = false)
    private Short attemptCount = 0;

    @Column(name = "retry_allowed", nullable = false)
    private Integer retryAllowed = Integer.valueOf(0);

    // This is really command type as well as name
    @Column(name = "role_command")
    @Enumerated(EnumType.STRING)
    private RoleCommand roleCommand;

    // A readable description of the command
    @Column(name = "command_detail")
    @Basic
    private String commandDetail;

    // When command type id CUSTOM_COMMAND and CUSTOM_ACTION this is the name
    @Column(name = "custom_command_name")
    @Basic
    private String customCommandName;

    @OneToOne(mappedBy = "hostRoleCommand", cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)
    private ExecutionCommandEntity executionCommand;

    @ManyToOne(cascade = { CascadeType.MERGE })
    @JoinColumns({ @JoinColumn(name = "request_id", referencedColumnName = "request_id", nullable = false),
            @JoinColumn(name = "stage_id", referencedColumnName = "stage_id", nullable = false) })
    private StageEntity stage;

    @ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH })
    @JoinColumn(name = "host_name", referencedColumnName = "host_name", nullable = false)
    private HostEntity host;

    public Long getTaskId() {
        return taskId;
    }

    public void setTaskId(Long taskId) {
        this.taskId = taskId;
    }

    public Long getRequestId() {
        return requestId;
    }

    public void setRequestId(Long requestId) {
        this.requestId = requestId;
    }

    public Long getStageId() {
        return stageId;
    }

    public void setStageId(Long stageId) {
        this.stageId = stageId;
    }

    public String getHostName() {
        return hostName;
    }

    public void setHostName(String hostName) {
        this.hostName = hostName;
    }

    public Role getRole() {
        return Role.valueOf(role);
    }

    public void setRole(Role role) {
        this.role = role.name();
    }

    public String getEvent() {
        return defaultString(event);
    }

    public void setEvent(String event) {
        this.event = event;
    }

    public Integer getExitcode() {
        return exitcode;
    }

    public void setExitcode(Integer exitcode) {
        this.exitcode = exitcode;
    }

    public HostRoleStatus getStatus() {
        return status;
    }

    public void setStatus(HostRoleStatus status) {
        this.status = status;
    }

    public byte[] getStdError() {
        return ArrayUtils.nullToEmpty(stdError);
    }

    public void setStdError(byte[] stdError) {
        this.stdError = stdError;
    }

    public byte[] getStdOut() {
        return ArrayUtils.nullToEmpty(stdOut);
    }

    public void setStdOut(byte[] stdOut) {
        this.stdOut = stdOut;
    }

    public String getOutputLog() {
        return outputLog;
    }

    public void setOutputLog(String outputLog) {
        this.outputLog = outputLog;
    }

    public String getErrorLog() {
        return errorLog;
    }

    public void setErrorLog(String errorLog) {
        this.errorLog = errorLog;
    }

    public Long getStartTime() {
        return startTime;
    }

    public void setStartTime(Long startTime) {
        this.startTime = startTime;
    }

    public Long getLastAttemptTime() {
        return lastAttemptTime;
    }

    public void setLastAttemptTime(Long lastAttemptTime) {
        this.lastAttemptTime = lastAttemptTime;
    }

    public Short getAttemptCount() {
        return attemptCount;
    }

    public void setAttemptCount(Short attemptCount) {
        this.attemptCount = attemptCount;
    }

    public RoleCommand getRoleCommand() {
        return roleCommand;
    }

    public void setRoleCommand(RoleCommand roleCommand) {
        this.roleCommand = roleCommand;
    }

    public byte[] getStructuredOut() {
        return structuredOut;
    }

    public void setStructuredOut(byte[] structuredOut) {
        this.structuredOut = structuredOut;
    }

    public Long getEndTime() {
        return endTime;
    }

    public void setEndTime(Long endTime) {
        this.endTime = endTime;
    }

    public String getCommandDetail() {
        return commandDetail;
    }

    public void setCommandDetail(String commandDetail) {
        String truncatedCommandDetail = commandDetail;
        if (commandDetail != null) {
            if (commandDetail.length() > MAX_COMMAND_DETAIL_LENGTH) {
                truncatedCommandDetail = commandDetail.substring(0, MAX_COMMAND_DETAIL_LENGTH) + "...";
            }
        }
        this.commandDetail = truncatedCommandDetail;
    }

    public String getCustomCommandName() {
        return customCommandName;
    }

    public void setCustomCommandName(String customCommandName) {
        this.customCommandName = customCommandName;
    }

    /**
     * Determine whether this task should hold for retry when an error occurs.
     *
     * @return {@code true} if this task should hold for retry when an error occurs
     */
    public boolean isRetryAllowed() {
        return retryAllowed != 0;
    }

    /**
     * Sets whether this task should hold for retry when an error occurs.
     *
     * @param enabled  {@code true} if this task should hold for retry when an error occurs
     */
    public void setRetryAllowed(boolean enabled) {
        retryAllowed = enabled ? 1 : 0;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        HostRoleCommandEntity that = (HostRoleCommandEntity) o;

        if (attemptCount != null ? !attemptCount.equals(that.attemptCount) : that.attemptCount != null) {
            return false;
        }
        if (event != null ? !event.equals(that.event) : that.event != null) {
            return false;
        }
        if (exitcode != null ? !exitcode.equals(that.exitcode) : that.exitcode != null) {
            return false;
        }
        if (hostName != null ? !hostName.equals(that.hostName) : that.hostName != null) {
            return false;
        }
        if (lastAttemptTime != null ? !lastAttemptTime.equals(that.lastAttemptTime)
                : that.lastAttemptTime != null) {
            return false;
        }
        if (requestId != null ? !requestId.equals(that.requestId) : that.requestId != null) {
            return false;
        }
        if (role != null ? !role.equals(that.role) : that.role != null) {
            return false;
        }
        if (stageId != null ? !stageId.equals(that.stageId) : that.stageId != null) {
            return false;
        }
        if (startTime != null ? !startTime.equals(that.startTime) : that.startTime != null) {
            return false;
        }
        if (status != null ? !status.equals(that.status) : that.status != null) {
            return false;
        }
        if (stdError != null ? !Arrays.equals(stdError, that.stdError) : that.stdError != null) {
            return false;
        }
        if (stdOut != null ? !Arrays.equals(stdOut, that.stdOut) : that.stdOut != null) {
            return false;
        }
        if (outputLog != null ? !outputLog.equals(that.outputLog) : that.outputLog != null) {
            return false;
        }
        if (errorLog != null ? !errorLog.equals(that.errorLog) : that.errorLog != null) {
            return false;
        }
        if (taskId != null ? !taskId.equals(that.taskId) : that.taskId != null) {
            return false;
        }
        if (structuredOut != null ? !Arrays.equals(structuredOut, that.structuredOut)
                : that.structuredOut != null) {
            return false;
        }
        if (endTime != null ? !endTime.equals(that.endTime) : that.endTime != null) {
            return false;
        }

        return true;
    }

    @Override
    public int hashCode() {
        int result = taskId != null ? taskId.hashCode() : 0;
        result = 31 * result + (requestId != null ? requestId.hashCode() : 0);
        result = 31 * result + (stageId != null ? stageId.hashCode() : 0);
        result = 31 * result + (hostName != null ? hostName.hashCode() : 0);
        result = 31 * result + (role != null ? role.hashCode() : 0);
        result = 31 * result + (event != null ? event.hashCode() : 0);
        result = 31 * result + (exitcode != null ? exitcode.hashCode() : 0);
        result = 31 * result + (status != null ? status.hashCode() : 0);
        result = 31 * result + (stdError != null ? Arrays.hashCode(stdError) : 0);
        result = 31 * result + (stdOut != null ? Arrays.hashCode(stdOut) : 0);
        result = 31 * result + (outputLog != null ? outputLog.hashCode() : 0);
        result = 31 * result + (errorLog != null ? errorLog.hashCode() : 0);
        result = 31 * result + (startTime != null ? startTime.hashCode() : 0);
        result = 31 * result + (lastAttemptTime != null ? lastAttemptTime.hashCode() : 0);
        result = 31 * result + (attemptCount != null ? attemptCount.hashCode() : 0);
        result = 31 * result + (endTime != null ? endTime.hashCode() : 0);
        result = 31 * result + (structuredOut != null ? Arrays.hashCode(structuredOut) : 0);
        return result;
    }

    public ExecutionCommandEntity getExecutionCommand() {
        return executionCommand;
    }

    public void setExecutionCommand(ExecutionCommandEntity executionCommandsByTaskId) {
        executionCommand = executionCommandsByTaskId;
    }

    public StageEntity getStage() {
        return stage;
    }

    public void setStage(StageEntity stage) {
        this.stage = stage;
    }

    public HostEntity getHost() {
        return host;
    }

    public void setHost(HostEntity host) {
        this.host = host;
    }
}