Search in sources :

Example 1 with MigrationWarning

use of org.codice.ddf.migration.MigrationWarning in project ddf by codice.

the class MetacardsMigratable method export.

/**
     * Exports all the metacards currently stored in the catalog framework.
     * <p>
     * {@inheritDoc}
     */
@Override
@NotNull
public MigrationMetadata export(@NotNull Path exportPath) throws MigrationException {
    config.setExportPath(exportPath.resolve(this.getId()));
    fileWriter.createExportDirectory(config.getExportPath());
    Collection<MigrationWarning> warnings = new ArrayList<>();
    Map<String, Serializable> props = createMapWithNativeQueryMode();
    Filter dumpFilter = filterBuilder.attribute(Metacard.ANY_TEXT).is().like().text("*");
    QueryImpl exportQuery = new QueryImpl(dumpFilter);
    exportQuery.setPageSize(config.getExportQueryPageSize());
    exportQuery.setRequestsTotalResultsCount(false);
    QueryRequest exportQueryRequest = new QueryRequestImpl(exportQuery, props);
    try {
        executeQueryLoop(exportQuery, exportQueryRequest);
    } catch (Exception e) {
        LOGGER.info("Internal error occurred when exporting catalog: {}", e);
        throw new ExportMigrationException(DEFAULT_FAILURE_MESSAGE);
    } finally {
        cleanup();
    }
    return new MigrationMetadata(warnings);
}
Also used : MigrationWarning(org.codice.ddf.migration.MigrationWarning) Serializable(java.io.Serializable) ExportMigrationException(org.codice.ddf.migration.ExportMigrationException) QueryRequest(ddf.catalog.operation.QueryRequest) ArrayList(java.util.ArrayList) MigrationMetadata(org.codice.ddf.migration.MigrationMetadata) SourceUnavailableException(ddf.catalog.source.SourceUnavailableException) UnsupportedQueryException(ddf.catalog.source.UnsupportedQueryException) MigrationException(org.codice.ddf.migration.MigrationException) ExportMigrationException(org.codice.ddf.migration.ExportMigrationException) FederationException(ddf.catalog.federation.FederationException) QueryImpl(ddf.catalog.operation.impl.QueryImpl) Filter(org.opengis.filter.Filter) QueryRequestImpl(ddf.catalog.operation.impl.QueryRequestImpl) NotNull(javax.validation.constraints.NotNull)

Example 2 with MigrationWarning

use of org.codice.ddf.migration.MigrationWarning in project ddf by codice.

the class ExportCommand method execute.

@Override
public Object execute() {
    Path exportDirectory;
    if (exportDirectoryArgument == null || exportDirectoryArgument.isEmpty()) {
        exportDirectory = defaultExportDirectory;
    } else {
        exportDirectory = Paths.get(exportDirectoryArgument);
    }
    outputInfoMessage(String.format(STARTING_EXPORT_MESSAGE, exportDirectory));
    try {
        Collection<MigrationWarning> migrationWarnings = security.runWithSubjectOrElevate(() -> configurationMigrationService.export(exportDirectory));
        if (migrationWarnings.isEmpty()) {
            outputSuccessMessage(SUCCESSFUL_EXPORT_MESSAGE);
        } else {
            for (MigrationWarning migrationWarning : migrationWarnings) {
                outputWarningMessage(migrationWarning.getMessage());
            }
            outputWarningMessage(String.format(FAILED_EXPORT_MESSAGE, exportDirectory));
        }
    } catch (SecurityServiceException e) {
        outputErrorMessage(String.format(ERROR_EXPORT_MESSAGE, e.getMessage()));
    } catch (InvocationTargetException e) {
        outputErrorMessage(String.format(ERROR_EXPORT_MESSAGE, e.getCause().getMessage()));
    }
    return null;
}
Also used : Path(java.nio.file.Path) MigrationWarning(org.codice.ddf.migration.MigrationWarning) SecurityServiceException(ddf.security.service.SecurityServiceException) InvocationTargetException(java.lang.reflect.InvocationTargetException)

Example 3 with MigrationWarning

use of org.codice.ddf.migration.MigrationWarning in project ddf by codice.

the class ConfigurationAdminMigrationTest method testGetFailedConfigurationFilesTwoFilesInFailedDirectory.

@Test
public void testGetFailedConfigurationFilesTwoFilesInFailedDirectory() throws Exception {
    when(Files.newDirectoryStream(any(Path.class), anyString())).thenReturn(failedDirectoryStream);
    setUpTwoConfigFileIterator(failedDirectoryStream);
    ConfigurationAdminMigration configurationAdminMigration = new ConfigurationAdminMigration(configurationDirectoryStream, PROCESSED_DIRECTORY_PATH, FAILED_DIRECTORY_PATH, configurationFileFactory, configurationFilePoller, configurationAdmin, CONFIGURATION_FILE_EXTENSION);
    Collection<MigrationWarning> configurationStatusMessages = configurationAdminMigration.getFailedConfigurationFiles();
    Collection<String> actualPaths = new ArrayList<>();
    for (MigrationWarning configStatus : configurationStatusMessages) {
        actualPaths.add(configStatus.getMessage());
    }
    verifyStatic();
    Files.newDirectoryStream(FAILED_DIRECTORY_PATH, FILE_FILTER);
    assertThat("Incorrect number for files returned from configurationAdminMigration.getFailedConfigurationFiles()", configurationStatusMessages.size(), is(2));
}
Also used : Path(java.nio.file.Path) MigrationWarning(org.codice.ddf.migration.MigrationWarning) ArrayList(java.util.ArrayList) Matchers.anyString(org.mockito.Matchers.anyString) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Example 4 with MigrationWarning

