Beispiel #1
0
        private string getSelectClause(string docClass)
        {
            //Build a SELECT clause that includes all properties (fields) for the specified Document Class
            StringBuilder sb    = new StringBuilder("\"DAV:displayname\", \"DAV:href\"");
            MetaDatas     metas = getMetaData(docClass);

            foreach (MetaData md in metas)
            {
                sb.Append(", \"" + XmlConvert.EncodeName(md.Property) + "\"");
            }
            return(sb.ToString());
        }
Beispiel #2
0
        public MetaDatas GetMetaData()
        {
            //
            MetaDatas            metaData = null;
            ImagingServiceClient client   = null;

            try {
                client   = new ImagingServiceClient();
                metaData = client.GetMetaData();
                client.Close();
            }
            catch (TimeoutException te) { client.Abort(); throw new ApplicationException(te.Message); }
            catch (FaultException <EnterpriseFault> ef) { client.Abort(); throw new ApplicationException(ef.Detail.Message); }
            catch (FaultException fe) { client.Abort(); throw new ApplicationException(fe.Message); }
            catch (CommunicationException ce) { client.Abort(); throw new ApplicationException(ce.Message); }
            return(metaData);
        }
Beispiel #3
0
        private MetaDatas getMetaData()
        {
            //Retrieve document class metadata
            MetaDatas metas = null;

            try {
                metas = new MetaDatas();
                System.Xml.XmlDataDocument xmlMeta = new System.Xml.XmlDataDocument();
                xmlMeta.DataSet.ReadXml(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath + "\\App_Data\\metadata.xml");
                for (int i = 0; i < xmlMeta.DataSet.Tables["MetaDataTable"].Rows.Count; i++)
                {
                    MetaData md = new MetaData(xmlMeta.DataSet.Tables["MetaDataTable"].Rows[i]["ClassName"].ToString(), xmlMeta.DataSet.Tables["MetaDataTable"].Rows[i]["Property"].ToString());
                    metas.Add(md);
                }
            }
            catch (Exception ex) { throw new ApplicationException(ex.Message, ex); }
            return(metas);
        }
Beispiel #4
0
        private MetaDatas getMetaData(string className)
        {
            //Retrieve document class metadata for the specified className
            MetaDatas metas = null;

            try {
                metas = new MetaDatas();
                MetaDatas _metas = getMetaData();
                foreach (MetaData md in _metas)
                {
                    if (md.ClassName == className)
                    {
                        metas.Add(md);
                    }
                }
            }
            catch (Exception ex) { throw new ApplicationException(ex.Message, ex); }
            return(metas);
        }
Beispiel #5
0
        public MetaDatas GetMetaData(string className)
        {
            //Retrieve document class metadata for the specified className
            MetaDatas metas = null;

            try {
                metas = new MetaDatas();
                MetaDatas _metas = GetMetaData();
                foreach (MetaData md in _metas)
                {
                    if (md.ClassName == className)
                    {
                        metas.Add(md);
                    }
                }
            }
            catch (Exception ex) { throw new FaultException <EnterpriseFault>(new EnterpriseFault(ex.Message), "Service Error"); }
            return(metas);
        }
Beispiel #6
0
        public DataSet SearchSharePointImageStore(SearchRequest request)
        {
            //Find all documents that match the request
            DataSet response = new DataSet();

            try {
                using (ClientContext context = new ClientContext(WebConfigurationManager.AppSettings["SP_Url"])) {
                    //Set credentials
                    context.Credentials = getCredentials();

                    //Create the query
                    KeywordQuery query = new KeywordQuery(context);
                    query.StartRow       = 0;
                    query.RowLimit       = request.MaxResults;
                    query.EnableStemming = true;
                    query.TrimDuplicates = false;
                    query.QueryText      = "scope:\"" + request.ScopeName + "\" AND contentclass:\"STS_ListItem_DocumentLibrary\" AND IsDocument:\"True\" AND ";
                    if (request.PropertyName != null && request.PropertyName.Trim().Length > 0)
                    {
                        query.QueryText += request.PropertyName + ":" + request.PropertyValue;
                    }
                    if (request.PropertyName1 != null && request.PropertyName1.Trim().Length > 0)
                    {
                        query.QueryText += " " + request.Operand1 + " " + request.PropertyName1 + ":" + request.PropertyValue1;
                    }
                    if (request.PropertyName2 != null && request.PropertyName2.Trim().Length > 0)
                    {
                        query.QueryText += " " + request.Operand2 + " " + request.PropertyName2 + ":" + request.PropertyValue2;
                    }
                    if (request.PropertyName3 != null && request.PropertyName3.Trim().Length > 0)
                    {
                        query.QueryText += " " + request.Operand3 + " " + request.PropertyName3 + ":" + request.PropertyValue3;
                    }
                    query.SelectProperties.Add("scope");
                    query.SelectProperties.Add("contentclass");
                    query.SelectProperties.Add("IsDocument");
                    query.SelectProperties.Add("Title");
                    query.SelectProperties.Add("Path");
                    query.SelectProperties.Add("Description");
                    query.SelectProperties.Add("Size");
                    MetaDatas metas = GetMetaData(request.DocumentClass);
                    foreach (MetaData md in metas)
                    {
                        query.SelectProperties.Add(md.Value);
                    }

                    //Create  the dataset schema
                    response.Tables.Add("ClientResultTable");
                    response.Tables["ClientResultTable"].Columns.Add("scope");
                    response.Tables["ClientResultTable"].Columns.Add("contentclass");
                    response.Tables["ClientResultTable"].Columns.Add("IsDocument");
                    response.Tables["ClientResultTable"].Columns.Add("Title");
                    response.Tables["ClientResultTable"].Columns.Add("Path");
                    response.Tables["ClientResultTable"].Columns.Add("Description");
                    response.Tables["ClientResultTable"].Columns.Add("Size");

                    //Create a field wth the metadata property (friendly) field
                    foreach (MetaData md in metas)
                    {
                        response.Tables["ClientResultTable"].Columns.Add(md.Property);
                    }
                    response.AcceptChanges();

                    ClientResult <ResultTableCollection> results = new SearchExecutor(context).ExecuteQuery(query);
                    context.ExecuteQuery();
                    foreach (IDictionary result in results.Value[0].ResultRows)
                    {
                        //Populate the dataset with a row for each result
                        DataRow row = response.Tables["ClientResultTable"].NewRow();
                        row["scope"]        = result["scope"];
                        row["contentclass"] = result["contentclass"];
                        row["IsDocument"]   = result["IsDocument"];
                        row["Title"]        = result["Title"];

                        string path = result["Path"].ToString();
                        row["Path"]        = path.Substring(path.Length - 1, 1) == "/" ? path.Substring(0, path.Length - 1) : path;
                        row["Description"] = result["Description"];
                        row["Size"]        = result["Size"];

                        foreach (MetaData md in metas)
                        {
                            row[md.Property] = result[md.Value];
                        }
                        response.Tables["ClientResultTable"].Rows.Add(row);
                    }
                }
            }
            catch (Exception ex) { throw new FaultException <EnterpriseFault>(new EnterpriseFault(ex.Message), "Service Error"); }
            return(response);
        }