diff options
Diffstat (limited to 'java/com/google/gerrit/pgm/init/JDBCInitializer.java')
-rw-r--r-- | java/com/google/gerrit/pgm/init/JDBCInitializer.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/java/com/google/gerrit/pgm/init/JDBCInitializer.java b/java/com/google/gerrit/pgm/init/JDBCInitializer.java new file mode 100644 index 0000000000..e3a1d666a0 --- /dev/null +++ b/java/com/google/gerrit/pgm/init/JDBCInitializer.java @@ -0,0 +1,49 @@ +// Copyright (C) 2012 The Android Open Source Project +// +// Licensed 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 com.google.gerrit.pgm.init; + +import static com.google.gerrit.pgm.init.api.InitUtil.username; + +import com.google.common.base.Strings; +import com.google.gerrit.pgm.init.api.Section; + +class JDBCInitializer implements DatabaseConfigInitializer { + @Override + public void initConfig(Section database) { + boolean hasUrl = Strings.emptyToNull(database.get("url")) != null; + database.string("URL", "url", null); + guessDriver(database); + database.string("Driver class name", "driver", null); + database.string("Database username", "username", hasUrl ? null : username()); + database.password("username", "password"); + } + + private void guessDriver(Section database) { + String url = Strings.emptyToNull(database.get("url")); + if (url != null && Strings.isNullOrEmpty(database.get("driver"))) { + if (url.startsWith("jdbc:derby:")) { + database.set("driver", "org.apache.derby.jdbc.EmbeddedDriver"); + } else if (url.startsWith("jdbc:h2:")) { + database.set("driver", "org.h2.Driver"); + } else if (url.startsWith("jdbc:mariadb:")) { + database.set("driver", "org.mariadb.jdbc.Driver"); + } else if (url.startsWith("jdbc:mysql:")) { + database.set("driver", "com.mysql.jdbc.Driver"); + } else if (url.startsWith("jdbc:postgresql:")) { + database.set("driver", "org.postgresql.Driver"); + } + } + } +} |