Java tutorial
/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.metron.helpers.topology; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.commons.configuration.XMLConfiguration; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; public class SettingsLoader { @SuppressWarnings("unchecked") public static JSONObject loadEnvironmentIdnetifier(String config_path) throws ConfigurationException { Configuration config = new PropertiesConfiguration(config_path); String customer = config.getString("customer.id", "unknown"); String datacenter = config.getString("datacenter.id", "unknown"); String instance = config.getString("instance.id", "unknown"); JSONObject identifier = new JSONObject(); identifier.put("customer", customer); identifier.put("datacenter", datacenter); identifier.put("instance", instance); return identifier; } @SuppressWarnings("unchecked") public static JSONObject loadTopologyIdnetifier(String config_path) throws ConfigurationException { Configuration config = new PropertiesConfiguration(config_path); String topology = config.getString("topology.id", "unknown"); String instance = config.getString("instance.id", "unknown"); JSONObject identifier = new JSONObject(); identifier.put("topology", topology); identifier.put("topology_instance", instance); return identifier; } public static String generateTopologyName(JSONObject env, JSONObject topo) { return (env.get("customer") + "_" + env.get("datacenter") + "_" + env.get("instance") + "_" + topo.get("topology") + "_" + topo.get("topology_instance")); } @SuppressWarnings("unchecked") public static JSONObject generateAlertsIdentifier(JSONObject env, JSONObject topo) { JSONObject identifier = new JSONObject(); identifier.put("environment", env); identifier.put("topology", topo); return identifier; } public static Map<String, JSONObject> loadRegexAlerts(String config_path) throws ConfigurationException, ParseException { XMLConfiguration alert_rules = new XMLConfiguration(); alert_rules.setDelimiterParsingDisabled(true); alert_rules.load(config_path); //int number_of_rules = alert_rules.getList("rule.pattern").size(); String[] patterns = alert_rules.getStringArray("rule.pattern"); String[] alerts = alert_rules.getStringArray("rule.alert"); JSONParser pr = new JSONParser(); Map<String, JSONObject> rules = new HashMap<String, JSONObject>(); for (int i = 0; i < patterns.length; i++) rules.put(patterns[i], (JSONObject) pr.parse(alerts[i])); return rules; } public static Map<String, JSONObject> loadKnownHosts(String config_path) throws ConfigurationException, ParseException { Configuration hosts = new PropertiesConfiguration(config_path); Iterator<String> keys = hosts.getKeys(); Map<String, JSONObject> known_hosts = new HashMap<String, JSONObject>(); JSONParser parser = new JSONParser(); while (keys.hasNext()) { String key = keys.next().trim(); JSONArray value = (JSONArray) parser.parse(hosts.getProperty(key).toString()); known_hosts.put(key, (JSONObject) value.get(0)); } return known_hosts; } public static void printConfigOptions(PropertiesConfiguration config, String path_fragment) { Iterator<String> itr = config.getKeys(); while (itr.hasNext()) { String key = itr.next(); if (key.contains(path_fragment)) { System.out.println("[Metron] Key: " + key + " -> " + config.getString(key)); } } } public static void printOptionalSettings(Map<String, String> settings) { for (String setting : settings.keySet()) { System.out.println("[Metron] Optional Setting: " + setting + " -> " + settings.get(setting)); } } public static Map<String, String> getConfigOptions(PropertiesConfiguration config, String path_fragment) { Iterator<String> itr = config.getKeys(); Map<String, String> settings = new HashMap<String, String>(); while (itr.hasNext()) { String key = itr.next(); if (key.contains(path_fragment)) { String tmp_key = key.replace(path_fragment, ""); settings.put(tmp_key, config.getString(key)); } } return settings; } }