/*******************************************************************************
 * Copyright 2014 Centre for Development of Advanced Computing(C-DAC), Pune
 * 
 * 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.
 ******************************************************************************/
package in.cdac.medinfo.csnotk.csnolib.model;
import java.util.Date;

/**
 * VersionedComponent is the super class for all the Components
 * Defined as an abstract class as it need not be instantiated
 */
public abstract class VersionedComponent 
{
/**
 * Represents effective time of the component 
 */
	
 protected Date effectiveTime;
 
 /**
  * A status of the concept (active=1 and inactive =0) 
  */
 protected Byte activeStatus;
 
 /**
  * Module id of the component
  */
 protected String moduleId;
 
 /**
  * Default constructor
  */
 
 protected VersionedComponent()
 {
	 
 }
 /**
  * Parameterized constructor
  * @param effTime
  * 			 represents effective time of the SNOMED CT component
  * @param status
  * 			 represents active status of the component (active or inactive)
  * @param modId
  * 			 represents module Id of the component
  */
 protected VersionedComponent(Date effTime,Byte status,String modId)
 {
	 this.effectiveTime=effTime;
	 this.activeStatus=status;
	 this.moduleId=modId;
 }
 /**
  * 
  * @return effective time of that component
  */
 public Date getTime()
 {
	 return this.effectiveTime;
 }
 /**
  * sets the effective time for the component
  * @param date - represents effective time
  */
 public void setTime(Date date)
 {
	 this.effectiveTime=date;
 }
 /**
  * Retrieves active status of a component.
  * @return activeStatus of a component
  */
 public Byte getActiveStatus()
 {
	 return this.activeStatus;
 }
 /**
  * sets the active status attribute of a component
  * @param active
  * 			 represents active Status of the component
  */
 public void setActiveStatus(Byte active)
 {
	 this.activeStatus=active;
 }
 /**
  * 
  * @return module Id of a component
  */
 public String getModuleId()
 {
	 return this.moduleId;
 }
 /**
  * sets the module Id attribute of a component object
  * @param modId
  * 			 represents module Id of a component
  */
 public void setModuleId(String modId)
 {
	 this.moduleId=modId;
 }
}
