org.biojava.nbio.aaproperties.xml.Element Maven / Gradle / Ivy
/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
*/
package org.biojava.nbio.aaproperties.xml;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* One way to model the elements
* @author pvtroshin
*
*/
@XmlAccessorType(XmlAccessType.NONE)
public class Element {
/**
* Element name as per periodic table e.g. "Hydrogen"
*/
@XmlAttribute(name = "name", required = true)
private String name;
/**
* Element short name as in periodic table e.g. "H"
*/
@XmlAttribute(name = "symbol")
private String symbol;
/**
* The atomic number of the element = number of protons.
*/
@XmlAttribute(name = "atomicnumber")
private int atomicNumber;
/**
* The computed mass based on isotopes and their abundances
*/
@XmlAttribute(name = "mass", required = true)
private double mass;
/**
* List of common isotopes of the element
*/
@XmlElement
private List isotope;
/**
* To enable quick retrieval of Isotope from its name
*/
private Map name2Isotope;
public Element(){}
public Element(String name, String symbol, int atomicNumber, List isotopes, double mass){
if(atomicNumber <= 0){
throw new Error("Atomic number of Elements must be > 0.");
}
if(mass <= 0){
throw new Error("Mass of Elements must be > 0.");
}
this.setName(name);
this.setSymbol(symbol);
this.setAtomicNumber(atomicNumber);
this.setIsotopes(isotopes);
this.setMass(mass);
}
@Override
public String toString(){
return symbol + ", " + name + ", " + atomicNumber;
}
public void setMass(double mass){
this.mass = mass;
}
public double getMass(){
return this.mass;
}
public void setName(String name) {
this.name = name;
}
public String getName(){
return this.name;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
public void setAtomicNumber(int atomicNumber) {
this.atomicNumber = atomicNumber;
}
public List getIsotopes() {
return isotope;
}
public void setIsotopes(List isotopes) {
this.isotope = isotopes;
this.name2Isotope = new HashMap<>();
if(isotopes != null){
for(Isotope i:isotopes){
name2Isotope.put(i.getName(), i);
}
}
}
}