Advertisement
Guest User

Untitled

a guest
Jul 15th, 2020
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.52 KB | None | 0 0
  1. /**
  2. * This Source Code Form is subject to the terms of the Mozilla Public License,
  3. * v. 2.0. If a copy of the MPL was not distributed with this file, You can
  4. * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
  5. * the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
  6. *
  7. * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
  8. * graphic logo is a trademark of OpenMRS Inc.
  9. */
  10. package org.openmrs;
  11.  
  12. import java.util.Date;
  13.  
  14. import org.codehaus.jackson.annotate.JsonIgnore;
  15. import org.hibernate.annotations.Cache;
  16. import org.hibernate.annotations.CacheConcurrencyStrategy;
  17. import org.openmrs.customdatatype.CustomDatatypeUtil;
  18. import org.openmrs.customdatatype.CustomValueDescriptor;
  19. import org.openmrs.customdatatype.InvalidCustomValueException;
  20. import org.openmrs.customdatatype.NotYetPersistedException;
  21. import org.openmrs.customdatatype.SingleCustomValue;
  22.  
  23. import javax.persistence.Access;
  24. import javax.persistence.AccessType;
  25. import javax.persistence.AttributeOverride;
  26. import javax.persistence.Cacheable;
  27. import javax.persistence.Column;
  28. import javax.persistence.Entity;
  29. import javax.persistence.GeneratedValue;
  30. import javax.persistence.GenerationType;
  31. import javax.persistence.Id;
  32. import javax.persistence.JoinColumn;
  33. import javax.persistence.ManyToOne;
  34. import javax.persistence.SequenceGenerator;
  35. import javax.persistence.Table;
  36. import javax.persistence.Transient;
  37.  
  38. /**
  39. * A FormResource is meant as a way for modules to add arbitrary information to
  40. * a Form. FormResources are essentially just key-value pairs. The value is
  41. * stored as a custom datatype. A Form can have 0-n FormResources but only one
  42. * FormResource per name per Form.
  43. *
  44. * The <i>name</i> of a resource specifies one of many resources that can be
  45. * stored for a particular owner. Only one resource for each name will
  46. * ever be saved.
  47. *
  48. * @since 1.9
  49. */
  50. @Entity
  51. @Table(name = "form_resource")
  52. @Cacheable
  53. @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
  54. @AttributeOverride(name = "uuid", column = @Column(name = "uuid", unique = true, nullable = false, length = 38))
  55. public class FormResource extends BaseOpenmrsObject implements CustomValueDescriptor, SingleCustomValue<FormResource> {
  56.  
  57. private static final long serialVersionUID = 1L;
  58.  
  59. @Id
  60. @Column(name = "form_resource_id")
  61. @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "form_resource_id_gen")
  62. @SequenceGenerator(name = "form_resource_id_gen", sequenceName = "form_resource_form_resource_id_seq")
  63. private Integer formResourceId;
  64.  
  65. @ManyToOne
  66. @JoinColumn(name = "form_id", nullable = false)
  67. private Form form;
  68.  
  69. @Column(name = "name")
  70. private String name;
  71.  
  72. @Access(AccessType.FIELD)
  73. @Column(name = "value_reference", length = 65535)
  74. private String valueReference;
  75.  
  76. @JoinColumn(name = "datatype")
  77. private String datatypeClassname;
  78.  
  79. @Column(name = "datatype_config", length = 65535)
  80. private String datatypeConfig;
  81.  
  82. @Column(name = "preferred_handler")
  83. private String preferredHandlerClassname;
  84.  
  85. @Column(name = "handler_config")
  86. private String handlerConfig;
  87.  
  88. @Transient
  89. private transient boolean dirty = false;
  90.  
  91. @Transient
  92. private transient Object typedValue;
  93.  
  94. @ManyToOne
  95. @JoinColumn(name = "changed_by")
  96. private User changedBy;
  97.  
  98. @Column(name = "date_changed", length = 19)
  99. private Date dateChanged;
  100.  
  101. public FormResource() {
  102. // generic constructor
  103. }
  104.  
  105. /**
  106. * Create a copy of a provided FormResource, ignoring the uuid and id of the original
  107. *
  108. * @param old the original FormResource to be copied
  109. */
  110. public FormResource(FormResource old) {
  111. this.form = old.getForm();
  112. this.name = old.getName();
  113. this.valueReference = old.getValueReference();
  114. this.datatypeClassname = old.getDatatypeClassname();
  115. this.datatypeConfig = old.getDatatypeConfig();
  116. this.preferredHandlerClassname = old.getPreferredHandlerClassname();
  117. this.handlerConfig = old.getHandlerConfig();
  118. }
  119.  
  120. /**
  121. * @see org.openmrs.OpenmrsObject#getId()
  122. */
  123. @Override
  124. public Integer getId() {
  125. return getFormResourceId();
  126. }
  127.  
  128. /**
  129. * @see org.openmrs.OpenmrsObject#setId(java.lang.Integer)
  130. */
  131. @Override
  132. public void setId(Integer id) {
  133. setFormResourceId(id);
  134. }
  135.  
  136. /**
  137. * gets the form
  138. *
  139. * @return the form
  140. */
  141. public Form getForm() {
  142. return form;
  143. }
  144.  
  145. /**
  146. * sets the form
  147. *
  148. * @param form the form
  149. */
  150. public void setForm(Form form) {
  151. this.form = form;
  152. }
  153.  
  154. /**
  155. * gets the form resource id
  156. *
  157. * @return the form resource's id
  158. */
  159. public Integer getFormResourceId() {
  160. return formResourceId;
  161. }
  162.  
  163. /**
  164. * sets the form resource id
  165. *
  166. * @param formResourceId the form resource's id
  167. */
  168. public void setFormResourceId(Integer formResourceId) {
  169. this.formResourceId = formResourceId;
  170. }
  171.  
  172. /**
  173. * gets the name of the resource
  174. *
  175. * @return the name of the resource
  176. */
  177. public String getName() {
  178. return name;
  179. }
  180.  
  181. /**
  182. * sets the name of the resource
  183. *
  184. * @param name the name of the resource
  185. */
  186. public void setName(String name) {
  187. this.name = name;
  188. }
  189.  
  190. /**
  191. * @see org.openmrs.customdatatype.CustomValueDescriptor#getDatatypeClassname()
  192. */
  193. @Override
  194. public String getDatatypeClassname() {
  195. return datatypeClassname;
  196. }
  197.  
  198. /**
  199. * @param datatypeClassname the datatypeClassname to set
  200. */
  201. public void setDatatypeClassname(String datatypeClassname) {
  202. this.datatypeClassname = datatypeClassname;
  203. }
  204.  
  205. /**
  206. * @see org.openmrs.customdatatype.CustomValueDescriptor#getDatatypeConfig()
  207. */
  208. @Override
  209. public String getDatatypeConfig() {
  210. return datatypeConfig;
  211. }
  212.  
  213. /**
  214. * @param datatypeConfig the datatypeConfig to set
  215. */
  216. public void setDatatypeConfig(String datatypeConfig) {
  217. this.datatypeConfig = datatypeConfig;
  218. }
  219.  
  220. /**
  221. * @see org.openmrs.customdatatype.CustomValueDescriptor#getPreferredHandlerClassname()
  222. */
  223. @Override
  224. public String getPreferredHandlerClassname() {
  225. return preferredHandlerClassname;
  226. }
  227.  
  228. /**
  229. * @param preferredHandlerClassname the preferredHandlerClassname to set
  230. */
  231. public void setPreferredHandlerClassname(String preferredHandlerClassname) {
  232. this.preferredHandlerClassname = preferredHandlerClassname;
  233. }
  234.  
  235. /**
  236. * @see org.openmrs.customdatatype.CustomValueDescriptor#getHandlerConfig()
  237. */
  238. @Override
  239. public String getHandlerConfig() {
  240. return handlerConfig;
  241. }
  242.  
  243. /**
  244. * @param handlerConfig the handlerConfig to set
  245. */
  246. public void setHandlerConfig(String handlerConfig) {
  247. this.handlerConfig = handlerConfig;
  248. }
  249.  
  250. /**
  251. * @see org.openmrs.customdatatype.SingleCustomValue#getDescriptor()
  252. */
  253. @Override
  254. public FormResource getDescriptor() {
  255. return this;
  256. }
  257.  
  258. /**
  259. * @see org.openmrs.customdatatype.SingleCustomValue#getValueReference()
  260. */
  261. @Override
  262. public String getValueReference() {
  263. if (valueReference == null) {
  264. throw new NotYetPersistedException();
  265. } else {
  266. return valueReference;
  267. }
  268. }
  269.  
  270. /**
  271. * @see org.openmrs.customdatatype.SingleCustomValue#getValue()
  272. */
  273. @Override
  274. public Object getValue(){
  275. if (typedValue == null) {
  276. typedValue = CustomDatatypeUtil.getDatatype(this).fromReferenceString(getValueReference());
  277. }
  278. return typedValue;
  279. }
  280.  
  281. /**
  282. * @see org.openmrs.customdatatype.SingleCustomValue#setValue(java.lang.Object)
  283. */
  284. @Override
  285. public <T> void setValue(T typedValue) {
  286. this.typedValue = typedValue;
  287. dirty = true;
  288. }
  289.  
  290. /**
  291. * @see org.openmrs.customdatatype.SingleCustomValue#setValueReferenceInternal(java.lang.String)
  292. */
  293. @Override
  294. public void setValueReferenceInternal(String valueToPersist) {
  295. this.valueReference = valueToPersist;
  296. }
  297.  
  298. /**
  299. * @see org.openmrs.customdatatype.SingleCustomValue#isDirty()
  300. *
  301. * @deprecated as of 2.0, use {@link #getDirty()}
  302. */
  303. @Deprecated
  304. @JsonIgnore
  305. @Override
  306. public boolean isDirty() {
  307. return getDirty();
  308. }
  309.  
  310. public boolean getDirty() {
  311. return dirty;
  312. }
  313.  
  314. /**
  315. * @return Returns the changedBy.
  316. */
  317. public User getChangedBy() {
  318. return changedBy;
  319. }
  320.  
  321. /**
  322. * @param changedBy The user that changed this object
  323. */
  324. public void setChangedBy(User changedBy) {
  325. this.changedBy = changedBy;
  326. }
  327.  
  328. /**
  329. * @return Returns the date this object was changed
  330. */
  331. public Date getDateChanged() {
  332. return dateChanged;
  333. }
  334.  
  335. /**
  336. * @param dateChanged The date this object was changed
  337. */
  338. public void setDateChanged(Date dateChanged) {
  339. this.dateChanged = dateChanged;
  340. }
  341. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement