/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.sdb.store; /* H2 contribution from Martin HEIN (m#)/March 2008 */ /* SAP contribution from Fergal Monaghan (m#)/May 2012 */ import java.util.List; import org.apache.jena.sdb.SDBException ; import org.apache.jena.sdb.shared.SymbolRegistry ; import org.apache.jena.sparql.util.Named ; import org.apache.jena.sparql.util.Symbol ; import org.slf4j.LoggerFactory; // Common super class with LayoutType public class DatabaseType extends Symbol implements Named { public static final DatabaseType Derby = new DatabaseType("derby") ; public static final DatabaseType H2 = new DatabaseType("H2") ; public static final DatabaseType HSQLDB = new DatabaseType("HSQLDB") ; public static final DatabaseType MySQL = new DatabaseType("MySQL") ; // MariaDB is currently treated as MySQL - the only difference is that a different JDBC driver is loaded. public static final DatabaseType MariaDB = new DatabaseType("MariaDB") ; public static final DatabaseType PostgreSQL = new DatabaseType("PostgreSQL") ; public static final DatabaseType SQLServer = new DatabaseType("SQLServer") ; public static final DatabaseType Oracle = new DatabaseType("Oracle") ; public static final DatabaseType DB2 = new DatabaseType("DB2") ; public static final DatabaseType SAP = new DatabaseType("sap") ; static SymbolRegistry<DatabaseType> registry = new SymbolRegistry<DatabaseType>() ; static { init() ; } public static DatabaseType fetch(String databaseTypeName) { if ( databaseTypeName == null ) throw new IllegalArgumentException("DatabaseType.convert: null not allowed") ; DatabaseType t = registry.lookup(databaseTypeName) ; if ( t != null ) return t ; // Hack? if ( databaseTypeName.startsWith("oracle:") ) return Oracle ; LoggerFactory.getLogger(DatabaseType.class).warn("Can't turn '"+databaseTypeName+"' into a database type") ; throw new SDBException("Can't turn '"+databaseTypeName+"' into a database type") ; } static void init() { register(Derby) ; registerName("JavaDB", Derby) ; register(HSQLDB) ; registerName("hsqldb:file", HSQLDB) ; registerName("hsqldb:mem", HSQLDB) ; registerName("hsql", HSQLDB) ; register(H2) ; registerName("h2:file", H2) ; registerName("h2:mem", H2) ; registerName("h2:tcp", H2) ; registerName("h2", H2) ; register(MySQL) ; register(MariaDB) ; registerName("MySQL5", MySQL) ; register(PostgreSQL) ; register(SQLServer) ; registerName("MSSQLServer" , SQLServer) ; registerName("MSSQLServerExpress" , SQLServer) ; register(Oracle) ; register(DB2) ; register(SAP); } static public List<String> allNames() { return registry.allNames() ; } static public List<DatabaseType> allTypes() { return registry.allSymbols() ; } static public void register(String name) { if ( name == null ) throw new IllegalArgumentException("DatabaseType.register(String): null not allowed") ; register(new DatabaseType(name)) ; } static public void register(DatabaseType dbType) { if ( dbType == null ) throw new IllegalArgumentException("DatabaseType.register(DatabaseType): null not allowed") ; registry.register(dbType) ; } static public void registerName(String databaseName, DatabaseType dbType) { if ( dbType == null ) throw new IllegalArgumentException("DatabaseType.registerName: null not allowed") ; registry.register(databaseName, dbType) ; } private DatabaseType(String layoutName) { super(layoutName) ; } @Override public String getName() { return super.getSymbol() ; } }