package gov.ca.edd;

import java.io.File;
import java.io.FileInputStream;
import java.util.Calendar;
import java.util.GregorianCalendar;

import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.ConfigurationContextFactory;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.transport.http.HttpTransportProperties;
import org.apache.xmlbeans.XmlObject;


import gov.irs.www.a2a.mef.meftransmitterservicewse_xsd.SendSubmissionsRequestType;
import gov.irs.www.a2a.mef.meftransmitterservicewse_xsd.SubmissionDataListType;
import gov.irs.www.efile.TransmissionAcknowledgementType;
import gov.irs.www.efile.TransmissionHeaderType;
import gov.irs.www.efile.impl.TransmissionHeaderTypeImpl;
import gov.ca.edd.SendSubmissionsDocument.SendSubmissions;
import gov.ca.edd.impl.*;




public class testEDD {

	public byte[] readfile (String path) throws Exception {
		File f = new File(path);  
		byte[] filecontent = new byte[(int)f.length()];
		/* read the file */
		FileInputStream fi = new FileInputStream(f);
		System.out.println("number of bytes allocated " + filecontent.length);
		int n = fi.read(filecontent);
		System.out.println("number of bytes read " + n);
		System.out.println("Length of byte array " + filecontent.length);
		
		return filecontent;
		
	   }
	public static void main(String[] args) throws Exception{
		testEDD edd = new testEDD();
		ConfigurationContextFactory cf = new ConfigurationContextFactory();
		ConfigurationContext c =  cf.createEmptyConfigurationContext();
		c.setProperty("WSAddressingVersion", "http://schemas.xmlsoap.org/ws/2004/08/addressing");
		FsetServiceStub caledd = new FsetServiceStub(c,"http://fsettestprod.edd.ca.gov/fsetproxy/fsetservice.asmx");
		
		//FsetServiceStub caledd = new FsetServiceStub(c,"http://localhost:1002/fsetproxy/fsetservice.asmx");
		ServiceClient serviceclient=caledd._getServiceClient();
        HttpTransportProperties.Authenticator basicAuthentication = new HttpTransportProperties.Authenticator();
        basicAuthentication.setUsername("c2007");
        basicAuthentication.setPassword("2007");

		Options o =serviceclient.getOptions();
        o.setProperty(HTTPConstants.AUTHENTICATE, basicAuthentication);
        
        serviceclient.setOptions(o);


		SendSubmissionsDocument sd = SendSubmissionsDocument.Factory.newInstance();
		
		
		SendSubmissions ss = SendSubmissions.Factory.newInstance();
		File submission = new File("c:/work/submission.txt");
		File datalistf = new File("C:/work/datalistf.txt");
		
		SendSubmissionsRequestType type = SendSubmissionsRequestType.Factory.parse(submission);
		SubmissionDataListType datalist=SubmissionDataListType.Factory.parse(datalistf);
		type.setSubmissionDataList(datalist);
		ss.setSendSubmissionsRequest(type);
		ss.setFileBytes(edd.readfile("c:/work/BestNASWA.txt"));
		
		
		System.out.println("filebyte: " + ss.isSetFileBytes());
		System.out.println("SubmissionRequest: " + ss.isSetSendSubmissionsRequest());
		
		System.out.println("datalist " + type.isSetSubmissionDataList());
		
		System.out.println("validate : " +  type.validate());
		
		
		
		
		
        
		sd.setSendSubmissions(ss);
		
		
		
		/*Initiate the header*/
		FsetServiceHeaderDocument f = FsetServiceHeaderDocument.Factory.newInstance();
		FsetServiceHeader fh = FsetServiceHeader.Factory.newInstance();
		
		
		File xmlfile = new File("C:/work/header.txt");
		TransmissionHeaderType t = TransmissionHeaderType.Factory.parse(xmlfile);
		
		System.out.println(t.toString());
		
		
		
		File file= new File("c:/work/BestNASWA.txt");
		
		byte[] b = new byte[(int)file.length()];
		
		b=	sd.getSendSubmissions().getFileBytes();
		System.out.println("file " + new String (b));
		
		fh.setHeaderData(t);
		System.out.println(fh.isSetHeaderData());
		//System.out.println("submission: " +sd.isNil());
		
		f.setFsetServiceHeader(fh);
	    System.out.println("header : " +f.isNil());
	    System.out.println("sd : " + sd.isNil());
		caledd.SendSubmissions(sd,f);
		
		
		
	}

}
