
import org.apache.xmlbeans.*;
import java.net.URL;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.util.*;


    


public class BRUpdater
{

  private static oasisNamesTcSPML10.AddRequest addOpId (oasisNamesTcSPML10.AddRequest addreq , String mdName,
                                      String mdValue ) 
{

    oasisNamesTcSPML10.Attributes attr = addreq.addNewOperationalAttributes();
    oasisNamesTcDSML20Core.DsmlAttr dattr = attr.addNewAttr();
    dattr.setName(mdName.toString());
    oasisNamesTcDSML20Core.DsmlValue dval = oasisNamesTcDSML20Core.DsmlValue.Factory.newInstance();
    String s = new String (mdValue);
    dval.setObjectValue(s); 
    dattr.addValue(dval);
    return addreq;

}


	
private static oasisNamesTcSPML10.AddRequest addattr (oasisNamesTcSPML10.AddRequest addreq , String mdName,
                                      String mdValue ) 
{

    oasisNamesTcSPML10.Attributes attr = addreq.addNewAttributes();
    oasisNamesTcDSML20Core.DsmlAttr dattr = attr.addNewAttr();
    dattr.setName(mdName.toString());
    oasisNamesTcDSML20Core.DsmlValue dval = oasisNamesTcDSML20Core.DsmlValue.Factory.newInstance();
    String s = new String (mdValue);
    dval.setObjectValue(s); 
    dattr.addValue(dval);
    return addreq;

}


private static  oasisNamesTcSPML10.BatchRequest addreq1 ( oasisNamesTcSPML10.BatchRequest newBR )
{

    oasisNamesTcSPML10.AddRequest  newAddRequest = newBR.addNewAddRequest();
    String mdName = new String("method name");
    String mdValue = new String("create_new_btc_user");
    
    newAddRequest = addOpId(newAddRequest, mdName, mdValue);

    mdName = "objectclass";
    mdValue = "BTCUser";
    newAddRequest = addattr(newAddRequest,mdName, mdValue);


    mdName = "indivudal:title";
    mdValue = "Mr";
    newAddRequest = addattr(newAddRequest,mdName, mdValue);

    mdName = "indivudal:firstname";
    mdValue = "John";
    newAddRequest = addattr(newAddRequest,mdName, mdValue);

    mdName = "indivudal:surname";
    mdValue = "Smith";
    newAddRequest = addattr(newAddRequest,mdName, mdValue);

    mdName = "user_global_profile:contact_email_address";
    mdValue = "john.smith@talk21.com";
    newAddRequest = addattr(newAddRequest,mdName, mdValue); 

    return newBR;
  
}

private static  oasisNamesTcSPML10.BatchRequest addreq2 ( oasisNamesTcSPML10.BatchRequest newBR )
{

   oasisNamesTcSPML10.AddRequest  newAddRequest = newBR.addNewAddRequest();
	String  mdName = new String("method name");
	String  mdValue = new String("create_new_btc_user");
    
    newAddRequest = addOpId(newAddRequest, mdName, mdValue);

    mdName = "objectclass";
    mdValue = "ProfileIdentity";
    newAddRequest = addattr(newAddRequest,mdName, mdValue);


    mdName = "identifier:identifier_value";
    mdValue = "john.smith@btinternet.comr";
    newAddRequest = addattr(newAddRequest,mdName, mdValue);

    mdName = "identifier:identifier_type";
    mdValue = "EMailAddress";
    newAddRequest = addattr(newAddRequest,mdName, mdValue);

    mdName = "identifier:domain";
    mdValue = "BTC";
    newAddRequest = addattr(newAddRequest,mdName, mdValue);
    return newBR;
  
}



private static  oasisNamesTcSPML10.BatchRequest addreq3 ( oasisNamesTcSPML10.BatchRequest newBR )
{

    oasisNamesTcSPML10.AddRequest  newAddRequest = newBR.addNewAddRequest();
 	String mdName = new String("method name");
	String mdValue = new String("create_new_btc_user");
    
    newAddRequest = addOpId(newAddRequest, mdName, mdValue);

    mdName = "objectclass";
    mdValue = "ProfileCredential";
    newAddRequest = addattr(newAddRequest,mdName, mdValue);


    mdName = "credential:credential";
    mdValue = "pass123";
    newAddRequest = addattr(newAddRequest,mdName, mdValue);

    mdName = "credential:credential_type";
    mdValue = "password";
    newAddRequest = addattr(newAddRequest,mdName, mdValue);

    mdName = "credential:domain";
    mdValue = "BTC";
    newAddRequest = addattr(newAddRequest,mdName, mdValue);


    return newBR;
  
}




public static void main(String[] args)
    {
try {

	   String endpoint =
            "http://localhost:8080/axis/services/SPMLRequestPortType";
 
        Service  service = new Service();
        Call     call    = (Call) service.createCall();

  
        call.setTargetEndpointAddress( new java.net.URL(endpoint) );
        call.setOperationName(new QName("http://localhost:7001/SPMLRequest"));
  

	   oasisNamesTcSPML10.BatchRequestDocument newBRDoc = oasisNamesTcSPML10.BatchRequestDocument.Factory.newInstance();
	    oasisNamesTcSPML10.BatchRequest  newBR = newBRDoc.addNewBatchRequest();
	    System.out.println("out5");
	    newBR= addreq1(newBR);
	    newBR= addreq2(newBR);
	    newBR= addreq3(newBR);

        String ret = (String) call.invoke( "SPMLBatchRequest", new Object[] { newBR.toString() } );

	    System.out.println(newBRDoc.toString());
   
	} catch (javax.xml.rpc.ServiceException e) {
	System.out.println("out13");

	 }catch (java.rmi.RemoteException f) {
	System.out.println(f.toString());
	}
	catch (java.net.MalformedURLException e) {
	System.out.println("out15");
	}

	}
}