View Javadoc
1   package net.sumaris.core.action;
2   
3   /*
4    * #%L
5    * SIH-Adagio :: Shared
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2012 - 2014 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  import net.sumaris.core.config.SumarisConfiguration;
28  import net.sumaris.core.dao.technical.Daos;
29  import net.sumaris.core.exception.SumarisTechnicalException;
30  import net.sumaris.core.exception.VersionNotFoundException;
31  import net.sumaris.core.service.ServiceLocator;
32  import net.sumaris.core.service.schema.DatabaseSchemaService;
33  import org.nuiton.i18n.I18n;
34  import org.slf4j.Logger;
35  import org.slf4j.LoggerFactory;
36  import org.nuiton.version.Version;
37  
38  import java.io.File;
39  
40  /**
41   * <p>DatabaseChangeLogAction class.</p>
42   *
43   */
44  public class DatabaseGenerateChangeLogAction {
45      /* Logger */
46      private static final Logger log = LoggerFactory.getLogger(DatabaseCreateSchemaAction.class);
47  
48      /**
49       * <p>run.</p>
50       */
51      public void run() {
52          SumarisConfiguration config = SumarisConfiguration.getInstance();
53          DatabaseSchemaService service = ServiceLocator.instance().getDatabaseSchemaService();
54  
55          log.info("Starting change log file generation...");
56          ActionUtils.logConnectionProperties();
57  
58          // Check if database is well loaded
59          if (!service.isDbLoaded()) {
60              log.warn("Could not generate changelog file: database seems to be empty !");
61              return;
62          }
63  
64          try {
65              Version actualDbVersion = service.getDbVersion();
66              if (actualDbVersion != null) {
67                  log.info(I18n.t("sumaris.persistence.schemaVersion", actualDbVersion.toString()));
68              }
69  
70              Version modelVersion = config.getVersion();
71              log.info(I18n.t("sumaris.persistence.modelVersion", modelVersion.toString()));
72          } catch (SumarisTechnicalException e) {
73              log.error("Error while getting versions.", e);
74          }
75  
76          File outputFile = ActionUtils.checkAndGetOutputFile(false, this.getClass());
77          
78          try {
79              log.info("Launching changelog file generation...");
80              service.generateDiffChangeLog(outputFile);
81              if (outputFile != null) {
82                  log.info(String.format("Database changelog file successfully generated at %s", outputFile));
83              }
84              else {
85                  log.info("Database changelog file successfully generated.");
86              }
87          } catch (SumarisTechnicalException e) {
88              log.error("Error while generating changelog file.", e);
89          }
90      }
91  }