Пример #1
0
        private void parseFiles()
        {
            try
            {
                string cmlfolderpath = Properties.Settings.Default.CMLDirectory + "\\" +
                                       Defaults.CML.FusionFolderName + "\\" +
                                       Defaults.CML.FusionBayesianNetworkFolderName + "\\";

                string       schemespath   = cmlfolderpath + "schemes.set";
                string       sessionsspath = cmlfolderpath + "sessions.set";
                StreamReader reader        = File.OpenText(schemespath);
                string       line;
                while ((line = reader.ReadLine()) != null)
                {
                    string[]            items = line.Split(':');
                    SchemeAnnotatorPair sap   = new SchemeAnnotatorPair {
                        Name = items[0], Annotator = items[1]
                    };
                    SchemeandAnnotatorBox.Items.Add(sap);
                }

                SchemeandAnnotatorBox.SelectAll();

                StreamReader reader2 = File.OpenText(sessionsspath);

                while ((line = reader2.ReadLine()) != null)
                {
                    DatabaseSession session = ((List <DatabaseSession>)SessionsBox.ItemsSource).Find(a => a.Name == line);
                    SessionsBox.SelectedItems.Add(session);
                }
                SessionsBox.ScrollIntoView(SessionsBox.SelectedItem);
            }
            catch { }
        }
        private void Ok_Click(object sender, RoutedEventArgs e)
        {
            Properties.Settings.Default.DataServerLogin = serverLogin.Text;
            Properties.Settings.Default.DataServerPass  = MainHandler.Encode(serverPassword.Password);
            Properties.Settings.Default.Save();


            if (SessionsBox.SelectedItem != null)
            {
                DatabaseSession session = (DatabaseSession)SessionsBox.SelectedItem;
                if (DatabaseHandler.ChangeSession(session.Name))
                {
                    // DialogResult = true;
                }
            }


            if (StreamsBox.SelectedItem != null)
            {
                closeAfterDownload = true;
                downloadSelectedFiles();
            }
            else
            {
                DialogResult = true;
                Close();
            }
        }
        private void EditSession_Click(object sender, RoutedEventArgs e)
        {
            if (SessionsBox.SelectedItem != null)
            {
                DatabaseSession session = (DatabaseSession)SessionsBox.SelectedItem;
                string          name    = session.Name;

                DatabaseAdminSessionWindow dialog = new DatabaseAdminSessionWindow(ref session);
                dialog.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                dialog.ShowDialog();

                if (dialog.DialogResult == true)
                {
                    DatabaseHandler.UpdateSession(name, session);

                    var sessions = SessionsBox.SelectedItems;
                    foreach (DatabaseSession s in sessions)
                    {
                        if (session != s)
                        {
                            session.Name = s.Name;
                            DatabaseHandler.UpdateSession(s.Name, session);
                        }
                    }

                    GetSessions(session.Name);
                }
            }
        }
        private void CopySession_Click(object sender, RoutedEventArgs e)
        {
            if (SessionsBox.SelectedItem != null)
            {
                DatabaseSession session = (DatabaseSession)SessionsBox.SelectedItem;

                Dictionary <string, UserInputWindow.Input> input = new Dictionary <string, UserInputWindow.Input>();
                input["names"] = new UserInputWindow.Input()
                {
                    Label = "Name", DefaultValue = session.Name
                };
                UserInputWindow dialog = new UserInputWindow("Enter new name (if several separate by ';')", input);
                dialog.ShowDialog();
                if (dialog.DialogResult == true)
                {
                    string   names  = dialog.Result("names");
                    string[] tokens = names.Split(';');
                    foreach (string token in tokens)
                    {
                        DatabaseSession newSession = new DatabaseSession()
                        {
                            Name     = token,
                            Date     = session.Date,
                            Language = session.Language,
                            Location = session.Location
                        };
                        DatabaseHandler.AddSession(newSession);
                    }

                    GetSessions(session.Name);
                }
            }
        }
