static void Main(string[] args)
{
MoveLibraries();
}
static void MoveAccoucements(SPWeb sourceweb, SPWeb destWeb, SPList sourceList, SPList destList, string strListName)
{
// copy items
foreach (SPListItem item in sourceList.Items)
{
SPListItem newDestItem = destList.Items.Add();
foreach (SPField field in sourceList.Fields)
{
if (!field.ReadOnlyField && item[field.Title] != null && field.Title != "Attachments")
newDestItem[field.Title] = item[field.Title];
destWeb.AllowUnsafeUpdates = true;
newDestItem.Update();
}
}
// set quicklaunch settings
destList.OnQuickLaunch = sourceList.OnQuickLaunch;
destList.Update();
}
static void TraverseList(SPList srclist, SPWeb srcweb, SPList trglist, SPWeb trgweb)
{
Console.WriteLine("Traversing list: " + srclist.Title );
LogMessageToFile("Traversing list: " + srclist.Title );
Console.WriteLine("Base Type: " + srclist.BaseType.ToString() );
LogMessageToFile("Base Type: " + srclist.BaseType.ToString());
TraverseListFolder(srclist.RootFolder, trglist.RootFolder, trglist, trgweb);
}
static void CreateImpFields(SPListItem subitem, SPWeb trgweb, SPListItem item,string strFldName)
{
try
{
if (subitem.Fields[strFldName].ReadOnlyField && subitem[strFldName] != null)
{
item.Fields[strFldName].ReadOnlyField = false;
item[strFldName] = subitem[strFldName].ToString();
trgweb.AllowUnsafeUpdates = true;
item.Update();
item.Fields[strFldName].ReadOnlyField = true;
}
else if (subitem[strFldName] != null)
{
item[strFldName] = subitem[strFldName].ToString();
trgweb.AllowUnsafeUpdates = true;
item.Update();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + "while creating field :" + strFldName); ;
}
}
static void CreateFiled(SPListItem subitem, SPWeb trgweb, SPListItem item)
{
try
{
CreateImpFields(subitem, trgweb, item, "Title");
CreateImpFields(subitem, trgweb, item, "Created");
CreateImpFields(subitem, trgweb, item, "Created By");
CreateImpFields(subitem, trgweb, item, "Name");
CreateImpFields(subitem, trgweb, item, "Modified");
CreateImpFields(subitem, trgweb, item, "Modified By");
Console.WriteLine("Fields are sucessfully created");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + "while field creation"); ;
}
}
static void CreateFileds(SPListItem subitem, SPWeb trgweb, SPListItem item)
{
foreach (SPField field in subitem.Fields)
{
// if (!field.ReadOnlyField && item[field.Title] != null && field.Title != "Attachments")
try
{
if (field.ReadOnlyField)
{
item.Fields[field.Title].ReadOnlyField = false;
item[field.Title] = subitem[field.Title].ToString();
trgweb.AllowUnsafeUpdates = true;
item.Update();
item.Fields[field.Title].ReadOnlyField = true;
}
else
{
item[field.Title] = subitem[field.Title].ToString();
trgweb.AllowUnsafeUpdates = true;
item.Update();
}
}
catch (Exception ex)
{
continue;
}
}
}
static void TraverseListFolder(SPFolder folder, SPFolder trgRootFolder, SPList trglist, SPWeb trgweb)
{
// Get the collection of items from this folder
SPQuery qry = new SPQuery();
qry.Folder = folder;
SPWeb web = null;
try
{
web = folder.ParentWeb;
SPListItemCollection ic = web.Lists[folder.ParentListId].GetItems(qry);
foreach (SPListItem subitem in ic)
{
try
{
Console.WriteLine("List item: " + subitem.Name);
Console.WriteLine("List item type: " + subitem.ContentType.Name);
LogMessageToFile("List item: " + subitem.Name);
LogMessageToFile("List item type: " + subitem.ContentType.Name);
if (subitem.Folder != null)
{
trgweb.AllowUnsafeUpdates = true;
web.AllowUnsafeUpdates = true;
/* create a folder under the path specified */
SPFolder spfolder = trgRootFolder.SubFolders.Add(subitem.Name);
/* set the folder name and update */
SPListItem item = spfolder.Item;
// item["Title"] = "Name";
//item["Title"]
CreateFiled(subitem, trgweb, item);
// item.Update();
// trgweb.AllowUnsafeUpdates = true;
// web.AllowUnsafeUpdates = true;
TraverseListFolder(subitem.Folder, spfolder, trglist, trgweb);
}
else
{
string strFileURL = subitem.File.Url.Trim();
// Upload the file
string RegExpUrl = "{0}/{1}";
RegExpUrl = string.Format(RegExpUrl, trgRootFolder.Url, subitem.File.Name);
trgweb.AllowUnsafeUpdates = true;
web.AllowUnsafeUpdates = true;
byte[] fileBytes = subitem.File.OpenBinary();
const bool OverwriteDestinationFile = true;
SPFile destinationFile =
((SPDocumentLibrary)trglist).RootFolder.Files.Add(
RegExpUrl,
fileBytes,
OverwriteDestinationFile);
SPListItem item = destinationFile.Item;
CreateFiled(subitem, trgweb, item);
// item["Title"] = subitem.Name.Trim();
// item.Update();
// trgweb.AllowUnsafeUpdates = true;
web.AllowUnsafeUpdates = true;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
LogMessageToFile(ex.Message);
continue;
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
LogMessageToFile(e.Message);
}
finally
{
// Cleanup that nasty web reference.
if (web != null)
web.Dispose();
}
}
static System.IO.StreamWriter sw;
static void CreatLogFile()
{
try
{
string strPath = GetTempPath();
if (!File.Exists(strPath))
sw = System.IO.File.CreateText(strPath);
else
sw = System.IO.File.AppendText(strPath);
}
finally
{
sw.Close();
}
}
static string GetTempPath()
{
string path = ConfigurationSettings.AppSettings["LogPath"];
path = path + DateTime.Now.ToString("dd-MM-yyyy" )+".txt";
return path;
}
static void LogMessageToFile(string msg)
{
try
{
sw = System.IO.File.AppendText(GetTempPath());
string logLine = System.String.Format(
"{0:G}: {1}.", System.DateTime.Now, msg);
sw.WriteLine(logLine);
}
finally
{
sw.Close();
}
}
static void MoveLibraries()
{
CreatLogFile();
LogMessageToFile("***************************Service Start***************************************");
string strSrcURL = "", strTrgURL = "", strSrcSite = "", strTrgSite = "";
//Console.Write("Please Enter Source Site URL:");
strSrcURL = ConfigurationSettings.AppSettings["SourceURL"].ToString();
strTrgURL = ConfigurationSettings.AppSettings["TargetURL"].ToString();
Console.Write("Please Enter Source Site Name:");
strSrcSite = Console.ReadLine();
Console.Write("Please Enter Trarget Site Name:");
strTrgSite = Console.ReadLine();
SPSite srcSite = new SPSite(strSrcURL);
SPWeb srcWebs = srcSite.AllWebs[strSrcSite];
SPSite trgSite = new SPSite(strTrgURL);
SPWeb trgWebs = trgSite.AllWebs[strTrgSite];
SPListCollection srcLists = srcWebs.Lists;
SPListCollection trgLists = trgWebs.Lists;
for (int i = 0; i < srcLists.Count; i++)
{
Console.WriteLine("ListName: " + srcLists[i].Title);
LogMessageToFile("ListName: " + srcLists[i].Title);
try
{
SPList temp = trgWebs.Lists[srcLists[i].Title];
trgWebs.Lists.Delete(temp.ID);
}
catch { }
if (srcLists[i].BaseTemplate.ToString() == "DocumentLibrary" || srcLists[i].BaseTemplate.ToString() == "PictureLibrary" || srcLists[i].BaseTemplate.ToString() == "Announcements")
{
try
{
// create new list on the destination web with same properties
// SPList sourcelist=srcWebs[si].Lists[""]
trgWebs.AllowUnsafeUpdates = true;
Guid newListID = trgWebs.Lists.Add(srcLists[i].Title, srcLists[i].Description,
srcLists[i].BaseTemplate);
trgWebs.AllowUnsafeUpdates = true;
SPList destList = trgWebs.Lists[newListID];
Console.WriteLine(srcLists[i].Title + " :List Created SucessFully");
LogMessageToFile(srcLists[i].Title + " :List Created SucessFully");
if (srcLists[i].BaseTemplate.ToString() == "DiscussionBoard" || srcLists[i].BaseTemplate.ToString() == "Announcements")
{
MoveAccoucements(srcWebs, trgWebs, srcLists[i], destList, srcLists[i].Title.ToString());
}
else if (srcLists[i].BaseTemplate.ToString() == "DocumentLibrary" || srcLists[i].BaseTemplate.ToString() == "PictureLibrary")
{
TraverseList(srcLists[i], srcWebs, destList, trgWebs);
}
// Console.ReadLine("*********************************End Of Serive*********************************");
LogMessageToFile("***************************Service Start***************************************");
}
catch (Exception ex)
{
Console.WriteLine("Error :" + ex.Message);
}
}
}
}
{
MoveLibraries();
}
static void MoveAccoucements(SPWeb sourceweb, SPWeb destWeb, SPList sourceList, SPList destList, string strListName)
{
// copy items
foreach (SPListItem item in sourceList.Items)
{
SPListItem newDestItem = destList.Items.Add();
foreach (SPField field in sourceList.Fields)
{
if (!field.ReadOnlyField && item[field.Title] != null && field.Title != "Attachments")
newDestItem[field.Title] = item[field.Title];
destWeb.AllowUnsafeUpdates = true;
newDestItem.Update();
}
}
// set quicklaunch settings
destList.OnQuickLaunch = sourceList.OnQuickLaunch;
destList.Update();
}
static void TraverseList(SPList srclist, SPWeb srcweb, SPList trglist, SPWeb trgweb)
{
Console.WriteLine("Traversing list: " + srclist.Title );
LogMessageToFile("Traversing list: " + srclist.Title );
Console.WriteLine("Base Type: " + srclist.BaseType.ToString() );
LogMessageToFile("Base Type: " + srclist.BaseType.ToString());
TraverseListFolder(srclist.RootFolder, trglist.RootFolder, trglist, trgweb);
}
static void CreateImpFields(SPListItem subitem, SPWeb trgweb, SPListItem item,string strFldName)
{
try
{
if (subitem.Fields[strFldName].ReadOnlyField && subitem[strFldName] != null)
{
item.Fields[strFldName].ReadOnlyField = false;
item[strFldName] = subitem[strFldName].ToString();
trgweb.AllowUnsafeUpdates = true;
item.Update();
item.Fields[strFldName].ReadOnlyField = true;
}
else if (subitem[strFldName] != null)
{
item[strFldName] = subitem[strFldName].ToString();
trgweb.AllowUnsafeUpdates = true;
item.Update();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + "while creating field :" + strFldName); ;
}
}
static void CreateFiled(SPListItem subitem, SPWeb trgweb, SPListItem item)
{
try
{
CreateImpFields(subitem, trgweb, item, "Title");
CreateImpFields(subitem, trgweb, item, "Created");
CreateImpFields(subitem, trgweb, item, "Created By");
CreateImpFields(subitem, trgweb, item, "Name");
CreateImpFields(subitem, trgweb, item, "Modified");
CreateImpFields(subitem, trgweb, item, "Modified By");
Console.WriteLine("Fields are sucessfully created");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + "while field creation"); ;
}
}
static void CreateFileds(SPListItem subitem, SPWeb trgweb, SPListItem item)
{
foreach (SPField field in subitem.Fields)
{
// if (!field.ReadOnlyField && item[field.Title] != null && field.Title != "Attachments")
try
{
if (field.ReadOnlyField)
{
item.Fields[field.Title].ReadOnlyField = false;
item[field.Title] = subitem[field.Title].ToString();
trgweb.AllowUnsafeUpdates = true;
item.Update();
item.Fields[field.Title].ReadOnlyField = true;
}
else
{
item[field.Title] = subitem[field.Title].ToString();
trgweb.AllowUnsafeUpdates = true;
item.Update();
}
}
catch (Exception ex)
{
continue;
}
}
}
static void TraverseListFolder(SPFolder folder, SPFolder trgRootFolder, SPList trglist, SPWeb trgweb)
{
// Get the collection of items from this folder
SPQuery qry = new SPQuery();
qry.Folder = folder;
SPWeb web = null;
try
{
web = folder.ParentWeb;
SPListItemCollection ic = web.Lists[folder.ParentListId].GetItems(qry);
foreach (SPListItem subitem in ic)
{
try
{
Console.WriteLine("List item: " + subitem.Name);
Console.WriteLine("List item type: " + subitem.ContentType.Name);
LogMessageToFile("List item: " + subitem.Name);
LogMessageToFile("List item type: " + subitem.ContentType.Name);
if (subitem.Folder != null)
{
trgweb.AllowUnsafeUpdates = true;
web.AllowUnsafeUpdates = true;
/* create a folder under the path specified */
SPFolder spfolder = trgRootFolder.SubFolders.Add(subitem.Name);
/* set the folder name and update */
SPListItem item = spfolder.Item;
// item["Title"] = "Name";
//item["Title"]
CreateFiled(subitem, trgweb, item);
// item.Update();
// trgweb.AllowUnsafeUpdates = true;
// web.AllowUnsafeUpdates = true;
TraverseListFolder(subitem.Folder, spfolder, trglist, trgweb);
}
else
{
string strFileURL = subitem.File.Url.Trim();
// Upload the file
string RegExpUrl = "{0}/{1}";
RegExpUrl = string.Format(RegExpUrl, trgRootFolder.Url, subitem.File.Name);
trgweb.AllowUnsafeUpdates = true;
web.AllowUnsafeUpdates = true;
byte[] fileBytes = subitem.File.OpenBinary();
const bool OverwriteDestinationFile = true;
SPFile destinationFile =
((SPDocumentLibrary)trglist).RootFolder.Files.Add(
RegExpUrl,
fileBytes,
OverwriteDestinationFile);
SPListItem item = destinationFile.Item;
CreateFiled(subitem, trgweb, item);
// item["Title"] = subitem.Name.Trim();
// item.Update();
// trgweb.AllowUnsafeUpdates = true;
web.AllowUnsafeUpdates = true;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
LogMessageToFile(ex.Message);
continue;
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
LogMessageToFile(e.Message);
}
finally
{
// Cleanup that nasty web reference.
if (web != null)
web.Dispose();
}
}
static System.IO.StreamWriter sw;
static void CreatLogFile()
{
try
{
string strPath = GetTempPath();
if (!File.Exists(strPath))
sw = System.IO.File.CreateText(strPath);
else
sw = System.IO.File.AppendText(strPath);
}
finally
{
sw.Close();
}
}
static string GetTempPath()
{
string path = ConfigurationSettings.AppSettings["LogPath"];
path = path + DateTime.Now.ToString("dd-MM-yyyy" )+".txt";
return path;
}
static void LogMessageToFile(string msg)
{
try
{
sw = System.IO.File.AppendText(GetTempPath());
string logLine = System.String.Format(
"{0:G}: {1}.", System.DateTime.Now, msg);
sw.WriteLine(logLine);
}
finally
{
sw.Close();
}
}
static void MoveLibraries()
{
CreatLogFile();
LogMessageToFile("***************************Service Start***************************************");
string strSrcURL = "", strTrgURL = "", strSrcSite = "", strTrgSite = "";
//Console.Write("Please Enter Source Site URL:");
strSrcURL = ConfigurationSettings.AppSettings["SourceURL"].ToString();
strTrgURL = ConfigurationSettings.AppSettings["TargetURL"].ToString();
Console.Write("Please Enter Source Site Name:");
strSrcSite = Console.ReadLine();
Console.Write("Please Enter Trarget Site Name:");
strTrgSite = Console.ReadLine();
SPSite srcSite = new SPSite(strSrcURL);
SPWeb srcWebs = srcSite.AllWebs[strSrcSite];
SPSite trgSite = new SPSite(strTrgURL);
SPWeb trgWebs = trgSite.AllWebs[strTrgSite];
SPListCollection srcLists = srcWebs.Lists;
SPListCollection trgLists = trgWebs.Lists;
for (int i = 0; i < srcLists.Count; i++)
{
Console.WriteLine("ListName: " + srcLists[i].Title);
LogMessageToFile("ListName: " + srcLists[i].Title);
try
{
SPList temp = trgWebs.Lists[srcLists[i].Title];
trgWebs.Lists.Delete(temp.ID);
}
catch { }
if (srcLists[i].BaseTemplate.ToString() == "DocumentLibrary" || srcLists[i].BaseTemplate.ToString() == "PictureLibrary" || srcLists[i].BaseTemplate.ToString() == "Announcements")
{
try
{
// create new list on the destination web with same properties
// SPList sourcelist=srcWebs[si].Lists[""]
trgWebs.AllowUnsafeUpdates = true;
Guid newListID = trgWebs.Lists.Add(srcLists[i].Title, srcLists[i].Description,
srcLists[i].BaseTemplate);
trgWebs.AllowUnsafeUpdates = true;
SPList destList = trgWebs.Lists[newListID];
Console.WriteLine(srcLists[i].Title + " :List Created SucessFully");
LogMessageToFile(srcLists[i].Title + " :List Created SucessFully");
if (srcLists[i].BaseTemplate.ToString() == "DiscussionBoard" || srcLists[i].BaseTemplate.ToString() == "Announcements")
{
MoveAccoucements(srcWebs, trgWebs, srcLists[i], destList, srcLists[i].Title.ToString());
}
else if (srcLists[i].BaseTemplate.ToString() == "DocumentLibrary" || srcLists[i].BaseTemplate.ToString() == "PictureLibrary")
{
TraverseList(srcLists[i], srcWebs, destList, trgWebs);
}
// Console.ReadLine("*********************************End Of Serive*********************************");
LogMessageToFile("***************************Service Start***************************************");
}
catch (Exception ex)
{
Console.WriteLine("Error :" + ex.Message);
}
}
}
}
No comments:
Post a Comment