1 package fr.ifremer.quadrige3.core.service; 2 3 /*- 4 * #%L 5 * Quadrige3 Core :: Quadrige3 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 Affero General Public License as published by 13 * the Free Software Foundation, either version 3 of the License, or 14 * (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 Affero General Public License 22 * along with this program. If not, see <http://www.gnu.org/licenses/>. 23 * #L% 24 */ 25 26 27 28 29 import org.nuiton.version.Version; 30 import org.springframework.transaction.annotation.Transactional; 31 32 import java.io.File; 33 import java.io.IOException; 34 35 /** 36 * <p>DatabaseSchemaService interface.</p> 37 * 38 */ 39 @Transactional(readOnly = true) 40 public interface DatabaseSchemaService { 41 42 /** 43 * Return the version, stored in the database (e.g. in SYSTEM_VERSION table) 44 * 45 * @return a {@link org.nuiton.version.Version} object. 46 */ 47 Version getDbVersion(); 48 49 /** 50 * Return the version of the applciation. This version comes from database updates (e.g. liquibase patch) 51 * 52 * @return the version, or null if not patch available 53 */ 54 Version getApplicationVersion(); 55 56 /** 57 * <p>updateSchema.</p> 58 */ 59 @Transactional() 60 void updateSchema(); 61 62 /** 63 * Check if connection could be open. 64 * If a validation query has been set in configuration, test it 65 * 66 * @return if db is loaded 67 */ 68 boolean isDbLoaded(); 69 70 /** 71 * Check if db files exists. If not a database file, return true 72 * 73 * @return if db files exists 74 */ 75 boolean isDbExists(); 76 77 /** 78 * Report into a file the liquibase status of database 79 * 80 * @param outputFile a {@link java.io.File} object. 81 * @throws java.io.IOException if any. 82 */ 83 void generateStatusReport(File outputFile) throws IOException; 84 85 /** 86 * Generate a diff report, from Hibernate model to database 87 * 88 * @param outputFile a {@link java.io.File} object. 89 */ 90 void generateDiffReport(File outputFile); 91 92 /** 93 * Generate a diff changelog, from Hibernate model to database 94 * 95 * @param outputFile a {@link java.io.File} object. 96 */ 97 void generateDiffChangeLog(File outputFile); 98 99 /** 100 * <p>createSchemaToFile.</p> 101 * 102 * @param outputFile a {@link java.io.File} object. 103 * @param withDrop a boolean. 104 * @throws java.io.IOException if any. 105 */ 106 void createSchemaToFile(File outputFile, boolean withDrop) throws IOException; 107 }