Search This Blog

Tuesday, July 6, 2010

Moving Lists from One sharepoint site to another sharpeoint site

       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);

                    }
                }
            }
        }

No comments:

Post a Comment