package com.ejie.ad74a.ws.client.documentum.service;

import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ejie.ad74a.exceptions.ManagerErrors;
import com.ejie.ad74a.model.DocumentoPapel0;
import com.ejie.ad74a.util.comun.UtilSeguridad;
import com.ejie.ad74a.util.comun.UtilTokenXlnets;
import com.ejie.ad74a.ws.client.documentum.X97DistributionWebServiceImpl;
import com.ejie.ad74a.ws.client.dokusi.service.DokusiXMLBeanParserConverter;
import com.ejie.t65.jaxb.beans.fsd.T65DocumentListType;
import com.ejie.t65.jaxb.beans.fsd.T65DocumentType;

@Service(value = "DocumentumService")
public class DocumentumServiceImpl implements DocumentumService {

	/**
	 * Final static logger.
	 */
	private static final Logger logger = LoggerFactory.getLogger(DocumentumServiceImpl.class);

	@Autowired()
	private X97DistributionWebServiceImpl x97DistributionWebServiceImpl;

	@Autowired
	private Properties appConfiguration;

	/**
	 * Clase que adaptara los servicios de Dokusi a nuestro sistema
	 */
	private DocumentumServiceImpl() {
		super();
	}

	@Override
	public T65DocumentType descargarDocumentoDocumentum(DocumentoPapel0 doc) {

		T65DocumentListType document = null;
		try {

			String strToken = UtilTokenXlnets.getTokenStringXLNets(com.ejie.ad74a.constantes.Constantes.COD_APLICACION);
			String strAuditUser = UtilSeguridad.getAuditUser();

			String rutaPif = this.appConfiguration.getProperty("webservice.dokusi.pif.dir");

			StringBuffer listaDocs = new StringBuffer();
			listaDocs.append("<documentIDList><documentID><id>");
			listaDocs.append(doc.getOidDocumento13());
			listaDocs.append("</id></documentID></documentIDList>");

			StringBuffer listaPif = new StringBuffer();
			listaPif.append("<contentList><content><pifId>");
			listaPif.append(rutaPif);
			listaPif.append("</pifId></content></contentList>");

			String resultado = this.x97DistributionWebServiceImpl.retrieveRegistryDocuments(strToken, strAuditUser,
					listaDocs.toString(), "", listaPif.toString());

			document = DokusiXMLBeanParserConverter.parseToT65BDocumentList(resultado);

		} catch (Exception e) {
			ManagerErrors.manageException(e, "Error al descargar el documento descargarDocumentoDokusi");
		}
		return document.getDocumentArray(0);
	}

}