Пример #5
0
        public void GetSessions()
        {
            if (SessionsBox.HasItems)
            {
                SessionsBox.ItemsSource = null;
            }


            List <string> sessionNames = new List <string>();

            List <DatabaseSession> allSessions = DatabaseHandler.Sessions;

            foreach (DatabaseSession s in allSessions)
            {
                sessionNames.Add(s.Name);
            }

            List <DatabaseSession> sessions = new List <DatabaseSession>();

            foreach (string sessionName in sessionNames)
            {
                DatabaseSession session = new DatabaseSession()
                {
                    Name = sessionName
                };
                if (DatabaseHandler.GetSession(ref session))
                {
                    sessions.Add(session);
                }
            }

            SessionsBox.ItemsSource = sessions.OrderBy(s => s.Name).ToList();
        }
Пример #6
0
        public void GetAnnotations(DatabaseSession session)
        {
            if (session == null)
            {
                return;
            }

            Action EmptyDelegate = delegate() { };

            LoadingLabel.Visibility = Visibility.Visible;
            this.UpdateLayout();
            this.Dispatcher.Invoke(DispatcherPriority.Render, EmptyDelegate);

            bool onlyme         = showonlymine.IsChecked.Value;
            bool onlyunfinished = showOnlyUnfinished.IsChecked.Value;

            AnnotationsBox.ItemsSource = null;
            this.annotations.Clear();

            var annotations = DatabaseHandler.Database.GetCollection <BsonDocument>(DatabaseDefinitionCollections.Annotations);

            var builder = Builders <BsonDocument> .Filter;
            var filter  = builder.Eq("session_id", session.Id);
            List <DatabaseAnnotation> list = DatabaseHandler.GetAnnotations(filter, onlyme, onlyunfinished);

            AnnotationsBox.ItemsSource = list;
            LoadingLabel.Visibility    = Visibility.Collapsed;
        }
Пример #7
0
        private void SelectFinishedSessions()
        {
            List <DatabaseSession> sessions = (List <DatabaseSession>)SessionsBox.ItemsSource;

            if (sessions == null)
            {
                return;
            }

            DatabaseScheme    scheme    = (DatabaseScheme)SchemesBox.SelectedItem;
            DatabaseAnnotator annotator = (DatabaseAnnotator)AnnotatorsBox.SelectedItem;

            foreach (DatabaseRole role in RolesBox.SelectedItems)
            {
                List <DatabaseAnnotation> annotations = DatabaseHandler.GetAnnotations(scheme, role, annotator);
                foreach (DatabaseAnnotation annotation in annotations)
                {
                    if (annotation.IsFinished)
                    {
                        DatabaseSession session = sessions.Find(s => s.Name == annotation.Session);
                        if (session != null)
                        {
                            SessionsBox.SelectedItems.Add(session);
                        }
                    }
                }
            }
        }
 private void SessionsBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (SessionsBox.SelectedItem != null)
     {
         DatabaseSession session = (DatabaseSession)SessionsBox.SelectedItem;
         //GetStreams(session);
     }
 }
Пример #9
0
 private void SessionsBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (SessionsBox.SelectedItem != null)
     {
         searchTextBox.Text = "";
         DatabaseSession session = (DatabaseSession)SessionsBox.SelectedItem;
         GetAnnotations(session);
         GetStreams();
     }
 }
