001/** 002 * Copyright (C) 2010-2015 The Roslin Institute <contact andy.law@roslin.ed.ac.uk> 003 * 004 * This file is part of JEnsembl: a Java API to Ensembl data sources developed by the 005 * Bioinformatics Group at The Roslin Institute, The Royal (Dick) School of 006 * Veterinary Studies, University of Edinburgh. 007 * 008 * Project hosted at: http://jensembl.sourceforge.net 009 * 010 * This is free software: you can redistribute it and/or modify 011 * it under the terms of the GNU General Public License (version 3) as published by 012 * the Free Software Foundation. 013 * 014 * This software is distributed in the hope that it will be useful, 015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 017 * GNU General Public License for more details. 018 * 019 * You should have received a copy of the GNU General Public License 020 * in this software distribution. If not, see: http://opensource.org/licenses/gpl-3.0.html 021 */ 022package uk.ac.roslin.ensembl.demo; 023 024import java.io.IOException; 025import java.nio.charset.Charset; 026import java.nio.file.Files; 027import java.nio.file.Paths; 028import java.util.Arrays; 029import java.util.Date; 030import java.util.List; 031import static org.junit.Assert.assertNotNull; 032import static org.junit.Assert.assertNull; 033import static org.junit.Assert.assertSame; 034import static org.junit.Assert.assertTrue; 035import static org.junit.Assert.fail; 036import uk.ac.roslin.ensembl.config.DBConnection; 037import uk.ac.roslin.ensembl.config.EnsemblDBType; 038import uk.ac.roslin.ensembl.config.SchemaVersion; 039import uk.ac.roslin.ensembl.dao.database.DBCollection; 040import uk.ac.roslin.ensembl.dao.database.DBDatabase; 041import uk.ac.roslin.ensembl.dao.database.DBRegistry; 042import uk.ac.roslin.ensembl.exception.ConfigurationException; 043import uk.ac.roslin.ensembl.exception.DAOException; 044import uk.ac.roslin.ensembl.exception.NonUniqueException; 045 046 047public class RegistryFactory { 048 049 public RegistryFactory() {}; 050 051 public static void main(String[] args) throws Exception { 052 RegistryFactory fact = new RegistryFactory(); 053 fact.testSchemaVersion(); 054 fact.testEnsembl(); 055 fact.testGenomes(); 056 fact.testBacteria(); 057 } 058 059 060 061 public void testSchemaVersion() throws ConfigurationException { 062 063 SchemaVersion s = new SchemaVersion(); 064 065 System.out.println("API CONFIGURATION: Current declared Ensembl Version: "+s.getCurrentEnsemblVersion()); 066 System.out.println("API CONFIGURATION: Current declared EnsemblGenomes Version: "+s.getCurrentGenomesVersion()); 067 System.out.println("API CONFIGURATION: List of Registered Ensembl Schema Versions: "+Arrays.toString(s.getRegisteredSchemas())); 068 System.out.println("API CONFIGURATION: List of Registered EnsemblGenomes Release Versions: "+Arrays.toString(s.getKnownGenomesReleases())); 069 070 } 071 072 public void testEnsembl() throws ConfigurationException, DAOException, NonUniqueException, IOException { 073 074 SchemaVersion versionProps = new SchemaVersion(); 075 assertTrue(Integer.parseInt(versionProps.getCurrentGenomesVersion())>=21); 076 assertTrue(Integer.parseInt(versionProps.getCurrentEnsemblVersion())>=74); 077 078 DBRegistry reg = DBRegistry.createEmptyRegistry(); 079 assertNotNull(reg); 080 System.out.println(reg.getVersionReport()); 081 System.out.println(reg.getBriefRegistryReport()); 082 List<String> lines = Files.readAllLines(Paths.get(reg.getRegistryReport().getCanonicalPath()), Charset.forName("UTF-8")); 083 for (String line:lines) {System.out.println(line);} 084 085 reg=null; 086 087 reg = DBRegistry.createUninitializedRegistryForDataSource(DBConnection.DataSource.ENSEMBLDB); 088 assertNotNull(reg); 089 System.out.println(reg.getVersionReport()); 090 System.out.println(reg.getBriefRegistryReport()); 091 lines = Files.readAllLines(Paths.get(reg.getRegistryReport().getCanonicalPath()), Charset.forName("UTF-8")); 092 for (String line:lines) {System.out.println(line);} 093 094 095 // slow.... 096 reg = DBRegistry.createRegistryForDataSource(DBConnection.DataSource.ENSEMBLDB); 097 assertNotNull(reg); 098 System.out.println(reg.getVersionReport()); 099 System.out.println(reg.getBriefRegistryReport()); 100 // slow.... 101 lines = Files.readAllLines(Paths.get(reg.getRegistryReport().getCanonicalPath()), Charset.forName("UTF-8")); 102 for (String line:lines) {System.out.println(line);} 103 reg = null; 104 105 reg = DBRegistry.createRegistryForDataSourceCurrentRelease(DBConnection.DataSource.ENSEMBLDB); 106 assertNotNull(reg); 107 System.out.println(reg.getVersionReport()); 108 System.out.println(reg.getBriefRegistryReport()); 109 // slow.... 110 lines = Files.readAllLines(Paths.get(reg.getRegistryReport().getCanonicalPath()), Charset.forName("UTF-8")); 111 for (String line:lines) {System.out.println(line);} 112 113 reg = null; 114 try { 115 reg = DBRegistry.createRegistryForDataSourceAtReleaseVersion(DBConnection.DataSource.ENSEMBLDB, null); 116 fail(); 117 } catch (ConfigurationException configurationException) { 118 119 } 120 reg = null; 121 try { 122 reg = DBRegistry.createRegistryForDataSourceAtReleaseVersion(DBConnection.DataSource.ENSEMBLDB, 40); 123 fail(); 124 } catch (ConfigurationException configurationException) { 125 126 } 127 reg = null; 128 try { 129 reg = DBRegistry.createRegistryForDataSourceAtReleaseVersion(DBConnection.DataSource.ENSEMBLDB, 100); 130 fail(); 131 } catch (ConfigurationException configurationException) { 132 133 } 134 reg = null; 135 Date start= new Date(); 136 reg = DBRegistry.createRegistryForDataSourceAtReleaseVersion(DBConnection.DataSource.ENSEMBLDB, 72); 137 StringBuilder sb= reg.getVersionReport(); 138 Date stop= new Date(); 139 System.out.println(sb.toString()); 140 System.out.println("parsing took "+ (stop.getTime()-start.getTime()) + " msex"); 141 142 DBDatabase database1 = reg.getDatabase("human"); 143 assertSame(database1,reg.getDatabase("human", null)); 144 assertSame(database1,reg.getDatabase("human", "72")); 145 assertNull(reg.getDatabase("human", "70")); 146 assertNull(reg.getDatabase("human", "74")); 147 148 assertSame(database1,reg.getDatabase("human", null, null)); 149 assertSame(database1,reg.getDatabase("human", null, "72")); 150 assertNull(reg.getDatabase("human", null, "70")); 151 assertNull(reg.getDatabase("human", null, "74")); 152 153 assertSame(database1,reg.getDatabase("human", EnsemblDBType.core , null)); 154 assertSame(database1,reg.getDatabase("human", EnsemblDBType.core , "72")); 155 assertNull(reg.getDatabase("human", EnsemblDBType.core , "70")); 156 assertNull(reg.getDatabase("human", EnsemblDBType.core , "74")); 157 158 assertNull(reg.getDatabase("human", EnsemblDBType.collection_core , null)); 159 assertNull(reg.getDatabase("human", EnsemblDBType.collection_core , "70")); 160 assertNull(reg.getDatabase("human", EnsemblDBType.collection_core , "72")); 161 assertNull(reg.getDatabase("human", EnsemblDBType.collection_core , "74")); 162 163 } 164 165 public void testGenomes() throws ConfigurationException, DAOException, NonUniqueException, IOException { 166 167 DBRegistry reg; 168 169 assertNotNull(DBRegistry.createEmptyRegistry()); 170 171 reg=null; 172 173 reg = DBRegistry.createUninitializedRegistryForDataSource(DBConnection.DataSource.ENSEMBLGENOMES); 174 assertNotNull(reg); 175 System.out.println(reg.getVersionReport()); 176 System.out.println(reg.getBriefRegistryReport()); 177 List<String> lines = Files.readAllLines(Paths.get(reg.getRegistryReport().getCanonicalPath()), Charset.forName("UTF-8")); 178 for (String line:lines) {System.out.println(line);} 179 180 reg = null; 181 182 // very slow... 183 reg = DBRegistry.createRegistryForDataSource(DBConnection.DataSource.ENSEMBLGENOMES); 184 assertNotNull(reg); 185 System.out.println(reg.getVersionReport()); 186 System.out.println(reg.getBriefRegistryReport()); 187 // slow 188 lines = Files.readAllLines(Paths.get(reg.getRegistryReport().getCanonicalPath()), Charset.forName("UTF-8")); 189 for (String line:lines) {System.out.println(line);} 190 reg = null; 191 192 try { 193 reg = DBRegistry.createRegistryForDataSourceAtReleaseVersion(DBConnection.DataSource.ENSEMBLGENOMES, null); 194 fail(); 195 } catch (ConfigurationException configurationException) { 196 197 } 198 try { 199 reg = DBRegistry.createRegistryForDataSourceAtReleaseVersion(DBConnection.DataSource.ENSEMBLGENOMES, -1); 200 fail(); 201 } catch (ConfigurationException configurationException) { 202 203 } 204 try { 205 reg = DBRegistry.createRegistryForDataSourceAtReleaseVersion(DBConnection.DataSource.ENSEMBLGENOMES, 100); 206 fail(); 207 } catch (ConfigurationException configurationException) { 208 209 } 210 211 Date start= new Date(); 212 213 reg = DBRegistry.createRegistryForDataSourceAtReleaseVersion(DBConnection.DataSource.ENSEMBLGENOMES, 20); 214 StringBuilder sb= reg.getVersionReport(); 215 Date stop= new Date(); 216 System.out.println(sb.toString()); 217 System.out.println("parsing took "+ (stop.getTime()-start.getTime()) + " msex"); 218 219 DBDatabase database1 = reg.getDatabase("grape"); 220 assertSame(database1,reg.getDatabase("grape", null)); 221 assertSame(database1,reg.getDatabase("grape", "20")); 222 assertNull(reg.getDatabase("grape", "19")); 223 assertNull(reg.getDatabase("grape", "21")); 224 225 assertSame(database1,reg.getDatabase("grape", null, null)); 226 assertSame(database1,reg.getDatabase("grape", null, "20")); 227 assertNull(reg.getDatabase("grape", null, "19")); 228 assertNull(reg.getDatabase("grape", null, "21")); 229 230 assertSame(database1,reg.getDatabase("grape", EnsemblDBType.core , null)); 231 assertSame(database1,reg.getDatabase("grape", EnsemblDBType.core , "20")); 232 assertNull(reg.getDatabase("grape", EnsemblDBType.core , "19")); 233 assertNull(reg.getDatabase("grape", EnsemblDBType.core , "21")); 234 235 assertNull(reg.getDatabase("grape", EnsemblDBType.collection_core , null)); 236 assertNull(reg.getDatabase("grape", EnsemblDBType.collection_core , "19")); 237 assertNull(reg.getDatabase("grape", EnsemblDBType.collection_core , "20")); 238 assertNull(reg.getDatabase("grape", EnsemblDBType.collection_core , "21")); 239 240 } 241 242 public void testBacteria() throws ConfigurationException, DAOException, NonUniqueException, IOException { 243 244 DBRegistry reg; 245 246 assertNotNull(DBRegistry.createEmptyRegistry()); 247 248 reg=null; 249 reg = DBRegistry.createUninitializedRegistryForDataSource(DBConnection.DataSource.ENSEMBLBACTERIA); 250 assertNotNull(reg); 251 System.out.println(reg.getVersionReport()); 252 System.out.println(reg.getBriefRegistryReport()); 253 List<String> lines = Files.readAllLines(Paths.get(reg.getRegistryReport().getCanonicalPath()), Charset.forName("UTF-8")); 254 for (String line:lines) {System.out.println(line);} 255 reg = null; 256 257 258// // unacceptably slow 259// reg = DBRegistry.createRegistryForDataSource(DBConnection.DataSource.ENSEMBLBACTERIA); 260// assertNotNull(reg); 261// System.out.println(reg.getVersionReport()); 262// System.out.println(reg.getBriefRegistryReport()); 263// //very slow 264// lines = Files.readAllLines(Paths.get(reg.getRegistryReport().getCanonicalPath()), Charset.forName("UTF-8")); 265// for (String line:lines) {System.out.println(line);} 266// reg=null; 267 268 269 reg = DBRegistry.createRegistryForDataSourceCurrentRelease(DBConnection.DataSource.ENSEMBLBACTERIA); 270 assertNotNull(reg); 271 System.out.println(reg.getVersionReport()); 272 System.out.println(reg.getBriefRegistryReport()); 273 lines = Files.readAllLines(Paths.get(reg.getRegistryReport().getCanonicalPath()), Charset.forName("UTF-8")); 274 for (String line:lines) {System.out.println(line);} 275 276 try { 277 reg = DBRegistry.createRegistryForDataSourceAtReleaseVersion(DBConnection.DataSource.ENSEMBLBACTERIA, null); 278 fail(); 279 } catch (ConfigurationException configurationException) { 280 281 } 282 try { 283 reg = DBRegistry.createRegistryForDataSourceAtReleaseVersion(DBConnection.DataSource.ENSEMBLBACTERIA, -1); 284 fail(); 285 } catch (ConfigurationException configurationException) { 286 287 } 288 try { 289 reg = DBRegistry.createRegistryForDataSourceAtReleaseVersion(DBConnection.DataSource.ENSEMBLBACTERIA, 100); 290 fail(); 291 } catch (ConfigurationException configurationException) { 292 293 } 294 295 Date start= new Date(); 296 297 reg = DBRegistry.createRegistryForDataSourceAtReleaseVersion(DBConnection.DataSource.ENSEMBLBACTERIA, 20); 298 StringBuilder sb= reg.getVersionReport(); 299 Date stop= new Date(); 300 System.out.println(sb.toString()); 301 System.out.println("parsing took "+ (stop.getTime()-start.getTime()) + " msex"); 302 303 DBCollection collection1 = reg.getCollection("bacteria_1",null); 304 assertSame(collection1,reg.getCollection("bacteria_1","20")); 305 assertNull(reg.getCollection("bacteria_1","19")); 306 assertNull(reg.getCollection("bacteria_1","21")); 307 308 } 309 310}