setServer(server);
}
public StatisticsDO pullData(Object ctx) throws BAMException, RemoteException {
BAMPersistenceManager persistenceManager = BAMPersistenceManager.getPersistenceManager(BAMUtil.getRegistry());
OperationDO tmpOp = (OperationDO) ctx;
String sessionCookie = ClientAuthHandler.getClientAuthHandler().getSessionString(getServer());
StatisticsAdminClient client = new StatisticsAdminClient(getServer().getServerURL(), sessionCookie);
ServiceDO svc = persistenceManager.getService(tmpOp.getServiceID());
OperationStatistics opStatistics = client.getOperationStatistics(svc.getName(), tmpOp.getName());
OperationStatisticsDO statisticsDO = new OperationStatisticsDO();
statisticsDO.setServiceID(tmpOp.getServiceID());
statisticsDO.setOperationName(tmpOp.getName());
//This should set op.id if the service is already in DB
OperationDO op = null;
int operationId = statisticsDO.getOperationID();
if(operationId >0){
op = persistenceManager.getOperation(operationId);
}else {
op = persistenceManager.getOperation(statisticsDO.getServiceID() ,statisticsDO.getOperationName());
}
//if it is not, add it to DB
if (op == null) {
BAMPersistenceManager.getPersistenceManager(BAMUtil.getRegistry()).addOperation(tmpOp);
}
//now that the op is added, op.id should definitely be set
if (op != null) {
statisticsDO.setOperationID(op.getOperationID());
}
//TODO Where should we set the timestamp?
statisticsDO.setTimestamp(Calendar.getInstance());
populateOperationStatisticsDO(statisticsDO, opStatistics);