/**
 * Copyright 2008-2009 DRIVER PROJECT (ICM UW)
 * Original author: Marek Horst
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package eu.dnetlib.data.index.ws.dataprov;

import org.apache.log4j.Logger;

import pl.edu.icm.yadda.service.search.searching.SearchResults;

/**
 * Data  provider search properties.
 * @author mhorst
 *
 */
public class DataProviderSearchProperties extends DataProviderProperties {
	
	protected static final Logger log = Logger.getLogger(DataProviderSearchProperties.class);

	public static final String INDEX_IDS_ALL = "ALL";
	
	private String[] indexIds;
	
	private String cqlQuery;
	
	private String[] sruClauses;
	
	private String mdFormatId;
	
	private String layoutId;
	
	private SearchResults cache;
	
	/**
	 * Number of results is set in constructor only.
	 */
	private int numberOfResults;
	
	/**
	 * Default constructor.
	 * @param expiryTime
	 */
	public DataProviderSearchProperties(int expiryTime, SearchResults cache) {
		super(expiryTime);
		this.cache = cache;
		if (cache!=null)
			this.numberOfResults = cache.getCount();
		else
			log.error("got null cache in constructor, cannot set valid numberOfResults!");
	}

	/* (non-Javadoc)
	 * @see eu.dnetlib.data.index.ws.dataprov.DataProviderProperties#getNumberOfResults()
	 */
	@Override
	public int getNumberOfResults() {
		return numberOfResults;
	}
	
	/* (non-Javadoc)
	 * @see eu.dnetlib.data.index.ws.dataprov.DataProviderProperties#getType()
	 */
	@Override
	Type getType() {
		return Type.SEARCH;
	}
	
	public String getCqlQuery() {
		return cqlQuery;
	}

	public void setCqlQuery(String cqlQuery) {
		this.cqlQuery = cqlQuery;
	}

	public String[] getIndexIds() {
		return indexIds;
	}

	public void setIndexIds(String[] indexIds) {
		this.indexIds = indexIds;
	}

	public String[] getSruClauses() {
		return sruClauses;
	}

	public void setSruClauses(String[] sruPart) {
		this.sruClauses = sruPart;
	}

	public SearchResults getCache() {
		return cache;
	}

	public void setCache(SearchResults cache) {
		this.cache = cache;
	}

	public String getLayoutId() {
		return layoutId;
	}

	public void setLayoutId(String layoutId) {
		this.layoutId = layoutId;
	}

	public String getMdFormatId() {
		return mdFormatId;
	}

	public void setMdFormatId(String mdFormatId) {
		this.mdFormatId = mdFormatId;
	}

}
