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;
}
}
}