Replace the code with the following
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
Microsoft.SharePoint;
using
Microsoft.Office.DocumentManagement;
namespace
anavijai.DocumentIDProvider
{
public class
CustomDocumentIDProvider :
Microsoft.Office.DocumentManagement.DocumentIdProvider
{
private
string idFormat = "{0} - {1}- {2}";
public override
string[] GetDocumentUrlsById(SPSite site,
string documentId)
{
string itemUrl =
string.Empty;
// Only proceed if we have the site
and document id
if (site !=
null && !string.IsNullOrEmpty(documentId))
{
string[] splits =
documentId.Split('@',
' ');
string webName =
splits.Length > 0 ? splits[0] : null;
string itemId =
splits.Length > 1 ? splits[1] : null;
try
{
SPWeb web = string.IsNullOrEmpty(webName)
? site.OpenWeb() : site.OpenWeb(webName);
SPListItem item = null;
Guid itemGuid =
new Guid(itemId);
// Find the item among the
lists on the specified web
foreach (SPList
list in web.Lists)
{
try
{
item = list.Items[itemGuid];
}
catch
{
//if it's not in this
list, go to the next one
continue;
}
if (item != null)
{
itemUrl = web.Url +
"/";
itemUrl += item.Url;
}
}
}
catch (Exception)
{ /* item not found, return an empty array*/
}
}
if (string.IsNullOrEmpty(itemUrl))
{
return
null;
}
else
{
return
new string[]
{ itemUrl };
}
}
public override
string GenerateDocumentId(SPListItem
listItem)
{
if (listItem ==
null)
{
throw
new
ArgumentNullException("listItem");
}
return
string.Format(this.idFormat,
listItem.ParentList.Title, listItem.Web.Title, listItem.ID.ToString());
}
public override
string GetSampleDocumentIdText(SPSite site)
{
return
string.Format(this.idFormat,
"/", "0");
}
public override
bool DoCustomSearchBeforeDefaultSearch
{
get {
return false; }
}
}
}