public static urn.microsoft.guidanceexplorer.Folder xmlDB_Add_Folder(this TM_Library tmLibrary, Guid parentFolderId, string folderCaption, TM_Xml_Database tmDatabase)
        {
            try
            {
                if (parentFolderId != Guid.Empty)
                {
                    var folder = tmDatabase.xmlDB_Folder(tmLibrary.Id,parentFolderId);
                    if (folder != null)
                    {
            /*						var subFolder = tmDatabase.xmlDB_Folder(tmLibrary.Id,parentFolderId,folderCaption);
                        if (subFolder.notNull())			// there was already a subfolder with this caption
                            return subFolder;
            */
                        var newFolder = new urn.microsoft.guidanceexplorer.Folder()
                        {
                            caption = folderCaption,
                            folderId = Guid.NewGuid().str()
                        };
                        folder.folder1.Add(newFolder);

                        var _guidanceExplorer= tmLibrary.guidanceExplorer(tmDatabase);
                        _guidanceExplorer.xmlDB_Save_GuidanceExplorer(tmDatabase);
                        return tmDatabase.xmlDB_Folder(tmLibrary.Id, newFolder.folderId.guid());
                    }
                    return null;
                }
                else
                {
            /*					var folder = tmLibrary.xmlDB_Folder(folderCaption, tmDatabase);
                    if (folder.notNull())
                    {
                        "[TM_Xml_Database] in xmlDB_Add_Folder folder already existed, so returning existing one".debug();
                        return folder;
                    }
            */
                    var _guidanceExplorer= tmLibrary.guidanceExplorer(tmDatabase);
                    var newFolder = new urn.microsoft.guidanceexplorer.Folder()
                        {
                            caption = folderCaption,
                            folderId = Guid.NewGuid().str()
                        };
                    _guidanceExplorer.library.libraryStructure.folder.Add(newFolder);
                    _guidanceExplorer.xmlDB_Save_GuidanceExplorer(tmDatabase);

                    return tmDatabase.xmlDB_Folder(tmLibrary.Id, newFolder.folderId.guid());
                    //return tmLibrary.xmlDB_Folder(folderCaption, tmDatabase);
                }
            }
            catch(Exception ex)
            {
                ex.log();
                return null;
            }
        }
 public static IList<urn.microsoft.guidanceexplorer.Folder> xmlDB_Folders(this TM_Library tmLibrary, TM_Xml_Database tmDatabase)
 {
     return tmDatabase.xmlDB_Folders(tmLibrary.Id);
 }
        public static guidanceItem update_Cache_GuidanceItems(this guidanceItem guidanceItem,  TM_Xml_Database tmDatabase)
        {
            var guidanceItemGuid = guidanceItem.id.guid();
            if (TM_Xml_Database.Cached_GuidanceItems.hasKey(guidanceItemGuid))
                TM_Xml_Database.Cached_GuidanceItems[guidanceItemGuid] = guidanceItem.tmGuidanceItemV3();
            else
                TM_Xml_Database.Cached_GuidanceItems.Add(guidanceItem.id.guid(), guidanceItem.tmGuidanceItemV3());

            //TM_Xml_Database.mapGuidanceItemsViews();  		// update views (to make sure they are pointing to the correct GuidanceItem object
            // do this on a separate thread so that we don't hang the current request
            O2Thread.mtaThread(()=> tmDatabase.save_GuidanceItemsCache());;
            return guidanceItem;
        }
        public static TeamMentor_Article update_Cache_GuidanceItems(this TeamMentor_Article guidanceItem,  TM_Xml_Database tmDatabase)
        {
            guidanceItem.htmlEncode(); // ensure MetaData is encoded

            var guidanceItemGuid = guidanceItem.Metadata.Id;
            if (TM_Xml_Database.Cached_GuidanceItems.hasKey(guidanceItemGuid))
                TM_Xml_Database.Cached_GuidanceItems[guidanceItemGuid] = guidanceItem;
            else
                TM_Xml_Database.Cached_GuidanceItems.Add(guidanceItem.Metadata.Id, guidanceItem);

            tmDatabase.queue_Save_GuidanceItemsCache();

            return guidanceItem;
        }
		public static List<Folder_V3> tmFolders(this TM_Library tmLibrary, TM_Xml_Database tmDatabase )
		{
			return tmDatabase.tmFolders(tmLibrary);
		}
		public static Folder_V3 tmFolder(this TM_Library tmLibrary, Guid folderId, TM_Xml_Database tmDatabase )
		{
			return tmDatabase.tmFolder(tmLibrary.Id, folderId);
		}
