Este exemplo ilustra como carregar vários recursos usando APIs Java.
Aqui está um exemplo de classe Principal que destaca como você pode executar um
upload em lote de dados locais. Este exemplo inclui detalhes sobre como configurar
atributos, artefatos e relacionamentos.
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);
}
}
}