/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.datamanagement.commons;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* Container class for {@link MetaData} associated with a {@link Revision} of a {@link DataReference}.
*
* @author Dirk Rossow
*/
public class MetaDataSet implements Cloneable, Serializable {
private static final long serialVersionUID = 8868578666276625820L;
private Map<MetaData, String> values = null;
public MetaDataSet() {
values = new HashMap<MetaData, String>();
}
/**
* @param metaData
* {@link MetaData} for which the value should be retrieved.
* @return the value of given {@link MetaData} or <code>null</code> if it does not exist.
*/
public String getValue(MetaData metaData) {
return values.get(metaData);
}
/**
* Sets a value of a MetaData in this set and returns if exists the old value.
*
* @param metaData
* {@link MetaData} to set.
* @param newValue
* New value to set.
*/
public void setValue(MetaData metaData, String newValue) {
values.put(metaData, newValue);
}
/**
* Removes a {@link MetaData} value.
*
* @param metaData
* {@link MetaData} for which the value should be removed.
*/
public void remove(MetaData metaData) {
values.remove(metaData);
}
/**
* @return an Iterator which iterates over all {@link MetaData} in this set.
*/
public Iterator<MetaData> iterator() {
return values.keySet().iterator();
}
/**
* @return <code>true</code> if {@link MetaDataSet} contains no {@link MetaData} values, <code>false</code>
* otherwise.
*/
public boolean isEmpty() {
return values.isEmpty();
}
@Override
public MetaDataSet clone() {
MetaDataSet metaDataSet = new MetaDataSet();
metaDataSet.values.putAll(values);
return metaDataSet;
}
@Override
public int hashCode() {
return values.hashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final MetaDataSet other = (MetaDataSet) obj;
if (values == null) {
if (other.values != null) {
return false;
}
} else if (!values.equals(other.values)) {
return false;
}
return true;
}
@Override
public String toString() {
String result = "";
for (MetaData metaData : values.keySet()) {
result += metaData.getKey() + "=" + getValue(metaData);
result += " ";
}
return result;
}
}