/** * Copyright (c) <2013> <Radware Ltd.> and others. 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 * @author Gera Goft * @version 0.1 */ package org.opendaylight.defense4all.core; import java.lang.IllegalArgumentException; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; import org.opendaylight.defense4all.framework.core.RepoCD; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import me.prettyprint.cassandra.serializers.BooleanSerializer; import me.prettyprint.cassandra.serializers.StringSerializer; public class DetectorInfo { /* DetectionRepo column names */ public static final String LABEL = "label"; public static final String DETECTOR_CONFIDENCE = "detector_confidence"; public static final String OF_BASED_DETECTOR = "of_based_detector"; public static final String EXTERNAL_DETECTOR = "external_detector"; public enum DetectorConfidence { INVALID, VERY_HIGH, HIGH, MEDIUM } static Logger log = LoggerFactory.getLogger(DetectorInfo.class); protected static ArrayList<RepoCD> mDetectorsRepoCDs = null; public String label; public DetectorConfidence detectorConfidence; // Detector confidence in this attack detection public boolean ofBasedDetector; public boolean externalDetector; /** ### Description ### * @param param_name */ public DetectorInfo() { label = null; detectorConfidence = DetectorConfidence.INVALID; ofBasedDetector = false; externalDetector = true; } /** ### Description ### * @param param_name * @throws */ public DetectorInfo(String label,DetectorConfidence confidence, boolean ofBasedDetector, boolean externalDetector) { this.label = label; this.detectorConfidence = confidence; this.ofBasedDetector = ofBasedDetector; this.externalDetector = externalDetector; } /** ### Description ### * @param param_name * @throws */ public DetectorInfo(String combined) throws IllegalArgumentException { ofBasedDetector = false; externalDetector = true; String[] split = combined.split(":"); if(split == null || split.length < 2) { log.error("Invalid combined detectorInfo string " + combined + "."); throw new IllegalArgumentException("Invalid combined detectorInfo string " + combined + "."); } label = split[0]; detectorConfidence = DetectorConfidence.valueOf(split[1]); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("DetectorInfo[label="); sb.append(label); sb.append(", "); sb.append("detectorConfidence="); sb.append(detectorConfidence); sb.append(", "); sb.append("ofBasedDetector="); sb.append(ofBasedDetector); sb.append(", "); sb.append("externalDetector="); sb.append(externalDetector); sb.append(", "); sb.append("]"); return sb.toString(); } /** ### Description ### * @param param_name */ public DetectorInfo(DetectorInfo other) { this.label = other.label; this.detectorConfidence = other.detectorConfidence; this.ofBasedDetector = other.ofBasedDetector; this.externalDetector = other.externalDetector; } public String getLabel() {return label;} public void setLabel(String label) {this.label = label;} public DetectorConfidence getDetectorConfidence() {return detectorConfidence;} public void setDetectorConfidence(DetectorConfidence confidence) {this.detectorConfidence = confidence;} public boolean getOfBasedDetector() {return ofBasedDetector;} public void setOfBasedDetector(boolean ofBasedDetector) {this.ofBasedDetector = ofBasedDetector;} public boolean getExternalDetector() {return externalDetector;} public void setExternalDetector(boolean externalDetector) {this.externalDetector = externalDetector;} public DetectorInfo(Hashtable<String, Object> pnRow) { Object obj; label = (String) pnRow.get(DetectorInfo.LABEL); obj = pnRow.get(DetectorInfo.DETECTOR_CONFIDENCE); if (obj != null) detectorConfidence = DetectorConfidence.valueOf((String)obj); obj = pnRow.get(DetectorInfo.OF_BASED_DETECTOR); if (obj != null) ofBasedDetector = (Boolean) obj; obj = pnRow.get(DetectorInfo.EXTERNAL_DETECTOR); if (obj != null) externalDetector = (Boolean) obj; } public Hashtable<String, Object> toRow() { /* Change any null value to empty, otherwise Hashtable.put() will throw an exception */ if(label == null) label = ""; Hashtable<String, Object> row = new Hashtable<String, Object>(); row.put(DetectorInfo.LABEL, label); row.put(DetectorInfo.DETECTOR_CONFIDENCE, detectorConfidence.name()); row.put(DetectorInfo.OF_BASED_DETECTOR, ofBasedDetector); row.put(DetectorInfo.EXTERNAL_DETECTOR, externalDetector); return row; } public void fromRow(Hashtable<String, Object> pnRow) { Object obj; label = (String) pnRow.get(LABEL); obj = pnRow.get(DetectorInfo.DETECTOR_CONFIDENCE); if (obj != null) detectorConfidence = DetectorConfidence.valueOf((String)obj); obj = pnRow.get(DetectorInfo.OF_BASED_DETECTOR); if (obj != null) ofBasedDetector = Boolean.valueOf(obj.toString()); obj = pnRow.get(DetectorInfo.EXTERNAL_DETECTOR); if (obj != null) externalDetector = Boolean.valueOf(obj.toString()); } public static List<RepoCD> getDetectorRCDs() { if(mDetectorsRepoCDs == null) { RepoCD rcd; mDetectorsRepoCDs = new ArrayList<RepoCD>(); rcd = new RepoCD(DetectorInfo.LABEL, StringSerializer.get(), null); mDetectorsRepoCDs.add(rcd); rcd = new RepoCD(DetectorInfo.DETECTOR_CONFIDENCE, StringSerializer.get(), null); mDetectorsRepoCDs.add(rcd); rcd = new RepoCD(DetectorInfo.OF_BASED_DETECTOR, BooleanSerializer.get(), null); mDetectorsRepoCDs.add(rcd); rcd = new RepoCD(DetectorInfo.EXTERNAL_DETECTOR, BooleanSerializer.get(), null); mDetectorsRepoCDs.add(rcd); } return mDetectorsRepoCDs; } }