View Javadoc
1   package net.sumaris.core.action;
2   
3   /*-
4    * #%L
5    * Sumaris3 Core :: Sumaris3 Core Shared
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2017 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU General Public License as
13   * published by the Free Software Foundation, either version 3 of the
14   * License, or (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU General Public
22   * License along with this program.  If not, see
23   * <http://www.gnu.org/licenses/gpl-3.0.html>.
24   * #L%
25   */
26  
27  
28  import net.sumaris.core.config.SumarisConfiguration;
29  import net.sumaris.core.dao.schema.DatabaseSchemaDao;
30  import net.sumaris.core.dao.schema.DatabaseSchemaDaoImpl;
31  import net.sumaris.core.dao.technical.Daos;
32  import net.sumaris.core.exception.DatabaseSchemaUpdateException;
33  import net.sumaris.core.exception.SumarisTechnicalException;
34  import org.slf4j.Logger;
35  import org.slf4j.LoggerFactory;
36  
37  import java.io.File;
38  
39  /**
40   * <p>DatabaseNewDbAction class.</p>
41   */
42  public class DatabaseCreateSchemaAction {
43  	/* Logger */
44  	private static final Logger log = LoggerFactory.getLogger(DatabaseCreateSchemaAction.class);
45  
46  	/**
47  	 * <p>run.</p>
48  	 */
49  	public void run() {
50  		SumarisConfiguration config = SumarisConfiguration.getInstance();
51  
52  		// Check output directory validity
53  		File outputDirectory = ActionUtils.checkAndGetOutputFile(true, this.getClass());
54  
55  		DatabaseSchemaDao databaseSchemaDao = new DatabaseSchemaDaoImpl(config);
56  
57  		try {
58  			// Create the database
59  			databaseSchemaDao.generateNewDb(outputDirectory, false);
60  
61  			// Update the DB schema
62  			databaseSchemaDao.updateSchema(outputDirectory);
63  		} catch (SumarisTechnicalException | DatabaseSchemaUpdateException e1) {
64  			log.error(e1.getMessage());
65  
66              // stop here
67              return;
68  		}
69  
70          // Set this new db directory (and JDBC URL) as default database
71  		// This allow to chain action. e.g. --new-db --import-ref
72  		config.setDbDirectory(outputDirectory);
73          config.setJdbcUrl(Daos.getJdbcUrl(outputDirectory, config.getDbName()));
74  	}
75  }