示例#1
0
        public CswNbtResourceCollection Search(string searchtype, string query)
        {
            CswNbtApiSearchRequest   Req = new CswNbtApiSearchRequest(query, searchtype);
            CswNbtResourceCollection Ret = new CswNbtResourceCollection();

            //Look for optional params
            Req.NodeType = _Context.Request.Params["nodetype"] ?? string.Empty;

            var SvcDriver = new CswWebSvcDriver <CswNbtResourceCollection, CswNbtApiSearchRequest>(
                CswWebSvcResourceInitializer: new CswWebSvcResourceInitializerNbt(_Context, null),
                ReturnObj: Ret,
                WebSvcMethodPtr: CswNbtWebServiceApiSearch.Search,
                ParamObj: Req
                );

            SvcDriver.run();

            WebOperationContext ctx = WebOperationContext.Current;

            ctx.OutgoingResponse.StatusCode = Ret.Status;

            if (ctx.OutgoingResponse.StatusCode != HttpStatusCode.OK)
            {
                Ret = null;
            }

            return(Ret);
        }
示例#2
0
        public void Search(CswNbtResourceCollection Return, CswNbtApiSearchRequest SearchRequest)
        {
            try
            {
                int filter_nt_id = Int32.MinValue;
                if (false == String.IsNullOrEmpty(SearchRequest.NodeType))
                {
                    filter_nt_id = _CswNbtResources.MetaData.getNodeType(SearchRequest.NodeType).NodeTypeId;
                }

                CswNbtWebServiceSearch searchService = new CswNbtWebServiceSearch(_CswNbtResources, null);
                CswNbtSearch           search        = searchService.getSearch(SearchRequest.Query, SearchRequest.SearchType, filter_nt_id, Int32.MinValue, Int32.MinValue);
                ICswNbtTree            results       = search.Results();
                for (int i = 0; i < results.getChildNodeCount(); i++)
                {
                    results.goToNthChild(i);
                    CswNbtNodeKey             NodeKey     = results.getNodeKeyForCurrentPosition();
                    string                    Name        = results.getNodeNameForCurrentPosition();
                    CswNbtMetaDataNodeType    nt          = _CswNbtResources.MetaData.getNodeType(NodeKey.NodeTypeId);
                    CswNbtMetaDataObjectClass oc          = nt.getObjectClass();
                    CswNbtMetaDataPropertySet propSet     = oc.getPropertySet();
                    string                    PropSetName = string.Empty;
                    if (null != propSet)
                    {
                        PropSetName = propSet.Name;
                    }

                    Return.Add(Name, NodeKey.NodeId, nt.NodeTypeName, oc.ObjectClassName, PropSetName, BuildURI(nt.NodeTypeName, NodeKey.NodeId.PrimaryKey));
                    results.goToParentNode();
                }

                Return.Status = HttpStatusCode.OK;
            }
            catch (Exception)
            {
                Return.Status = HttpStatusCode.InternalServerError;
            }
        }
示例#3
0
        public static void Search(ICswResources CswResources, CswNbtResourceCollection Return, CswNbtApiSearchRequest SearchRequest)
        {
            CswNbtWebServiceApiSearch SEARCH = new CswNbtWebServiceApiSearch((CswNbtResources)CswResources);

            SEARCH.Search(Return, SearchRequest);
        }