/*
 * Created on Jun 17, 2004
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package pe.gob.sunat.despaduanero.pdjava;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.*;

//weblogic.jar
import javax.xml.namespace.QName;
//webserviceclient+ssl.jar
import javax.xml.rpc.ParameterMode;
//axis.jar de apache
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;

/**
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class ClienteWebServicesPD {
	public static void main(String[] args)	{
		try	{	
			System.out.println("Iniciando llamda a los WS del Portafolio de Documentos ");
			enviaArchivoWebService();
			enviaArchivoWebService();
			enviaArchivoWebService();
			enviaArchivoWebService();
		}
		catch(Exception e)	{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static boolean enviaArchivoWebService()
	{
		String response = null;
		boolean ok = true;
		int i=10;
		try
		{
			
			String ctipo 	= "A" ; 
			String ccodigo   = "0091"; 
			String cclave    = "XXXX";
			String caduana   = "118";
			String cnombre  = "C:/ArchivodePrueba.zipp";

			FileInputStream fis = new FileInputStream(cnombre);
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			int c = 0;			
			while((c = fis.read()) != -1){
				baos.write(c);
			}			
			fis.close();
			byte[] byteReturn = baos.toByteArray();
			baos.close();
			
			byte[] recibeArchivoBytes =  new byte[64];
			recibeArchivoBytes = byteReturn;
			
			String method = "enviaArchivoWebService";
			String url = "http://www.aduanet.gob.pe/ws-ad-pd/ws-ad-pd";
			
			Service	service = new Service();
			Call	call    = (Call) service.createCall();
			QName	qnamer	= new QName("urn:ws-ad-pd", "ws-ad-pd");
			call.setTargetEndpointAddress( new java.net.URL(url) );
	
			call.setOperationName(method);
			call.addParameter( "toperador",  	XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "operador", 		XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "clave", 		XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "aduana", 		XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "archivoEnvioByte"	, XMLType.XSD_BASE64, ParameterMode.IN );			
			call.addParameter( "nombreArchivo", XMLType.XSD_STRING, ParameterMode.IN );
			call.setReturnType(XMLType.XSD_STRING);

			response = (String) call.invoke(new Object[] {ctipo,ccodigo,cclave,caduana,recibeArchivoBytes,cnombre});
			System.out.println("Metodo :"+method+" : "+response);
			//Se obtendra el nombre del archivo generado 000000518 
		}
		catch(Exception e)		{
			ok = false;
			e.printStackTrace(System.out);
		}finally{
		
		}
		return ok ;	
		
	}
	public static boolean obtieneArchivoRpta()	{
		String response = null;
		boolean ok = true;
		try	{
			String ctipo 	= "A" ; 
			String ccodigo   = "0091"; 
			String cclave    = "XXXX";
			String caduana   = "118";
			String cnombre  = "000000518";
			String ano	= "2005";
			byte[] recibeArchivoBytes = null;
			
			String method = "obtieneArchivoRpta";
			String url = "http://www.aduanet.gob.pe/ws-ad-pd/ws-ad-pd";
			
			Service	service = new Service();
			Call	call    = (Call) service.createCall();
			QName	qnamer	= new QName("urn:ws-ad-pd", "ws-ad-pd");
			call.setTargetEndpointAddress( new java.net.URL(url) );
				
			call.setOperationName(method);
			call.addParameter( "toperador",  XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "operador", XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "clave", XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "aduana", XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "ano", XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "NroEnvioGenerado", XMLType.XSD_STRING, ParameterMode.IN );
			call.setReturnType(XMLType.XSD_BASE64);
	
			recibeArchivoBytes = (byte[]) call.invoke(new Object[] {ctipo,ccodigo,cclave,caduana,ano,cnombre});
			System.out.println("imprime resul WS:"+recibeArchivoBytes);

			try{
				OutputStream out= new FileOutputStream("c:/tmp/rpta"+cnombre+".zip");
				out.write(recibeArchivoBytes );
				out.close();
			}catch (Exception ex){
				ok= false;
				System.out.println( "el  error es "+ex);
			} finally {				
			}
		}
		catch(Exception e)		{
			ok= false;
			e.printStackTrace(System.out);
		}finally{
		
		}
		return ok ;			
	}

	public static boolean verificaDatadoManifiesto()	{
		String response = null;
		boolean ok = true;
		try	{			
			String aduana   = "118";
			String anomc  	= "2005";
			String numeromc	= " 2959";
			String conoembar 	= "CNSHK03429" ; 
			String viatrans  = "1"; 
			String tipomani   = "M";
			
			String method = "verificaDatadoManifiesto";
			String url = "http://www.aduanet.gob.pe/ws-ad-pd/ws-ad-pd";
			
			Service	service = new Service();
			Call	call    = (Call) service.createCall();
			QName	qnamer	= new QName("urn:ws-ad-pd", "ws-ad-pd");
			call.setTargetEndpointAddress( new java.net.URL(url) );
				
			call.setOperationName(method);
			call.addParameter( "aduana",  XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "anomc", XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "numeromc", XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "conoembar", XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "viatrans", XMLType.XSD_STRING, ParameterMode.IN );
			call.addParameter( "tipomani", XMLType.XSD_STRING, ParameterMode.IN );
			call.setReturnType(XMLType.XSD_STRING);
	
			response = (String) call.invoke(new Object[] {aduana,anomc,numeromc,conoembar,viatrans,tipomani});
			System.out.println("Cadena de Manifiesto:"+response);
		}
		catch(Exception e)		{
			ok= false;
			e.printStackTrace(System.out);
		}finally{
		
		}
		return ok ;			
	}

	public static boolean verificaRUC()	{
		String response = null;
		boolean ok = true;
		
		try	{
			String ruc	= "10062558437";
			String method = "verficaRUC";
			String url = "http://www.aduanet.gob.pe/ws-ad-pd/ws-ad-pd";
			
			Service	service = new Service();
			Call	call    = (Call) service.createCall();
			QName	qnamer	= new QName("urn:ws-ad-pd", "ws-ad-pd");
			call.setTargetEndpointAddress( new java.net.URL(url) );
				
			call.setOperationName(method);
			call.addParameter( "ruc",  XMLType.XSD_STRING, ParameterMode.IN );
			call.setReturnType(XMLType.XSD_STRING);
	
			response = (String) call.invoke(new Object[] {ruc});
			System.out.println("Resultado RUC en estado:"+response);
		}
		catch(Exception e)		{
			ok= false;
			e.printStackTrace(System.out);
		}finally{
		
		}
		return ok ;	
	}
}