/*- * Copyright 2015 Diamond Light Source Ltd. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package uk.ac.diamond.scisoft.analysis.peakfinding.peakfinders; import java.util.Map; import java.util.TreeMap; import org.eclipse.dawnsci.analysis.api.peakfinding.IPeakFinder; import org.eclipse.dawnsci.analysis.api.peakfinding.IPeakFinderParameter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public abstract class AbstractPeakFinder implements IPeakFinder { /* Add logging facility */ protected static transient final Logger logger = LoggerFactory.getLogger(AbstractPeakFinder.class); protected String name; protected Map<String, IPeakFinderParameter> peakFindParams = new TreeMap<String, IPeakFinderParameter>(); protected final Map<String, IPeakFinderParameter> defaultParams = new TreeMap<String, IPeakFinderParameter>(); public AbstractPeakFinder() { setName(); } /** * Set the class variable name to the name of the peak finder. */ protected abstract void setName(); /** * Initialise a parameter with a name, value and whether it's an integer or * not, by adding it to the parameters set * @param pName name of parameter * @param pValue value to assign to parameter * @param isInt should the value be an integer or not (double if not) */ protected void initialiseParameter(String pName, boolean isInt, Number pValue) throws Exception { peakFindParams.put(pName, new PeakFinderParameter(pName, isInt, pValue)); defaultParams.put(pName, new PeakFinderParameter(pName, isInt, pValue)); } @Override public String getName() { return name; } @Override public Map<String, IPeakFinderParameter> getParameters() { return peakFindParams; } @Override public IPeakFinderParameter getParameter(String pName) throws Exception { if (peakFindParams.containsKey(pName)) return peakFindParams.get(pName); throw new Exception("Cannot find peak finding parameter "+pName); } @Override public Number getParameterValue(String pName) throws Exception { IPeakFinderParameter currParam = getParameter(pName); return currParam.getValue(); } @Override public void setParameter(String pName, IPeakFinderParameter param) throws Exception { if (peakFindParams.containsKey(pName)) { peakFindParams.put(pName, param); } else{ throw new Exception("Cannot find peak finding parameter "+pName); } } @Override public void setParameterValue(String pName, Number pValue) throws Exception { IPeakFinderParameter currParam = getParameter(pName); currParam.setValue(pValue); } @Override public void resetParameters() { peakFindParams = new TreeMap<String, IPeakFinderParameter>(defaultParams); } }