All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.anotheria.moskito.webui.accumulators.api.AccumulatedSingleGraphAO Maven / Gradle / Ivy

There is a newer version: 4.0.3
Show newest version
package net.anotheria.moskito.webui.accumulators.api;

import net.anotheria.util.StringUtils;
import net.anotheria.util.log.LogMessageUtil;
import org.json.JSONException;
import org.json.JSONObject;
import org.slf4j.LoggerFactory;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * This bean contains data for a single graph in multiple graph mode.
 * @author lrosenberg
 *
 */
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class AccumulatedSingleGraphAO implements Serializable{
	/**
	 * SerialVersionUID.
	 */
	private static final long serialVersionUID = 8718130806694168007L;

	/**
	 * Name of the graph.
	 */
	@XmlElement
	private String name;

	/**
	 * Graph data.
	 */
	@XmlElement
	private List data;

	/**
	 * Graph color.
	 * Html color value, e.g. #RRGGBB.
	 */
	@XmlElement
	private String color;

	/**
	 * This is a helper map that contains characters an accumulator name can contains, that are prohibited in js variables and therefore have to be mapped.
	 */
	private static final Map jsReplaceMap;
	static{
		jsReplaceMap = new HashMap<>(4);
		jsReplaceMap.put(" ", "_");
		jsReplaceMap.put("-", "_");
		jsReplaceMap.put("+", "_");
		jsReplaceMap.put(".", "_");
	}

	/**
	 * Default constructor.
     */
	public AccumulatedSingleGraphAO() {
	}

	public AccumulatedSingleGraphAO(String aName){
		name = aName;
		data = new ArrayList<>();
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public List getData() {
		return data;
	}
	public void setData(List data) {
		this.data = data;
	}

	public void add(AccumulatedValueAO valueBean) {
		data.add(valueBean);
	}
	
	public String getNameForJS(){
		String ret = name;
		ret = StringUtils.replace(ret, jsReplaceMap);
		return ret;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	/**
	 * Maps accumulator's color and name to JSON object.
	 *
	 * @return JSON object with accumulator color
	 */
	public JSONObject mapColorDataToJSON() {
		final JSONObject jsonObject = new JSONObject();

		try {
			jsonObject.put("name", name);
			jsonObject.put("color", color);
		} catch (JSONException e) {
			final String message = LogMessageUtil.failMsg(e);
			LoggerFactory.getLogger(AccumulatedSingleGraphAO.class).warn(message, e);
		}

		return jsonObject;
	}

	@Override
	public String toString() {
		return "AccumulatedSingleGraphAO{" +
				"data=" + data +
				", name='" + name + '\'' +
				", color='" + color + '\'' +
				'}';
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy