blob: 0c254ef33ab3c99d02317b6e8d6dd6e11b15ed41 [file] [log] [blame]
/*
* 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 javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import org.apache.ambari.server.actionmanager.Stage;
import org.apache.ambari.server.state.UpgradeState;
/**
* Models a single upgrade item which is directly associated with {@link Stage}.
* <p/>
* Since {@link UpgradeItemEntity} instances are rarely created, yet created in
* bulk, we have an abnormally high {@code allocationSize}} for the
* {@link TableGenerator}. This helps prevent locks caused by frequenty queries
* to the sequence ID table.
*/
@Table(name = "upgrade_item")
@Entity
@TableGenerator(name = "upgrade_item_id_generator",
table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "sequence_value",
pkColumnValue = "upgrade_item_id_seq",
initialValue = 0,
allocationSize = 1000)
@NamedQueries({
@NamedQuery(name = "UpgradeItemEntity.findAllStageIds", query = "SELECT upgradeItem.stageId FROM UpgradeItemEntity upgradeItem")
})
public class UpgradeItemEntity {
@Id
@Column(name = "upgrade_item_id", nullable = false, insertable = true, updatable = false)
@GeneratedValue(strategy = GenerationType.TABLE, generator = "upgrade_item_id_generator")
private Long upgradeItemId;
@Column(name = "upgrade_group_id", nullable = false, insertable = false, updatable = false)
private Long upgradeGroupId;
@Enumerated(value=EnumType.STRING)
@Column(name = "state", length=255, nullable = false)
private UpgradeState state = UpgradeState.NONE;
@Basic
@Column(name = "hosts")
private String hosts = null;
@Basic
@Column(name = "tasks", length=4096)
private String tasks = null;
@Basic
@Column(name = "item_text")
private String itemText = null;
@Basic
@Column(name = "stage_id", nullable = false)
private Long stageId = Long.valueOf(0L);
@ManyToOne
@JoinColumn(name = "upgrade_group_id", referencedColumnName = "upgrade_group_id", nullable = false)
private UpgradeGroupEntity upgradeGroupEntity;
/**
* @return the id
*/
public Long getId() {
return upgradeItemId;
}
/**
* @param id the id
*/
public void setId(Long id) {
upgradeItemId = id;
}
/**
* @return the state
*/
public UpgradeState getState() {
return state;
}
/**
* @param state the state
*/
public void setState(UpgradeState state) {
this.state = state;
}
/**
* @return the tasks in json format
*/
public String getTasks() {
return tasks;
}
/**
* @param json the tasks in json format
*/
public void setTasks(String json) {
tasks = json;
}
/**
* @return the hosts in json format
*/
public String getHosts() {
return hosts;
}
/**
* @param json the hosts in json format
*/
public void setHosts(String json) {
hosts = json;
}
/**
* @return the item text
*/
public String getText() {
return itemText;
}
/**
* @param text the item text
*/
public void setText(String text) {
itemText = text;
}
/**
* @return the group entity
*/
public UpgradeGroupEntity getGroupEntity() {
return upgradeGroupEntity;
}
public void setGroupEntity(UpgradeGroupEntity entity) {
upgradeGroupEntity = entity;
}
public Long getStageId() {
return stageId;
}
public void setStageId(Long id) {
stageId = id;
}
}