Пример #10
0
        //not used anymore
        public void addAnnoToList(BsonDocument annotation, DatabaseSession session, bool onlyMe, bool onlyUnfinished)
        {
            ObjectId id = annotation["_id"].AsObjectId;

            string roleName = "";

            DatabaseHandler.GetObjectName(ref roleName, DatabaseDefinitionCollections.Roles, annotation["role_id"].AsObjectId);
            string schemeName = "";

            DatabaseHandler.GetObjectName(ref schemeName, DatabaseDefinitionCollections.Schemes, annotation["scheme_id"].AsObjectId);
            string annotatorName = "";

            DatabaseHandler.GetObjectName(ref annotatorName, DatabaseDefinitionCollections.Annotators, annotation["annotator_id"].AsObjectId);
            string annotatorFullName = DatabaseHandler.GetUserInfo(annotatorName).Fullname;

            //DatabaseHandler.GetObjectField(ref annotatorFullName, DatabaseDefinitionCollections.Annotators, annotation["annotator_id"].AsObjectId, "fullname");

            bool isFinished = false;

            try
            {
                isFinished = annotation["isFinished"].AsBoolean;
            }
            catch  { }

            bool islocked = false;

            try
            {
                islocked = annotation["isLocked"].AsBoolean;
            }
            catch  { }

            DateTime date = DateTime.Today;

            try
            {
                date = annotation["date"].ToUniversalTime();
            }
            catch  { }

            bool isOwner = Properties.Settings.Default.MongoDBUser == annotatorName || DatabaseHandler.CheckAuthentication() > DatabaseAuthentication.DBADMIN;


            if (!onlyMe && !onlyUnfinished ||
                onlyMe && !onlyUnfinished && Properties.Settings.Default.MongoDBUser == annotatorName ||
                !onlyMe && onlyUnfinished && !isFinished ||
                onlyMe && onlyUnfinished && !isFinished && Properties.Settings.Default.MongoDBUser == annotatorName)
            {
                annotations.Add(new DatabaseAnnotation()
                {
                    Id = id, Role = roleName, Scheme = schemeName, Annotator = annotatorName, AnnotatorFullName = annotatorFullName, Session = session.Name, IsFinished = isFinished, IsLocked = islocked, Date = date, IsOwner = isOwner
                });
            }
        }
Пример #11
0
        private void showOnlyMine_Unchecked(object sender, RoutedEventArgs e)
        {
            Properties.Settings.Default.DatabaseShowOnlyMine = false;
            Properties.Settings.Default.Save();

            if (DatabaseBox.SelectedItem != null && SessionsBox.SelectedItem != null)
            {
                DatabaseSession session = (DatabaseSession)SessionsBox.SelectedItem;
                GetAnnotations(session);
            }
        }
Пример #12
0
        private void CopyAnnotation_Click(object sender, RoutedEventArgs e)
        {
            if (AnnotationsBox.SelectedItem != null)
            {
                string annotatorName = DatabaseHandler.SelectAnnotator();

                if (annotatorName != null)
                {
                    DatabaseSession session     = (DatabaseSession)SessionsBox.SelectedItem;
                    var             annotations = DatabaseHandler.Database.GetCollection <BsonDocument>(DatabaseDefinitionCollections.Annotations);

                    ObjectId annotid_new = new ObjectId();
                    DatabaseHandler.GetObjectID(ref annotid_new, DatabaseDefinitionCollections.Annotators, annotatorName);

                    foreach (var item in AnnotationsBox.SelectedItems)
                    {
                        ObjectId roleID      = GetIdFromName(DatabaseDefinitionCollections.Roles, ((DatabaseAnnotation)(item)).Role);
                        ObjectId schemeID    = GetIdFromName(DatabaseDefinitionCollections.Schemes, ((DatabaseAnnotation)(item)).Scheme);
                        ObjectId annotatorID = GetIdFromName(DatabaseDefinitionCollections.Annotators, ((DatabaseAnnotation)(item)).Annotator);
                        ObjectId sessionID   = GetIdFromName(DatabaseDefinitionCollections.Sessions, session.Name);

                        var builder = Builders <BsonDocument> .Filter;
                        var filter  = builder.Eq("role_id", roleID)
                                      & builder.Eq("scheme_id", schemeID)
                                      & builder.Eq("annotator_id", annotatorID)
                                      & builder.Eq("session_id", sessionID);
                        var anno = annotations.Find(filter).Single();

                        anno.Remove("_id");
                        anno["annotator_id"] = annotid_new;
                        try
                        {
                            anno["isFinished"] = false;
                        }
                        catch
                        { }

                        try
                        {
                            anno["isLocked"] = false;
                        }
                        catch { }

                        UpdateOptions uo = new UpdateOptions();
                        uo.IsUpsert = true;

                        filter = builder.Eq("role_id", roleID) & builder.Eq("scheme_id", schemeID) & builder.Eq("annotator_id", annotid_new) & builder.Eq("session_id", sessionID);
                        var result = annotations.ReplaceOne(filter, anno, uo);
                    }

                    GetAnnotations(session);
                }
            }
        }
        private void ImportfromFolder_Click(object sender, RoutedEventArgs e)
        {
            string path   = "";
            var    dialog = new System.Windows.Forms.FolderBrowserDialog();

            dialog.SelectedPath        = Properties.Settings.Default.DatabaseDirectory;
            dialog.ShowNewFolderButton = true;
            dialog.Description         = "Select the root folder of your sessions.";
            System.Windows.Forms.DialogResult result = System.Windows.Forms.DialogResult.None;

            try
            {
                dialog.SelectedPath = Properties.Settings.Default.DatabaseDirectory;
                result = dialog.ShowDialog();
            }

            catch
            {
                dialog.SelectedPath = "";
                result = dialog.ShowDialog();
            }


            if (result == System.Windows.Forms.DialogResult.OK)
            {
                path = dialog.SelectedPath;
                DatabaseSession            session       = new DatabaseSession();
                DatabaseAdminSessionWindow sessiondialog = new DatabaseAdminSessionWindow(ref session, false);
                sessiondialog.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                sessiondialog.ShowDialog();

                if (sessiondialog.DialogResult == true)
                {
                    foreach (var d in System.IO.Directory.GetDirectories(path))
                    {
                        var dir     = new DirectoryInfo(d);
                        var dirName = dir.Name;

                        DatabaseSession newSession = new DatabaseSession()
                        {
                            Name     = dirName,
                            Date     = session.Date,
                            Language = session.Language,
                            Location = session.Location
                        };
                        DatabaseHandler.AddSession(newSession);
                    }

                    GetSessions();
                }
            }
        }
