public CswNbtWebServiceMols.StructureSearchDataReturn runStructureSearch(StructureSearchViewData SSViewData) { CswNbtWebServiceMols.StructureSearchDataReturn Ret = new CswNbtWebServiceMols.StructureSearchDataReturn(); var SvcDriver = new CswWebSvcDriver <CswNbtWebServiceMols.StructureSearchDataReturn, StructureSearchViewData>( CswWebSvcResourceInitializer: new CswWebSvcResourceInitializerNbt(_Context, null), ReturnObj: Ret, WebSvcMethodPtr: CswNbtWebServiceMols.RunStructureSearch, ParamObj: SSViewData ); SvcDriver.run(); return(Ret); }
public static void RunStructureSearch(ICswResources CswResources, StructureSearchDataReturn Return, StructureSearchViewData StructureSearchData) { CswNbtResources NbtResources = (CswNbtResources)CswResources; string molData = StructureSearchData.molString; bool exact = StructureSearchData.exact; Collection <CswPrimaryKey> results = new Collection <CswPrimaryKey>(); //If the DirectStructureSearch module is enabled, use AcclDirect to run a search. Otherwise use the legacy code if (NbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.DirectStructureSearch)) { DataTable resultsTbl = NbtResources.AcclDirect.RunStructureSearch(molData, exact); foreach (DataRow row in resultsTbl.Rows) { results.Add(new CswPrimaryKey("nodes", CswConvert.ToInt32(row["nodeid"]))); } } else { Dictionary <int, string> resultsDict = NbtResources.StructureSearchManager.RunSearch(molData, exact); foreach (int nodeidPk in resultsDict.Keys) { results.Add(new CswPrimaryKey("nodes", nodeidPk)); } } CswNbtView searchView = new CswNbtView(NbtResources); searchView.SetViewMode(CswEnumNbtViewRenderingMode.Table); searchView.Category = "Recent"; searchView.ViewName = "Structure Search Results"; if (results.Count > 0) { CswNbtMetaDataObjectClass materialOC = NbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ChemicalClass); CswNbtMetaDataObjectClassProp molCOP = materialOC.getObjectClassProp(CswNbtObjClassChemical.PropertyName.Structure); CswNbtViewRelationship parent = searchView.AddViewRelationship(materialOC, false); searchView.AddViewProperty(parent, molCOP); foreach (CswPrimaryKey nodeId in results) { parent.NodeIdsToFilterIn.Add(nodeId); } } searchView.SaveToCache(false); StructureSearchData.viewId = searchView.SessionViewId.ToString(); StructureSearchData.viewMode = searchView.ViewMode.ToString(); Return.Data = StructureSearchData; }
public StructureSearchDataReturn() { Data = new StructureSearchViewData(); }