Este ejemplo ilustra cómo subir varios activos mediante las API Java.
Este es un ejemplo de clase main que resalta cómo puede realizar una subida por lotes de datos locales. En
este ejemplo se incluyen detalles sobre cómo establecer atributos, artefactos y relaciones.
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;
/**
* Un programa de ejemplo para mostrar cómo subir activos por lotes
*
*/
public class BatchUploadAssets {
private static String URL = "http://localhost:8080/ram.ws";
private static String USERID = "userid";
private static String PASS = "password";
//Logger se puede sustituir por el método de informe de estado que vaya a utilizar
private static final Logger logger = Logger.getLogger(BatchUploadAssets.class.getName());
/**
* Método main el que el programa inicia la ejecución
* @param args
*/
public static void main(String[] args) {
RAMSession session = null;
try{
//Crear una sesión
session = new RAMSession(URL, USERID, PASS);
//Crear objetos RAMAsset para cada uno de los activos locales
loadAssets(session);
//Subir los activos al servidor.
RAMStatus finalStatus = session.putAssets(getStatusMonitor());
//Informar del resultado final
reportStatusMessage(finalStatus.getSeverity(), finalStatus.getException(), finalStatus.getMessage());
}
catch (Exception e) {
logger.error("Unexpected Error : " + e.getLocalizedMessage(), e);
}
finally{
if(session != null){
session.release();
}
}
}
/**
* Personalice este método para leer activos locales
* y transformarlos en RAMAssets a cargar en
* Rational Asset Manager
*/
private static void loadAssets(RAMSession session){
//Iterar a través de los datos locales para descubrir activos locales
Asset[] localAssets = null;
//Para cada activo local creará un RAMAsset y
// lo llenará con los datos locales.
for(int i = 0; i < localAssets.length;i++){
//Crear el activo - Es mejor si puede extraer un ID exclusivo global del activo local.
//Esto hará más eficiente la recuperación. Si no, puede proporcionar una versión
//y RAM generará un nuevo GUID por usted.
RAMAsset newAsset = session.createAsset(localAssets[i].getGUID(), localAssets[i].getVersion());
//Debe proporcionar una comunidad, un tipo, un nombre y una descripción breve para cada activo
newAsset.setCommunityName(localAssets[i].getCommunityName());
newAsset.setTypeName(localAssets[i].getTypeName());
newAsset.setName(localAssets[i].getName());
newAsset.setShortDescription(localAssets[i].getShortDescription());
//También puede establecer una descripción completa
newAsset.setDescription(localAssets[i].getDescription());
//También puede establecer artefactos
((RAMFolderArtifact)newAsset.getArtifactsRoot()).addArtifact("sample.txt", new LocalFileArtifact(localfile));
//También puede establecer atributos
newAsset.getAssetAttribute("namespace").setValues(new String[]{"com.ibm.sampple"});
//También puede establecer categorizaciones
RAMCategorySchema schema = session.getCategorySchema("Development");
RAMCategory category = (RAMCategory)schema.getCategory("Languages");
RAMSubCategory subCategory = (RAMSubCategory)category.getSubCategory("Java");
newAsset.categorize(subCategory);
//También puede establecer relaciones
newAsset.addRelatedAsset(someOtherAsset, session.getRelationshipType("Dependency"));
//Etc. ...
//Cuando haya terminado, ponga el activo en cola, en la sesión para subirlo.
//Si tiene relaciones, utilice force True para ignorar conflictos.
session.queueAssetForPut(newAsset, true);
}
}
/**
* El supervisor de estado informa del progreso mientras se suben los activos al servidor.
*/
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);
}
};
}
/**
* Informar de un mensaje de estado
* @param severity
* @param exception
* @param message
*/
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);
}
}
}