/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.components.optimizer.common; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import de.rcenvironment.core.datamodel.api.DataType; import de.rcenvironment.core.datamodel.api.TypedDatum; import de.rcenvironment.core.datamodel.api.TypedDatumSerializer; import de.rcenvironment.core.datamodel.api.TypedDatumService; import de.rcenvironment.core.datamodel.types.api.FloatTD; import de.rcenvironment.core.datamodel.types.api.IntegerTD; /** * Class holding one set of values for an optimizer output. * * @author Sascha Zur */ public class OptimizerResultSet implements Serializable { private static final long serialVersionUID = -5549958046464158432L; private static final double CONST_1E99 = 1E99; private static TypedDatumSerializer typedDatumSerializer; private final Map<String, String> values = new HashMap<String, String>(); private String component; @Deprecated public OptimizerResultSet() { } public OptimizerResultSet(final Map<String, TypedDatum> values2, String component) { for (String key : values2.keySet()) { values.put(key, typedDatumSerializer.serialize(values2.get(key))); } this.setComponent(component); } /** * @param key the key of the value to get. * @return the value. */ public double getValue(String key) { if (values.get(key) != null) { TypedDatum result = typedDatumSerializer.deserialize(values.get(key)); if (result.getDataType() == DataType.Float) { double value = ((FloatTD) result).getFloatValue(); if (value == CONST_1E99) { value = Double.NaN; } return value; } else { return ((IntegerTD) result).getIntValue(); } } return Double.NaN; } public String getComponent() { return component; } public void setComponent(String component) { this.component = component; } /** * Getter for all values. * * @return map with values. */ public Map<String, TypedDatum> getValues() { Map<String, TypedDatum> result = new HashMap<String, TypedDatum>(); for (String key : values.keySet()) { result.put(key, typedDatumSerializer.deserialize(values.get(key))); } return result; } protected void bindTypedDatumService(TypedDatumService newTypedDatumService) { typedDatumSerializer = newTypedDatumService.getSerializer(); } protected void unbindTypedDatumService(TypedDatumService oldTypedDatumService) {} }