public static bool TryCreateOrOpen(string filePath, TemplateDatabase templateDatabase, bool orderFilesByDate, CustomSelectionOperator customSelectionTermCombiningOperator, out FileDatabase fileDatabase) { // check for an existing database before instantiating the databse as SQL wrapper instantiation creates the database file bool populateDatabase = !File.Exists(filePath); fileDatabase = new FileDatabase(filePath); if (populateDatabase) { // initialize the database if it's newly created fileDatabase.OnDatabaseCreated(templateDatabase); } else { // if it's an existing database check if it needs updating to current structure and load data tables if (fileDatabase.OnExistingDatabaseOpened(templateDatabase) == false) { return false; } } // ensure all tables have been loaded from the database if (fileDatabase.ImageSet == null) { fileDatabase.GetImageSet(); } if (fileDatabase.Markers == null) { fileDatabase.GetMarkers(); } fileDatabase.CustomSelection = new CustomSelection(fileDatabase.Controls, customSelectionTermCombiningOperator); fileDatabase.OrderFilesByDateTime = orderFilesByDate; fileDatabase.PopulateDataLabelMaps(); return true; }