package spartime.code;
import java.util.Iterator;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.transport.http.HttpTransportProperties;
public class EncodeurSpartimeClient {
private static OMFactory fac = OMAbstractFactory.getOMFactory();
private static OMNamespace omNs = fac.createOMNamespace("code.spartime.com", "tns");
private EndpointReference targetEPR;
private ServiceClient sender;
public EncodeurSpartimeClient(String endPointReference, String userName, String password) throws AxisFault{
targetEPR = new EndpointReference(endPointReference);
Options options = new Options();
HttpTransportProperties.Authenticator auth = new HttpTransportProperties.Authenticator();
auth.setUsername(userName);
auth.setPassword(password);
options.setProperty(HTTPConstants.AUTHENTICATE, auth);
options.setTo(targetEPR);
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
(sender = new ServiceClient()).setOptions(options);
}
public boolean setCryptoParameters(String key, int iv, String profil, int base) throws AxisFault{
return ("true".equals(call("setCryptoParameters",new Object[]{key,new Integer(iv),profil,new Integer(base)})));
}
public String getCodeGestionnaire(String userName) throws AxisFault{
return call("getCodeGestionnaire",new Object[]{userName});
}
public String getCodeInstallateur(String ISODate,String userName) throws AxisFault{
return call("getCodeInstallateur",new Object[]{ISODate,userName});
}
public String getCodeDateADate(String ISOStart, String ISOEnd, boolean unique, int command,String userName) throws AxisFault{
return call("getCodeDateADate",new Object[]{ISOStart,ISOEnd, new Boolean(unique),new Integer(command),userName});
}
public String getCodeFonctionAddOpposition(String code,String userName) throws AxisFault{
return call("getCodeFonctionAddOpposition",new Object[]{code,userName});
}
public String getCodeFonctionDelOpposition(String code,String userName) throws AxisFault{
return call("getCodeFonctionDelOpposition",new Object[]{code,userName});
}
public String getCodeFonctionAddPerso(String code, int command,String userName) throws AxisFault{
return call("getCodeFonctionAddPerso",new Object[]{code,new Integer(command),userName});
}
public String getCodeFonctionDelPerso(String code,String userName) throws AxisFault{
return call("getCodeFonctionDelPerso",new Object[]{code,userName});
}
public String getCodeFonctionDelActivite(int activite,String userName) throws AxisFault{
return call("getCodeFonctionDelActivite",new Object[]{new Integer(activite),userName});
}
public String getCodeFonctionAddCreneau(int activite, int start, int end,String userName) throws AxisFault{
return call("getCodeFonctionAddCreneau",new Object[]{new Integer(activite),new Integer(start),new Integer(end),userName});
}
public String getCodeFonctionModCreneau(int creneau, int start, int end,String userName) throws AxisFault{
return call("getCodeFonctionModCreneau",new Object[]{new Integer(creneau),new Integer(start),new Integer(end),userName});
}
public String getCodeFonctionDelCreneau(int creneau,String userName) throws AxisFault{
return call("getCodeFonctionDelCreneau",new Object[]{new Integer(creneau),userName});
}
public String getCodeFonctionSetDateTime(String ISODate,String userName) throws AxisFault{
return call("getCodeFonctionSetDateTime",new Object[]{ISODate,userName});
}
public String getCodePeriodiqueJourV2(int user, String ISOStart, int duration, int nbTrimestres, int joursActifs, int command,String userName) throws AxisFault{
return call("getCodePeriodiqueJourV2",new Object[]{new Integer(user),ISOStart,new Integer(duration),new Integer(nbTrimestres),new Integer(joursActifs),new Integer(command),userName});
}
public String getCodeInstantane(String ISODate, int delta, boolean unique, int command,String userName) throws AxisFault{
return call("getCodeInstantane",new Object[]{ISODate, new Integer(delta), new Boolean(unique), new Integer(command),userName});
}
public String getCodeHeure(String ISODateStart, String ISODateEnd, int user, boolean unique, int command,String userName) throws AxisFault{
return call("getCodeHeure",new Object[]{ISODateStart, ISODateEnd, new Integer(user), new Boolean(unique), new Integer(command),userName});
}
public String getCodeJour(String ISODateStart, String ISODateEnd, int user, boolean unique, int command,String userName) throws AxisFault{
return call("getCodeJour",new Object[]{ISODateStart, ISODateEnd, new Integer(user), new Boolean(unique), new Integer(command),userName});
}
public String getCodeMois(String ISODateStart, int nbMonth, int user, boolean unique, int command,String userName) throws AxisFault{
return call("getCodeMois",new Object[]{ISODateStart, nbMonth, new Integer(user), new Boolean(unique), new Integer(command),userName});
}
public void addCodeQR(int serial, String code) throws AxisFault{
call("addCodeQR",new Object[]{serial, code});
}
public void dropCodesQR() throws AxisFault{
call("dropCodesQR",new Object[]{});
}
public String getQRCode(String... userName) throws AxisFault{
return userName==null ? call("getQRCode",new Object[]{}) : call("getQRCode",new Object[]{userName[0]}) ;
}
public String getSerialFromCryptog(String cryptogramme) throws AxisFault{
return call("getSerialFromCryptog",new Object[]{cryptogramme});
}
@SuppressWarnings("unchecked")
public String[] getCryptoParametersFromShortKey(String shortKey) throws AxisFault{
OMElement method = fac.createOMElement("getCryptoParametersFromShortKey", omNs);
OMElement OMArg = fac.createOMElement("arg0", omNs);
OMArg.addChild(fac.createOMText(OMArg,shortKey));
method.addChild(OMArg);
Iterator<OMElement> it = sender.sendReceive(method).getChildElements();
String[] result = new String[3];
result[0] = it.next().getText();
result[1] = it.next().getText();
result[2] = it.next().getText();
return result;
}
private String call(String methodName, Object[] args) throws AxisFault{
OMElement method = fac.createOMElement(methodName, omNs);
for(int i=0;i<args.length;i++){
OMElement OMArg = fac.createOMElement("arg"+i, omNs);
OMArg.addChild(fac.createOMText(OMArg,(args[i]).toString()));
method.addChild(OMArg);
}
return sender.sendReceive(method).getFirstElement().getText();
}
public static void main(String[] args){
try {
EncodeurSpartimeClient client = new EncodeurSpartimeClient("https://code.spartime.com/axis2/services/EncodeurSpartimeService?wsdl","test","test");
client.setCryptoParameters("0114A25205990CF5D2E6D7628036192B", 1, "0202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202", 14);
System.err.println("Serial(cryptog) = " + client.getSerialFromCryptog("021572"));
System.err.println("Code gestionnaire = " + client.getCodeGestionnaire("Jean Dupont"));
System.err.println("Code installateur = " + client.getCodeInstallateur("20081231T0000","Jean Dupont"));
System.err.println("Code de date à date = " + client.getCodeDateADate("20080223T0000", "20090707T2359", false, 1,"Jean Dupont"));
System.err.println("Code fonction ajout d'opposition = " + client.getCodeFonctionAddOpposition("12345678","Jean Dupont"));
System.err.println("Code fonction suppression d'opposition = " + client.getCodeFonctionDelOpposition("123456","Jean Dupont"));
System.err.println("Code fonction ajout d'un code perso = " + client.getCodeFonctionAddPerso("1234", 1,"Jean Dupont"));
System.err.println("Code fonction suppression d'un code perso = " + client.getCodeFonctionDelPerso("1234","Jean Dupont"));
System.err.println("Code fonction suppression d'une activité = " + client.getCodeFonctionDelActivite(0,"Jean Dupont"));
System.err.println("Code fonction ajout d'un é = " + client.getCodeFonctionAddCreneau(0, 0, 671,"Jean Dupont"));
System.err.println("Code fonction modification d'un créneau = " + client.getCodeFonctionModCreneau(0, 0, 671,"Jean Dupont"));
System.err.println("Code fonction suppression d'un créneau = " + client.getCodeFonctionDelCreneau(0,"Jean Dupont"));
System.err.println("Code fonction mise à l'heure = " + client.getCodeFonctionSetDateTime("20081231T1400","Jean Dupont"));
System.err.println("Code périodique jour V2 = " + client.getCodePeriodiqueJourV2(0,"20080101T0800",10,3,3,1,"Jean Dupont"));
System.err.println("Code périodique jour V2 = " + client.getCodePeriodiqueJourV2(0,"20080101T0800",10,2,3,1,"Jean Dupont"));
System.err.println("Code périodique jour V2 = " + client.getCodePeriodiqueJourV2(0,"20080101T0800",10,1,3,1,"Jean Dupont"));
System.err.println("Code périodique jour V2 = " + client.getCodePeriodiqueJourV2(0,"20080101T0800",10,0,3,1,"Jean Dupont"));
System.err.println("Code instantané = " + client.getCodeInstantane("20090102T1427",1,false,3,"Jean Dupont"));
System.err.println("Code 1 heure = " + client.getCodeHeure("20090827T1400","20090827T1459",1,false,3,"Jean Dupont"));
System.err.println("Code 2 heures = " + client.getCodeHeure("20090827T1500","20090827T1659",1,false,3,"Jean Dupont"));
System.err.println("Code 24 heures = " + client.getCodeHeure("20090827T1500","20090828T1459",1,false,3,"Jean Dupont"));
System.err.println("Code 1/2 journée = " + client.getCodeJour("20090827T1200","20090827T2359",1,false,3,"Jean Dupont"));
System.err.println("Code 1/2 journée = " + client.getCodeJour("20090827T0000","20090827T1159",1,false,3,"Jean Dupont"));
System.err.println("Code 1 jour = " + client.getCodeJour("20090827T0000","20090827T2359",1,false,3,"Jean Dupont"));
System.err.println("Code 31 jours = " + client.getCodeJour("20090801T0000","20090831T2359",1,false,3,"Jean Dupont"));
System.err.println("Code 12 mois = " + client.getCodeMois("20030101T0000",12,0,false,1,"Jean Dupont"));
System.err.println("Code de mise à l'heure = " + client.getCodeFonctionSetDateTime("20100112T0910","Jean Dupont"));
System.err.println("Code de Date à Date = " + client.getCodeDateADate("20080223T0000", "20090707T2359", false, 1,"Jean Dupont"));
client.dropCodesQR();
client.addCodeQR(1,"123456");
client.addCodeQR(1,"234567");
client.addCodeQR(1,"345678");
client.addCodeQR(2,"456789");
client.addCodeQR(2,"567890");
client.addCodeQR(3,"123789");
System.err.println("QRCode = " + client.getQRCode("Jean Dupont"));
} catch (Exception e) {
e.printStackTrace();
}
}
}