/**
* 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 java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
@Entity
@Table(name = "widget")
@TableGenerator(name = "widget_id_generator",
table = "ambari_sequences",
pkColumnName = "sequence_name",
valueColumnName = "sequence_value",
pkColumnValue = "widget_id_seq",
initialValue = 0
)
@NamedQueries({
@NamedQuery(name = "WidgetEntity.findAll", query = "SELECT widget FROM WidgetEntity widget"),
@NamedQuery(name = "WidgetEntity.findByScopeOrAuthor", query =
"SELECT widget FROM WidgetEntity widget " +
"WHERE widget.author = :author " +
"OR widget.scope = :scope"),
@NamedQuery(name = "WidgetEntity.findByCluster", query = "SELECT widget FROM WidgetEntity widget WHERE widget.clusterId = :clusterId"),
@NamedQuery(name = "WidgetEntity.findByName", query =
"SELECT widget FROM WidgetEntity widget " +
"WHERE widget.clusterId = :clusterId " +
"AND widget.widgetName = :widgetName " +
"AND widget.author = :author " +
"AND widget.defaultSectionName = :defaultSectionName"),
@NamedQuery(name = "WidgetEntity.findBySectionName", query =
"SELECT widget FROM WidgetEntity widget " +
"INNER JOIN widget.listWidgetLayoutUserWidgetEntity widgetLayoutUserWidget " +
"INNER JOIN widgetLayoutUserWidget.widgetLayout widgetLayout " +
"WHERE widgetLayout.sectionName = :sectionName")
})
public class WidgetEntity {
public static final String CLUSTER_SCOPE = "CLUSTER";
public static final String USER_SCOPE = "USER";
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "widget_id_generator")
@Column(name = "id", nullable = false, updatable = false)
private Long id;
@Column(name = "widget_name", nullable = false, length = 255)
private String widgetName;
@Column(name = "widget_type", nullable = false, length = 255)
private String widgetType;
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "metrics")
private String metrics;
@Column(name = "time_created", nullable = false, length = 255)
private Long timeCreated = System.currentTimeMillis();
@Column(name = "author", length = 255)
private String author;
@Column(name = "description", length = 255)
private String description;
@Column(name = "default_section_name", length = 255, nullable = true)
private String defaultSectionName;
@Column(name = "scope", length = 255)
private String scope;
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "widget_values")
private String widgetValues;
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "properties")
private String properties;
@Column(name = "cluster_id", nullable = false)
private Long clusterId;
@ManyToOne
@JoinColumn(name = "cluster_id", referencedColumnName = "cluster_id", nullable = false, updatable = false, insertable = false)
private ClusterEntity clusterEntity;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "widget", orphanRemoval = true)
private List<WidgetLayoutUserWidgetEntity> listWidgetLayoutUserWidgetEntity;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getWidgetName() {
return widgetName;
}
public void setWidgetName(String widgetName) {
this.widgetName = widgetName;
}
public String getWidgetType() {
return widgetType;
}
public void setWidgetType(String widgetType) {
this.widgetType = widgetType;
}
public String getMetrics() {
return metrics;
}
public void setMetrics(String metrics) {
this.metrics = metrics;
}
public Long getTimeCreated() {
return timeCreated;
}
public void setTimeCreated(Long timeCreated) {
this.timeCreated = timeCreated;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getDefaultSectionName() {
return defaultSectionName;
}
public void setDefaultSectionName(String displayName) {
this.defaultSectionName = displayName;
}
public String getScope() {
return scope;
}
public void setScope(String scope) {
this.scope = scope;
}
public String getWidgetValues() {
return widgetValues;
}
public void setWidgetValues(String widgetValues) {
this.widgetValues = widgetValues;
}
public String getProperties() {
return properties;
}
public void setProperties(String properties) {
this.properties = properties;
}
public ClusterEntity getClusterEntity() {
return clusterEntity;
}
public void setClusterEntity(ClusterEntity clusterEntity) {
this.clusterEntity = clusterEntity;
}
public Long getClusterId() {
return clusterId;
}
public void setClusterId(Long clusterId) {
this.clusterId = clusterId;
}
public List<WidgetLayoutUserWidgetEntity> getListWidgetLayoutUserWidgetEntity() {
return listWidgetLayoutUserWidgetEntity;
}
public void setListWidgetLayoutUserWidgetEntity(List<WidgetLayoutUserWidgetEntity> listWidgetLayoutUserWidgetEntity) {
this.listWidgetLayoutUserWidgetEntity = listWidgetLayoutUserWidgetEntity;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
WidgetEntity that = (WidgetEntity) o;
if (id != that.id) return false;
return true;
}
@Override
public int hashCode() {
int result = null != id ? id.hashCode() : 0;
return result;
}
}