package eu.dnetlib.contract.citation.mocks;

import java.util.Collections;
import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;

import pl.edu.icm.yadda.service2.mdi.IMetadataIndexFacade;
import pl.edu.icm.yadda.service2.mdi.MetadataIndexException;
import pl.edu.icm.yadda.tools.metadata.model.DocId;
import pl.edu.icm.yadda.tools.metadata.model.DocMetadata;
import pl.edu.icm.yadda.tools.metadata.model.DocReference;

/**
 * MDI service facade mock.
 * 
 * @author mhorst
 *
 */
public class MetaDataIndexServiceFacadeMock implements IMetadataIndexFacade {

	protected final Logger log = Logger.getLogger(this.getClass()); 
	
	@Override
	public int delete(DocId arg0) throws MetadataIndexException {
		log.info("deleting object: " + arg0);
		return 0;
	}

	@Override
	public int delete(List<DocId> arg0) throws MetadataIndexException {
		log.info("deleting objects:");
		if (arg0!=null) {
			for (DocId id : arg0) {
				log.info("object id: " + id);
			}
		}
		return 0;
	}

	@Override
	public int delete(String arg0) throws MetadataIndexException {
		log.info("deleting object for str: " + arg0);
		return 0;
	}

	@Override
	public DocMetadata fetch(DocId arg0) throws MetadataIndexException {
		log.info("fetching null object for: " + arg0);
		return null;
	}

	@Override
	public List<DocMetadata> match(DocMetadata arg0)
			throws MetadataIndexException {
		log.info("matching by returning empty list...");
		return Collections.emptyList();
	}

	@Override
	public List<DocMetadata> match(String arg0) throws MetadataIndexException {
		log.info("matching for id: " + arg0 + " by returning empty list...");
		return Collections.emptyList();
	}

	@Override
	public void matchInternal(Date arg0, Date arg1, String[] arg2)
			throws MetadataIndexException {
		log.info("performing internal matching...");
	}

	@Override
	public DocReference parseReference(String arg0)
			throws MetadataIndexException {
		log.info("returning null after parsing reference: " + arg0);
		return null;
	}

	@Override
	public DocMetadata saveOrUpdate(DocMetadata arg0)
			throws MetadataIndexException {
		log.info("performing saveOrUpdate");
		return null;
	}

	@Override
	public void saveOrUpdate(List<DocMetadata> arg0)
			throws MetadataIndexException {
		log.info("performing batch saveOrUpdate");
	}

	@Override
	public void checkVersion() {
		// TODO Auto-generated method stub
	}

}
