Voici un fiche très pratique pour un débutant comme un développeur confirmé. Elle récapitule la liste des accesseurs aux différents élément d'une page html en jQuery:
C'est vraiment la base de jQuery, mais ce sont 6 pages indispensables :)
vendredi 26 février 2010
vendredi 5 février 2010
Générer ses classes java à partir de l'enterprise.wsdl de Salesforce avec Axis 2
Voici un méthode que j'avais posté il y a quelques temps sur les forum de Salesforce pour générer des classes Java à partir du fichier enterprise.wsdl et axis 2 sous windows. J'utilise wsdl2java pour générer les classes.
Ajoutez Java et Axis à votre path, par exemple:
puis, créez un répertoire pour placer vos données. Dans ce répertoire vous pouvez mettre un sous-répertoire pour placer votre WSDL. Puis lancez cette commande:
bien entendu:
- "wsdl/enterprise.wsdl" est le chemin relatif de mon WSDL
- "com.salesforce.webservice" est le nom du package qui contiendra les classes générées
- "generated/Salesforce" est le sous-répertoire qui contiendra les classes du package
Dans mon exemple, a un sous-rpertoire Salesforce est créé dans le répertoire "generated". Il contient:
- [src] qui contient les classes générées
- [resources] qui contient les ressources nécessaires à la connexion avec Salesforce
- [test] qui contient des classes de tests
Empaquetez le contenu du répertoire resources (pas le répertoire lui-même) dans un fichier .jar.
Compilez les classes contenues dans src, et empaquetez-les dans un fichier du nom de salesforce.jar (par exemple).
Ensuite, il vous faut intégrer resources.jar, salesforce.jar et les bibliothèques Axis2 à votre classpath. Pour cela, chacun sa méthode, moi j'utilise Eclipse (pour générer salesforce.jar aussi).
Et voici mon implémentation java:
Voici le constructeur pour mon objet de session Salesforce:
ainsi que ma méthode de requètes:
pareil pour l'insertion en base:
et la mise-à-jour de champs:
ou la suppression de champs:
Comme vous pouvez le voir, c'est un peu le même bateau pour chaque méthode.
En espérant vous avoir aidé. Mon post original sur le forum communautaire de Salesforce: http://community.salesforce.com/sforce/board/message?board.id=JAVA_development&message.id=6728#M6728 N'hésitez pas à consulter le site de Salfesforce pour plus d'informations sur les évolutions de la solution : www.salesforce.com/fr
Ajoutez Java et Axis à votre path, par exemple:
JAVA_HOME = C:\Program Files\Java\jdk1.6.0_07 AXIS2_HOME = Q:\SalesForce\WSDL2JAVA_Generation\axis2-1.4.1-bin\axis2-1.4.1
puis, créez un répertoire pour placer vos données. Dans ce répertoire vous pouvez mettre un sous-répertoire pour placer votre WSDL. Puis lancez cette commande:
%AXIS2_HOME%/bin/wsdl2java -t -uri wsdl/enterprise.wsdl -l java -d xmlbeans -p com.salesforce.webservice -sn SforceService -o generated/Salesforce
bien entendu:
- "wsdl/enterprise.wsdl" est le chemin relatif de mon WSDL
- "com.salesforce.webservice" est le nom du package qui contiendra les classes générées
- "generated/Salesforce" est le sous-répertoire qui contiendra les classes du package
Dans mon exemple, a un sous-rpertoire Salesforce est créé dans le répertoire "generated". Il contient:
- [src] qui contient les classes générées
- [resources] qui contient les ressources nécessaires à la connexion avec Salesforce
- [test] qui contient des classes de tests
Empaquetez le contenu du répertoire resources (pas le répertoire lui-même) dans un fichier .jar.
Compilez les classes contenues dans src, et empaquetez-les dans un fichier du nom de salesforce.jar (par exemple).
Ensuite, il vous faut intégrer resources.jar, salesforce.jar et les bibliothèques Axis2 à votre classpath. Pour cela, chacun sa méthode, moi j'utilise Eclipse (pour générer salesforce.jar aussi).
Et voici mon implémentation java:
Voici le constructeur pour mon objet de session Salesforce:
public static final String PROD_SERVER = "https://www.salesforce.com/services/Soap/c/16.0"; public static final String SANDBOX_SERVER = "https://test.salesforce.com/services/Soap/c/16.0"; public Exception exception; private Login login; private SessionHeader sessionHeader; private SessionHeaderDocument sessionHeaderDocument; private String endpoint; private String UserName, PassWord; private int Progress; private String ProgressText; private String server; private SforceServiceStub stub; /** * This constructor initializes a connexion with Saleforce using user name * and password. * * @param UN * Salesforce User Name * @param PW * Salesforce User Password * @throws Exception */ public Salesforce_session(final String UN, final char[] PW) throws Exception { UserName = UN; PassWord = String.valueOf(PW); try { setProgress(0, "Loging"); if (UN.endsWith(".sand")) { endpoint = SANDBOX_SERVER; } else { endpoint = PROD_SERVER; } stub = new SforceServiceStub(endpoint); LoginDocument loginDocument = LoginDocument.Factory.newInstance(); login = Login.Factory.newInstance(); login.setUsername(UserName); login.setPassword(PassWord); loginDocument.setLogin(login); LoginResponseDocument loginResponseDocument = stub.login(loginDocument, null); LoginResponse loginResponse = loginResponseDocument.getLoginResponse(); LoginResult loginResult = loginResponse.getResult(); sessionHeader = SessionHeader.Factory.newInstance(); sessionHeader.setSessionId(loginResult.getSessionId()); sessionHeaderDocument = SessionHeaderDocument.Factory.newInstance(); sessionHeaderDocument.setSessionHeader(sessionHeader); setProgress(10, "Loading service"); fireMyEvent(new MyEvent("Loading Service...")); stub = new SforceServiceStub(loginResult.getServerUrl()); Options options = stub._getServiceClient().getOptions(); fireMyEvent(new MyEvent("Setting Gzip Compression IN...")); options.setProperty(HTTPConstants.MC_ACCEPT_GZIP, Boolean.TRUE); options.setProperty(HTTPConstants.MC_GZIP_REQUEST, Boolean.TRUE); fireMyEvent(new MyEvent("Connexion established")); } catch (AxisFault e) { exception = e; } catch (RemoteException e) { exception = e; } catch (InvalidIdFault e) { exception = e; } catch (UnexpectedErrorFault e) { exception = e; } catch (diva.salesforce.webservice.LoginFault e) { exception = e; } catch (ExceptionInInitializerError e) { exception = (Exception) e.getException(); } }
ainsi que ma méthode de requètes:
/** * Use this method to send SOQL queries to salesforce. * * @param querystr * the SOQL query to send to salesforce. * @return Query Result * @throws RemoteException * @throws InvalidSObjectFault * @throws MalformedQueryFault * @throws InvalidIdFault * @throws InvalidFieldFault * @throws UnexpectedErrorFault * @throws InvalidQueryLocatorFault */ public QueryResult Query(final String querystr) throws RemoteException, InvalidSObjectFault, MalformedQueryFault, InvalidIdFault, InvalidFieldFault, UnexpectedErrorFault, InvalidQueryLocatorFault { Query query; QueryDocument queryDocument; QueryResponseDocument queryResponseDocument; QueryResponse queryResponse; QueryResult queryResult = null; query = Query.Factory.newInstance(); query.setQueryString(querystr); queryDocument = QueryDocument.Factory.newInstance(); queryDocument.setQuery(query); queryResponseDocument = stub.query(queryDocument, sessionHeaderDocument, null, null, null); queryResponse = queryResponseDocument.getQueryResponse(); queryResult = queryResponse.getResult(); return queryResult; }
pareil pour l'insertion en base:
/** * Use this method to insert several {@link SObject} in salesforce. * * @param sObjectsArray * @return a {@link SaveResult} array for each inserted objects * @throws RemoteException * @throws InvalidSObjectFault * @throws InvalidIdFault * @throws InvalidFieldFault * @throws UnexpectedErrorFault */ public SaveResult[] Insert(SObject[] sObjectsArray) throws RemoteException, InvalidSObjectFault, InvalidIdFault, InvalidFieldFault, UnexpectedErrorFault { SaveResult[] saveResultArray = null; // Invoke the create call CreateDocument createDocument = CreateDocument.Factory.newInstance(); Create create = createDocument.addNewCreate(); create.setSObjectsArray(sObjectsArray); CreateResponseDocument createResponseDocument = stub.create(createDocument, sessionHeaderDocument, null, null, null, null, null, null); CreateResponse createResponse = createResponseDocument.getCreateResponse(); saveResultArray = createResponse.getResultArray(); return saveResultArray; }
et la mise-à-jour de champs:
/** * Use this method to update several {@link SObject} in salesforce. * * @param sObjectsArray * @return * @throws RemoteException * @throws InvalidSObjectFault * @throws InvalidIdFault * @throws InvalidFieldFault * @throws UnexpectedErrorFault */ public SaveResult[] Update(SObject[] sObjectsArray) throws RemoteException, InvalidSObjectFault, InvalidIdFault, InvalidFieldFault, UnexpectedErrorFault { SaveResult[] updateResultArray = null; // Invoke the update call UpdateDocument updateDocument = UpdateDocument.Factory.newInstance(); Update update = updateDocument.addNewUpdate(); update.setSObjectsArray(sObjectsArray); UpdateResponseDocument updateResponseDocument = stub.update(updateDocument, sessionHeaderDocument, null, null, null, null, null, null); UpdateResponse updateResponse = updateResponseDocument.getUpdateResponse(); updateResultArray = updateResponse.getResultArray(); return updateResultArray; }
ou la suppression de champs:
/** * This method take an array of object ids to delete ins salesforce. Deleted * object can be retrieved in the recycle bin. * * @param sObjectsIdArray * @return * @throws RemoteException * @throws UnexpectedErrorFault */ public DeleteResult[] Delete(String[] sObjectsIdArray) throws RemoteException, UnexpectedErrorFault { DeleteResult[] deleteResultArray = null; // Invoke the delete call DeleteDocument deleteDocument = DeleteDocument.Factory.newInstance(); com.sforce.soap.enterprise.DeleteDocument.Delete delete = deleteDocument.addNewDelete(); delete.setIdsArray(sObjectsIdArray); DeleteResponseDocument deleteResponseDocument = stub.delete(deleteDocument, sessionHeaderDocument, null, null, null, null, null); DeleteResponse deleteResponse = deleteResponseDocument.getDeleteResponse(); deleteResultArray = deleteResponse.getResultArray(); return deleteResultArray; }
Comme vous pouvez le voir, c'est un peu le même bateau pour chaque méthode.
En espérant vous avoir aidé. Mon post original sur le forum communautaire de Salesforce: http://community.salesforce.com/sforce/board/message?board.id=JAVA_development&message.id=6728#M6728 N'hésitez pas à consulter le site de Salfesforce pour plus d'informations sur les évolutions de la solution : www.salesforce.com/fr
mardi 2 février 2010
Dyzplastic Production Blog: Android mini collectibles
Une fois n'est pas coutume, je vous donne un lien vers un objet que tout fan d'Android qui se respecte se doit de posséder! Je vous laisse découvrir:
Dyzplastic Production Blog: Android mini collectibles
Add Prefix and/or Suffix to Each Text Line
Un outils intéressant pour les développeurs :)
Add Prefix and/or Suffix to Each Text Line
Ce site permet de coller un texte, et d'entourer chaque ligne d'un préfixe et d'un suffixe.
Bon certe ce n'est pas la panacée, on peut faire mieux avec un grep, mais ça peut dépanner ;)
Add Prefix and/or Suffix to Each Text Line
Ce site permet de coller un texte, et d'entourer chaque ligne d'un préfixe et d'un suffixe.
Bon certe ce n'est pas la panacée, on peut faire mieux avec un grep, mais ça peut dépanner ;)
Inscription à :
Articles (Atom)