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); }
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); }
public static List <Guid> guidanceItems_SearchTitleAndHtml(this TM_Xml_Database tmDatabase, string searchText) { return(tmDatabase.guidanceItems_SearchTitleAndHtml(tmDatabase.xmlDB_GuidanceItems(), searchText)); }
//[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); }
public static TeamMentor_Article xmlDB_GuidanceItem(this TM_Xml_Database tmDatabase, Guid guidanceItemId) { return(tmDatabase.xmlDB_GuidanceItem(guidanceItemId, null)); }
public static List <TeamMentor_Article> xmlDB_GuidanceItems(this TM_Xml_Database tmDatabase, Folder_V3 folder) { return(tmDatabase.tmGuidanceItems_InFolder(folder.folderId)); }
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>(); } }
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); }
public static List <TeamMentor_Article> xmlDB_GuidanceItems(this TM_Xml_Database tmDatabase) { return(TM_Xml_Database.Cached_GuidanceItems.Values.toList()); }
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; }
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() }; }
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(); }
/* 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); }