Ejemplo n.º 7
0
 public static bool xmlDB_Save_Article(this TeamMentor_Article article, TM_Xml_Database tmDatabase)
 {
     return(article.xmlDB_Save_Article(article.Metadata.Library_Id, tmDatabase));
 }
 public static bool xmlDB_Save_Article(this TeamMentor_Article article, TM_Xml_Database tmDatabase)
 { 
     return article.xmlDB_Save_Article(article.Metadata.Library_Id, tmDatabase);
 }
Ejemplo n.º 9
0
 public static List <Guid> guidanceItems_SearchTitleAndHtml(this TM_Xml_Database tmDatabase, string searchText)
 {
     return(tmDatabase.guidanceItems_SearchTitleAndHtml(tmDatabase.xmlDB_GuidanceItems(), searchText));
 }
Ejemplo n.º 10
0
        //[PrincipalPermission(SecurityAction.Demand, Role = "EditArticles")]
        public static TeamMentor_Article xmlDB_GuidanceItem(this TM_Xml_Database tmDatabase, Guid guidanceItemId, string fullPath)
        {
            try
            {
                if (TM_Xml_Database.Cached_GuidanceItems.hasKey(guidanceItemId))
                {
                    //"found match for id: {0} in {1}".info(guidanceItemId, fullPath);
                    if (TM_Xml_Database.GuidanceItems_FileMappings[guidanceItemId] != fullPath)
                    {
                        //"[xmlDB_GuidanceItem] GuidanceItem ID conflict, the Id '{0}' was already mapped. \nExisting path: \t{1} \nNew path:  \t{2}".error(
                        //	guidanceItemId, TM_Xml_Database.GuidanceItems_FileMappings[guidanceItemId] , fullPath);
                        return(tmDatabase.fixGuidanceItemFileDueToGuidConflict(guidanceItemId, fullPath));
                    }
                    return(TM_Xml_Database.Cached_GuidanceItems[guidanceItemId]);
                }

                if (fullPath.notNull())
                {
                    //"trying to load id {0} from virtualPath: {1}".info(guidanceItemId, virtualPath);
                    var pathXmlLibraries = TM_Xml_Database.Path_XmlLibraries;

                    /*var fullPath = virtualPath.fileExists()
                     *                                      ? virtualPath
                     *                                      : pathXmlLibraries.pathCombine(virtualPath).fullPath();*/
                    if (fullPath.fileExists())
                    {
                        //"loading {0}".info(fullPath);

                        var article = fullPath.teamMentor_Article(); //.transform_into_guidanceItem();
                        if (article.isNull())
                        {
                            // _guidanceItem = guidanceItem.Load(fullPath).transform();
                            article = fullPath.load <Guidance_Item_Import>().transform();
                            article.saveAs(fullPath);   // to do an import in place
                        }
                        if (article.notNull())
                        {
                            if (article.Metadata.Id != guidanceItemId)
                            {
                                "FOUND GUID CHANGE".error();
                                article.Metadata.Id_History += article.Metadata.Id.str() + ",";
                                article.Metadata.Id          = guidanceItemId;
                                article.saveAs(fullPath);
                            }
                            //guidanceItemV3.guidanceItemId		 = original_Guid;		// this gives us the ability to track its source
                            //guidanceItemV3.source_guidanceItemId = newGuid;				// also provides support for moving GuidanceItems across libraries
                            //var _guidanceItemV3 = _guidanceItem.tmGuidanceItemV3();

                            TM_Xml_Database.Cached_GuidanceItems.Add(guidanceItemId, article);
                            TM_Xml_Database.GuidanceItems_FileMappings.add(guidanceItemId, fullPath);


                            return(article);
                        }
                    }
                    else
                    {
                        "[xmlDB_GuidanceItem] could not find file: {0}".error(fullPath);
                    }
                }
                else
                {
                    "no virtualPath provided for id: {0}".error(guidanceItemId);
                }
            }
            catch (Exception ex)
            {
                "[TM_Xml_Database] in xmlDB_GuidanceItem: {0}".error(ex.Message);
            }
            return(null);
        }
