/**
 * 
 */
package eu.dnetlib.data.collective.manager.log;

import java.io.IOException;
import java.io.StringWriter;
import java.util.Properties;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.Term;

/**
 * @author js
 *
 */
public class GenericInfoWriter extends AbstractIndexWriter {
	
	protected static String fieldId = "id";
	protected static String fieldProperties = "properties";


	/**
	 * @param instanceId
	 * @param aProperties
	 * @return
	 * @throws IOException
	 */
	protected Document getDocument(String instanceId, Properties aProperties) throws IOException{
		StringWriter writer = new StringWriter();
		aProperties.store(writer, "");
		Document doc = new Document();
		doc.add(new Field(fieldId, instanceId, Field.Store.YES, Field.Index.NOT_ANALYZED));
		doc.add(new Field(fieldProperties, writer.toString(), Field.Store.YES, Field.Index.NO));
 		writer.close();
		return doc;
	}
	
	/**
	 * stores properties of an instance identified by instanceId
	 * @param instanceId
	 * @param aProperties
	 * @throws IOException
	 */
	public void store(String instanceId, Properties aProperties) throws IOException{
		Document doc = getDocument(instanceId, aProperties);
		Term term = new Term(fieldId, instanceId );
		indexWriter.updateDocument(term, doc);
		indexWriter.optimize();
		indexWriter.close();
	}

}