Пример #14
0
        private void AnnotationResultBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (AnnotationsBox.SelectedValue != null)
            {
                DatabaseSession session = (DatabaseSession)SessionsBox.SelectedItem;
                IMongoCollection <BsonDocument> annotations = DatabaseHandler.Database.GetCollection <BsonDocument>(DatabaseDefinitionCollections.Annotations);

                for (int i = 0; i < AnnotationsBox.SelectedItems.Count; i++)
                {
                    if (DatabaseHandler.CheckAuthentication() > DatabaseAuthentication.READWRITE || Properties.Settings.Default.MongoDBUser == ((DatabaseAnnotation)(AnnotationsBox.SelectedValue)).Annotator)
                    {
                        DeleteAnnotation.Visibility = Visibility.Visible;
                        //CopyAnnotation.Visibility = Visibility.Visible;
                    }
                }

                foreach (var item in AnnotationsBox.SelectedItems)
                {
                    ObjectId roleID      = GetIdFromName(DatabaseDefinitionCollections.Roles, ((DatabaseAnnotation)(item)).Role);
                    ObjectId schemeID    = GetIdFromName(DatabaseDefinitionCollections.Schemes, ((DatabaseAnnotation)(item)).Scheme);
                    ObjectId annotatorID = GetIdFromName(DatabaseDefinitionCollections.Annotators, ((DatabaseAnnotation)(item)).Annotator);
                    ObjectId sessionID   = GetIdFromName(DatabaseDefinitionCollections.Sessions, session.Name);

                    var builder    = Builders <BsonDocument> .Filter;
                    var filter     = builder.Eq("role_id", roleID) & builder.Eq("scheme_id", schemeID) & builder.Eq("annotator_id", annotatorID) & builder.Eq("session_id", sessionID);
                    var annotation = annotations.Find(filter).ToList();

                    if (annotation.Count == 0)
                    {
                        return;
                    }

                    BsonElement value;
                    if (StreamsBox.Items != null && annotation[0].TryGetElement("streams", out value))
                    {
                        //StreamsBox.SelectedItems.Clear();
                        foreach (BsonString doc in annotation[0]["streams"].AsBsonArray)
                        {
                            string name = doc.AsString;
                            foreach (StreamItem stream in StreamsBox.Items)
                            {
                                if (stream.Name == name)
                                {
                                    StreamsBox.SelectedItems.Add(stream);
                                }
                            }
                        }
                    }
                }
            }
        }
