//-------------------------------------------------------------------------- public Word AddGroupWord(Group group, string word) { Word result = WordsService.Instance.GetWord(word); GroupsDao.AddGroupWord(group, result); return(result); }
//-------------------------------------------------------------------------- public Group AddGroup(string group) { Group resultGroup = new Group() { Name = group }; GroupsDao.Insert(ref resultGroup); return(resultGroup); }
//-------------------------------------------------------------------------- public Group GetById(long groupId) { if (_groupCache.ContainsKey(groupId)) { return(_groupCache[groupId]); } Group group = GroupsDao.GetGroupById(groupId); _groupCache[group.Id] = group; return(group); }
//-------------------------------------------------------------------------- public List <Word> GetWords(List <Group> groups) { // TODO: we can change to GetWords and have a join query List <long> wordIds = GroupsDao.GetWordIds(groups); List <Word> words = new List <Word>(); foreach (long wordId in wordIds) { words.Add(WordsService.Instance.GetWordById(wordId)); } return(words); }
//-------------------------------------------------------------------------- /// <summary> /// The function uses all information in SQL tables in the program mySQL and /// builds a new XML file containing all that information. /// The XML file describes all the books'information /// </summary> public void ExportDatabase(FileInfo filename) { Initialize(); DataSet ds = new DataSet(); ds.DataSetName = "books-concordance"; DocumentsDao.FillDataSet(ds); WordsDao.FillDataSet(ds); ContainsDao.FillDataSet(ds); RelationsDao.FillDataSet(ds); GroupsDao.FillDataSet(ds); PhrasesDao.FillDataSet(ds); ds.WriteXml(filename.FullName); DocumentsService.Instance.ExportStorage(filename); }
//-------------------------------------------------------------------------- private Group Insert(string name) { List <Group> groups = GroupsDao.Query(name); if (groups.Count > 0) { throw new Exception("a group with this name already exists!"); } // check we have the minimal set of meta data Group group = new Group() { Name = name }; GroupsDao.Insert(ref group); _groupCache[group.Id] = group; return(group); }
//-------------------------------------------------------------------------- public void Import(XmlDocument document) { GlobalParamatersService.Delegate.OnDatabaseImportProgress(0); DatabaseConnectionService.Instance.SafeTransaction(_ => { XmlNodeList xmlGroupList = document.DocumentElement.SelectNodes(".//group"); XmlNodeList xmlGroupWordsList = document.DocumentElement.SelectNodes(".//groups_words"); int total = xmlGroupList.Count + xmlGroupWordsList.Count; int processed = 0; foreach (XmlNode xmlGroup in xmlGroupList) { Group group = GroupsDao.ImportGroup(xmlGroup); _groupCache[group.Id] = group; processed++; float percent = (float)processed / (float)total; percent *= 100; GlobalParamatersService.Delegate.OnDatabaseImportProgress( (int)percent); } foreach (XmlNode xmlGroupWord in xmlGroupWordsList) { GroupsDao.ImportGroupWord(xmlGroupWord); processed++; float percent = (float)processed / (float)total; percent *= 100; GlobalParamatersService.Delegate.OnDatabaseImportProgress( (int)percent); } }); }
//-------------------------------------------------------------------------- public void DropTable() { GroupsDao.DropTable(); _groupCache.Clear(); }
//-------------------------------------------------------------------------- public void CreateTable() { GroupsDao.CreateTable(); _groupCache.Clear(); }
//-------------------------------------------------------------------------- public List <Group> Query(string name) { return(GroupsDao.Query(name)); }
//-------------------------------------------------------------------------- public List <Group> GetAll() { return(GroupsDao.GetAll()); }
//-------------------------------------------------------------------------- public bool RemoveGroup(Group group) { GroupsDao.DeleteAllGroupWords(group); return(GroupsDao.Delete(group)); }
//-------------------------------------------------------------------------- public Int64 GetCount() { return(GroupsDao.GetCount()); }
//-------------------------------------------------------------------------- public void RemoveGroupWord(Group group, Word word) { GroupsDao.DeleteGroupWord(group, word); }