package com.k_int.aggr2.mimsy.rdf;

import java.io.Writer;
import java.util.Set;

import com.k_int.aggr2.mimsy.data.GroupHierarchyDTO;
import com.k_int.aggr2.mimsy.data.InstructionDTO;
import com.k_int.aggr2.mimsy.data.MimsyDataDTO;
import com.k_int.aggr2.mimsy.data.conversion.AbstractGroupHierarchyConverter;
import com.k_int.mimsy.ref.DataException;


public class RDFHierarchyConverter extends AbstractGroupHierarchyConverter{

	private Writer writer;
	
	public RDFHierarchyConverter(Writer writer)
	{
		this.writer=writer;
	}

	
	protected void convert(String elementVal, String val) throws DataException {
		try
		{
			RDFHelper.writeElement(writer,elementVal, null, val);
		}
		catch(Exception e)
		{
			throw new DataException(e);
		}
		
	}

	@Override
	protected void convertConfAndLastUpdate(MimsyDataDTO data)
			throws DataException {
		try
		{
			RDFHelper.writeConfStatusAndLastUpdate(writer,data);
		}
		catch(Exception e)
		{
			throw new DataException(e);
		}
		
	}

	@Override
	protected void convertInstructions(Set<InstructionDTO> instructions)
			throws DataException {
		// not used
		
	}

	@Override
	public void prefix(GroupHierarchyDTO data) throws DataException {
		try
        {          
	           RDFHelper.writePreamble(writer, "hierarchy", data.getMimsyIdentifier());
	        }
	        catch(Exception ex)
	        {
	            throw new DataException(ex);
	        }      
		
	}

	@Override
	public void suffix(GroupHierarchyDTO data) throws DataException {
		try
		{
			RDFHelper.writeEndAndFlush(writer, "hierarchy");
		}
		catch(Exception e)
		{
			throw new DataException(e);
		}
		
	}

}