use of org.codice.ddf.migration.MigrationWarning in project ddf by codice.

the class PlatformMigratableTest method testExportExceptionThrownWhenCopyingFileFromSystemPropertyValue.

@Test(expected = MigrationException.class)
public void testExportExceptionThrownWhenCopyingFileFromSystemPropertyValue() throws Exception {
    // Setup
    MigratableUtil mockMigratableUtil = mock(MigratableUtil.class);
    doThrow(MigrationException.class).when(mockMigratableUtil).copyFileFromSystemPropertyValue(any(String.class), eq(exportDirectory), Matchers.<Collection<MigrationWarning>>any());
    PlatformMigratable platformMigratable = new PlatformMigratable(DESCRIBABLE_BEAN, mockMigratableUtil);
    // Perform test
    platformMigratable.export(exportDirectory);
}
Also used : MigrationWarning(org.codice.ddf.migration.MigrationWarning) MigratableUtil(org.codice.ddf.migration.util.MigratableUtil) Test(org.junit.Test)

Example 5 with MigrationWarning

use of org.codice.ddf.migration.MigrationWarning in project ddf by codice.

the class MigratableUtil method copyFileFromSystemPropertyValue.

/**
     * Copies a file, whose path is taken from a {@link System} property value, to a destination
     * directory. The file to copy must be a relative path under {@code ddf.home}, and its path
     * must not contain any symbolic link, otherwise the file will not be copied and a
     * {@link MigrationWarning} will be returned.
     *
     * @param systemProperty  name of the {@link System} property that contains the path to the
     *                        source file
     * @param exportDirectory root directory where the file will be copied. If the file'
     *                        relative path included any directories, those will be re-created
     *                        under this directory.
     * @param warnings        any warnings generated during this operation (e.g., source file outside
     *                        of {@code ddf.home}) will be added to this collection
     */
public void copyFileFromSystemPropertyValue(@NotNull String systemProperty, @NotNull Path exportDirectory, @NotNull Collection<MigrationWarning> warnings) throws MigrationException {
    String source = System.getProperty(systemProperty);
    notEmpty(source, String.format("Source path property [%s] is invalid: [%s]", systemProperty, source));
    Path sourcePath = Paths.get(source);
    copy(sourcePath, exportDirectory, warnings, () -> isSourceMigratable(sourcePath, (reason) -> new PathMigrationWarning(systemProperty, sourcePath, reason), warnings));
}
Also used : Path(java.nio.file.Path) StringUtils(org.apache.commons.lang.StringUtils) Validate.notEmpty(org.apache.commons.lang.Validate.notEmpty) Properties(java.util.Properties) Logger(org.slf4j.Logger) Files(java.nio.file.Files) MigrationWarning(org.codice.ddf.migration.MigrationWarning) ExportMigrationException(org.codice.ddf.migration.ExportMigrationException) Collection(java.util.Collection) LoggerFactory(org.slf4j.LoggerFactory) IOException(java.io.IOException) FileUtils(org.apache.commons.io.FileUtils) FileInputStream(java.io.FileInputStream) NotNull(javax.validation.constraints.NotNull) Function(java.util.function.Function) Validate.notNull(org.apache.commons.lang.Validate.notNull) BooleanSupplier(java.util.function.BooleanSupplier) Paths(java.nio.file.Paths) Path(java.nio.file.Path) MigrationException(org.codice.ddf.migration.MigrationException) InputStream(java.io.InputStream)

Aggregations

MigrationWarning (org.codice.ddf.migration.MigrationWarning)19 Path (java.nio.file.Path)12 Test (org.junit.Test)12 MigratableUtil (org.codice.ddf.migration.util.MigratableUtil)9 ArrayList (java.util.ArrayList)7 MigrationMetadata (org.codice.ddf.migration.MigrationMetadata)7 ExportMigrationException (org.codice.ddf.migration.ExportMigrationException)4 MigrationException (org.codice.ddf.migration.MigrationException)4 IOException (java.io.IOException)3 NotNull (javax.validation.constraints.NotNull)3 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)3 FileInputStream (java.io.FileInputStream)2 InputStream (java.io.InputStream)2 Files (java.nio.file.Files)2 Paths (java.nio.file.Paths)2 Collection (java.util.Collection)2 Properties (java.util.Properties)2 BooleanSupplier (java.util.function.BooleanSupplier)2 Function (java.util.function.Function)2 FileUtils (org.apache.commons.io.FileUtils)2