/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.sync.engine.upgrade.util;
import com.liferay.sync.engine.model.SyncProp;
import com.liferay.sync.engine.service.SyncAccountService;
import com.liferay.sync.engine.service.SyncFileService;
import com.liferay.sync.engine.service.SyncLanClientService;
import com.liferay.sync.engine.service.SyncLanEndpointService;
import com.liferay.sync.engine.service.SyncPropService;
import com.liferay.sync.engine.service.SyncSiteService;
import com.liferay.sync.engine.service.SyncUserService;
import com.liferay.sync.engine.service.SyncWatchEventService;
import com.liferay.sync.engine.service.persistence.SyncAccountPersistence;
import com.liferay.sync.engine.service.persistence.SyncFilePersistence;
import com.liferay.sync.engine.service.persistence.SyncLanClientPersistence;
import com.liferay.sync.engine.service.persistence.SyncLanEndpointPersistence;
import com.liferay.sync.engine.service.persistence.SyncPropPersistence;
import com.liferay.sync.engine.service.persistence.SyncSitePersistence;
import com.liferay.sync.engine.service.persistence.SyncUserPersistence;
import com.liferay.sync.engine.service.persistence.SyncWatchEventPersistence;
import com.liferay.sync.engine.upgrade.UpgradeProcess;
import com.liferay.sync.engine.upgrade.v3_0_10.UpgradeProcess_3_0_10;
import com.liferay.sync.engine.upgrade.v3_0_11.UpgradeProcess_3_0_11;
import com.liferay.sync.engine.upgrade.v3_0_4.UpgradeProcess_3_0_4;
import com.liferay.sync.engine.upgrade.v3_0_5.UpgradeProcess_3_0_5;
import com.liferay.sync.engine.upgrade.v3_0_8.UpgradeProcess_3_0_8;
import com.liferay.sync.engine.upgrade.v3_0_9.UpgradeProcess_3_0_9;
import com.liferay.sync.engine.upgrade.v3_1_0.UpgradeProcess_3_1_0;
import com.liferay.sync.engine.upgrade.v3_2_1.UpgradeProcess_3_2_1;
import com.liferay.sync.engine.upgrade.v3_3_0.UpgradeProcess_3_3_0;
import com.liferay.sync.engine.upgrade.v3_4_0.UpgradeProcess_3_4_0;
import com.liferay.sync.engine.upgrade.v3_4_2.UpgradeProcess_3_4_2;
import com.liferay.sync.engine.util.FileUtil;
import com.liferay.sync.engine.util.LoggerUtil;
import com.liferay.sync.engine.util.PropsValues;
import com.liferay.sync.engine.util.ReleaseInfo;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Shinn Lok
*/
public class UpgradeUtil {
public static void copyLoggerConfiguration() throws Exception {
ClassLoader classLoader = LoggerUtil.class.getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream(
PropsValues.SYNC_LOGGER_CONFIGURATION_FILE);
Path loggerConfigurationFilePath = Paths.get(
PropsValues.SYNC_CONFIGURATION_DIRECTORY,
PropsValues.SYNC_LOGGER_CONFIGURATION_FILE);
Files.copy(
inputStream, loggerConfigurationFilePath,
StandardCopyOption.REPLACE_EXISTING);
}
public static void upgrade() throws Exception {
int buildNumber = SyncPropService.getInteger(SyncProp.KEY_BUILD_NUMBER);
if (buildNumber == 0) {
createTables();
Path configurationFilePath = Paths.get(
PropsValues.SYNC_CONFIGURATION_DIRECTORY);
Files.createDirectories(configurationFilePath.resolve("files"));
Path loggerConfigurationFilePath = configurationFilePath.resolve(
PropsValues.SYNC_LOGGER_CONFIGURATION_FILE);
if (!FileUtil.exists(loggerConfigurationFilePath)) {
copyLoggerConfiguration();
}
SyncPropService.updateSyncProp(
SyncProp.KEY_BUILD_NUMBER, ReleaseInfo.getBuildNumber());
return;
}
else if (buildNumber >= ReleaseInfo.getBuildNumber()) {
return;
}
List<UpgradeProcess> upgradeProcesses = new ArrayList<>();
upgradeProcesses.add(new UpgradeProcess_3_0_4());
upgradeProcesses.add(new UpgradeProcess_3_0_5());
upgradeProcesses.add(new UpgradeProcess_3_0_8());
upgradeProcesses.add(new UpgradeProcess_3_0_9());
upgradeProcesses.add(new UpgradeProcess_3_0_10());
upgradeProcesses.add(new UpgradeProcess_3_0_11());
upgradeProcesses.add(new UpgradeProcess_3_1_0());
upgradeProcesses.add(new UpgradeProcess_3_2_1());
upgradeProcesses.add(new UpgradeProcess_3_3_0());
upgradeProcesses.add(new UpgradeProcess_3_4_0());
upgradeProcesses.add(new UpgradeProcess_3_4_2());
for (UpgradeProcess upgradeProcess : upgradeProcesses) {
if (buildNumber < upgradeProcess.getThreshold()) {
_logger.info(
"Upgrading database schema to {}",
upgradeProcess.getThreshold());
upgradeProcess.upgradeSchema();
}
}
for (UpgradeProcess upgradeProcess : upgradeProcesses) {
if (buildNumber < upgradeProcess.getThreshold()) {
_logger.info("Upgrading to {}", upgradeProcess.getThreshold());
upgradeProcess.upgrade();
}
}
SyncPropService.updateSyncProp(
SyncProp.KEY_BUILD_NUMBER, ReleaseInfo.getBuildNumber());
}
protected static void createTables() throws Exception {
SyncAccountPersistence syncAccountPersistence =
SyncAccountService.getSyncAccountPersistence();
if (!syncAccountPersistence.isTableExists()) {
syncAccountPersistence.createTable();
}
SyncFilePersistence syncFilePersistence =
SyncFileService.getSyncFilePersistence();
if (!syncFilePersistence.isTableExists()) {
syncFilePersistence.createTable();
}
SyncLanClientPersistence syncLanClientPersistence =
SyncLanClientService.getSyncLanClientPersistence();
if (!syncLanClientPersistence.isTableExists()) {
syncLanClientPersistence.createTable();
}
SyncLanEndpointPersistence syncLanEndpointPersistence =
SyncLanEndpointService.getSyncLanEndpointPersistence();
if (!syncLanEndpointPersistence.isTableExists()) {
syncLanEndpointPersistence.createTable();
}
SyncPropPersistence syncPropPersistence =
SyncPropService.getSyncPropPersistence();
if (!syncPropPersistence.isTableExists()) {
syncPropPersistence.createTable();
}
SyncSitePersistence syncSitePersistence =
SyncSiteService.getSyncSitePersistence();
if (!syncSitePersistence.isTableExists()) {
syncSitePersistence.createTable();
}
SyncUserPersistence syncUserPersistence =
SyncUserService.getSyncUserPersistence();
if (!syncUserPersistence.isTableExists()) {
syncUserPersistence.createTable();
}
SyncWatchEventPersistence syncWatchEventPersistence =
SyncWatchEventService.getSyncWatchEventPersistence();
if (!syncWatchEventPersistence.isTableExists()) {
syncWatchEventPersistence.createTable();
}
}
private static final Logger _logger = LoggerFactory.getLogger(
UpgradeUtil.class);
}