Пример #15
0
 private void SelectSessionsFromFile(SessionSet set)
 {
     if (File.Exists(set.Path))
     {
         string[] items = File.ReadAllLines(set.Path);
         foreach (string item in items)
         {
             List <DatabaseSession> sessions = (List <DatabaseSession>)SessionsBox.ItemsSource;
             DatabaseSession        session  = sessions.Find(s => s.Name == item);
             if (session != null)
             {
                 SessionsBox.SelectedItems.Add(session);
             }
         }
     }
 }
Пример #16
0
        public DatabaseAdminSessionWindow(ref DatabaseSession session, bool showname = true)
        {
            InitializeComponent();

            this.session = session;

            if (showname == false)
            {
                NameField.Visibility = Visibility.Collapsed;
                NameLabel.Visibility = Visibility.Collapsed;
            }

            NameField.Text          = session.Name;
            LanguageField.Text      = session.Language;
            LocationField.Text      = session.Location;
            DatePicker.SelectedDate = session.Date.Year == 1 ? DateTime.Today : session.Date;
        }
Пример #17
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            switchMode();

            GetDatabases(DatabaseHandler.DatabaseName);

            if (mode == Mode.COMPLETE)
            {
                AnnoList annoList = AnnoTierStatic.Selected.AnnoList;

                DatabaseScheme scheme = ((List <DatabaseScheme>)SchemesBox.ItemsSource).Find(s => s.Name == annoList.Scheme.Name);
                if (scheme != null)
                {
                    SchemesBox.SelectedItem = scheme;
                    SchemesBox.ScrollIntoView(scheme);
                }
                DatabaseRole role = ((List <DatabaseRole>)RolesBox.ItemsSource).Find(r => r.Name == annoList.Meta.Role);
                if (role != null)
                {
                    RolesBox.SelectedItem = role;
                    RolesBox.ScrollIntoView(role);
                }
                DatabaseAnnotator annotator = ((List <DatabaseAnnotator>)AnnotatorsBox.ItemsSource).Find(a => a.Name == Properties.Settings.Default.MongoDBUser);
                if (annotator != null)
                {
                    AnnotatorsBox.SelectedItem = annotator;
                    AnnotatorsBox.ScrollIntoView(annotator);
                }
                DatabaseSession session = ((List <DatabaseSession>)SessionsBox.ItemsSource).Find(s => s.Name == DatabaseHandler.SessionName);
                if (session != null)
                {
                    SessionsBox.SelectedItem = session;
                    SessionsBox.ScrollIntoView(session);
                }

                Update();
            }

            ApplyButton.Focus();

            handleSelectionChanged = true;
        }
