package com.k_int.aggr2.mimsy.solr;

import java.util.Iterator;
import java.util.Properties;
import java.util.Set;

import org.apache.solr.common.SolrInputDocument;

import com.k_int.aggr2.mimsy.data.InstructionDTO;
import com.k_int.aggr2.mimsy.data.MimsyAgentDataDTO;
import com.k_int.aggr2.mimsy.data.MimsyDataDTO;
import com.k_int.aggr2.mimsy.data.TextTypePairDTO;
import com.k_int.aggr2.mimsy.data.conversion.AbstractAgentFormatConverter;
import com.k_int.mimsy.ref.DataException;

public class SolrAgentConverter extends AbstractAgentFormatConverter {
	private SolrInputDocument doc;
	private Properties solr_props;
	
	public SolrAgentConverter(SolrInputDocument doc, Properties solr_props)
	{
		this.doc=doc;
		this.solr_props=solr_props;
	}
	protected void convertVariations(Set<TextTypePairDTO> variations)
			throws DataException {
		if(variations.size()>0)
		 {			 
        	Iterator<TextTypePairDTO> i = variations.iterator();
        	while(i.hasNext())
        	{
        		TextTypePairDTO pair = i.next();
        		convert("mo:variation",pair.getText());
        		String type="undefined";
        		if(pair.getType()!=null)
        			type=pair.getType();
        		convert("mo:variationType",type);
        	}
		 }


	}

	@Override
	protected void convert(String elementVal, String val) throws DataException {
	
		if(elementVal.equals("mo:name"))
		{
			SolrHelper.addField(solr_props,doc,elementVal, null, val,true);
		}
		else if(elementVal.equals("mo:variation"))
		{
			SolrHelper.addField(solr_props,doc,elementVal, null, val,true);
		}
		else if(elementVal.equals("dc:description"))
		{
			SolrHelper.addField(solr_props,doc,elementVal, null, val,true);
		}
		else
			SolrHelper.addField(solr_props,doc,elementVal, null, val,null);
		

	}

	@Override
	protected void convertConfAndLastUpdate(MimsyDataDTO data)
			throws DataException {
		
		SolrHelper.addConfAndLastUpdate(solr_props,doc,data);
		

	}

	@Override
	protected void convertInstructions(Set<InstructionDTO> instructions)
			throws DataException {
		// not used

	}

	@Override
	public void prefix(MimsyAgentDataDTO Type) throws DataException {
		
		// not used
	}

	@Override
	public void suffix(MimsyAgentDataDTO Type) throws DataException {
		
		// not used
	}

}
