/* * Copyright 2014 JBoss Inc * * 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 io.apiman.manager.api.beans.clients; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinColumns; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.UniqueConstraint; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; /** * Models a single version of a client "impl". Every client in * APIMan has basic meta-data stored in {@link ClientBean}. All * other specifics of the client, such as endpoint information * and configured policies are associated with a particular version * of that client. This class represents that version. * * @author eric.wittmann@redhat.com */ @Entity @Table(name = "client_versions", uniqueConstraints = { @UniqueConstraint(columnNames = { "client_id", "client_org_id", "version" }), @UniqueConstraint(columnNames = { "apikey" })}) @JsonInclude(Include.NON_NULL) public class ClientVersionBean implements Serializable, Cloneable { private static final long serialVersionUID = -2218697175049442690L; @Id @GeneratedValue private Long id; @ManyToOne @JoinColumns({ @JoinColumn(name="client_id", referencedColumnName="id"), @JoinColumn(name="client_org_id", referencedColumnName="organization_id") }) private ClientBean client; @Column(updatable=true, nullable=false) @Enumerated(EnumType.STRING) private ClientStatus status; @Column(updatable=false, nullable=false) private String version; @Column(name = "created_by", updatable=false, nullable=false) private String createdBy; @Column(name = "created_on", updatable=false, nullable=false) private Date createdOn; @Column(name = "modified_by", updatable=true, nullable=false) private String modifiedBy; @Column(name = "modified_on", updatable=true, nullable=false) private Date modifiedOn; @Column(name = "published_on") private Date publishedOn; @Column(name = "retired_on") private Date retiredOn; @Column(updatable=true, nullable=false) private String apikey; /** * Constructor. */ public ClientVersionBean() { } /** * @return the id */ public Long getId() { return id; } /** * @param id the id to set */ public void setId(Long id) { this.id = id; } /** * @return the client */ public ClientBean getClient() { return client; } /** * @param client the client to set */ public void setClient(ClientBean client) { this.client = client; } /** * @return the version */ public String getVersion() { return version; } /** * @param version the version to set */ public void setVersion(String version) { this.version = version; } /** * @return the createdBy */ public String getCreatedBy() { return createdBy; } /** * @param createdBy the createdBy to set */ public void setCreatedBy(String createdBy) { this.createdBy = createdBy; } /** * @return the createdOn */ public Date getCreatedOn() { return createdOn; } /** * @param createdOn the createdOn to set */ public void setCreatedOn(Date createdOn) { this.createdOn = createdOn; } /** * @return the status */ public ClientStatus getStatus() { return status; } /** * @param status the status to set */ public void setStatus(ClientStatus status) { this.status = status; } /** * @return the publishedOn */ public Date getPublishedOn() { return publishedOn; } /** * @param publishedOn the publishedOn to set */ public void setPublishedOn(Date publishedOn) { this.publishedOn = publishedOn; } /** * @return the retiredOn */ public Date getRetiredOn() { return retiredOn; } /** * @param retiredOn the retiredOn to set */ public void setRetiredOn(Date retiredOn) { this.retiredOn = retiredOn; } /** * @return the modifiedBy */ public String getModifiedBy() { return modifiedBy; } /** * @param modifiedBy the modifiedBy to set */ public void setModifiedBy(String modifiedBy) { this.modifiedBy = modifiedBy; } /** * @return the modifiedOn */ public Date getModifiedOn() { return modifiedOn; } /** * @param modifiedOn the modifiedOn to set */ public void setModifiedOn(Date modifiedOn) { this.modifiedOn = modifiedOn; } /** * @return the apikey */ public String getApikey() { return apikey; } /** * @param apikey the apikey to set */ public void setApikey(String apikey) { this.apikey = apikey; } /** * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); return result; } /** * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; ClientVersionBean other = (ClientVersionBean) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; return true; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override @SuppressWarnings("nls") public String toString() { return "ClientVersionBean [id=" + id + ", client=" + client + ", status=" + status + ", version=" + version + ", createdBy=" + createdBy + ", createdOn=" + createdOn + ", modifiedBy=" + modifiedBy + ", modifiedOn=" + modifiedOn + ", publishedOn=" + publishedOn + ", retiredOn=" + retiredOn + ", apikey=" + apikey + "]"; } /** * @see java.lang.Object#clone() */ @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } }