View Javadoc
1   /*
2    * This file is part of Waarp Project (named also Waarp or GG).
3    *
4    *  Copyright (c) 2019, Waarp SAS, and individual contributors by the @author
5    *  tags. See the COPYRIGHT.txt in the distribution for a full listing of
6    * individual contributors.
7    *
8    *  All Waarp Project is free software: you can redistribute it and/or
9    * modify it under the terms of the GNU General Public License as published by
10   * the Free Software Foundation, either version 3 of the License, or (at your
11   * option) any later version.
12   *
13   * Waarp is distributed in the hope that it will be useful, but WITHOUT ANY
14   * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15   * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16   *
17   *  You should have received a copy of the GNU General Public License along with
18   * Waarp . If not, see <http://www.gnu.org/licenses/>.
19   */
20  package org.waarp.gateway.ftp.database.model;
21  
22  import org.waarp.common.database.DbAdmin;
23  import org.waarp.common.database.exception.WaarpDatabaseNoConnectionException;
24  import org.waarp.common.database.model.DbModel;
25  import org.waarp.common.database.model.DbModelFactory;
26  import org.waarp.common.database.model.DbType;
27  import org.waarp.common.guid.LongUuid;
28  
29  /**
30   * Factory to store the Database Model object
31   */
32  public class DbModelFactoryFtp extends DbModelFactory {
33  
34    /**
35     * Initialize the Database Model according to arguments.
36     *
37     * @param dbdriver
38     * @param dbserver
39     * @param dbuser
40     * @param dbpasswd
41     * @param write
42     *
43     * @throws WaarpDatabaseNoConnectionException
44     */
45    public static DbAdmin initialize(final String dbdriver, final String dbserver,
46                                     final String dbuser, final String dbpasswd,
47                                     final boolean write)
48        throws WaarpDatabaseNoConnectionException {
49      final DbType type = DbType.getFromDriver(dbdriver);
50      final DbModel dbModel;
51      switch (type) {
52        case H2:
53          dbModel = new DbModelH2Ftp(dbserver, dbuser, dbpasswd);
54          break;
55        case Oracle:
56          dbModel = new DbModelOracleFtp(dbserver, dbuser, dbpasswd);
57          break;
58        case PostGreSQL:
59          dbModel = new DbModelPostgresqlFtp();
60          break;
61        case MySQL:
62          dbModel = new DbModelMysqlFtp(dbserver, dbuser, dbpasswd);
63          break;
64        case MariaDB:
65          dbModel = new DbModelMariaDbFtp(dbserver, dbuser, dbpasswd);
66          break;
67        default:
68          throw new WaarpDatabaseNoConnectionException(
69              "TypeDriver unknown: " + type);
70      }
71      dbModels.add(dbModel);
72      return new DbAdmin(dbModel, dbserver, dbuser, dbpasswd, write);
73    }
74  
75    public static long nextSequenceMonitoring() {
76      return LongUuid.getLongUuid();
77    }
78  }