Effectuer un téléchargement par lots

Cet exemple illustre comment télécharger plusieurs actifs à l'aide d'API Java.
Voici un exemple de classe Main montrant comment effectuer un téléchargement par lots à partir de données locales. Cet exemple inclut des détails sur la façon de définir des attributs, des artefacts et des relations.
package com.ibm.ram.client.test;

import org.apache.log4j.Logger;

import com.ibm.ram.client.LocalFileArtifact;
import com.ibm.ram.client.RAMAsset;
import com.ibm.ram.client.RAMCategory;
import com.ibm.ram.client.RAMCategorySchema;
import com.ibm.ram.client.RAMFolderArtifact;
import com.ibm.ram.client.RAMSession;
import com.ibm.ram.client.RAMSubCategory;
import com.ibm.ram.client.status.RAMStatus;
import com.ibm.ram.client.status.RAMStatusMonitor;
import com.ibm.ram.common.data.Asset;

/**
 * Programme exemple montrant comment télécharger des actifs par lots
 * 
 */
public class BatchUploadAssets {
private static String URL = "http://localhost:8080/ram.ws";
private static String USERID = "userid";
private static String PASS = "password";
//Peut être remplacé par n'importe quel mode de rapport du statut
private static final Logger logger = Logger.getLogger(BatchUploadAssets.class.getName());
/**
* Méthode Main où le programme commence l'exécution
* args @param
*/
public static void main(String[] args) {
RAMSession session = null;
try{
//Créer une session
session = new RAMSession(URL, USERID, PASS);
//Créer des objets RAMAsset pour chaque actif local
loadAssets(session);
//Télécharger les actifs sur le serveur.
RAMStatus finalStatus = session.putAssets(getStatusMonitor());
//Signaler le résultat final
reportStatusMessage(finalStatus.getSeverity(), finalStatus.getException(), finalStatus.getMessage());
}
catch (Exception e) {
logger.error("Unexpected Error : " + e.getLocalizedMessage(), e);
}
finally{
if(session != null){
session.release();
}
}
}

/**
* Personnaliser cette méthode pour lire les actifs locaux
* et les transformer en RAMAssets à charger dans
* Rational Asset Manager
*/
private static void loadAssets(RAMSession session){

//Itérer dans vos données locales pour découvrir vos actifs locaux
Asset[] localAssets = null; 
 
 //Pour chaque actif local, vous créez un RAMAsset et
 //le renseigner avec les données locales.
 for(int i = 0; i < localAssets.length;i++){
 //Créer l'actif - Le mieux est d'extraire un ID unique global de votre actif local
 //pour faciliter la récupération.  Sinon, vous pouvez indiquer une version
 //pour que RAM génère un nouvel identificateur global unique.
 RAMAsset newAsset = session.createAsset(localAssets[i].getGUID(), localAssets[i].getVersion());
 
 //Vous devez indiquer une communauté, un type, un nom et une brève description pour chaque actif
 newAsset.setCommunityName(localAssets[i].getCommunityName());
 newAsset.setTypeName(localAssets[i].getTypeName());
 newAsset.setName(localAssets[i].getName());
 newAsset.setShortDescription(localAssets[i].getShortDescription());
 
 //Vous pouvez éventuellement définir - description complète
 newAsset.setDescription(localAssets[i].getDescription());
 
 //Vous pouvez éventuellement définir - artefacts
 ((RAMFolderArtifact)newAsset.getArtifactsRoot()).addArtifact("sample.txt", new LocalFileArtifact(localfile));
 
 //Vous pouvez éventuellement définir - attributs
 newAsset.getAssetAttribute("namespace").setValues(new String[]{"com.ibm.sampple"});
 
 //Vous pouvez éventuellement définir - catégorisations
 RAMCategorySchema schema = session.getCategorySchema("Development");
 RAMCategory category = (RAMCategory)schema.getCategory("Languages");
 RAMSubCategory subCategory = (RAMSubCategory)category.getSubCategory("Java");
 newAsset.categorize(subCategory);
 
 //Vous pouvez éventuellement définir - relations
 newAsset.addRelatedAsset(someOtherAsset, session.getRelationshipType("Dependency"));
 
 //Etc ...
 
 //Une fois terminé, mettez l'actif en file d'attente dans la session pour un
téléchargement par lots.
 //Si vous avez des relations, utilisez True pour ignorer les collisions.
 session.queueAssetForPut(newAsset, true);
 }
}
/**
* Le moniteur d'état signale la progression quand les actifs sont téléchargés sur
le serveur.
*/
private static RAMStatusMonitor getStatusMonitor(){
return new RAMStatusMonitor(){
@Override
public void appendStatus(Object targetObject, int severity, int code, String message, Throwable exception) {
super.appendStatus(targetObject, severity, code, message, exception);
reportStatusMessage(severity, exception, message);
}
};
}
/**
* Rapport d'un message d'état
* gravité @param
* exception @param
* message @param
*/
private static void reportStatusMessage(int severity, Throwable exception, String message) {
if(severity == RAMStatus.OK || severity == RAMStatus.INFO){
logger.info(message);
}
else if(severity == RAMStatus.WARNING){
if(exception == null)logger.warn(message);
else logger.warn(message, exception);
}
else if(severity == RAMStatus.ERROR){
if(exception == null)logger.error(message);
else logger.error(message, exception);
}
}
}

Commentaires