/** * Import settings from a sequence of files (file import is the given order) * * @param files * Sequence of files * @throws IllegalArgumentException * In case the import of a file fails */ public static FormatterProperties from(File... files) throws IllegalArgumentException { Objects.requireNonNull(files); return from(Arrays.asList(files)); }
/** Get formatter preferences */ public Properties getPreferences() { //Keep the IllegalArgumentException since it contains detailed information FormatterProperties preferences = FormatterProperties.from(settingsFiles.files()); return preferences.getProperties(); }
public void propertiesFile(Object... files) { requireElementsNonNull(files); propertyActions.add(map -> { FormatterProperties preferences = FormatterProperties.from(getProject().files(files)); /* FreshMarkStep.State serializes the properties and not the files. * Therefore they must be stored in a hash-map like used by Properties.*/ preferences.getProperties().forEach((key, value) -> map.put(key.toString(), value)); }); }
FormatterFunc createFormat() throws Exception { FormatterProperties preferences = FormatterProperties.from(settingsSignature.files()); DBeaverSQLFormatter dbeaverSqlFormatter = new DBeaverSQLFormatter(preferences.getProperties()); return dbeaverSqlFormatter::format; } }
@Test public void invalidPropertyFiles() throws IOException { for (String settingsResource : INVALID_SETTINGS_RESOURCES) { File settingsFile = createTestFile(settingsResource); boolean exceptionCaught = false; try { FormatterProperties.from(settingsFile); } catch (IllegalArgumentException ex) { exceptionCaught = true; assertThat(ex.getMessage()) .as("IllegalArgumentException does not contain absolute path of file '%s'", settingsFile.getName()) .contains(settingsFile.getAbsolutePath()); } assertThat(exceptionCaught) .as("No IllegalArgumentException thrown when parsing '%s'", settingsFile.getName()) .isTrue(); } }
@Test public void nonExistingFile() throws IOException { boolean exceptionCaught = false; String filePath = "does/not/exist.properties"; boolean isWin = LineEnding.PLATFORM_NATIVE.str().equals(LineEnding.WINDOWS.str()); if (isWin) { filePath = filePath.replace('/', '\\'); } try { FormatterProperties.from(new File(filePath)); } catch (IllegalArgumentException ex) { exceptionCaught = true; assertThat(ex.getMessage()) .as("IllegalArgumentException does not contain path of non-existing file.").contains(filePath); } assertThat(exceptionCaught) .as("No IllegalArgumentException thrown for non-existing file.").isTrue(); }
@Test public void multiplePropertyFiles() throws IOException { LinkedList<File> settingsFiles = new LinkedList<>(); for (String settingsResource : VALID_SETTINGS_RESOURCES) { File settingsFile = createTestFile(settingsResource); settingsFiles.add(settingsFile); } FormatterProperties preferences = FormatterProperties.from(settingsFiles); /* Settings are loaded / overridden in the sequence they are configured. */ assertFor(preferences) .containsSpecificValuesOf(settingsFiles) .containsCommonValueOf(settingsFiles.getLast()); }
@Test public void differntPropertyFileTypes() throws IOException { for (String settingsResource : VALID_SETTINGS_RESOURCES) { File settingsFile = createTestFile(settingsResource); FormatterProperties preferences = FormatterProperties.from(settingsFile); assertFor(preferences) .containsSpecificValuesOf(settingsFile) .containsCommonValueOf(settingsFile); } }
/** Get formatter preferences */ public Properties getPreferences() { //Keep the IllegalArgumentException since it contains detailed information FormatterProperties preferences = FormatterProperties.from(settingsFiles.files()); return preferences.getProperties(); }