/*
* Copyright 2016 KairosDB Authors
*
* Licensed 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.kairosdb.core;
import com.google.common.collect.ImmutableSortedMap;
import org.kairosdb.util.Tags;
import java.util.*;
public class DataPointSet
{
private final String m_name;
private final ImmutableSortedMap.Builder<String, String> m_tags;
private final List<DataPoint> m_dataPoints;
public DataPointSet(String name)
{
m_name = name;
m_tags = Tags.create();
m_dataPoints = new ArrayList<>();
}
public DataPointSet(String mName, Map<String, String> tags, List<DataPoint> dataPoints)
{
this.m_name = mName;
this.m_tags = Tags.create().putAll(tags);
this.m_dataPoints = new ArrayList<>(dataPoints);
}
public void addTag(String name, String value)
{
m_tags.put(name, value);
}
@Override
public String toString()
{
return "DataPointSet{" +
"m_name='" + m_name + '\'' +
", m_tags=" + m_tags +
", m_dataPoints=" + m_dataPoints +
'}';
}
public void addDataPoint(DataPoint dp)
{
m_dataPoints.add(dp);
}
public String getName() { return (m_name); }
public ImmutableSortedMap<String, String> getTags()
{
return m_tags.build();
}
public List<DataPoint> getDataPoints()
{
return (Collections.unmodifiableList(m_dataPoints));
}
@Override
public boolean equals(Object o)
{
if (this == o) return true;
if (!(o instanceof DataPointSet)) return false;
DataPointSet that = (DataPointSet) o;
return m_name.equals(that.m_name) && m_tags.equals(that.m_tags) && m_dataPoints.equals(that.m_dataPoints);
}
@Override
public int hashCode()
{
int result = m_name.hashCode();
result = 31 * result + m_tags.hashCode();
result = 31 * result + m_dataPoints.hashCode();
return result;
}
}