package ca.uhn.fhir.jpa.entity; /* * #%L * HAPI FHIR JPA Server * %% * Copyright (C) 2014 - 2017 University Health Network * %% * 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. * #L% */ import java.io.Serializable; import java.util.Collection; 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.OneToMany; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.UniqueConstraint; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import ca.uhn.fhir.model.api.Tag; //@formatter:on @Entity @Table(name = "HFJ_TAG_DEF", uniqueConstraints = { @UniqueConstraint(name="IDX_TAGDEF_TYPESYSCODE", columnNames = { "TAG_TYPE", "TAG_SYSTEM", "TAG_CODE" }) }) //@formatter:off public class TagDefinition implements Serializable { private static final long serialVersionUID = 1L; @Column(name = "TAG_CODE", length = 200) private String myCode; @Column(name = "TAG_DISPLAY", length = 200) private String myDisplay; @Id @GeneratedValue(strategy = GenerationType.AUTO, generator="SEQ_TAGDEF_ID") @SequenceGenerator(name = "SEQ_TAGDEF_ID", sequenceName = "SEQ_TAGDEF_ID") @Column(name = "TAG_ID") private Long myId; @OneToMany(cascade = {}, fetch = FetchType.LAZY, mappedBy = "myTag") private Collection<ResourceTag> myResources; @OneToMany(cascade = {}, fetch = FetchType.LAZY, mappedBy = "myTag") private Collection<ResourceHistoryTag> myResourceVersions; @Column(name = "TAG_SYSTEM", length = 200) private String mySystem; @Column(name="TAG_TYPE", nullable=false) @Enumerated(EnumType.ORDINAL) private TagTypeEnum myTagType; public TagDefinition() { } public TagDefinition(TagTypeEnum theTagType, String theSystem, String theCode, String theDisplay) { setTagType(theTagType); setCode(theCode); setSystem(theSystem); setDisplay(theDisplay); } public String getCode() { return myCode; } public String getDisplay() { return myDisplay; } public Long getId() { return myId; } public String getSystem() { return mySystem; } public TagTypeEnum getTagType() { return myTagType; } public void setCode(String theCode) { myCode = theCode; } public void setDisplay(String theDisplay) { myDisplay = theDisplay; } public void setSystem(String theSystem) { mySystem = theSystem; } public void setTagType(TagTypeEnum theTagType) { myTagType = theTagType; } public Tag toTag() { return new Tag(getSystem(), getCode(), getDisplay()); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof TagDefinition)) { return false; } TagDefinition other = (TagDefinition) obj; EqualsBuilder b = new EqualsBuilder(); if (myId != null && other.myId != null) { b.append(myId, other.myId); } else { b.append(myTagType, other.myTagType); b.append(mySystem, other.mySystem); b.append(myCode, other.myCode); } return b.isEquals(); } @Override public int hashCode() { HashCodeBuilder b = new HashCodeBuilder(); if (myId != null) { b.append(myId); } else { b.append(myTagType); b.append(mySystem); b.append(myCode); } return b.toHashCode(); } @Override public String toString() { ToStringBuilder retVal = new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE); retVal.append("id", myId); retVal.append("system", mySystem); retVal.append("code", myCode); retVal.append("display", myDisplay); return retVal.build(); } }