001/*- 002 * #%L 003 * HAPI FHIR JPA Model 004 * %% 005 * Copyright (C) 2014 - 2024 Smile CDR, Inc. 006 * %% 007 * Licensed under the Apache License, Version 2.0 (the "License"); 008 * you may not use this file except in compliance with the License. 009 * You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, software 014 * distributed under the License is distributed on an "AS IS" BASIS, 015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 016 * See the License for the specific language governing permissions and 017 * limitations under the License. 018 * #L% 019 */ 020package ca.uhn.fhir.jpa.model.entity; 021 022import ca.uhn.fhir.context.FhirVersionEnum; 023import ca.uhn.fhir.util.StringUtil; 024import jakarta.persistence.Column; 025import jakarta.persistence.Entity; 026import jakarta.persistence.EnumType; 027import jakarta.persistence.Enumerated; 028import jakarta.persistence.ForeignKey; 029import jakarta.persistence.GeneratedValue; 030import jakarta.persistence.GenerationType; 031import jakarta.persistence.Id; 032import jakarta.persistence.Index; 033import jakarta.persistence.JoinColumn; 034import jakarta.persistence.ManyToOne; 035import jakarta.persistence.OneToMany; 036import jakarta.persistence.SequenceGenerator; 037import jakarta.persistence.Table; 038import jakarta.persistence.Temporal; 039import jakarta.persistence.TemporalType; 040import jakarta.persistence.Version; 041import org.apache.commons.lang3.builder.ToStringBuilder; 042import org.apache.commons.lang3.builder.ToStringStyle; 043 044import java.util.Date; 045import java.util.List; 046 047@Entity() 048@Table( 049 name = "NPM_PACKAGE_VER", 050 uniqueConstraints = {}, 051 indexes = { 052 @Index(name = "IDX_PACKVER", columnList = "PACKAGE_ID,VERSION_ID", unique = true), 053 @Index(name = "FK_NPM_PKV_PKG", columnList = "PACKAGE_PID"), 054 @Index(name = "FK_NPM_PKV_RESID", columnList = "BINARY_RES_ID") 055 }) 056public class NpmPackageVersionEntity { 057 058 public static final int VERSION_ID_LENGTH = 200; 059 public static final int PACKAGE_DESC_LENGTH = 200; 060 public static final int FHIR_VERSION_LENGTH = 10; 061 public static final int FHIR_VERSION_ID_LENGTH = 20; 062 063 @SequenceGenerator(name = "SEQ_NPM_PACKVER", sequenceName = "SEQ_NPM_PACKVER") 064 @GeneratedValue(strategy = GenerationType.AUTO, generator = "SEQ_NPM_PACKVER") 065 @Id 066 @Column(name = "PID") 067 private Long myId; 068 069 @Column(name = "PACKAGE_ID", length = NpmPackageEntity.PACKAGE_ID_LENGTH, nullable = false) 070 private String myPackageId; 071 072 @Column(name = "VERSION_ID", length = NpmPackageVersionEntity.VERSION_ID_LENGTH, nullable = false) 073 private String myVersionId; 074 075 @ManyToOne 076 @JoinColumn(name = "PACKAGE_PID", nullable = false, foreignKey = @ForeignKey(name = "FK_NPM_PKV_PKG")) 077 private NpmPackageEntity myPackage; 078 079 @ManyToOne 080 @JoinColumn( 081 name = "BINARY_RES_ID", 082 referencedColumnName = "RES_ID", 083 nullable = false, 084 foreignKey = @ForeignKey(name = "FK_NPM_PKV_RESID")) 085 private ResourceTable myPackageBinary; 086 087 @Temporal(TemporalType.TIMESTAMP) 088 @Column(name = "SAVED_TIME", nullable = false) 089 private Date mySavedTime; 090 091 @Column(name = "PKG_DESC", nullable = true, length = PACKAGE_DESC_LENGTH) 092 private String myDescription; 093 094 @Column(name = "DESC_UPPER", nullable = true, length = PACKAGE_DESC_LENGTH) 095 private String myDescriptionUpper; 096 097 @Column(name = "CURRENT_VERSION", nullable = false) 098 private boolean myCurrentVersion; 099 100 @Column(name = "FHIR_VERSION_ID", length = NpmPackageVersionEntity.FHIR_VERSION_ID_LENGTH, nullable = false) 101 private String myFhirVersionId; 102 103 @Enumerated(EnumType.STRING) 104 @Column(name = "FHIR_VERSION", length = NpmPackageVersionEntity.FHIR_VERSION_LENGTH, nullable = false) 105 private FhirVersionEnum myFhirVersion; 106 107 @Column(name = "PACKAGE_SIZE_BYTES", nullable = false) 108 private long myPackageSizeBytes; 109 110 @Temporal(TemporalType.TIMESTAMP) 111 @Version 112 @Column(name = "UPDATED_TIME", nullable = false) 113 private Date myUpdatedTime; 114 115 @OneToMany(mappedBy = "myPackageVersion") 116 private List<NpmPackageVersionResourceEntity> myResources; 117 118 public Date getUpdatedTime() { 119 return myUpdatedTime; 120 } 121 122 public long getPackageSizeBytes() { 123 return myPackageSizeBytes; 124 } 125 126 public void setPackageSizeBytes(long thePackageSizeBytes) { 127 myPackageSizeBytes = thePackageSizeBytes; 128 } 129 130 public boolean isCurrentVersion() { 131 return myCurrentVersion; 132 } 133 134 public void setCurrentVersion(boolean theCurrentVersion) { 135 myCurrentVersion = theCurrentVersion; 136 } 137 138 public String getPackageId() { 139 return myPackageId; 140 } 141 142 public void setPackageId(String thePackageId) { 143 myPackageId = thePackageId; 144 } 145 146 public String getVersionId() { 147 return myVersionId; 148 } 149 150 public void setVersionId(String theVersionId) { 151 myVersionId = theVersionId; 152 } 153 154 public String getFhirVersionId() { 155 return myFhirVersionId; 156 } 157 158 public void setFhirVersionId(String theFhirVersionId) { 159 myFhirVersionId = theFhirVersionId; 160 } 161 162 public FhirVersionEnum getFhirVersion() { 163 return myFhirVersion; 164 } 165 166 public void setFhirVersion(FhirVersionEnum theFhirVersion) { 167 myFhirVersion = theFhirVersion; 168 } 169 170 public NpmPackageEntity getPackage() { 171 return myPackage; 172 } 173 174 public void setPackage(NpmPackageEntity thePackage) { 175 myPackage = thePackage; 176 } 177 178 public ResourceTable getPackageBinary() { 179 return myPackageBinary; 180 } 181 182 public void setPackageBinary(ResourceTable thePackageBinary) { 183 myPackageBinary = thePackageBinary; 184 } 185 186 public void setSavedTime(Date theSavedTime) { 187 mySavedTime = theSavedTime; 188 } 189 190 public String getDescription() { 191 return myDescription; 192 } 193 194 public void setDescription(String theDescription) { 195 myDescription = theDescription; 196 myDescriptionUpper = StringUtil.normalizeStringForSearchIndexing(theDescription); 197 } 198 199 @Override 200 public String toString() { 201 return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) 202 .append("myId", myId) 203 .append("myPackageId", myPackageId) 204 .append("myVersionId", myVersionId) 205 .append("myDescriptionUpper", myDescriptionUpper) 206 .append("myFhirVersionId", myFhirVersionId) 207 .toString(); 208 } 209 210 public List<NpmPackageVersionResourceEntity> getResources() { 211 return myResources; 212 } 213}