/* $Revision$ $Author$ $Date$
*
* Copyright (C) 2006-2007 Egon Willighagen <egonw@users.sf.net>
*
* Contact: cdk-devel@lists.sourceforge.net
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
*
* This program 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.openscience.cdk.interfaces;
import org.openscience.cdk.interfaces.IBond.Order;
import org.openscience.cdk.interfaces.IBond.Stereo;
import javax.vecmath.Point3d;
/**
* A helper class to instantiate a IChemObject for a specific implementation.
*
* @author egonw
* @cdk.module interfaces
* @cdk.githash
*/
public interface IChemObjectBuilder {
/**
* Constructs an completely unset IAminoAcid.
*
* @return IAminoAcid implementation defined for this IChemObjectBuilder
*/
public IAminoAcid newAminoAcid();
/**
* Constructs an completely unset IAtom.
*
* @return IAtom implementation defined for this IChemObjectBuilder
*/
public IAtom newAtom();
/**
* Constructs an IAtom from a String containing an element symbol.
*
* @param element The IElement from which the Atom should be constructed
* @return IAtom implementation defined for this IChemObjectBuilder
*/
public IAtom newAtom(IElement element);
/**
* Constructs an IAtom from a String containing an element symbol.
*
* @param elementSymbol The String describing the element for the Atom
* @return IAtom implementation defined for this IChemObjectBuilder
*/
public IAtom newAtom(String elementSymbol);
/**
* Constructs an IAtom from an Element and a Point2d.
*
* @param elementSymbol The Element
* @param point2d The Point
* @return IAtom implementation defined for this IChemObjectBuilder
*/
public IAtom newAtom(String elementSymbol, javax.vecmath.Point2d point2d);
/**
* Constructs an IAtom from an Element and a Point3d.
*
* @param elementSymbol The symbol of the atom
* @param point3d The 3D coordinates of the atom
* @return IAtom implementation defined for this IChemObjectBuilder
*/
public IAtom newAtom(String elementSymbol, javax.vecmath.Point3d point3d);
/**
* Constructs an empty IAtomContainer.
*
* @return IAtomContainer implementation defined for this IChemObjectBuilder
*/
public IAtomContainer newAtomContainer();
/**
* Constructs an empty IAtomContainer that will contain a certain number of
* atoms and electronContainers. It will set the starting array lengths to the
* defined values, but will not create any IAtom or IElectronContainer's.
*
* @param atomCount Number of atoms to be in this container
* @param bondCount Number of bonds to be in this container
* @param lonePairCount Number of lone pairs to be in this container
* @param singleElectronCount Number of single electrons to be in this
* container
*
* @return IAtomContainer implementation defined for
* this IChemObjectBuilder
*/
public IAtomContainer newAtomContainer(int atomCount, int bondCount, int lonePairCount, int singleElectronCount);
/**
* Constructs an IAtomContainer with a copy of the atoms and electronContainers
* of another IAtomContainer (A shallow copy, i.e., with the same objects as in
* the original IAtomContainer).
*
* @param container An AtomContainer to copy the atoms and electronContainers from
* @return IAtomContainer implementation defined for this IChemObjectBuilder
*/
public IAtomContainer newAtomContainer(IAtomContainer container);
/**
* Constructs an IAtomParity.
*
* @param centralAtom Atom for which the parity is defined
* @param first First Atom of four that define the stereochemistry
* @param second Second Atom of four that define the stereochemistry
* @param third Third Atom of four that define the stereochemistry
* @param fourth Fourth Atom of four that define the stereochemistry
* @param parity +1 or -1, defining the parity
* @return IAtomParity implementation defined for this IChemObjectBuilder
*/
public IAtomParity newAtomParity(IAtom centralAtom,
IAtom first, IAtom second, IAtom third, IAtom fourth,
int parity);
/**
* Constructor for the IAtomType object.
*
* @param elementSymbol Symbol of the atom
* @return IAtomType implementation defined for this IChemObjectBuilder
*/
public IAtomType newAtomType(String elementSymbol);
/**
* Constructor for the IAtomType object.
*
* @param identifier An id for this atom type, like C3 for sp3 carbon
* @param elementSymbol The element symbol identifying the element to which this atom type applies
* @return IAtomType implementation defined for this IChemObjectBuilder
*/
public IAtomType newAtomType(String identifier, String elementSymbol);
/**
* Constructs an IAtomType from a String containing an element symbol.
*
* @param element The IElement from which the AtomType should be constructed
* @return IAtomType implementation defined for this IChemObjectBuilder
*/
public IAtomType newAtomType(IElement element);
/**
* Contructs a new IBioPolymer to store the IStrands.
*
* @return IBioPolymer implementation defined for this IChemObjectBuilder
*/
public IBioPolymer newBioPolymer();
/**
* Constructs an IPDBAtom from a IElement.
*
* @param element The Element for the PDBAtom
* @return IPDBAtom implementation defined for this IChemObjectBuilder
*/
public IPDBAtom newPDBAtom(IElement element);
/**
* Constructs an IPDBAtom from a String containing an element symbol.
*
* @param symbol The String describing the element for the PDBAtom
* @return IPDBAtom implementation defined for this IChemObjectBuilder
*/
public IPDBAtom newPDBAtom(String symbol);
/**
* Constructs an IPDBAtom from an Element and a Point3d.
*
* @param elementSymbol The symbol of the atom
* @param point3d The 3D coordinates of the atom
* @return IPDBAtom implementation defined for this IChemObjectBuilder
*/
public IPDBAtom newPDBAtom(String elementSymbol, Point3d point3d);
/**
* Contructs a new IPDBPolymer to store the IStrands.
*
* @return IPDBPolymer implementation defined for this IChemObjectBuilder
*/
public IPDBPolymer newPDBPolymer();
/**
* Constructs an IPDBStructure.
*
* @return IPDBStructure implementation defined for this IChemObjectBuilder
*/
public IPDBStructure newPDBStructure();
/**
* Constructs an IPDBMonomer.
*
* @return IPDBMonomer implementation defined for this IChemObjectBuilder
*/
public IPDBMonomer newPDBMonomer();
/**
* Constructs an empty IBond.
*
* @return IBond implementation defined for this IChemObjectBuilder
*/
public IBond newBond();
/**
* Constructs a IBond with a single bond order..
*
* @param atom1 the first IAtom in the bond
* @param atom2 the second IAtom in the bond
* @return IBond implementation defined for this IChemObjectBuilder
*/
public IBond newBond(IAtom atom1, IAtom atom2);
/**
* Constructs a IBond with a given order.
*
* @param atom1 the first IAtom in the bond
* @param atom2 the second IAtom in the bond
* @param order the bond order
* @return IBond implementation defined for this IChemObjectBuilder
*/
public IBond newBond(IAtom atom1, IAtom atom2, Order order);
/**
* Constructs a IBond with a given order and stereo orientation from an array
* of atoms.
*
* @param atom1 the first Atom in the bond
* @param atom2 the second Atom in the bond
* @param order the bond order
* @param stereo a descriptor the stereochemical orientation of this bond
* @return IBond implementation defined for this IChemObjectBuilder
*/
public IBond newBond(IAtom atom1, IAtom atom2, Order order,
Stereo stereo);
/**
* Constrcts a IBond with multiple atoms and undefined order and orientation.
*
* @param atoms The atoms constituting the bond
* @return IBond implementation defined for this IChemObjectBuilder
*/
public IBond newBond(IAtom[] atoms);
/**
* Constrcts a IBond with multiple atoms and defined order and undefined orientation.
*
* @param atoms The atoms constituting the bond
* @param order The order for this bond
* @return IBond implementation defined for this IChemObjectBuilder
*/
public IBond newBond(IAtom[] atoms, Order order);
/**
* Constructs an empty IChemFile.
*
* @return IChemFile implementation defined for this IChemObjectBuilder
*/
public IChemFile newChemFile();
/**
* Constructs an new IChemModel with a null IMoleculeSet.
*
* @return IChemModel implementation defined for this IChemObjectBuilder
*/
public IChemModel newChemModel();
/**
* Constructs an new IChemObject.
*
* @return IChemObject implementation defined for this IChemObjectBuilder
*/
public IChemObject newChemObject();
/**
* Constructs an new IChemObject from an existing one.
*
* @param object THe source object
* @return IChemObject implementation defined for this IChemObjectBuilder
*/
public IChemObject newChemObject(IChemObject object);
/**
* Constructs an empty IChemSequence.
*
* @return IChemSequence implementation defined for this IChemObjectBuilder
*/
public IChemSequence newChemSequence();
/**
* Constructs a new ICrystal with zero length cell axis.
*
* @return ICrystal implementation defined for this IChemObjectBuilder
*/
public ICrystal newCrystal();
/**
* Constructs a new ICrystal with zero length cell axis
* and adds the atoms in the IAtomContainer as cell content.
*
* @param container the IAtomContainer providing the atoms and bonds
* @return ICrystal implementation defined for this IChemObjectBuilder
*/
public ICrystal newCrystal(IAtomContainer container);
/**
* Constructs an empty IElectronContainer.
*
* @return IElectronContainer implementation defined for this IChemObjectBuilder
*/
public IElectronContainer newElectronContainer();
/**
* Constructs an empty IElement.
*
* @return IElement implementation defined for this IChemObjectBuilder
*/
public IElement newElement();
/**
* Constructs an empty IElement from an existing IElement.
*
* @param element The IElement from which the Element should be constructed
* @return IElement implementation defined for this IChemObjectBuilder
*/
public IElement newElement(IElement element);
/**
* Constructs an IElement with a given element symbol.
*
* @param symbol The element symbol that this element should have.
* @return IElement implementation defined for this IChemObjectBuilder
*/
public IElement newElement(String symbol);
/**
* Constructs an IElement with a given element symbol,
* atomic number and atomic mass.
*
* @param symbol The element symbol of this element.
* @param atomicNumber The atomicNumber of this element.
* @return IElement implementation defined for this IChemObjectBuilder
*/
public IElement newElement(String symbol, int atomicNumber);
/**
* Constructor for the IIsotope object.
*
* @param elementSymbol The element symbol, "O" for oxygen, etc.
* @return IIsotope implementation defined for this IChemObjectBuilder
*/
public IIsotope newIsotope(String elementSymbol);
/**
* Constructs an IIsotope object from an existing IIsotope.
*
* @param element The IElement from which the Isotope should be constructed
* @return IIsotope implementation defined for this IChemObjectBuilder
*/
public IIsotope newIsotope(IElement element);
/**
* Constructor for the IIsotope object.
*
* @param atomicNumber The atomic number of the isotope
* @param elementSymbol The element symbol, "O" for oxygen, etc.
* @param massNumber The atomic mass of the isotope, 16 for oxygen, e.g.
* @param exactMass The exact mass of the isotope, be a little more explicit here :-)
* @param abundance The natural abundance of the isotope
* @return IIsotope implementation defined for this IChemObjectBuilder
*/
public IIsotope newIsotope(int atomicNumber, String elementSymbol,
int massNumber, double exactMass, double abundance);
/**
* Constructor for the IIsotope object.
*
* @param atomicNumber The atomic number of the isotope, 8 for oxygen
* @param elementSymbol The element symbol, "O" for oxygen, etc.
* @param exactMass The exact mass of the isotope, be a little more explicit here :-)
* @param abundance The natural abundance of the isotope
* @return IIsotope implementation defined for this IChemObjectBuilder
*/
public IIsotope newIsotope(int atomicNumber, String elementSymbol,
double exactMass, double abundance);
/**
* Constructor for the IIsotope object.
*
* @param elementSymbol The element symbol, "O" for oxygen, etc.
* @param massNumber The atomic mass of the isotope, 16 for oxygen, e.g.
* @return IIsotope implementation defined for this IChemObjectBuilder
*/
public IIsotope newIsotope(String elementSymbol, int massNumber);
/**
* Constructs an unconnected ILonePair.
*
* @return ILonePair implementation defined for this IChemObjectBuilder
*/
public ILonePair newLonePair();
/**
* Constructs an ILonePair on an IAtom.
*
* @param atom IAtom to which this lone pair is connected
* @return ILonePair implementation defined for this IChemObjectBuilder
*/
public ILonePair newLonePair(IAtom atom);
/**
* Creates a directional IMapping between IChemObject's.
*
* @param objectOne object which is being mapped
* @param objectTwo object to which is being mapped
* @return IMapping implementation defined for this IChemObjectBuilder
*/
public IMapping newMapping(IChemObject objectOne, IChemObject objectTwo);
/**
* Creates an IMolecule without any IAtoms and IBonds.
*
* @return IMolecule implementation defined for this IChemObjectBuilder
*/
public IMolecule newMolecule();
/**
* Constructor for the IMolecule object. The parameters define the
* initial capacity of the arrays.
*
* @param atomCount init capacity of IAtom array
* @param bondCount init capacity of IElectronContainer array
* @param lonePairCount init capacity of ILonePair array
* @param singleElectronCount init capacity of ISingleElectron array
* @return IMolecule implementation defined for this IChemObjectBuilder
*/
public IMolecule newMolecule(int atomCount, int bondCount, int lonePairCount, int singleElectronCount);
/**
* Constructs an IMolecule with
* a shallow copy of the atoms and bonds of an IAtomContainer.
*
* @param container An IMolecule to copy the atoms and bonds from
* @return IMolecule implementation defined for this IChemObjectBuilder
*/
public IMolecule newMolecule(IAtomContainer container);
/**
* Constructs a new IMonomer.
*
* @return IMonomer implementation defined for this IChemObjectBuilder
*/
public IMonomer newMonomer ();
/**
* Constructs a new IPolymer to store the IMonomers.
*
* @return IPolymer implementation defined for this IChemObjectBuilder
*/
public IPolymer newPolymer();
/**
* Constructs an empty, forward IReaction.
*
* @return IReaction implementation defined for this IChemObjectBuilder
*/
public IReaction newReaction();
/**
* Constructs an empty IRing.
*
* @return IRing implementation defined for this IChemObjectBuilder
*/
public IRing newRing();
/**
* Constructs a IRing from an IAtomContainer.
*
* @param container IAtomContainer to create the IRing from
* @return IRing implementation defined for this IChemObjectBuilder
*/
public IRing newRing(IAtomContainer container);
/**
* Constructs a ring that will have a certain number of atoms of the given elements.
*
* @param ringSize The number of atoms and bonds the ring will have
* @param elementSymbol The element of the atoms the ring will have
* @return IRing implementation defined for this IChemObjectBuilder
*/
public IRing newRing(int ringSize, String elementSymbol);
/**
* Constructs an empty IRing that will have a certain size.
*
* @param ringSize The size (number of atoms) the ring will have
* @return IRing implementation defined for this IChemObjectBuilder
*/
public IRing newRing(int ringSize);
/**
* Constructs an empty IRingSet.
*
* @return IRingSet implementation defined for this IChemObjectBuilder
*/
public IRingSet newRingSet();
/**
* Constructs an empty IAtomContainerSet.
*
* @return IAtomContainerSet implementation defined for this IChemObjectBuilder
*/
public IAtomContainerSet newAtomContainerSet();
/**
* Constructs an empty IMoleculeSet.
*
* @return IMoleculeSet implementation defined for this IChemObjectBuilder
*/
public IMoleculeSet newMoleculeSet();
/**
* Constructs an empty IReactionSet.
*
* @return IReactionSet implementation defined for this IChemObjectBuilder
*/
public IReactionSet newReactionSet();
/**
* Constructs an empty IReactionScheme.
*
* @return IReactionScheme implementation defined for this IChemObjectBuilder
*/
public IReactionScheme newReactionScheme();
/**
* Constructs an single electron orbital with an associated IAtom.
*
* @return ISingleElectron implementation defined for this IChemObjectBuilder
*/
public ISingleElectron newSingleElectron();
/**
* Constructs an single electron orbital on an IAtom.
*
* @param atom The atom to which the single electron belongs.
* @return ISingleElectron implementation defined for this IChemObjectBuilder
*/
public ISingleElectron newSingleElectron(IAtom atom);
/**
* Contructs a new IStrand.
*
* @return IStrand implementation defined for this IChemObjectBuilder
*/
public IStrand newStrand();
/**
* Constructs an empty IPseudoAtom.
*
* @return IPseudoAtom implementation defined for this IChemObjectBuilder
*/
public IPseudoAtom newPseudoAtom();
/**
* Constructs an IPseudoAtom from a label.
*
* @param label The String describing the PseudoAtom
* @return IPseudoAtom implementation defined for this IChemObjectBuilder
*/
public IPseudoAtom newPseudoAtom(String label);
/**
* Constructs an IPseudoAtom from an existing IAtom object.
*
* @param element The IElement from which the PseudoAtom should be constructed
* @return IPseudoAtom implementation defined for this IChemObjectBuilder
*/
public IPseudoAtom newPseudoAtom(IElement element);
/**
* Constructs an IPseudoAtom from a label and a Point3d.
*
* @param label The String describing the IPseudoAtom
* @param point3d The 3D coordinates of the IPseudoAtom
* @return IPseudoAtom implementation defined for this IChemObjectBuilder
*/
public IPseudoAtom newPseudoAtom(String label, javax.vecmath.Point3d point3d);
/**
* Constructs an IPseudoAtom from a label and a Point2d.
*
* @param label The String describing the IPseudoAtom
* @param point2d The 2D coordinates of the IPseudoAtom
* @return IPseudoAtom implementation defined for this IChemObjectBuilder
*/
public IPseudoAtom newPseudoAtom(String label, javax.vecmath.Point2d point2d);
/**
* Constructs a IFragmentAtom.
*
* @return a fragment atom
*/
public IFragmentAtom newFragmentAtom();
public IMolecularFormula newMolecularFormula();
public IMolecularFormulaSet newMolecularFormulaSet();
public IMolecularFormulaSet newMolecularFormulaSet(IMolecularFormula formula);
public IAdductFormula newAdductFormula();
public IAdductFormula newAdductFormula(IMolecularFormula formula);
}