Пример #18
0
        private void DeleteAnnotation_Click(object sender, RoutedEventArgs e)
        {
            if (AnnotationsBox.SelectedItem != null)
            {
                IMongoCollection <BsonDocument> annotations = DatabaseHandler.Database.GetCollection <BsonDocument>(DatabaseDefinitionCollections.Annotations);
                DatabaseSession session = (DatabaseSession)SessionsBox.SelectedItem;

                foreach (var item in AnnotationsBox.SelectedItems)
                {
                    ObjectId roleID      = GetIdFromName(DatabaseDefinitionCollections.Roles, ((DatabaseAnnotation)(item)).Role);
                    ObjectId schemeID    = GetIdFromName(DatabaseDefinitionCollections.Schemes, ((DatabaseAnnotation)(item)).Scheme);
                    ObjectId annotatorID = GetIdFromName(DatabaseDefinitionCollections.Annotators, ((DatabaseAnnotation)(item)).Annotator);
                    ObjectId sessionID   = GetIdFromName(DatabaseDefinitionCollections.Sessions, session.Name);

                    var builder = Builders <BsonDocument> .Filter;
                    var filter  = builder.Eq("role_id", roleID)
                                  & builder.Eq("scheme_id", schemeID)
                                  & builder.Eq("annotator_id", annotatorID)
                                  & builder.Eq("session_id", sessionID);
                    var result = annotations.Find(filter).ToList();

                    bool isLocked = false;
                    try
                    {
                        isLocked = result[0]["isLocked"].AsBoolean;
                    }
                    catch  { }

                    if (!isLocked)
                    {
                        ObjectId id = result[0]["_id"].AsObjectId;
                        DatabaseHandler.DeleteAnnotation(id);
                    }
                    else
                    {
                        MessageBox.Show("Annotation is locked and cannot be deleted");
                    }
                }

                GetAnnotations(session);
            }
        }
        private void AddSession_Click(object sender, RoutedEventArgs e)
        {
            if (DatabaseBox.SelectedItem != null)
            {
                DatabaseSession session = new DatabaseSession()
                {
                    Date = DateTime.Today
                };

                DatabaseAdminSessionWindow dialog = new DatabaseAdminSessionWindow(ref session);
                dialog.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                dialog.ShowDialog();

                if (dialog.DialogResult == true)
                {
                    if (DatabaseHandler.AddSession(session))
                    {
                        GetSessions(session.Name);
                    }
                }
            }
        }
Пример #20
0
        private void DatabaseResultsBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (DatabaseBox.SelectedItem != null)
            {
                DatabaseHandler.ChangeDatabase(DatabaseBox.SelectedItem.ToString());
                DatabaseDBMeta meta = new DatabaseDBMeta {
                    Name = DatabaseBox.SelectedItem.ToString()
                };
                if (DatabaseHandler.GetDBMeta(ref meta))
                {
                    ServerLoginPanel.Visibility = meta.ServerAuth? Visibility.Visible : Visibility.Collapsed;
                }

                GetSessions();
                GetStreams();

                AnnotationsBox.ItemsSource = null;

                DatabaseSession session = (DatabaseSession)SessionsBox.SelectedItem;
                GetAnnotations(session);
            }
        }
Пример #21
0
        public void GetSessions()
        {
            if (SchemesBox.SelectedItem == null || RolesBox.SelectedItem == null || AnnotatorsBox.SelectedItem == null)
            {
                return;
            }

            if (mode == Mode.TRAIN || mode == Mode.EVALUATE)
            {
                // show user sessions only

                List <DatabaseSession> sessions  = new List <DatabaseSession>();
                DatabaseAnnotator      annotator = (DatabaseAnnotator)AnnotatorsBox.SelectedItem;
                DatabaseScheme         scheme    = (DatabaseScheme)SchemesBox.SelectedItem;
                foreach (DatabaseRole role in RolesBox.SelectedItems)
                {
                    List <DatabaseAnnotation> annotations = DatabaseHandler.GetAnnotations(scheme, role, annotator);
                    foreach (DatabaseAnnotation annotation in annotations)
                    {
                        DatabaseSession session = DatabaseHandler.Sessions.Find(s => s.Name == annotation.Session);
                        if (session != null)
                        {
                            if (!sessions.Contains(session))
                            {
                                sessions.Add(session);
                            }
                        }
                    }
                }
                SessionsBox.ItemsSource = sessions.OrderBy(s => s.Name).ToList();
            }
            else
            {
                SessionsBox.ItemsSource = DatabaseHandler.Sessions;
            }
        }
