package com.compomics.util.experiment.personalization;
import java.util.HashMap;
import java.io.Serializable;
/**
* This abstract class provides customization facilities. Tool dependent
* parameters can be added to classes extending this class.
*
* @author Marc Vaudel
*/
public abstract class ExperimentObject implements Serializable, Cloneable {
/**
* The version UID for Serialization/Deserialization compatibility.
*/
static final long serialVersionUID = 1929697552061121072L;
/**
* Map containing user refinement parameters.
*/
private HashMap<String, UrParameter> urParams = null;
/**
* Adds a user refinement parameter.
*
* @param parameter The parameter
*/
public void addUrParam(UrParameter parameter) {
if (urParams == null) {
createParamsMap();
}
urParams.put(parameter.getParameterKey(), parameter);
}
/**
* Removes a user parameter from the user parameters map.
*
* @param paramterKey the key of the parameter
*/
public void removeUrParam(String paramterKey) {
if (urParams != null) {
urParams.remove(paramterKey);
}
}
/**
* Creates the parameters map unless done by another thread already.
*/
private synchronized void createParamsMap() {
if (urParams == null) {
urParams = new HashMap<String, UrParameter>(1);
}
}
/**
* Returns the refinement parameter of the same type than the one provided. Null if not found.
*
* @param parameter the desired parameter
* @return the value stored. Null if not found.
*/
public UrParameter getUrParam(UrParameter parameter) {
if (urParams == null) {
return null;
}
return urParams.get(parameter.getParameterKey());
}
/**
* Clears the loaded parameters.
*/
public void clearParametersMap() {
urParams = null;
}
}