Search in sources :

Example 1 with ProcessIdentifierGenerator

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;
}
Also used : ExporterProcessIdentifierGenerator(com.liferay.imex.core.service.exporter.model.ExporterProcessIdentifierGenerator) Company(com.liferay.portal.kernel.model.Company) ExporterProcessIdentifierGenerator(com.liferay.imex.core.service.exporter.model.ExporterProcessIdentifierGenerator) ProcessIdentifierGenerator(com.liferay.imex.core.api.identifier.ProcessIdentifierGenerator) ImexProperties(com.liferay.imex.core.api.configuration.model.ImexProperties) File(java.io.File) ImexException(com.liferay.imex.core.util.exception.ImexException) PortalException(com.liferay.portal.kernel.exception.PortalException) IOException(java.io.IOException) ServiceReference(org.osgi.framework.ServiceReference)

Example 2 with ProcessIdentifierGenerator

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);
        }
    }
}
Also used : ImexException(com.liferay.imex.core.util.exception.ImexException) ExporterProcessIdentifierGenerator(com.liferay.imex.core.service.exporter.model.ExporterProcessIdentifierGenerator) ProcessIdentifierGenerator(com.liferay.imex.core.api.identifier.ProcessIdentifierGenerator) RawExporterProcessIdentifierGeneratorWrapper(com.liferay.imex.core.service.exporter.model.RawExporterProcessIdentifierGeneratorWrapper) ExporterRawContent(com.liferay.imex.core.api.exporter.model.ExporterRawContent) ImexProperties(com.liferay.imex.core.api.configuration.model.ImexProperties) ImexProperties(com.liferay.imex.core.api.configuration.model.ImexProperties) Properties(java.util.Properties) File(java.io.File)

Example 3 with ProcessIdentifierGenerator

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;
}
Also used : Company(com.liferay.portal.kernel.model.Company) ProcessIdentifierGenerator(com.liferay.imex.core.api.identifier.ProcessIdentifierGenerator) ImexProperties(com.liferay.imex.core.api.configuration.model.ImexProperties) File(java.io.File) ImporterProcessIdentifier(com.liferay.imex.core.service.importer.model.ImporterProcessIdentifier) ImexException(com.liferay.imex.core.util.exception.ImexException) PortalException(com.liferay.portal.kernel.exception.PortalException) IOException(java.io.IOException) ServiceReference(org.osgi.framework.ServiceReference)

Example 4 with ProcessIdentifierGenerator

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;
}
Also used : Bundle(org.osgi.framework.Bundle) ImexProperties(com.liferay.imex.core.api.configuration.model.ImexProperties) Properties(java.util.Properties) OrderedProperties(com.liferay.imex.core.api.configuration.model.OrderedProperties) ConfigurationOverrideProcessIdentifier(com.liferay.imex.core.service.configuration.model.ConfigurationOverrideProcessIdentifier) Exporter(com.liferay.imex.core.api.exporter.Exporter) ServiceReference(org.osgi.framework.ServiceReference) ProcessIdentifierGenerator(com.liferay.imex.core.api.identifier.ProcessIdentifierGenerator) Trigger(com.liferay.imex.core.api.trigger.Trigger) ImexProperties(com.liferay.imex.core.api.configuration.model.ImexProperties) Map(java.util.Map) Importer(com.liferay.imex.core.api.importer.Importer)

Aggregations

ImexProperties (com.liferay.imex.core.api.configuration.model.ImexProperties)4 ProcessIdentifierGenerator (com.liferay.imex.core.api.identifier.ProcessIdentifierGenerator)4 ImexException (com.liferay.imex.core.util.exception.ImexException)3 File (java.io.File)3 ServiceReference (org.osgi.framework.ServiceReference)3 ExporterProcessIdentifierGenerator (com.liferay.imex.core.service.exporter.model.ExporterProcessIdentifierGenerator)2 PortalException (com.liferay.portal.kernel.exception.PortalException)2 Company (com.liferay.portal.kernel.model.Company)2 IOException (java.io.IOException)2 Properties (java.util.Properties)2 OrderedProperties (com.liferay.imex.core.api.configuration.model.OrderedProperties)1 Exporter (com.liferay.imex.core.api.exporter.Exporter)1 ExporterRawContent (com.liferay.imex.core.api.exporter.model.ExporterRawContent)1 Importer (com.liferay.imex.core.api.importer.Importer)1 Trigger (com.liferay.imex.core.api.trigger.Trigger)1 ConfigurationOverrideProcessIdentifier (com.liferay.imex.core.service.configuration.model.ConfigurationOverrideProcessIdentifier)1 RawExporterProcessIdentifierGeneratorWrapper (com.liferay.imex.core.service.exporter.model.RawExporterProcessIdentifierGeneratorWrapper)1 ImporterProcessIdentifier (com.liferay.imex.core.service.importer.model.ImporterProcessIdentifier)1 Map (java.util.Map)1 Bundle (org.osgi.framework.Bundle)1