ComplexData.java

/**
 * The contents of this file are subject to the OpenMRS Public License
 * Version 1.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://license.openmrs.org
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations
 * under the License.
 *
 * Copyright (C) OpenMRS, LLC.  All Rights Reserved.
 */
package org.openmrs.obs;

import java.io.InputStream;

/**
 * ComplexObs is a transient Object that extends Obs but is not itself persisted in the database. It
 * has a data Object and a title. Alternatively, it can have a byte array in the Object. <br/>
 * <br/>
 * Most handlers should support this data Object being an {@link InputStream}, at least prior to
 * saving the object.<br/>
 * <br/>
 * On pulling data out, the format is per-handler defined and the page doing the viewing should know
 * how to handle it.
 */
public class ComplexData implements java.io.Serializable {
	
	public static final long serialVersionUID = 345734100L;
	
	private Object data;
	
	private String title;
	
	/**
	 * Default constructor requires title and data.
	 * 
	 * @param title Name or brief description of ComplexData.
	 * @param data The complex data for an Obs
	 */
	public ComplexData(String title, Object data) {
		setTitle(title);
		setData(data);
	}
	
	/**
	 * Set the title for this ComplexData
	 * 
	 * @param title
	 */
	private void setTitle(String title) {
		this.title = title;
	}
	
	/**
	 * Get the title for this ComplexData
	 * 
	 * @return the title as a <code>String</code>
	 */
	public String getTitle() {
		return this.title;
	}
	
	/**
	 * Set the data Object.
	 * 
	 * @param data
	 */
	private void setData(Object data) {
		this.data = data;
	}
	
	/**
	 * Get the data Object. If this was initialized with a byte array, the output may not be
	 * reliable. TODO: Should this even try to return the byte array?
	 * 
	 * @return the data as an <code>Object</code>
	 */
	public Object getData() {
		return this.data;
	}
	
}