Пример #22
0
        public void GetSessions()
        {
            //if (AnnotationSelectionBox.SelectedItem == null)
            //{
            //   return;
            ////}


            if (AnnotationSelectionBox.HasItems)
            {
                AnnotationSelectionBox.ItemsSource = null;
            }



            // show sessions for which an annotation exists or is missing

            List <BsonDocument> annotations = new List <BsonDocument>();

            if (AnnotationSelectionBox.Items.Count > 0)
            {
                List <string> sessionNames = new List <string>();

                {
                    var      item       = (SchemeRoleAnnotator)AnnotationSelectionBox.Items[0];
                    string   schemeName = item.Name;
                    ObjectId schemeID   = new ObjectId();
                    DatabaseHandler.GetObjectID(ref schemeID, DatabaseDefinitionCollections.Schemes, schemeName);
                    string   roleName = item.Role;
                    ObjectId roleID   = new ObjectId();
                    DatabaseHandler.GetObjectID(ref roleID, DatabaseDefinitionCollections.Roles, roleName);

                    string   annotatorName = DatabaseHandler.Annotators.Find(a => a.FullName == item.Annotator).Name;
                    ObjectId annotatorID   = new ObjectId();
                    DatabaseHandler.GetObjectID(ref annotatorID, DatabaseDefinitionCollections.Annotators, annotatorName);

                    var builder = Builders <BsonDocument> .Filter;

                    var filter = builder.Eq("scheme_id", schemeID) & builder.Eq("annotator_id", annotatorID);

                    annotations.AddRange(DatabaseHandler.GetCollection(DatabaseDefinitionCollections.Annotations, true, filter));

                    foreach (BsonDocument annotation in annotations)
                    {
                        string sessionName = "";
                        DatabaseHandler.GetObjectName(ref sessionName, DatabaseDefinitionCollections.Sessions, annotation["session_id"].AsObjectId);
                        if (sessionName != "" && !sessionNames.Contains(sessionName))
                        {
                            sessionNames.Add(sessionName);
                        }
                    }
                }

                for (int i = 1; i < AnnotationSelectionBox.Items.Count; i++)
                {
                    List <BsonDocument> annotationstemp  = new List <BsonDocument>();
                    List <string>       sessionNamestemp = new List <string>();
                    var      item       = (SchemeRoleAnnotator)AnnotationSelectionBox.Items[i];
                    string   schemeName = item.Name;
                    ObjectId schemeID   = new ObjectId();
                    DatabaseHandler.GetObjectID(ref schemeID, DatabaseDefinitionCollections.Schemes, schemeName);
                    string   roleName = item.Role;
                    ObjectId roleID   = new ObjectId();
                    DatabaseHandler.GetObjectID(ref roleID, DatabaseDefinitionCollections.Roles, roleName);

                    string   annotatorName = DatabaseHandler.Annotators.Find(a => a.FullName == item.Annotator).Name;
                    ObjectId annotatorID   = new ObjectId();
                    DatabaseHandler.GetObjectID(ref annotatorID, DatabaseDefinitionCollections.Annotators, annotatorName);

                    var builder = Builders <BsonDocument> .Filter;

                    var filter = builder.Eq("scheme_id", schemeID) & builder.Eq("annotator_id", annotatorID);

                    annotationstemp.AddRange(DatabaseHandler.GetCollection(DatabaseDefinitionCollections.Annotations, true, filter));

                    foreach (BsonDocument annotation in annotationstemp)
                    {
                        string sessionName = "";
                        DatabaseHandler.GetObjectName(ref sessionName, DatabaseDefinitionCollections.Sessions, annotation["session_id"].AsObjectId);
                        if (sessionName != "" && !sessionNamestemp.Contains(sessionName))
                        {
                            sessionNamestemp.Add(sessionName);
                        }
                    }

                    sessionNames.RemoveAll(thing => !sessionNamestemp.Contains(thing));
                }

                List <DatabaseSession> sessions = new List <DatabaseSession>();
                foreach (string sessionName in sessionNames)
                {
                    DatabaseSession session = new DatabaseSession()
                    {
                        Name = sessionName
                    };
                    if (DatabaseHandler.GetSession(ref session))
                    {
                        sessions.Add(session);
                    }
                }

                SessionsBox.ItemsSource = sessions.OrderBy(s => s.Name).ToList();


                if (SessionsBox.HasItems)
                {
                    if (SessionsBox.SelectedItem == null)
                    {
                        SessionsBox.SelectedIndex = 0;
                    }
                }
            }
        }