package eu.dnetlib.api.utils;

import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Node;

import com.google.common.collect.Lists;

public class OpenAireDocumentPage {

	private Document doc;
	private ResponseHeader responseHeader;

	public List<String> getObjIdentifiers() {
		List<String> objIds = Lists.newArrayList();
		@SuppressWarnings("unchecked")
		List<Node> objList = doc.selectNodes("//*[local-name() = 'objIdentifier']");
		for (Node objNode : objList) {
			objIds.add(objNode.getText());
		}
		return objIds;
	}

	public boolean allWithECFundng() {
		return allWithContextId("funding", "ec");
	}

	public boolean allWithUKFundng() {
		return allWithContextId("funding", "uk");
	}

	public boolean allWithContextId(final String contextType, final String contextID) {
		@SuppressWarnings("unchecked")
		List<Attribute> fundingList = doc.selectNodes("//context[./@type='" + contextType + "']/@id");
		for (Attribute fundingId : fundingList) {
			if (!fundingId.getValue().equals(contextID)) return false;
		}
		return true;
	}

	public Document getDoc() {
		return doc;
	}

	public void setDoc(final Document doc) {
		this.doc = doc;
		this.setResponseHeader(new ResponseHeader(this.doc));
	}

	public ResponseHeader getResponseHeader() {
		return responseHeader;
	}

	public void setResponseHeader(final ResponseHeader responseHeader) {
		this.responseHeader = responseHeader;
	}

	public OpenAireDocumentPage(final Document doc) {
		super();
		setDoc(doc);
	}

}
