public abstract class org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager extends java.lang.Object
{
private static final org.slf4j.Logger LOGGER;
private static final org.eclipse.collections.impl.map.mutable.ConcurrentHashMap managersByName;
private static final java.util.concurrent.atomic.AtomicBoolean dbManagerReady;
public void <init>()
{
org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
private static void initialize()
{
java.lang.Throwable v;
org.eclipse.collections.api.block.function.Function v;
java.util.concurrent.atomic.AtomicBoolean v, v, v, v;
long v, v, v;
org.eclipse.collections.api.block.procedure.Procedure v;
org.eclipse.collections.api.factory.list.MutableListFactory v;
org.eclipse.collections.api.list.MutableList v, v;
org.finos.legend.engine.plan.execution.stores.relational.connection.driver.vendors.h.H2Manager v;
java.lang.Long v;
boolean v, v;
org.slf4j.Logger v, v;
java.util.Collection v;
java.util.ServiceLoader v;
v = <org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: java.util.concurrent.atomic.AtomicBoolean dbManagerReady>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
v = <org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: java.util.concurrent.atomic.AtomicBoolean dbManagerReady>;
entermonitor v;
label:
v = <org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: java.util.concurrent.atomic.AtomicBoolean dbManagerReady>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
v = <org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: org.slf4j.Logger LOGGER>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("DatabaseManager starting initialization");
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = new org.finos.legend.engine.plan.execution.stores.relational.connection.driver.vendors.h.H2Manager;
specialinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.driver.vendors.h.H2Manager: void <init>()>();
staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: void register(org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager)>(v);
v = staticinvoke <java.util.ServiceLoader: java.util.ServiceLoader load(java.lang.Class)>(class "Lorg/finos/legend/engine/plan/execution/stores/relational/connection/ConnectionExtension;");
v = <org.eclipse.collections.api.factory.Lists: org.eclipse.collections.api.factory.list.MutableListFactory mutable>;
v = interfaceinvoke v.<org.eclipse.collections.api.factory.list.MutableListFactory: org.eclipse.collections.api.list.MutableList empty()>();
v = staticinvoke <org.eclipse.collections.impl.utility.Iterate: java.util.Collection addAllTo(java.lang.Iterable,java.util.Collection)>(v, v);
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager$getAdditionalDatabaseManager__34: org.eclipse.collections.api.block.function.Function bootstrap$()>();
v = interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: org.eclipse.collections.api.list.MutableList flatCollect(org.eclipse.collections.api.block.function.Function)>(v);
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager$register__35: org.eclipse.collections.api.block.procedure.Procedure bootstrap$()>();
interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: void forEach(org.eclipse.collections.api.block.procedure.Procedure)>(v);
v = <org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: java.util.concurrent.atomic.AtomicBoolean dbManagerReady>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean getAndSet(boolean)>(1);
v = <org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: org.slf4j.Logger LOGGER>;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v - v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("DatabaseManager initialisation took {}", v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public static void register(org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager)
{
org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager v;
org.eclipse.collections.api.block.procedure.Procedure v;
org.eclipse.collections.api.list.MutableList v;
v := @parameter: org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: org.eclipse.collections.api.list.MutableList getIds()>();
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager$lambda_register_5d74d7ee_1__36: org.eclipse.collections.api.block.procedure.Procedure bootstrap$(org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager)>(v);
interfaceinvoke v.<org.eclipse.collections.api.list.MutableList: void forEach(org.eclipse.collections.api.block.procedure.Procedure)>(v);
return;
}
public static org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager fromString(java.lang.String)
{
org.eclipse.collections.impl.map.mutable.ConcurrentHashMap v;
java.lang.Object v;
java.lang.RuntimeException v;
java.lang.String v, v;
v := @parameter: java.lang.String;
staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: void initialize()>();
v = <org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: org.eclipse.collections.impl.map.mutable.ConcurrentHashMap managersByName>;
v = virtualinvoke v.<org.eclipse.collections.impl.map.mutable.ConcurrentHashMap: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = new java.lang.RuntimeException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u not supported yet");
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>(v);
throw v;
label:
return v;
}
public abstract org.eclipse.collections.api.list.MutableList getIds();
public abstract java.lang.String buildURL(java.lang.String, int, java.lang.String, java.util.Properties, org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.AuthenticationStrategy);
public java.util.Properties getExtraDataSourceProperties(org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.AuthenticationStrategy, org.finos.legend.engine.shared.core.identity.Identity)
{
org.finos.legend.engine.shared.core.identity.Identity v;
org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager v;
java.util.Properties v;
org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.AuthenticationStrategy v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager;
v := @parameter: org.finos.legend.engine.plan.execution.stores.relational.connection.authentication.AuthenticationStrategy;
v := @parameter: org.finos.legend.engine.shared.core.identity.Identity;
v = new java.util.Properties;
specialinvoke v.<java.util.Properties: void <init>()>();
return v;
}
public abstract java.lang.String getDriver();
public abstract org.finos.legend.engine.plan.execution.stores.relational.connection.driver.commands.RelationalDatabaseCommands relationalDatabaseSupport();
public boolean publishMetrics()
{
org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager;
return 1;
}
public org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification getLocalDataSourceSpecification(org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification, org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy)
{
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification v;
java.lang.UnsupportedOperationException v;
org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager v;
org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager;
v := @parameter: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.specification.DatasourceSpecification;
v := @parameter: org.finos.legend.engine.protocol.pure.v.model.packageableElement.store.relational.connection.authentication.AuthenticationStrategy;
v = new java.lang.UnsupportedOperationException;
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>(java.lang.String)>("Local datasource specification not supported");
throw v;
}
static void <clinit>()
{
java.util.concurrent.atomic.AtomicBoolean v;
org.eclipse.collections.impl.map.mutable.ConcurrentHashMap v;
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/finos/legend/engine/plan/execution/stores/relational/connection/driver/DatabaseManager;");
<org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: org.slf4j.Logger LOGGER> = v;
v = staticinvoke <org.eclipse.collections.impl.map.mutable.ConcurrentHashMap: org.eclipse.collections.impl.map.mutable.ConcurrentHashMap newMap()>();
<org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: org.eclipse.collections.impl.map.mutable.ConcurrentHashMap managersByName> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>()>();
<org.finos.legend.engine.plan.execution.stores.relational.connection.driver.DatabaseManager: java.util.concurrent.atomic.AtomicBoolean dbManagerReady> = v;
return;
}
}