if("fingerprintint".equals(request.getParameter("output"))) serviceType = "fingerprintint";
if("fingerprinthex".equals(request.getParameter("output"))) serviceType = "fingerprinthex";
if("fingerprintbin".equals(request.getParameter("output"))) serviceType = "fingerprintbin";
//if("SciXML".equals(request.getParameter("output"))) serviceType = "scixml";
IMolecule mol = null;
boolean makeStructure = true;
if(request.getParameter("inchi") != null && (request.getParameter("inchi").length() > 0)) {
makeStructure = false;
if(mol == null) {
StereoInChIToMolecule.primeCacheForInChI(request.getParameter("inchi"));
mol = ConverterToInChI.getMolFromInChI(request.getParameter("inchi"));
if(mol != null) {
try {
StructureConverter.configureMolecule(mol);
} catch (Exception e) {
mol = null;
}
makeStructure = !MultiFragmentStructureDiagramGenerator.hasStructure(mol);
if(mol.getAtomCount() == 1) makeStructure = true;
}
}
}
if(mol == null && request.getParameter("smiles") != null && request.getParameter("smiles").length() > 0) {
try {
mol = new SmilesParser(DefaultChemObjectBuilder.getInstance()).parseSmiles(request.getParameter("smiles"));
if(mol != null) {
StructureConverter.configureMolecule(mol);
makeStructure = !MultiFragmentStructureDiagramGenerator.hasStructure(mol);
if(mol.getAtomCount() == 1) makeStructure = true;
}
} catch (Exception e) {
mol = null;
}
}
if(mol == null && request.getParameter("name") != null && request.getParameter("name").length() > 0) {
try {
NameToStructure nts = NameToStructure.getInstance();
Element cml = nts.parseToCML(request.getParameter("name"));
if (cml != null){
mol = StructureConverter.cmlToMolecule(cml);
if(mol != null) {
StructureConverter.configureMolecule(mol);
makeStructure = !MultiFragmentStructureDiagramGenerator.hasStructure(mol);
if(mol.getAtomCount() == 1) makeStructure = true;
for (Iterator<IAtom> iterator = mol.atoms(); iterator.hasNext();) {//remove explicit hydrogen and make hydrogens properties of atoms to make viewing easier
IAtom a = iterator.next();
int hydrogen =0;
List<IAtom> neighbours = mol.getConnectedAtomsList(a);
for (IAtom neighbour : neighbours) {
if (neighbour.getAtomicNumber() ==1 ){
mol.removeBond(a, neighbour);
mol.removeAtom(neighbour);
hydrogen++;
}
}
a.setHydrogenCount(hydrogen);
}
}
else{
response.setContentType("text/plain");
response.getWriter().println("CML could not be converted to CDK molecule");
}
}
else{
response.setContentType("text/plain");
response.getWriter().println("OPSIN failed to parse this name");
}
} catch (Exception e) {
mol = null;
}
}
if(mol == null && request.getParameter("element") != null && (request.getParameter("element").length() > 0)) {
String elemSymbol = request.getParameter("element");
Atom a = new Atom(elemSymbol);
a.setPoint2d(new Point2d(0.0, 0.0));
mol = new Molecule();
mol.addAtom(a);
makeStructure = false;
}
if (mol == null){
response.setContentType("text/plain");