mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-22 05:06:44 +01:00
code style
This commit is contained in:
parent
0c76833997
commit
e09444d94f
@ -64,11 +64,6 @@ public final class CaptionLoader {
|
|||||||
|
|
||||||
private static final Gson GSON;
|
private static final Gson GSON;
|
||||||
|
|
||||||
private final Map<String, String> defaultMessages;
|
|
||||||
private final Locale defaultLocale;
|
|
||||||
private final Function<Path, Locale> localeExtractor;
|
|
||||||
private final DefaultCaptionProvider captionProvider;
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
GSON = new GsonBuilder()
|
GSON = new GsonBuilder()
|
||||||
.setPrettyPrinting()
|
.setPrettyPrinting()
|
||||||
@ -76,24 +71,15 @@ public final class CaptionLoader {
|
|||||||
.create();
|
.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private final Map<String, String> defaultMessages;
|
||||||
* Returns a new CaptionLoader instance. That instance will use the internalLocale to extract default values
|
private final Locale defaultLocale;
|
||||||
* from the captionProvider
|
private final Function<Path, Locale> localeExtractor;
|
||||||
*
|
private final DefaultCaptionProvider captionProvider;
|
||||||
* @param internalLocale the locale used internally to resolve default messages from the caption provider.
|
|
||||||
* @param localeExtractor a function to extract a locale from a path, e.g. by its name.
|
|
||||||
* @param captionProvider the provider for default captions.
|
|
||||||
* @return a CaptionLoader instance that can load and patch message files.
|
|
||||||
*/
|
|
||||||
public static CaptionLoader of(final @NonNull Locale internalLocale,
|
|
||||||
final @NonNull Function<@NonNull Path, @NonNull Locale> localeExtractor,
|
|
||||||
final @NonNull DefaultCaptionProvider captionProvider) {
|
|
||||||
return new CaptionLoader(internalLocale, localeExtractor, captionProvider);
|
|
||||||
}
|
|
||||||
|
|
||||||
private CaptionLoader(final @NonNull Locale internalLocale,
|
private CaptionLoader(
|
||||||
final @NonNull Function<@NonNull Path, @NonNull Locale> localeExtractor,
|
final @NonNull Locale internalLocale,
|
||||||
final @NonNull DefaultCaptionProvider captionProvider) {
|
final @NonNull Function<@NonNull Path, @NonNull Locale> localeExtractor,
|
||||||
|
final @NonNull DefaultCaptionProvider captionProvider) {
|
||||||
this.defaultLocale = internalLocale;
|
this.defaultLocale = internalLocale;
|
||||||
this.localeExtractor = localeExtractor;
|
this.localeExtractor = localeExtractor;
|
||||||
this.captionProvider = captionProvider;
|
this.captionProvider = captionProvider;
|
||||||
@ -107,6 +93,74 @@ public final class CaptionLoader {
|
|||||||
this.defaultMessages = temp;
|
this.defaultMessages = temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new CaptionLoader instance. That instance will use the internalLocale to extract default values
|
||||||
|
* from the captionProvider
|
||||||
|
*
|
||||||
|
* @param internalLocale the locale used internally to resolve default messages from the caption provider.
|
||||||
|
* @param localeExtractor a function to extract a locale from a path, e.g. by its name.
|
||||||
|
* @param captionProvider the provider for default captions.
|
||||||
|
* @return a CaptionLoader instance that can load and patch message files.
|
||||||
|
*/
|
||||||
|
public static @NonNull CaptionLoader of(
|
||||||
|
final @NonNull Locale internalLocale,
|
||||||
|
final @NonNull Function<@NonNull Path, @NonNull Locale> localeExtractor,
|
||||||
|
final @NonNull DefaultCaptionProvider captionProvider) {
|
||||||
|
return new CaptionLoader(internalLocale, localeExtractor, captionProvider);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a function that extracts a locale from a path using the given pattern.
|
||||||
|
* The pattern is required to have (at least) one capturing group, as this is used to access the locale
|
||||||
|
* tag.The function will throw an {@link IllegalArgumentException} if the matcher doesn't match the file name
|
||||||
|
* of the input path. The language tag is loaded using {@link Locale#forLanguageTag(String)}.
|
||||||
|
*
|
||||||
|
* @param pattern the pattern to match and extract the language tag with.
|
||||||
|
* @return a function to extract a locale from a path using a pattern.
|
||||||
|
* @see Matcher#group(int)
|
||||||
|
* @see Path#getFileName()
|
||||||
|
*/
|
||||||
|
public static @NonNull Function<@NonNull Path, @NonNull Locale> patternExtractor(final @NonNull Pattern pattern) {
|
||||||
|
return path -> {
|
||||||
|
final String fileName = path.getFileName().toString();
|
||||||
|
final Matcher matcher = pattern.matcher(fileName);
|
||||||
|
if (matcher.matches()) {
|
||||||
|
return Locale.forLanguageTag(matcher.group(1));
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException(fileName + " is an invalid message file (cannot extract locale)");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads a map of translation keys mapping to their translations from a reader.
|
||||||
|
* The format is expected to be a json object:
|
||||||
|
* <pre>{@code
|
||||||
|
* {
|
||||||
|
* "key1": "value a",
|
||||||
|
* "key2": "value b",
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* }</pre>
|
||||||
|
*
|
||||||
|
* @param reader the reader to read the map from.
|
||||||
|
* @return the translation map.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("UnstableApiUsage")
|
||||||
|
static @NonNull Map<@NonNull String, @NonNull String> loadFromReader(final @NonNull Reader reader) {
|
||||||
|
final Type type = new TypeToken<Map<String, String>>() {}.getType();
|
||||||
|
return new LinkedHashMap<>(GSON.fromJson(reader, type));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void save(final Path file, final Map<String, String> content) {
|
||||||
|
try (final BufferedWriter writer = Files.newBufferedWriter(file, StandardCharsets.UTF_8)) {
|
||||||
|
GSON.toJson(content, writer);
|
||||||
|
logger.info("Saved {} with new content", file.getFileName());
|
||||||
|
} catch (final IOException e) {
|
||||||
|
logger.error("Failed to save caption file '{}'", file.getFileName().toString(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load all message files in the given directory into a new CaptionMap.
|
* Load all message files in the given directory into a new CaptionMap.
|
||||||
*
|
*
|
||||||
@ -155,35 +209,6 @@ public final class CaptionLoader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Loads a map of translation keys mapping to their translations from a reader.
|
|
||||||
* The format is expected to be a json object:
|
|
||||||
* <pre>{@code
|
|
||||||
* {
|
|
||||||
* "key1": "value a",
|
|
||||||
* "key2": "value b",
|
|
||||||
* ...
|
|
||||||
* }
|
|
||||||
* }</pre>
|
|
||||||
*
|
|
||||||
* @param reader the reader to read the map from.
|
|
||||||
* @return the translation map.
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("UnstableApiUsage")
|
|
||||||
static Map<String, String> loadFromReader(final Reader reader) {
|
|
||||||
final Type type = new TypeToken<Map<String, String>>() {}.getType();
|
|
||||||
return new LinkedHashMap<>(GSON.fromJson(reader, type));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void save(final Path file, final Map<String, String> content) {
|
|
||||||
try (final BufferedWriter writer = Files.newBufferedWriter(file, StandardCharsets.UTF_8)) {
|
|
||||||
GSON.toJson(content, writer);
|
|
||||||
logger.info("Saved {} with new content", file.getFileName());
|
|
||||||
} catch (final IOException e) {
|
|
||||||
logger.error("Failed to save caption file '{}'", file.getFileName().toString(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add missing entries to the given map.
|
* Add missing entries to the given map.
|
||||||
* Entries are missing if the key exists in {@link #defaultLocale} but isn't present
|
* Entries are missing if the key exists in {@link #defaultLocale} but isn't present
|
||||||
@ -215,27 +240,4 @@ public final class CaptionLoader {
|
|||||||
}
|
}
|
||||||
return modified;
|
return modified;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a function that extracts a locale from a path using the given pattern.
|
|
||||||
* The pattern is required to have (at least) one capturing group, as this is used to access the locale
|
|
||||||
* tag.The function will throw an {@link IllegalArgumentException} if the matcher doesn't match the file name
|
|
||||||
* of the input path. The language tag is loaded using {@link Locale#forLanguageTag(String)}.
|
|
||||||
*
|
|
||||||
* @param pattern the pattern to match and extract the language tag with.
|
|
||||||
* @return a function to extract a locale from a path using a pattern.
|
|
||||||
* @see Matcher#group(int)
|
|
||||||
* @see Path#getFileName()
|
|
||||||
*/
|
|
||||||
public static @NonNull Function<Path, Locale> patternExtractor(final @NonNull Pattern pattern) {
|
|
||||||
return path -> {
|
|
||||||
final String fileName = path.getFileName().toString();
|
|
||||||
final Matcher matcher = pattern.matcher(fileName);
|
|
||||||
if (matcher.matches()) {
|
|
||||||
return Locale.forLanguageTag(matcher.group(1));
|
|
||||||
} else {
|
|
||||||
throw new IllegalArgumentException(fileName + " is an invalid message file (cannot extract locale)");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -40,12 +40,14 @@ import java.util.function.Function;
|
|||||||
|
|
||||||
import static com.plotsquared.core.configuration.caption.load.CaptionLoader.loadFromReader;
|
import static com.plotsquared.core.configuration.caption.load.CaptionLoader.loadFromReader;
|
||||||
|
|
||||||
class ClassLoaderCaptionProvider implements DefaultCaptionProvider {
|
final class ClassLoaderCaptionProvider implements DefaultCaptionProvider {
|
||||||
private static final Logger logger = LoggerFactory.getLogger("P2/" + ClassLoaderCaptionProvider.class.getSimpleName());
|
private static final Logger logger = LoggerFactory.getLogger("P2/" + ClassLoaderCaptionProvider.class.getSimpleName());
|
||||||
private final ClassLoader classLoader;
|
private final ClassLoader classLoader;
|
||||||
private final Function<Locale, String> urlProvider;
|
private final Function<@NonNull Locale, @NonNull String> urlProvider;
|
||||||
|
|
||||||
ClassLoaderCaptionProvider(ClassLoader classLoader, Function<Locale, String> urlProvider) {
|
ClassLoaderCaptionProvider(
|
||||||
|
final @NonNull ClassLoader classLoader,
|
||||||
|
final @NonNull Function<@NonNull Locale, @NonNull String> urlProvider) {
|
||||||
this.classLoader = classLoader;
|
this.classLoader = classLoader;
|
||||||
this.urlProvider = urlProvider;
|
this.urlProvider = urlProvider;
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,9 @@ public interface DefaultCaptionProvider {
|
|||||||
* @param urlProvider the function to get an url from a locale.
|
* @param urlProvider the function to get an url from a locale.
|
||||||
* @return a caption provider using a function to determine resource urls.
|
* @return a caption provider using a function to determine resource urls.
|
||||||
*/
|
*/
|
||||||
static DefaultCaptionProvider forClassLoader(ClassLoader classLoader, Function<Locale, String> urlProvider) {
|
static @NonNull DefaultCaptionProvider forClassLoader(
|
||||||
|
final @NonNull ClassLoader classLoader,
|
||||||
|
final @NonNull Function<@NonNull Locale, @NonNull String> urlProvider) {
|
||||||
return new ClassLoaderCaptionProvider(classLoader, urlProvider);
|
return new ClassLoaderCaptionProvider(classLoader, urlProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,7 +58,9 @@ public interface DefaultCaptionProvider {
|
|||||||
* {@code String.format(toFormat, Locale#toString)}
|
* {@code String.format(toFormat, Locale#toString)}
|
||||||
* @return a caption provider using string formatting to determine resource urls.
|
* @return a caption provider using string formatting to determine resource urls.
|
||||||
*/
|
*/
|
||||||
static DefaultCaptionProvider forClassLoaderFormatString(ClassLoader classLoader, String toFormat) {
|
static @NonNull DefaultCaptionProvider forClassLoaderFormatString(
|
||||||
|
final @NonNull ClassLoader classLoader,
|
||||||
|
final @NonNull String toFormat) {
|
||||||
return forClassLoader(classLoader, locale -> String.format(toFormat, locale.toString()));
|
return forClassLoader(classLoader, locale -> String.format(toFormat, locale.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,5 +71,5 @@ public interface DefaultCaptionProvider {
|
|||||||
* @param locale the locale to load the values for.
|
* @param locale the locale to load the values for.
|
||||||
* @return a map of default values for the given locale.
|
* @return a map of default values for the given locale.
|
||||||
*/
|
*/
|
||||||
@Nullable Map<String, String> loadDefaults(final @NonNull Locale locale);
|
@Nullable Map<@NonNull String, @NonNull String> loadDefaults(final @NonNull Locale locale);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user