Ejemplo n.º 11
0
 public static TeamMentor_Article xmlDB_GuidanceItem(this TM_Xml_Database tmDatabase, Guid guidanceItemId)
 {
     return(tmDatabase.xmlDB_GuidanceItem(guidanceItemId, null));
 }
Ejemplo n.º 12
0
 public static List <TeamMentor_Article> xmlDB_GuidanceItems(this TM_Xml_Database tmDatabase, Folder_V3 folder)
 {
     return(tmDatabase.tmGuidanceItems_InFolder(folder.folderId));
 }
Ejemplo n.º 13
0
 public static List <TeamMentor_Article> xmlDB_GuidanceItems(this TM_Xml_Database tmDatabase, List <Guid> guidanceItemsIds)
 {
     return((from guidanceItem in TM_Xml_Database.Cached_GuidanceItems.Values
             where guidanceItemsIds.contains(guidanceItem.Metadata.Id)
             select guidanceItem).toList());
 }
 public static List<urn.microsoft.guidanceexplorer.View> xmlDB_Views_InLibraryRoot(this TM_Library tmLibrary , TM_Xml_Database tmDatabase)
 {
     try
     {
         return tmLibrary.guidanceExplorer(tmDatabase).library.libraryStructure.view.toList();
     }
     catch
     {
         return new List<urn.microsoft.guidanceexplorer.View>();
     }
 }
Ejemplo n.º 15
0
        public static bool xmlDB_Save_Article(this TeamMentor_Article article, Guid libraryId, TM_Xml_Database tmDatabase)
        {
            if (libraryId == Guid.Empty)
            {
                "[xmlDB_Save_GuidanceItem] no LibraryId was provided".error();
                return(false);
            }
            var xmlLibraries    = TM_Xml_Database.Path_XmlLibraries;
            var guidanceXmlPath = tmDatabase.getXmlFilePathForGuidanceId(article.Metadata.Id, libraryId);

            "Saving GuidanceItem {0} to {1}".info(article.Metadata.Id, guidanceXmlPath);

            //tidy the html
            if (article.Content.DataType.lower() == "html")
            {
                var cdataContent = article.Content.Data.Value.replace("]]>", "]] >"); // xmlserialization below will break if there is a ]]>  in the text
                //cdataContent = cdataContent.fixXmlDoubleEncodingIssue();
                var tidiedHtml = cdataContent.tidyHtml();

                article.Content.Data.Value = tidiedHtml;
                if (article.serialize(false).inValid())        //see if the tidied content can be serialized  and if not use the original data
                {
                    article.Content.Data.Value = cdataContent;
                }
            }
            article.Metadata.Library_Id = libraryId;        //ensure the LibraryID is correct

            if (article.serialize(false).valid())           // make sure the article can be serilialized  correctly
            {
                article.saveAs(guidanceXmlPath);
                //add it to in Memory cache
                article.update_Cache_GuidanceItems(tmDatabase);
                return(guidanceXmlPath.fileExists());
            }
            return(false);
        }
Ejemplo n.º 16
0
 public static List <TeamMentor_Article> xmlDB_GuidanceItems(this TM_Xml_Database tmDatabase)
 {
     return(TM_Xml_Database.Cached_GuidanceItems.Values.toList());
 }
