diff --git a/src/main/java/com/bartek/esa/core/desc/provider/DescriptionProvider.java b/src/main/java/com/bartek/esa/core/desc/provider/DescriptionProvider.java new file mode 100644 index 0000000..7c9be67 --- /dev/null +++ b/src/main/java/com/bartek/esa/core/desc/provider/DescriptionProvider.java @@ -0,0 +1,24 @@ +package com.bartek.esa.core.desc.provider; + +import com.bartek.esa.error.EsaException; +import io.vavr.control.Try; + +import javax.inject.Inject; +import java.util.Optional; +import java.util.Properties; + +public class DescriptionProvider { + private static final String DESCRIPTION_FILE = "description.properties"; + private final Properties properties = new Properties(); + + @Inject + public DescriptionProvider() { + Optional.ofNullable(DescriptionProvider.class.getClassLoader().getResourceAsStream(DESCRIPTION_FILE)) + .ifPresent(p -> Try.run(() -> properties.load(p)).getOrElseThrow(EsaException::new)); + } + + public String getDescriptionForClass(Class clazz) { + String clazzCanonicalName = properties.getProperty(clazz.getCanonicalName()); + return clazzCanonicalName != null ? clazzCanonicalName : "No description provided."; + } +} diff --git a/src/main/java/com/bartek/esa/core/di/CoreModule.java b/src/main/java/com/bartek/esa/core/di/CoreModule.java index fea4e7a..29c133b 100644 --- a/src/main/java/com/bartek/esa/core/di/CoreModule.java +++ b/src/main/java/com/bartek/esa/core/di/CoreModule.java @@ -1,5 +1,6 @@ package com.bartek.esa.core.di; +import com.bartek.esa.core.desc.provider.DescriptionProvider; import com.bartek.esa.core.executor.PluginExecutor; import com.bartek.esa.core.java.JavaSyntaxRegexProvider; import dagger.Module; @@ -17,4 +18,9 @@ public class CoreModule { public JavaSyntaxRegexProvider javaSyntaxRegexProvider() { return new JavaSyntaxRegexProvider(); } + + @Provides + public DescriptionProvider descriptionProvider() { + return new DescriptionProvider(); + } } diff --git a/src/main/resources/description.properties b/src/main/resources/description.properties new file mode 100644 index 0000000..e69de29