Package yalp.i18n

Source Code of yalp.i18n.MessagesPlugin

package yalp.i18n;

import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;

import yalp.Logger;
import yalp.Yalp;
import yalp.YalpPlugin;
import yalp.libs.IO;
import yalp.vfs.VirtualFile;

/**
* Messages plugin
*/
public class MessagesPlugin extends YalpPlugin {

    static Long lastLoading = 0L;

    @Override
    public void onApplicationStart() {
        Messages.defaults = new Properties();
        try {
            FileInputStream is = new FileInputStream(new File(Yalp.frameworkPath, "resources/messages"));
            Messages.defaults.putAll(IO.readUtf8Properties(is));
        } catch (Exception e) {
            Logger.warn("Defaults messsages file missing");
        }
        for (VirtualFile module : Yalp.modules.values()) {
            VirtualFile messages = module.child("conf/messages");
            if (messages != null && messages.exists()) {
                Messages.defaults.putAll(read(messages));
            }
        }
        VirtualFile appDM = Yalp.getVirtualFile("conf/messages");
        if (appDM != null && appDM.exists()) {
            Messages.defaults.putAll(read(appDM));
        }
        for (String locale : Yalp.langs) {
            Properties properties = new Properties();
            for (VirtualFile module : Yalp.modules.values()) {
                VirtualFile messages = module.child("conf/messages." + locale);
                if (messages != null && messages.exists()) {
                    properties.putAll(read(messages));
                }
            }
            VirtualFile appM = Yalp.getVirtualFile("conf/messages." + locale);
            if (appM != null && appM.exists()) {
                properties.putAll(read(appM));
            } else {
                Logger.warn("Messages file missing for locale %s", locale);
            }
            Messages.locales.put(locale, properties);
        }
        lastLoading = System.currentTimeMillis();
    }

    static Properties read(VirtualFile vf) {
        if (vf != null) {
            return IO.readUtf8Properties(vf.inputstream());
        }
        return null;
    }

    @Override
    public void detectChange() {
        if (Yalp.getVirtualFile("conf/messages") != null && Yalp.getVirtualFile("conf/messages").lastModified() > lastLoading) {
            onApplicationStart();
            return;
        }
        for (VirtualFile module : Yalp.modules.values()) {
            if (module.child("conf/messages") != null && module.child("conf/messages").exists() && module.child("conf/messages").lastModified() > lastLoading) {
                onApplicationStart();
                return;
            }
        }
        for (String locale : Yalp.langs) {
            if (Yalp.getVirtualFile("conf/messages." + locale) != null && Yalp.getVirtualFile("conf/messages." + locale).lastModified() > lastLoading) {
                onApplicationStart();
                return;
            }
            for (VirtualFile module : Yalp.modules.values()) {
                if (module.child("conf/messages." + locale) != null && module.child("conf/messages." + locale).exists() && module.child("conf/messages." + locale).lastModified() > lastLoading) {
                    onApplicationStart();
                    return;
                }
            }
        }

    }
}
TOP

Related Classes of yalp.i18n.MessagesPlugin

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.