package com.k_int.aggr2.mimsy.data;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import com.k_int.mimsy.ref.DataStatusEnum;
import com.k_int.mimsy.ref.MimsyDataTypeEnum;
import com.k_int.mimsy.ref.ObjectConformanceEnum;

public abstract class MimsyDataDTO implements Serializable
{
	private static final long 					serialVersionUID = 1L;
	private Date 								last_updated;
	private MimsyDataTypeEnum 					type;
	private String 								mimsy_identifier;
	private ObjectConformanceEnum 				conformance;
	private Long								checksum;
	private Set<InstructionDTO> instructions 	= new HashSet<InstructionDTO>();
	private DataStatusEnum	status 				= DataStatusEnum.LIVE;  
	
	protected MimsyDataDTO()
	{;}
	
	protected MimsyDataDTO(String mimsy_identifier,MimsyDataTypeEnum type,Date last_updated, ObjectConformanceEnum conformance)
	{
		this.type				= type;
		this.mimsy_identifier	= mimsy_identifier;
		this.last_updated 		= last_updated;
		this.conformance		= conformance;
	}
	
	public String getMimsyIdentifier()
	{
		return mimsy_identifier;
	}
	
	protected void setMimsyIdentifier(String mimsy_identifier)
	{
		this.mimsy_identifier=mimsy_identifier;
	}
	
	protected void setDataType(MimsyDataTypeEnum type)
	{
		this.type=type;
	}
	
	public void setLastUpdated(Date last_updated)
	{
		this.last_updated=last_updated;
	}
	
	public void setChecksum(Long checksum)
	{
		this.checksum=checksum;
	}
	
	
	public Long getChecksum()
	{
		return checksum;
	}

	public MimsyDataTypeEnum getDataType()
	{
		return type;
	}

	public ObjectConformanceEnum getConformance()
	{
		return conformance;
	}
	
	public void setConformance(ObjectConformanceEnum conformance)
	{
		this.conformance=conformance;
	}
	
	public Date getLastUpdated()
	{
		return last_updated;
	}
	
	public Set<InstructionDTO> getInstructions()
	{
		return instructions;
	}
	
	public void setInstructions(Set<InstructionDTO> instructions)
	{
		this.instructions=instructions;
	}
	
	public DataStatusEnum getStatus()
	{
		return status;
	}
	
	public void setDataStatus(DataStatusEnum status)
	{
		this.status=status;
	}
	
	public abstract String getSummaryTitle();
}
