SplashScreenPage.java

package org.ferris.resiste.console.splash;

import javax.annotation.PostConstruct;
import javax.annotation.Priority;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import org.ferris.resiste.console.application.ApplicationDirectory;
import org.ferris.resiste.console.data.DataDirectory;
import org.ferris.resiste.console.io.Console;
import org.ferris.resiste.console.main.StartupEvent;
import static org.ferris.resiste.console.main.StartupEvent.SPASH_SCREEN;
import org.ferris.resiste.console.text.i18n.LocalizedString;
import org.ferris.resiste.console.text.i18n.LocalizedStringBuilder;
import org.ferris.resiste.console.text.i18n.LocalizedStringKey;
import org.ferris.resiste.console.text.i18n.LocalizedStringList;
import org.ferris.resiste.console.text.i18n.qualifier.Welcome;
import org.ferris.resiste.console.util.version.Version;
import org.slf4j.Logger;

/**
 *
 * @author Michael Remijan mjremijan@yahoo.com @mjremijan
 */
@ApplicationScoped
public class SplashScreenPage {

    @Inject
    protected Logger log;

    @Inject
    protected Console console;

    @Inject
    protected ApplicationDirectory applicationDirectory;

    @Inject
    protected DataDirectory dataDirectory;

    @Inject
    protected Version version;

    @Inject
    @LocalizedStringKey("SplashScreenPage.Properties")
    protected LocalizedStringList applicationProperties;

    @Inject
    @Welcome
    @LocalizedStringBuilder({
        @LocalizedStringKey(buildId = "message", value = "SplashScreenPage.Message")
        ,
        @LocalizedStringKey(buildId = "width", value = "SplashScreenPage.Width")
        ,
        @LocalizedStringKey(buildId = "bullet", value = "SplashScreenPage.Bullet")
    })
    protected LocalizedString welcome;

    @PostConstruct
    protected void postConstruct() {
        replaceUser(applicationProperties);
        replaceJava(applicationProperties);
        replaceApplication(applicationProperties);
    }

    protected void replaceUser(LocalizedStringList properties) {
        properties.replace("t{user.name}", System.getProperty("user.name"));
        properties.replace("t{user.home}", System.getProperty("user.home"));
        properties.replace("t{user.directory}", System.getProperty("user.dir"));
    }

    protected void replaceJava(LocalizedStringList properties) {
        properties.replace("t{java.home}", System.getProperty("java.home"));
        properties.replace("t{java.vendor}", System.getProperty("java.vendor"));
        properties.replace("t{java.version}", System.getProperty("java.version"));
    }

    protected void replaceApplication(LocalizedStringList properties) {
        properties.replace("t{resiste.title}", version.getImplementationTitle());
        properties.replace("t{resiste.vender}", version.getImplementationVendor());
        properties.replace("t{resiste.version}", version.getImplementationVersion());
        properties.replace("t{resiste.url}", version.getImplementationUrl());
        properties.replace("t{resiste.directory}", applicationDirectory.getAbsolutePath());
        properties.replace("t{resiste.data}", dataDirectory.getAbsolutePath());
    }

    public void observesStartup(
        @Observes @Priority(SPASH_SCREEN) StartupEvent event
    ) {
        console.p(applicationProperties);
        console.p(welcome);
    }
}