/**
 * 
 */
package com.ejie.ab61.adaptadores.service;

import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.namespace.QName;

import org.springframework.stereotype.Service;

import com.ejie.ab61.clientesWS.T65BDokusi.T65BFSDWSClasePort;
import com.ejie.ab61.clientesWS.T65BDokusi.T65BFSDWSClasePortQSService;
import com.ejie.ab61.comun.utilidades.config.Config;
import com.ejie.ab61.exceptions.PifException;

/**
 *  
 * 
 */
@Service(value = "T65BDokusiServiceImpl")
public class T65BDokusiServiceImpl implements T65BDokusiService {

	private final static String URL_T65BDokusi = Config.getConfigAplicacion("T56BDokusi_URL");

	private final static String QNAME = Config.getConfigAplicacion("T56BDokusi_QNAME");

	private final static String WS = Config.getConfigAplicacion("T56BDokusi_WS");

	/**
	 * Metodo que inicializa la llamada al servcio
	 * R02TramitacionIdSFirmasDocs_WS
	 * 
	 * @return T65BFSDWSClasePort
	 * 
	 * @throws PifException
	 *             PifException
	 */
	private T65BFSDWSClasePort inicializarT65BFSDWSClasePort() throws PifException {
		try {
			T65BFSDWSClasePortQSService T65BFSDWSClasePort = new T65BFSDWSClasePortQSService(
					new URL(T65BDokusiServiceImpl.URL_T65BDokusi),
					new QName(T65BDokusiServiceImpl.QNAME, T65BDokusiServiceImpl.WS));
			return T65BFSDWSClasePort.getT65BFSDWSClasePortQSPort();
		} catch (MalformedURLException e) {
			throw new PifException(e.getMessage(), e.getCause());
		} catch (Exception e) {
			throw new PifException(e.getMessage(), e.getCause());
		}
	}

	/**
	 * Método que descarga un documento en DOKUSI
	 * 
	 * @param tokenSesion
	 *            token de sesion
	 * @param auditUser
	 *            usuario
	 * @param documentID
	 *            id del documento
	 * @param keysList
	 *            lista de metadatos a devolver
	 * @param content
	 *            bean con la extension del documento a recuperar
	 * @return String: OID del documento. null si casca
	 * @throws Exception
	 *             ex
	 */
	public String retrieveDocument(String tokenSesion, String auditUser, String documentID, String keysList,
			String content) throws Exception {
		return this.inicializarT65BFSDWSClasePort().retrieveDocument(tokenSesion, auditUser, documentID, keysList,
				content);

	}

	/**
	 * 
	 * @param integrationToken
	 *            String
	 * @param auditUser
	 *            String
	 * @param content
	 *            String
	 * @param documentalType
	 *            String
	 * @param attributeList
	 *            String
	 * @return String
	 * @throws Exception
	 *             exception
	 */
	public String storeDocument(String integrationToken, String auditUser, String content, String documentalType,
			String attributeList) throws Exception {
		return this.inicializarT65BFSDWSClasePort().storeDocument(integrationToken, auditUser, content, documentalType,
				attributeList);
	}

	/**
	 * Metodo que a�ade un localizador a un documento
	 * 
	 * @param integrationToken
	 *            String
	 * @param auditUser
	 *            String
	 * @param documentID
	 *            String
	 * @param boolVersion
	 *            boolean
	 * @param boolReducir
	 *            String
	 * @param sede
	 *            String
	 * @return String
	 * @throws Exception
	 *             exception
	 */

	public String addLocatorToDocumentQR(String integrationToken, String auditUser, String documentID,
			boolean boolVersion, String boolReducir, String sede) throws Exception {

		return this.inicializarT65BFSDWSClasePort().addLocatorToDocumentQR(integrationToken, auditUser, documentID,
				boolVersion, boolReducir, sede);

	}

}