Ejemplo n.º 17
0
        public static string xmlDB_guidanceItemXml(this TM_Xml_Database tmDatabase, Guid guidanceItemId)
        {
            var guidanceXmlPath = tmDatabase.getXmlFilePathForGuidanceId(guidanceItemId);

            return(guidanceXmlPath.fileContents());           //.xmlFormat();
        }
		public static bool xmlDB_Save_Article(this TeamMentor_Article article, Guid libraryId, TM_Xml_Database tmDatabase)
		{
            if (libraryId == Guid.Empty)
            { 
                "[xmlDB_Save_GuidanceItem] no LibraryId was provided".error();
                return false;
            }
			var xmlLibraries = TM_Xml_Database.Path_XmlLibraries;
			var guidanceXmlPath = tmDatabase.getXmlFilePathForGuidanceId(article.Metadata.Id, libraryId);
			
			"Saving GuidanceItem {0} to {1}".info(article.Metadata.Id, guidanceXmlPath);				
			
            //tidy the html
            if(article.Content.DataType.lower() == "html")     
            {
                var cdataContent=  article.Content.Data.Value.replace("]]>", "]] >"); // xmlserialization below will break if there is a ]]>  in the text
                //cdataContent = cdataContent.fixXmlDoubleEncodingIssue();
                article.Content.Data.Value = cdataContent.tidyHtml();
            }            
			article.Metadata.Library_Id = libraryId;        //ensure the LibraryID is correct

            if (article.serialize(false).valid())           // make sure the article can be serilialized  correctly
            {
                article.saveAs(guidanceXmlPath);
                //add it to in Memory cache
                article.update_Cache_GuidanceItems(tmDatabase);
                return guidanceXmlPath.fileExists();			
            }
			return false;
		}
