/*-
* Copyright © 2009 Diamond Light Source Ltd.
*
* This file is part of GDA.
*
* GDA is free software: you can redistribute it and/or modify it under the
* terms of the GNU General Public License version 3 as published by the Free
* Software Foundation.
*
* GDA is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along
* with GDA. If not, see <http://www.gnu.org/licenses/>.
*/
package uk.ac.gda.richbeans.examples.scan;
import java.io.Serializable;
import java.net.URL;
import org.apache.commons.beanutils.BeanUtils;
/**
* Class to hold all xas scan parameters
*/
public class TestScanParameters implements Serializable{
private String scannableName;
private String element;
private String edge;
private Double initialEnergy;
private Double finalEnergy;
private Double edgeEnergy;
private Double coreHole;
private Double gaf1;
private Double gaf2;
private Double a;
private Double b;
private Double preEdgeStep;
private Double preEdgeTime;
private Double edgeStep;
private Double edgeTime;
private Double exafsTime;
private Double exafsFromTime;
private Double exafsToTime;
private Double exafsStep;
private String exafsStepType;
private boolean shouldValidate=true;
/**
* Must implement clear() method on beans being used with BeanUI.
*/
public void clear() {
// We have to nullify fields here because of the
// XML the beanline scientists require.
a=b=gaf1=gaf2=null;
exafsTime=exafsFromTime=exafsToTime=null;
}
/**
*
*/
static public final URL mappingURL = TestScanParameters.class.getResource("ParameterMapping.xml");
/**
*
*/
static public final URL schemaURL = TestScanParameters.class.getResource("ParameterMapping.xsd");
/**
* @return start energy in eV
*/
public Double getInitialEnergy() {
return initialEnergy;
}
/**
* @param startEnergy
* in eV
*/
public void setInitialEnergy(Double startEnergy) {
this.initialEnergy = startEnergy;
}
/**
* @return stop energy in eV
*/
public Double getFinalEnergy() {
return finalEnergy;
}
/**
* @param stopEnergy
*/
public void setFinalEnergy(Double stopEnergy) {
this.finalEnergy = stopEnergy;
}
/**
* @return the edge energy in eV
*/
public Double getEdgeEnergy() {
return edgeEnergy;
}
/**
* @param edgeEnergy
*/
public void setEdgeEnergy(Double edgeEnergy) {
this.edgeEnergy = edgeEnergy;
}
/**
* @return core hole
*/
public Double getCoreHole() {
return coreHole;
}
/**
* @param corehole
*/
public void setCoreHole(Double corehole) {
this.coreHole = corehole;
}
/**
* @return gaf1
*/
public Double getGaf1() {
return gaf1;
}
/**
* @param gaf1
*/
public void setGaf1(Double gaf1) {
this.gaf1 = gaf1;
}
/**
* @return gaf2
*/
public Double getGaf2() {
return gaf2;
}
/**
* @param gaf2
*/
public void setGaf2(Double gaf2) {
this.gaf2 = gaf2;
}
/**
* @param element
*/
public void setElement(String element) {
this.element = element;
}
/**
* @param edge
*/
public void setEdge(String edge) {
this.edge = edge;
}
/**
* @return element name
*/
public String getElement() {
return element;
}
/**
* @return edge name
*/
public String getEdge() {
return edge;
}
/**
* @return A
*/
public Double getA() {
return a;
}
/**
* @return true is a and b are given
*/
public boolean isABGiven(){
return a != null && b != null;
}
/**
* @return true if corehole, gaf1 and gaf2
*/
public boolean isCoreGiven(){
return coreHole != null && gaf1 != null && gaf2 != null;
}
/**
* @param a
*/
public void setA(Double a) {
this.a = a;
}
/**
* @return B
*/
public Double getB() {
return b;
}
/**
* @param b
*/
public void setB(Double b) {
this.b = b;
}
/**
* @return pre-edge step
*/
public Double getPreEdgeStep() {
return preEdgeStep;
}
/**
* @param preEdgeStep
*/
public void setPreEdgeStep(Double preEdgeStep) {
this.preEdgeStep = preEdgeStep;
}
/**
* @return pre-edge time
*/
public Double getPreEdgeTime() {
return preEdgeTime;
}
/**
* @param preEdgeTime
*/
public void setPreEdgeTime(Double preEdgeTime) {
this.preEdgeTime = preEdgeTime;
}
/**
* @return edge step increment
*/
public Double getEdgeStep() {
return edgeStep;
}
/**
* @param edgeStep
*/
public void setEdgeStep(Double edgeStep) {
this.edgeStep = edgeStep;
}
/**
* @return time per point over edge region
*/
public Double getEdgeTime() {
return edgeTime;
}
/**
* @param edgeTime
*/
public void setEdgeTime(Double edgeTime) {
this.edgeTime = edgeTime;
}
/**
* @return the constant time per point over post edge scan
*/
public Double getExafsTime() {
return exafsTime;
}
/**
* @param postEdgeTime
*/
public void setExafsTime(Double postEdgeTime) {
this.exafsTime = postEdgeTime;
}
/**
* @return start time per point
*/
public Double getExafsFromTime() {
return exafsFromTime;
}
/**
* @param postEdgeFromTime
*/
public void setExafsFromTime(Double postEdgeFromTime) {
this.exafsFromTime = postEdgeFromTime;
}
/**
* @return final time per point in post edge scan
*/
public Double getExafsToTime() {
return exafsToTime;
}
/**
* @param postEdgeToTime
*/
public void setExafsToTime(Double postEdgeToTime) {
this.exafsToTime = postEdgeToTime;
}
/**
* @return the postEdgeStep
*/
public Double getExafsStep() {
return exafsStep;
}
/**
* @param postEdgeStep
* the postEdgeStep to set in eV unless constantEnergy is false
*/
public void setExafsStep(Double postEdgeStep) {
this.exafsStep = postEdgeStep;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((a == null) ? 0 : a.hashCode());
result = prime * result + ((b == null) ? 0 : b.hashCode());
result = prime * result
+ ((coreHole == null) ? 0 : coreHole.hashCode());
result = prime * result + ((edge == null) ? 0 : edge.hashCode());
result = prime * result
+ ((edgeEnergy == null) ? 0 : edgeEnergy.hashCode());
result = prime * result
+ ((edgeStep == null) ? 0 : edgeStep.hashCode());
result = prime * result
+ ((edgeTime == null) ? 0 : edgeTime.hashCode());
result = prime * result + ((element == null) ? 0 : element.hashCode());
result = prime * result
+ ((exafsFromTime == null) ? 0 : exafsFromTime.hashCode());
result = prime * result
+ ((exafsStep == null) ? 0 : exafsStep.hashCode());
result = prime * result
+ ((exafsStepType == null) ? 0 : exafsStepType.hashCode());
result = prime * result
+ ((exafsTime == null) ? 0 : exafsTime.hashCode());
result = prime * result
+ ((exafsToTime == null) ? 0 : exafsToTime.hashCode());
result = prime * result
+ ((finalEnergy == null) ? 0 : finalEnergy.hashCode());
result = prime * result + ((gaf1 == null) ? 0 : gaf1.hashCode());
result = prime * result + ((gaf2 == null) ? 0 : gaf2.hashCode());
result = prime * result
+ ((initialEnergy == null) ? 0 : initialEnergy.hashCode());
result = prime * result
+ ((preEdgeStep == null) ? 0 : preEdgeStep.hashCode());
result = prime * result
+ ((preEdgeTime == null) ? 0 : preEdgeTime.hashCode());
result = prime * result
+ ((scannableName == null) ? 0 : scannableName.hashCode());
result = prime * result + (shouldValidate ? 1231 : 1237);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
TestScanParameters other = (TestScanParameters) obj;
if (a == null) {
if (other.a != null) {
return false;
}
} else if (!a.equals(other.a)) {
return false;
}
if (b == null) {
if (other.b != null) {
return false;
}
} else if (!b.equals(other.b)) {
return false;
}
if (coreHole == null) {
if (other.coreHole != null) {
return false;
}
} else if (!coreHole.equals(other.coreHole)) {
return false;
}
if (edge == null) {
if (other.edge != null) {
return false;
}
} else if (!edge.equals(other.edge)) {
return false;
}
if (edgeEnergy == null) {
if (other.edgeEnergy != null) {
return false;
}
} else if (!edgeEnergy.equals(other.edgeEnergy)) {
return false;
}
if (edgeStep == null) {
if (other.edgeStep != null) {
return false;
}
} else if (!edgeStep.equals(other.edgeStep)) {
return false;
}
if (edgeTime == null) {
if (other.edgeTime != null) {
return false;
}
} else if (!edgeTime.equals(other.edgeTime)) {
return false;
}
if (element == null) {
if (other.element != null) {
return false;
}
} else if (!element.equals(other.element)) {
return false;
}
if (exafsFromTime == null) {
if (other.exafsFromTime != null) {
return false;
}
} else if (!exafsFromTime.equals(other.exafsFromTime)) {
return false;
}
if (exafsStep == null) {
if (other.exafsStep != null) {
return false;
}
} else if (!exafsStep.equals(other.exafsStep)) {
return false;
}
if (exafsStepType == null) {
if (other.exafsStepType != null) {
return false;
}
} else if (!exafsStepType.equals(other.exafsStepType)) {
return false;
}
if (exafsTime == null) {
if (other.exafsTime != null) {
return false;
}
} else if (!exafsTime.equals(other.exafsTime)) {
return false;
}
if (exafsToTime == null) {
if (other.exafsToTime != null) {
return false;
}
} else if (!exafsToTime.equals(other.exafsToTime)) {
return false;
}
if (finalEnergy == null) {
if (other.finalEnergy != null) {
return false;
}
} else if (!finalEnergy.equals(other.finalEnergy)) {
return false;
}
if (gaf1 == null) {
if (other.gaf1 != null) {
return false;
}
} else if (!gaf1.equals(other.gaf1)) {
return false;
}
if (gaf2 == null) {
if (other.gaf2 != null) {
return false;
}
} else if (!gaf2.equals(other.gaf2)) {
return false;
}
if (initialEnergy == null) {
if (other.initialEnergy != null) {
return false;
}
} else if (!initialEnergy.equals(other.initialEnergy)) {
return false;
}
if (preEdgeStep == null) {
if (other.preEdgeStep != null) {
return false;
}
} else if (!preEdgeStep.equals(other.preEdgeStep)) {
return false;
}
if (preEdgeTime == null) {
if (other.preEdgeTime != null) {
return false;
}
} else if (!preEdgeTime.equals(other.preEdgeTime)) {
return false;
}
if (scannableName == null) {
if (other.scannableName != null) {
return false;
}
} else if (!scannableName.equals(other.scannableName)) {
return false;
}
if (shouldValidate != other.shouldValidate) {
return false;
}
return true;
}
/**
* @return the postEdgeStepType
*/
public String getExafsStepType() {
return exafsStepType;
}
/**
* @param postEdgeStepType
* scan at constant energy or constant K
*/
public void setExafsStepType(String postEdgeStepType) {
this.exafsStepType = postEdgeStepType;
}
/**
*
*/
@Override
public String toString() {
try {
return BeanUtils.describe(this).toString();
} catch (Exception e) {
return e.getMessage();
}
}
/**
* @return Returns the scannableName.
*/
public String getScannableName() {
return scannableName;
}
/**
* @param scannableName The scannableName to set.
*/
public void setScannableName(String scannableName) {
this.scannableName = scannableName;
}
/**
* @return Returns the shouldValidate.
*/
public boolean isShouldValidate() {
return shouldValidate;
}
/**
* @param shouldValidate The shouldValidate to set.
*/
public void setShouldValidate(boolean shouldValidate) {
this.shouldValidate = shouldValidate;
}
}