You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2012/07/22 19:50:16 UTC

svn commit: r1364381 - /manifoldcf/integration/sharepoint-2010/trunk/webservice/MCPermissions.cs

Author: kwright
Date: Sun Jul 22 17:50:16 2012
New Revision: 1364381

URL: http://svn.apache.org/viewvc?rev=1364381&view=rev
Log:
First cut at a service method that returns unlimited documents from a library, in chunks.

Modified:
    manifoldcf/integration/sharepoint-2010/trunk/webservice/MCPermissions.cs

Modified: manifoldcf/integration/sharepoint-2010/trunk/webservice/MCPermissions.cs
URL: http://svn.apache.org/viewvc/manifoldcf/integration/sharepoint-2010/trunk/webservice/MCPermissions.cs?rev=1364381&r1=1364380&r2=1364381&view=diff
==============================================================================
--- manifoldcf/integration/sharepoint-2010/trunk/webservice/MCPermissions.cs (original)
+++ manifoldcf/integration/sharepoint-2010/trunk/webservice/MCPermissions.cs Sun Jul 22 17:50:16 2012
@@ -88,8 +88,58 @@ namespace MetaCarta.SharePoint.SoapServe
         [WebMethod(Description = "Returns the list of contents of a library without interference from administrator-set limits.")]
         public XmlNode GetListItems(string listName, string startRow, string rowLimit)
         {
-            // MHL - add code that lists items and allows paging through the results using startRow and rowLimit
-            return null;
+            XmlNode retVal = null;
+
+            try
+            {
+                uint startRowParam = Convert.ToUInt32(startRow);
+                uint rowLimitParam = Convert.ToUInt32(rowLimit);
+
+                using (SPWeb oWebsiteRoot = SPContext.Current.Site.RootWeb)
+                {
+
+                    oWebsiteRoot.Lists.IncludeRootFolder = true;
+                    SPList oList = oWebsiteRoot.Lists[listName];
+
+                    SPQuery listQuery = new SPQuery();
+                    listQuery.QueryThrottleMode = SPQueryThrottleOption.Override;
+                    listQuery.RowLimit = startRowParam + rowLimitParam;
+
+                    SPListItemCollection collListItems = oList.GetItems(listQuery);
+
+                    XmlDocument doc = new XmlDocument();
+                    retVal = doc.CreateElement("GetListItems", 
+                        "http://schemas.microsoft.com/sharepoint/soap/directory/");
+                    XmlNode getListItemsNode = doc.CreateElement("GetListItemsResponse");
+
+                    uint counter = 0;
+                    foreach (SPListItem oListItem in collListItems)
+                    {
+                        if (counter >= startRowParam)
+                        {
+                            XmlNode resultNode = doc.CreateElement("GetListItemsResult");
+                            XmlAttribute idAttribute = doc.CreateAttribute("ID");
+                            idAttribute.Value = Convert.ToString(oListItem.ID);
+                            resultNode.Attributes.Append(idAttribute);
+                            getListItemsNode.AppendChild(resultNode);
+                        }
+                        counter++;
+                    }
+                    
+                    retVal.AppendChild(getListItemsNode);
+                }
+            }
+            catch (SoapException soapEx)
+            {
+                throw soapEx;
+            }
+            catch (Exception ex)
+            {
+                EventLog.WriteEntry("MCPermissions.asmx", ex.Message);
+                throw RaiseException(ex.Message, "1010", ex.Source);
+            }
+
+            return retVal;
         }
         
         #endregion