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.MimsyDataDTO;
import com.k_int.aggr2.mimsy.data.MimsyPlaceDataDTO;
import com.k_int.aggr2.mimsy.data.PlaceVariationDTO;
import com.k_int.aggr2.mimsy.data.conversion.AbstractPlaceFormatConverter;
import com.k_int.mimsy.ref.DataException;

public class SolrPlaceConverter extends AbstractPlaceFormatConverter {
	private SolrInputDocument doc;
	private Properties solr_props;
	
	public SolrPlaceConverter(SolrInputDocument doc, Properties solr_props)
	{
		this.doc=doc;
		this.solr_props=solr_props;
	}
	@Override
	public void convertVariations(Set<PlaceVariationDTO> variations)
			throws DataException {
		if(variations.size()==0)
			return;
		
    	Iterator<PlaceVariationDTO> i = variations.iterator();
    	while(i.hasNext())
    	{
    		PlaceVariationDTO pair = i.next();
    		
    		convert("mo:variation",pair.getText());
    		String type="undefined";
    		if(pair.getType()!=null)
    			type=pair.getType();
    		convert("mo:variationType",type);
    	
    		type="undefined";
    		if(pair.getNote()!=null)
    			type=pair.getNote();
    		convert("mo:variationNote",type);
    		type="undefined";
    		if(pair.getStart()!=null)
    			type=pair.getStart();
    		convert("mo:variationStart",type);
    		type="undefined";
    		if(pair.getEnd()!=null)
    			type=pair.getEnd();
    		convert("mo:variationEnd",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(MimsyPlaceDataDTO Type) throws DataException {
		// not used

	}

	@Override
	public void suffix(MimsyPlaceDataDTO Type) throws DataException {
		// not used

	}

}
