Este exemplo ilustra como carregar vários recursos usando APIs Java.
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;
/**
* Um programa de amostra para apresentar como você pode carregar recursos em lote
*
*/
public class BatchUploadAssets {
private static String URL = "http://localhost:8080/ram.ws";
private static String USERID = "userid";
private static String PASS = "password";
//Criador de logs isso pode ser substituído por como você deseja relatar status
private static final Logger logger = Logger.getLogger(BatchUploadAssets.class.getName());
/**
* Método Main no qual o programa inicia a execução
* @param args
*/
public static void main(String[] args) {
RAMSession session = null;
try{
//Criar uma sessão
session = new RAMSession(URL, USERID, PASS);
//Criar objetos RAMAsset para cada recurso local
loadAssets(session);
//Carregar os recursos no servidor.
RAMStatus finalStatus = session.putAssets(getStatusMonitor());
//Relatar o 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();
}
}
}
/**
* Customizar este método para leitura e recursos locais
* e transformá-los em RAMAssets a serem carregados no
* Rational Asset Manager
*/
private static void loadAssets(RAMSession session){
//Iterar através de dados locais para descobrir recursos locais
Asset[] localAssets = null;
//Para cada recurso local, você criará um RAMAsset e
//o preencherá com dados locais.
for(int i = 0; i < localAssets.length;i++){
//Criar o recurso - Será melhor se você puder obter um ID exclusivo global do recurso local
//isso tornará mais eficiente sua recuperação. Se não, você poderá apenas fornecer uma versão
//e a RAM gerará um novo GUID para você.
RAMAsset newAsset = session.createAsset(localAssets[i].getGUID(), localAssets[i].getVersion());
//Forneça uma Comunidade, Tipo, Nome e descrição curta para cada recurso
newAsset.setCommunityName(localAssets[i].getCommunityName());
newAsset.setTypeName(localAssets[i].getTypeName());
newAsset.setName(localAssets[i].getName());
newAsset.setShortDescription(localAssets[i].getShortDescription());
//Como opção, você pode configurar - descrição completa
newAsset.setDescription(localAssets[i].getDescription());
//Como opção, você pode configurar - artefatos
((RAMFolderArtifact)newAsset.getArtifactsRoot()).addArtifact("sample.txt", new LocalFileArtifact(localfile));
//Como opção, você pode configurar - atributos
newAsset.getAssetAttribute("namespace").setValues(new String[]{"com.ibm.sampple"});
//Como opção, você pode configurar - categorizações
RAMCategorySchema schema = session.getCategorySchema("Development");
RAMCategory category = (RAMCategory)schema.getCategory("Languages");
RAMSubCategory subCategory = (RAMSubCategory)category.getSubCategory("Java");
newAsset.categorize(subCategory);
//Como opção, você pode configurar - relacionamentos
newAsset.addRelatedAsset(someOtherAsset, session.getRelationshipType("Dependency"));
//Etc ...
//Quando concluído, enfileire o recurso na sessão a ser carregada em massa.
//Se você tiver relacionamentos, use forçar True para ignorar colisões.
session.queueAssetForPut(newAsset, true);
}
}
/**
* O monitor de status relata o progresso enquanto os recursos estão sendo carregados no 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);
}
};
}
/**
* Relatar uma mensagem de status
* @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);
}
}
}