package rocks.inspectit.shared.all.cmr.model; import java.io.Serializable; import java.sql.Timestamp; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Convert; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.SequenceGenerator; import javax.validation.constraints.NotNull; import org.codehaus.jackson.annotate.JsonIgnore; import rocks.inspectit.shared.all.jpa.ListStringConverter; /** * The Platform Ident class is used to store the unique information of an Agent, so every Agent in * different JVMs on the same target server receives a different one. * * @author Patrice Bouillet * */ @Entity @NamedQueries({ @NamedQuery(name = PlatformIdent.FIND_ALL, query = "SELECT p FROM PlatformIdent p"), @NamedQuery(name = PlatformIdent.FIND_BY_AGENT_NAME, query = "SELECT p FROM PlatformIdent p WHERE p.agentName=:agentName") }) public class PlatformIdent implements Serializable { /** * The serial version UID. */ private static final long serialVersionUID = 8501768676196666426L; /** * Constant for findAll query. */ public static final String FIND_ALL = "PlatformIdent.findAll"; /** * Constant for findByName query. * * <p> * Parameters in the query: * <ul> * <li>agentName * </ul> */ public static final String FIND_BY_AGENT_NAME = "PlatformIdent.findByAgentName"; /** * The id of this instance (if persisted, otherwise <code>null</code>). */ @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PLATFORM_IDENT_SEQUENCE") @SequenceGenerator(name = "PLATFORM_IDENT_SEQUENCE", sequenceName = "PLATFORM_IDENT_SEQUENCE") private Long id; /** * The timestamp which shows when this information was created on the CMR. */ @NotNull private Timestamp timeStamp; /** * The many-to-many association to the {@link SensorTypeIdent} objects. */ @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "platformIdent") @JsonIgnore private Set<SensorTypeIdent> sensorTypeIdents = new HashSet<SensorTypeIdent>(0); /** * The one-to-many association to the {@link MethodIdent} objects. */ @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "platformIdent") @JsonIgnore private Set<MethodIdent> methodIdents = new HashSet<MethodIdent>(0); /** * The one-to-many association to the {@link JmxDefinitionDataIdent} objects. */ @JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "platformIdent") private Set<JmxDefinitionDataIdent> jmxDefinitionDataIdents = new HashSet<JmxDefinitionDataIdent>(0); /** * The list of ip's of the target system (including v4 and v6). */ @Convert(converter = ListStringConverter.class) @Column(length = 10000) private List<String> definedIPs; /** * The self-defined name of the inspectIT Agent. */ @NotNull private String agentName = "Agent"; /** * the current version of the agent. */ @NotNull private String version = "n/a"; /** * Gets {@link #id}. * * @return {@link #id} */ public Long getId() { return id; } /** * Sets {@link #id}. * * @param id * New value for {@link #id} */ public void setId(Long id) { this.id = id; } /** * Gets {@link #timeStamp}. * * @return {@link #timeStamp} */ public Timestamp getTimeStamp() { return timeStamp; } /** * Sets {@link #timeStamp}. * * @param timeStamp * New value for {@link #timeStamp} */ public void setTimeStamp(Timestamp timeStamp) { this.timeStamp = timeStamp; } /** * Gets {@link #sensorTypeIdents}. * * @return {@link #sensorTypeIdents} */ public Set<SensorTypeIdent> getSensorTypeIdents() { return sensorTypeIdents; } /** * Sets {@link #sensorTypeIdents}. * * @param sensorTypeIdents * New value for {@link #sensorTypeIdents} */ public void setSensorTypeIdents(Set<SensorTypeIdent> sensorTypeIdents) { this.sensorTypeIdents = sensorTypeIdents; } /** * Gets {@link #methodIdents}. * * @return {@link #methodIdents} */ public Set<MethodIdent> getMethodIdents() { return methodIdents; } /** * Sets {@link #methodIdents}. * * @param methodIdents * New value for {@link #methodIdents} */ public void setMethodIdents(Set<MethodIdent> methodIdents) { this.methodIdents = methodIdents; } /** * Gets {@link #definedIPs}. * * @return {@link #definedIPs} */ public List<String> getDefinedIPs() { return definedIPs; } /** * Sets {@link #definedIPs}. * * @param definedIPs * New value for {@link #definedIPs} */ public void setDefinedIPs(List<String> definedIPs) { this.definedIPs = definedIPs; } /** * Gets {@link #agentName}. * * @return {@link #agentName} */ public String getAgentName() { return agentName; } /** * Sets {@link #agentName}. * * @param agentName * New value for {@link #agentName} */ public void setAgentName(String agentName) { this.agentName = agentName; } /** * Gets {@link #version}. * * @return {@link #version} */ public String getVersion() { return version; } /** * Sets {@link #version}. * * @param version * New value for {@link #version} */ public void setVersion(String version) { this.version = version; } /** * Gets {@link #jmxDefinitionDataIdents}. * * @return {@link #jmxDefinitionDataIdents} */ public Set<JmxDefinitionDataIdent> getJmxDefinitionDataIdents() { return jmxDefinitionDataIdents; } /** * Sets {@link #jmxDefinitionDataIdents}. * * @param jmxDefinitionDataIdents * New value for {@link #jmxDefinitionDataIdents} */ public void setJmxDefinitionDataIdents(Set<JmxDefinitionDataIdent> jmxDefinitionDataIdents) { this.jmxDefinitionDataIdents = jmxDefinitionDataIdents; } /** * {@inheritDoc} */ @Override public int hashCode() { final int prime = 31; int result = 1; result = (prime * result) + ((agentName == null) ? 0 : agentName.hashCode()); result = (prime * result) + ((definedIPs == null) ? 0 : definedIPs.hashCode()); result = (prime * result) + ((id == null) ? 0 : id.hashCode()); result = (prime * result) + ((timeStamp == null) ? 0 : timeStamp.hashCode()); result = (prime * result) + ((version == null) ? 0 : version.hashCode()); return result; } /** * {@inheritDoc} */ @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } PlatformIdent other = (PlatformIdent) obj; if (agentName == null) { if (other.agentName != null) { return false; } } else if (!agentName.equals(other.agentName)) { return false; } if (definedIPs == null) { if (other.definedIPs != null) { return false; } } else if (!definedIPs.equals(other.definedIPs)) { return false; } if (id == null) { if (other.id != null) { return false; } } else if (!id.equals(other.id)) { return false; } if (timeStamp == null) { if (other.timeStamp != null) { return false; } } else if (!timeStamp.equals(other.timeStamp)) { return false; } if (version == null) { if (other.version != null) { return false; } } else if (!version.equals(other.version)) { return false; } return true; } }