Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
 public StructureSearchDataReturn()
 {
     Data = new StructureSearchViewData();
 }