using System.Data; using chemaxon.struc; using chemaxon.formats; using chemaxon.marvin.io; namespace JChemBaseSearch { public static class NetMolImporter { private static void AddMoleculeToResultDataTable(DataTable targetDataTable, Molecule mol) { int n = mol.getPropertyCount(); for (int i = 0; i < n; i++) { string propertyName = mol.getPropertyKey(i); if (!targetDataTable.Columns.Contains(propertyName)) { targetDataTable.Columns.Add(propertyName); } } targetDataTable.Rows.Add(new object[targetDataTable.Columns.Count]); targetDataTable.Rows[targetDataTable.Rows.Count - 1]["Molecule"] = mol; for (int i = 0; i < n; i++) { string propertyName = mol.getPropertyKey(i); targetDataTable.Rows[targetDataTable.Rows.Count - 1][propertyName] = MPropHandler.convertToString(mol.properties(), propertyName); } } public static DataTable ImportMolecules(DataTable sourceDataTable, string moleculeColumnName) { DataTable dt = new DataTable(); dt.Columns.Add("Molecule", typeof(Molecule)); foreach (DataRow dr in sourceDataTable.Rows) { Molecule m = null; if (dr[moleculeColumnName] is byte[]) { m = MolImporter.importMol(dr[moleculeColumnName] as byte[]); } if (dr[moleculeColumnName] is string) { m = MolImporter.importMol(dr[moleculeColumnName] as string); } AddMoleculeToResultDataTable(dt, m); } return dt; } } }