Ejemplo n.º 19
0
        public static Guid xmlBD_resolveDirectMapping(this TM_Xml_Database tmDatabase, string mapping)
        {
            if (mapping.inValid())
            {
                return(Guid.Empty);
            }


            /*foreach(var item in TM_Xml_Database.Cached_GuidanceItems)
             *  if(item.Value.Metadata.DirectLink.lower() == mapping ||item.Value.Metadata.Title.lower() == mapping)
             *      return item.Key;
             */
            mapping = mapping.lower();

            //first resolve by direct link
            var directLinkResult = (from item in TM_Xml_Database.Cached_GuidanceItems
                                    where (item.Value.Metadata.DirectLink.notNull() && item.Value.Metadata.DirectLink.lower() == mapping)
                                    select item.Key).first();

            if (directLinkResult != Guid.Empty)
            {
                return(directLinkResult);
            }

            var mapping_Segments = mapping.split("^");

            //if there are no ^ on the title: resolve by title
            if (mapping_Segments.size() == 1)
            {
                var mapping_extra = mapping.Replace(" ", "_");
                var titleResult   = (from item in TM_Xml_Database.Cached_GuidanceItems
                                     where titleMatch(item.Value, mapping, mapping_extra)
                                     select item.Key).first();
                if (titleResult != Guid.Empty)
                {
                    return(titleResult);
                }
            }
            //if there are ^ on the title: resolve by title^library^technology^phase^type^category
            else
            {
                var title       = mapping_Segments.value(0);
                var title_extra = title.valid() ? title.Replace(" ", "_") : title;
                var library     = mapping_Segments.value(1);
                var technology  = mapping_Segments.value(2);
                var phase       = mapping_Segments.value(3);
                var type        = mapping_Segments.value(4);
                var category    = mapping_Segments.value(5);

                //var libraryNames = tmDatabase.tmLibraries().names().lower();//pre calculate this to make it faster

                foreach (var item in TM_Xml_Database.Cached_GuidanceItems)
                {
                    if (titleMatch(item.Value, title, title_extra))             // check Title
                    {
                        if (library.inValid())
                        {
                            return(item.Key);
                        }
                        if (tmDatabase.tmLibrary(item.Value.Metadata.Library_Id).Caption.lower() == library)                     // check Library
                        {
                            if (technology.inValid())
                            {
                                return(item.Key);
                            }
                            if (item.Value.Metadata.Technology.lower() == technology)   // check Technology
                            {
                                if (phase.inValid())
                                {
                                    return(item.Key);
                                }
                                if (item.Value.Metadata.Phase.lower() == phase)         // check Phase
                                {
                                    if (type.inValid())
                                    {
                                        return(item.Key);
                                    }
                                    if (item.Value.Metadata.Type.lower() == type)      // check type
                                    {
                                        if (category.inValid())
                                        {
                                            return(item.Key);
                                        }
                                        if (item.Value.Metadata.Category.lower() == category) // check category
                                        {
                                            return(item.Key);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(Guid.Empty);
        }
		public static Folder_V3 tmFolder(this urn.microsoft.guidanceexplorer.Folder folder, Guid libraryId, TM_Xml_Database tmDatabase)
		{
			if (folder.isNull())
				return null;
			if (folder.folderId.isNull())				// handle legacy case where there is no folderId in the guidanceitems object
					folder.folderId = Guid.NewGuid().str();	
			var tmFolder= new Folder_V3	
					{
						libraryId = libraryId,
						name = folder.caption,						
						folderId = folder.folderId.guid(),
						subFolders = tmDatabase.tmFolders(libraryId, folder.folder1)						
					};
			foreach(var view in folder.view)				
				tmFolder.views.Add(new View_V3 () { viewId = view.id.guid()});	
			return tmFolder;
		}
        public static TeamMentor_Article update_Cache_GuidanceItems(this TeamMentor_Article guidanceItem,  TM_Xml_Database tmDatabase)
        {
            var guidanceItemGuid = guidanceItem.Metadata.Id;
            if (TM_Xml_Database.Cached_GuidanceItems.hasKey(guidanceItemGuid))
                TM_Xml_Database.Cached_GuidanceItems[guidanceItemGuid] = guidanceItem;
            else
                TM_Xml_Database.Cached_GuidanceItems.Add(guidanceItem.Metadata.Id, guidanceItem);

            //TM_Xml_Database.mapGuidanceItemsViews();  		// update views (to make sure they are pointing to the correct GuidanceItem object

            tmDatabase.queue_Save_GuidanceItemsCache();

            return guidanceItem;
        }
		//View' to 'urn.microsoft.guidanceexplorer.View'	
		
		public static Library library(this TM_Library tmLibrary, TM_Xml_Database tmDatabase)
		{
			if (tmLibrary.isNull())
				return null;
			return new Library()
				{	
					caption = tmLibrary.Caption,  
					id = tmLibrary.Id.str(),
					//Views = tmDatabase.tmViews(tmLibrary).ToArray()
				};
		}		
Ejemplo n.º 23
0
 public TMUser GetActiveSession(Guid sessionID)
 {
     var activeSessions = new TM_Xml_Database().activeSessions();
                                                                                     if (activeSessions.ContainsKey(sessionID))
                                                                                         return activeSessions[sessionID];
                                                                                     return null;
 }
 public TM_Xml_Database_JavaScriptProxy()
 {
     ProxyType = "TM Xml Database";
     adminSessionID = Guid.Empty;
     tmXmlDatabase = new TM_Xml_Database();
 }
 public static guidanceExplorer xmlDB_Save_GuidanceExplorer(this TM_Library tmLibrary, TM_Xml_Database tmDatabase)
 {
     return tmDatabase.xmlDB_Save_GuidanceExplorer(tmLibrary.Id);
 }
 public static urn.microsoft.guidanceexplorer.Folder xmlDB_Folder(this TM_Library tmLibrary, string folderCaption, TM_Xml_Database tmDatabase)
 {
     return (from folder in tmLibrary.xmlDB_Folders(tmDatabase)
             where folder.caption == folderCaption
             select folder).first();
 }
 public static guidanceExplorer xmlDB_Save_GuidanceExplorer(this guidanceExplorer _guidanceExplorer, TM_Xml_Database tmDatabase)
 {
     return _guidanceExplorer.xmlDB_Save_GuidanceExplorer(tmDatabase, true);
 }
 public static TM_Library tmLibrary(this urn.microsoft.guidanceexplorer.View viewToFind, TM_Xml_Database tmDatabase)
 {
     return (from tmLibrary in tmDatabase.tmLibraries()
             from view in tmLibrary.xmlDB_Views(tmDatabase)
             where view == viewToFind
             select tmLibrary).first();
 }
 public static guidanceExplorer xmlDB_Save_GuidanceExplorer(this guidanceExplorer _guidanceExplorer, TM_Xml_Database tmDatabase, bool reloadGuidanceItemsMappings)
 {
     var caption = _guidanceExplorer.library.caption;
     var libraryPath =  tmDatabase.xmlDB_LibraryPath(caption);
     "[xmlDB_Save_GuidanceExplorer] saving GuidanceExplorer '{0}' to {1}'".debug(caption, libraryPath);
     if (libraryPath.notNull())
     {
         _guidanceExplorer.Save(libraryPath);
         if (reloadGuidanceItemsMappings)
             tmDatabase.setGuidanceExplorerObjects();
         return _guidanceExplorer;
     }
     "[xmlDB_Save_GuidanceExplorer] could not find libraryPath for GuidanceExplorer: {0} - {1}".error(_guidanceExplorer.library.caption, _guidanceExplorer.library.name);
     return null;
     //TM_Xml_Database.mapGuidanceItemsViews();
 }
        public static List<urn.microsoft.guidanceexplorer.View> xmlDB_Views(this TM_Library tmLibrary , TM_Xml_Database tmDatabase)
        {
            var allViews = tmLibrary.xmlDB_Views_InLibraryRoot(tmDatabase);
            //add the ones from the libraryRoot

            //add the ones from the folders
            allViews.AddRange((from folder in tmDatabase.xmlDB_Folders_All(tmLibrary.Id)
                               from view in folder.view
                               select view).toList());
            return allViews;
        }
		[WebMethod(EnableSession = true)] 	[Admin(SecurityAction.Demand)]			public TMUser	  GetActiveSession(Guid sessionID)						
																						{ 	
																							var activeSessions = new TM_Xml_Database().activeSessions();
																							if (activeSessions.ContainsKey(sessionID))
																								return activeSessions[sessionID];
																							return null;
																						}
		public static bool xmlDB_Save_GuidanceItem(this guidanceItem guidanceItem, Guid libraryId, TM_Xml_Database tmDatabase)
		{
			var xmlLibraries = TM_Xml_Database.Path_XmlLibraries;
			var guidanceXmlPath = tmDatabase.getXmlFilePathForGuidanceId(guidanceItem.id.guid(), libraryId);
			
			"Saving GuidanceItem {0} to {1}".info(guidanceItem.id, guidanceXmlPath);				
			
			guidanceItem.libraryId = libraryId.str();			
			guidanceItem.Save(guidanceXmlPath);			
			//add it to in Memory cache

			tmDatabase.setGuidanceExplorerObjects();
			guidanceItem.update_Cache_GuidanceItems(tmDatabase);			
			
			return guidanceXmlPath.fileExists();			
		}		
Ejemplo n.º 33
0
/*		public static List<Guid> guidanceItem_SearchTitle(this TM_Xml_Database tmDatabase, string searchText)
 *              {
 *                      var maxNumberOfItemsToReturn = 250000;
 *                      var lowercaseSearchText = searchText.lower();
 *                      return  (from guidanceItem in tmDatabase.GuidanceItems
 *                                       where guidanceItem.title.lower().contains(lowercaseSearchText) ||
 *                                             guidanceItem.title.regEx(searchText)
 *                                       select new Item() { Key =guidanceItem.title,
 *                                                                              Value= guidanceItem.guidanceItemId.str() }
 *                                      ).Take(maxNumberOfItemsToReturn)
 *                                       .toList();
 *              }*/
        public static List <TeamMentor_Article> getGuidanceItems_from_LibraryFolderOrView(this TM_Xml_Database tmDatabase, Guid id)
        {
            if (tmDatabase.tmLibrary(id).notNull())                         // first search on the library
            {
                return(tmDatabase.tmGuidanceItems(id));
            }
            if (tmDatabase.tmFolder(id).notNull())                          // the on the folders
            {
                return(tmDatabase.xmlDB_GuidanceItems(tmDatabase.tmFolder(id)));
            }
            if (tmDatabase.tmView(id).notNull())                            // then on the views
            {
                return(tmDatabase.xmlDB_GuidanceItems(tmDatabase.tmView(id).guidanceItems));
            }
            return(null);
        }