use of com.liferay.imex.core.api.identifier.ProcessIdentifierGenerator in project liferay-imex by jpdacunha.
the class ImexExportServiceImpl method doExport.
@Override
public String doExport(List<String> bundleNames, String profileId, boolean debug) {
// Generate an unique identifier for this export process
ProcessIdentifierGenerator identifier = new ExporterProcessIdentifierGenerator();
String identifierStr = identifier.getOrGenerateUniqueIdentifier();
LoggingContext.put(ImexExecutionReportService.IDENTIFIER_KEY, identifierStr);
try {
if (imexCoreService.tryLock()) {
reportService.getSeparator(_log);
if (bundleNames != null && bundleNames.size() > 0) {
reportService.getStartMessage(_log, "PARTIAL export process for [" + bundleNames.toString() + "]");
} else {
reportService.getStartMessage(_log, "ALL export process");
}
try {
if (debug) {
reportService.getMessage(_log, "Running DEBUG mode ...");
}
Map<String, ServiceReference<Exporter>> exporters = trackerService.getFilteredExporters(bundleNames);
if (exporters == null || exporters.size() == 0) {
reportService.getMessage(_log, "There is no exporters to execute. Please check : ");
reportService.getMessage(_log, "- All importers are correctly registered in OSGI container");
if (bundleNames != null) {
reportService.getMessage(_log, "- A registered bundle exists for each typed name [" + bundleNames + "]");
}
reportService.printKeys(trackerService.getExporters(), _log);
} else {
// Reading configuration
ImexProperties coreConfig = new ImexProperties();
configurationService.loadCoreConfiguration(coreConfig);
reportService.displayConfigurationLoadingInformation(coreConfig, _log);
// Archive actual files before importing
imexArchiverService.archiveDataDirectory(coreConfig.getProperties(), identifier);
File exportDir = initializeExportDirectory();
reportService.getPropertyMessage(_log, "IMEX export path", exportDir.toString());
List<Company> companies = companyLocalService.getCompanies();
// For each Liferay company
for (Company company : companies) {
reportService.getStartMessage(_log, company);
long companyId = company.getCompanyId();
String companyName = company.getName();
File companyDir = initializeCompanyExportDirectory(exportDir, company);
executeRegisteredExporters(exporters, companyDir, companyId, companyName, profileId, debug);
}
reportService.getSeparator(_log);
// Executing raw export
executeRawExport((ExporterProcessIdentifierGenerator) identifier, debug);
}
} catch (Exception e) {
reportService.getError(_log, "doExport", e);
}
reportService.getEndMessage(_log, "export process");
} else {
reportService.getMessage(_log, "##");
reportService.getMessage(_log, "## " + ImexCoreService.LOCKED_MESSAGE);
reportService.getMessage(_log, "##");
}
} finally {
imexCoreService.releaseLock();
}
return identifierStr;
}
use of com.liferay.imex.core.api.identifier.ProcessIdentifierGenerator in project liferay-imex by jpdacunha.
the class ImexExportServiceImpl method executeRawExport.
private void executeRawExport(ExporterProcessIdentifierGenerator rootIdentifier, boolean debug) throws ImexException, IOException {
ImexProperties config = new ImexProperties();
configurationService.loadCoreConfiguration(config);
Properties coreConfigAsProperties = config.getProperties();
boolean rawExportEnabled = GetterUtil.getBoolean(coreConfigAsProperties.get(ImExCorePropsKeys.RAW_CONTENT_EXPORTER_ENABLED));
if (rawExportEnabled) {
ProcessIdentifierGenerator identifier = new RawExporterProcessIdentifierGeneratorWrapper(rootIdentifier);
String randomAlphanumeric = RandomStringUtils.randomAlphanumeric(4);
File tempDir = Files.createTempDirectory(randomAlphanumeric).toFile();
if (!tempDir.exists()) {
throw new ImexException("Failed to create directory " + tempDir);
}
File exportDir = initializeRawExportDirectory();
reportService.getStartMessage(_log, "Raw export process (human readable format)", 1);
// Since this a synchronized list
synchronized (rawExportContentList) {
for (ExporterRawContent content : rawExportContentList) {
writeRawContentInDir(tempDir, content, debug);
}
}
imexArchiverService.archiveAndClean(coreConfigAsProperties, tempDir, exportDir, identifier);
FileUtil.deltree(tempDir);
rawExportContentList.clear();
reportService.getEndMessage(_log, "Raw export process", 1);
} else {
if (rawExportContentList.size() > 0) {
reportService.getDisabled(_log, "raw content export");
reportService.getMessage(_log, "See [" + ImExCorePropsKeys.RAW_CONTENT_EXPORTER_ENABLED + "] to enable this feature", 4);
}
}
}
use of com.liferay.imex.core.api.identifier.ProcessIdentifierGenerator in project liferay-imex by jpdacunha.
the class ImexImportServiceImpl method doImport.
@Override
public String doImport(List<String> bundleNames, String profileId, boolean debug) {
// Generate an unique identifier for this import process
ProcessIdentifierGenerator identifier = new ImporterProcessIdentifier();
String identifierStr = identifier.getOrGenerateUniqueIdentifier();
LoggingContext.put(ImexExecutionReportService.IDENTIFIER_KEY, identifierStr);
try {
if (imexCoreService.tryLock()) {
reportService.getSeparator(_log);
if (bundleNames != null && bundleNames.size() > 0) {
reportService.getStartMessage(_log, "PARTIAL import process for [" + bundleNames.toString() + "]");
} else {
reportService.getStartMessage(_log, "ALL import process");
}
try {
if (debug) {
reportService.getMessage(_log, "Running DEBUG mode ...");
}
Map<String, ServiceReference<Importer>> importers = trackerService.getFilteredImporters(bundleNames);
if (importers == null || importers.size() == 0) {
reportService.getMessage(_log, "There is no importers to execute. Please check : ");
reportService.getMessage(_log, "- All importers are correctly registered in OSGI container");
if (bundleNames != null) {
reportService.getMessage(_log, "- A registered bundle exists for each typed name [" + bundleNames + "]");
}
reportService.printKeys(trackerService.getImporters(), _log);
} else {
// Archive actual files before importing
ImexProperties coreConfig = new ImexProperties();
configurationService.loadCoreConfiguration(coreConfig);
reportService.displayConfigurationLoadingInformation(coreConfig, _log);
imexArchiverService.archiveDataDirectory(coreConfig.getProperties(), identifier);
File importDir = getImportDirectory();
reportService.getPropertyMessage(_log, "IMEX import path", importDir.toString());
List<Company> companies = companyLocalService.getCompanies();
// For each Liferay company
for (Company company : companies) {
long companyId = company.getCompanyId();
String companyName = company.getName();
File companyDir = getCompanyImportDirectory(importDir, company);
if (companyDir != null) {
executeRegisteredImporters(importers, companyDir, companyId, companyName, profileId, debug);
}
}
}
} catch (Exception e) {
reportService.getError(_log, "doImport", e);
}
reportService.getEndMessage(_log, "import process");
} else {
reportService.getMessage(_log, "##");
reportService.getMessage(_log, "## " + ImexCoreService.LOCKED_MESSAGE);
reportService.getMessage(_log, "##");
}
} finally {
imexCoreService.releaseLock();
}
return identifierStr;
}
use of com.liferay.imex.core.api.identifier.ProcessIdentifierGenerator in project liferay-imex by jpdacunha.
the class ImexCoreServiceImpl method generateOverrideFileSystemConfigurationFiles.
@Override
public String generateOverrideFileSystemConfigurationFiles(List<String> bundleNames, boolean archive) {
Map<String, ServiceReference<Importer>> importers = importerTrackerService.getFilteredImporters(bundleNames);
Map<String, ServiceReference<Exporter>> exporters = exporterTrackerService.getFilteredExporters(bundleNames);
Map<String, ServiceReference<Trigger>> triggers = triggerTrackerService.getTriggers();
Map<String, Properties> props = configurationService.loadAllConfigurationMap(bundleNames, importers, exporters, triggers);
ProcessIdentifierGenerator processIdentifier = new ConfigurationOverrideProcessIdentifier();
String identifier = processIdentifier.getOrGenerateUniqueIdentifier();
LoggingContext.put(ImexExecutionReportService.IDENTIFIER_KEY, identifier);
reportService.getStartMessage(_log, "CFG_OVERRIDE process");
// Initialisation répertoire de configuration
initializeConfigurationtDirectories();
if (props != null) {
if (archive) {
ImexProperties coreConfig = new ImexProperties();
configurationService.loadCoreConfiguration(coreConfig);
imexArchiverService.archiveCfgDirectory(coreConfig.getProperties(), processIdentifier);
}
Bundle coreBundle = FrameworkUtil.getBundle(this.getClass());
String coreBundleName = coreBundle.getSymbolicName();
mergeConfiguration(props, coreBundleName, coreBundle);
// Merging importers
for (Map.Entry<String, ServiceReference<Importer>> entry : importers.entrySet()) {
ServiceReference<Importer> reference = entry.getValue();
Bundle bundle = reference.getBundle();
String key = entry.getKey();
mergeConfiguration(props, key, bundle);
}
// Merging exporters
for (Map.Entry<String, ServiceReference<Exporter>> entry : exporters.entrySet()) {
ServiceReference<Exporter> reference = entry.getValue();
Bundle bundle = reference.getBundle();
String key = entry.getKey();
mergeConfiguration(props, key, bundle);
}
// Merging triggers
for (Map.Entry<String, ServiceReference<Trigger>> entry : triggers.entrySet()) {
ServiceReference<Trigger> reference = entry.getValue();
Bundle bundle = reference.getBundle();
String key = entry.getKey();
mergeConfiguration(props, key, bundle);
}
}
reportService.getEndMessage(_log, "CFG_OVERRIDE process");
return identifier;
}
Aggregations