/*******************************************************************************
* Copyright (c) 2011 Subgraph.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Subgraph - initial API and implementation
******************************************************************************/
package com.subgraph.vega.ui.scanner.alerts.tree;
import com.subgraph.vega.api.model.IWorkspace;
import com.subgraph.vega.api.model.alerts.IScanAlert;
import com.subgraph.vega.api.model.alerts.IScanAlertRepository;
import com.subgraph.vega.api.model.alerts.IScanInstance;
public class AlertTree extends AbstractAlertTreeNode {
private final IWorkspace workspace;
public AlertTree(IWorkspace workspace) {
this.workspace = workspace;
}
public synchronized void addScan(IScanInstance scan) {
if(scan.getScanId() == IScanAlertRepository.PROXY_ALERT_ORIGIN_SCAN_ID) {
if(scan.getAllAlerts().size() == 0) {
return;
}
}
final AlertScanNode scanNode = getScanNode(scan.getScanId());
if(scanNode.getScanInstance() == null) {
scanNode.setScanInstance(scan);
}
}
public synchronized AlertScanNode getScanNode(long scanId) {
final String key = Long.toString(scanId);
if(!nodeMap.containsKey(key)) {
final AlertScanNode scanNode = new AlertScanNode(scanId, workspace);
if(scanId == IScanAlertRepository.PROXY_ALERT_ORIGIN_SCAN_ID) {
scanNode.setScanInstance(workspace.getScanAlertRepository().getProxyScanInstance());
}
nodeMap.put(key, scanNode);
}
return (AlertScanNode) nodeMap.get(key);
}
@Override
public String getLabel() {
return "[root]";
}
@Override
protected AbstractAlertTreeNode createNodeForAlert(IScanAlert alert) {
return getScanNode(alert.getScanId());
}
@Override
protected String createKeyForAlert(IScanAlert alert) {
return Long.toString(alert.getScanId());
}
}