}
@Override
public void onSuccess(PageList<ResourceComposite> results) {
if (!results.isEmpty()) {
final ResourceComposite resourceComposite = results.get(0);
final Resource resource = resourceComposite.getResource();
final ResourceType resourceType = resource.getResourceType();
ResourceTypeRepository.Cache.getInstance().getResourceTypes(
resourceType.getId(),
EnumSet.of(ResourceTypeRepository.MetadataType.measurements),
new ResourceTypeRepository.TypeLoadedCallback() {
public void onTypesLoaded(ResourceType type) {
resource.setResourceType(type);
//metric definitions
final Set<MeasurementDefinition> definitions = type.getMetricDefinitions();
//build id mapping for measurementDefinition instances Ex. Free Memory -> MeasurementDefinition[100071]
HashMap<String, MeasurementDefinition> measurementDefMapTemp = new HashMap<String, MeasurementDefinition>();
for (MeasurementDefinition definition : definitions) {
if(null != definition){
measurementDefMapTemp.put(definition.getDisplayName(), definition);
}
}
final HashMap<String, MeasurementDefinition> measurementDefMap = new HashMap<String, MeasurementDefinition>(measurementDefMapTemp);
//bundle definition ids for asynch call.
int[] definitionArrayIds = new int[definitions.size()];
final String[] displayOrder = new String[definitions.size()];
measurementDefMap.keySet().toArray(displayOrder);
//sort the charting data ex. Free Memory, Free Swap Space,..System Load
Arrays.sort(displayOrder);
//organize definitionArrayIds for ordered request on server.
int index = 0;
for (String definitionToDisplay : displayOrder) {
definitionArrayIds[index++] = measurementDefMap.get(definitionToDisplay)
.getId();
}
GWTServiceLookup.getMeasurementDataService().getHighestNOOBsForResource(resourceId,
Integer.valueOf(resultCount), new AsyncCallback<PageList<MeasurementOOBComposite>>() {
@Override
public void onFailure(Throwable caught) {
Log.debug("Error retrieving out of bound metrics for resource [" + resourceId + "]:"
+ caught.getMessage());
currentlyLoading = false;
}
@Override
public void onSuccess(PageList<MeasurementOOBComposite> result) {
VLayout column = new VLayout();
column.setHeight(10);
column.setWidth100();
if (!result.isEmpty()) {
for (final MeasurementOOBComposite oob : result) {
DynamicForm row = new DynamicForm();
row.setWidth100();
row.setNumCols(2);
row.setColWidths("*", 100);
final String title = oob.getScheduleName();
LinkItem link = new LinkItem();
link.setLinkTitle(title);
link.setShowTitle(false);
link.setClipValue(false);
link.setWrap(true);
link.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
ChartViewWindow window = new ChartViewWindow(title);
D3GraphListView graphView = D3GraphListView
.createSingleGraph(resourceComposite.getResource(),
oob.getDefinitionId(), true);
window.addItem(graphView);
window.show();
}