/*******************************************************************************
* 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.internal.model.alerts;
import java.util.List;
import com.db4o.activation.ActivationPurpose;
import com.db4o.activation.Activator;
import com.db4o.ta.Activatable;
import com.subgraph.vega.api.model.alerts.IScanAlert;
import com.subgraph.vega.internal.model.ModelProperties;
public class ScanAlert implements IScanAlert, Activatable {
private final String name;
private final Severity severity;
private final String title;
private final String key;
private final long scanId;
private final long requestId;
private String templateName = "main";
private String resource;
private final ModelProperties properties;
private transient Activator activator;
ScanAlert(String key, String name, String title, Severity severity, long scanId, long requestId) {
this.key = key;
this.name = name;
this.title = title;
this.severity = severity;
this.properties = new ModelProperties();
this.scanId = scanId;
this.requestId = requestId;
}
@Override
public String getName() {
activate(ActivationPurpose.READ);
return name;
}
@Override
public Severity getSeverity() {
activate(ActivationPurpose.READ);
return severity;
}
@Override
public String getTitle() {
activate(ActivationPurpose.READ);
return title;
}
@Override
public void setTemplateName(String name) {
activate(ActivationPurpose.WRITE);
templateName = name;
}
@Override
public void setProperty(String name, Object value) {
activate(ActivationPurpose.READ);
if(name.equals("resource") && value instanceof String) {
activate(ActivationPurpose.WRITE);
resource = (String) value;
}
properties.setProperty(name, value);
}
@Override
public void setStringProperty(String name, String value) {
activate(ActivationPurpose.READ);
properties.setStringProperty(name, value);
}
@Override
public void setIntegerProperty(String name, int value) {
activate(ActivationPurpose.READ);
properties.setIntegerProperty(name, value);
}
@Override
public Object getProperty(String name) {
activate(ActivationPurpose.READ);
return properties.getProperty(name);
}
@Override
public String getStringProperty(String name) {
activate(ActivationPurpose.READ);
return properties.getStringProperty(name);
}
@Override
public Integer getIntegerProperty(String name) {
activate(ActivationPurpose.READ);
return properties.getIntegerProperty(name);
}
@Override
public List<String> propertyKeys() {
activate(ActivationPurpose.READ);
return properties.propertyKeys();
}
@Override
public String getTemplateName() {
activate(ActivationPurpose.READ);
return templateName;
}
@Override
public String getResource() {
activate(ActivationPurpose.READ);
return resource;
}
@Override
public String getKey() {
activate(ActivationPurpose.READ);
return key;
}
@Override
public boolean hasAssociatedRequest() {
activate(ActivationPurpose.READ);
return requestId != -1;
}
@Override
public long getScanId() {
activate(ActivationPurpose.READ);
return scanId;
}
@Override
public long getRequestId() {
activate(ActivationPurpose.READ);
return requestId;
}
@Override
public void activate(ActivationPurpose activationPurpose) {
if(activator != null) {
activator.activate(activationPurpose);
}
}
@Override
public void bind(Activator activator) {
if(this.activator == activator) {
return;
}
if(activator != null && this.activator != null) {
throw new IllegalStateException("Object can only be bound to one activator");
}
this.activator = activator;
}
}