All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sofia.sofia-core.0.21.source-code.sofia-kt.ftl Maven / Gradle / Ivy

There is a newer version: 0.25
Show newest version
package ${packageName};
import java.util.*;
import java.text.*;
${loggingType.imports}

object ${className} {
    private val logger = LoggerFactory.getLogger("${packageName}.${className}");
    private val IMPLS = HashMap()

    init {
        IMPLS.put("", LocalizedImpl());
        <#list bundles?keys as bundle>
        IMPLS.put("${bundle}", LocalizedImpl_${bundle}());
        
    }

    private fun get(locale: Locale?): Localized {
        if (locale == null) {
            return IMPLS.get("")!!;
        }
        var name = locale.toString();
        while (!name.isEmpty()) {
            val localized = IMPLS.get(name);
            if(localized != null) {
                return localized;
            } else {
                name = if (name.contains("_")) name.substring(0, name.lastIndexOf('_')) else "";
            }
        }
        return IMPLS.get("")!!;
    }

    <#list methods as method>
    fun ${method.getMethodName()}(<#list method.parameters as parameter>${parameter.second}: ${parameter.first}<#if parameter_has_next>, <#if method.parameters?size != 0>, locale: Locale? = null): String {
    <#if method.arguments?size != 0>
        return get(locale).${method.getMethodName()}(<#list method.arguments as argument>${argument}<#if argument_has_next>, );
    <#else>
        return get(locale).${method.getMethodName()}();
    
    }

    <#if method.logged>
    fun ${method.getLoggerName()}(<#list method.parameters as parameter>${parameter.second}: ${parameter.first}<#if parameter_has_next>, <#if method.parameters?size != 0>, locale: Locale? = null) {
    <#if "${loggingType.name()}" == "SLF4J">
        if(logger.is${method.logLevel?cap_first}Enabled()) {
    <#elseif "${loggingType.name()}" == "JUL">
        if(logger.isLoggable(Level.${method.logLevel?upper_case})) {
    
           <#if method.arguments?size != 0>
            logger.${method.logLevel}(${method.getMethodName()}(<#list method.arguments as argument>${argument}<#if argument_has_next>, , locale));
            <#else>
            logger.${method.logLevel}(${method.getMethodName()}(locale));
            
        }
    }
    
    

    interface Localized {
    <#list methods as method>
        /**
         * Generated from ${method.key}
         */
        fun ${method.getMethodName()}(<#list method.parameters as argument>${argument.second}: ${argument.first}<#if argument_has_next>, <#if method
        .parameters?size != 0>, locale: Locale? = null): String {
        <#if method.arguments?size != 0>
           return MessageFormat.format("${method.value}", <#list method.arguments as argument>${argument}<#if argument_has_next>, );
        <#else>
           return "${method.value}";
        
        }

        <#if method.logged>
        /**
         * Generated from ${method.key}
         */
        fun ${method.getLoggerName()}(<#list method.parameters as parameter>${parameter.second}: ${parameter.first}<#if parameter_has_next>, <#if method.parameters?size != 0>, locale: Locale? = null) {
        <#if "${loggingType.name()}" == "SLF4J">
           if(${className}.logger.is${method.logLevel?cap_first}Enabled()) {
        <#elseif "${loggingType.name()}" == "JUL">
           if(${className}.logger.isLoggable(Level.${method.logLevel?upper_case})) {
        
              <#if method.arguments?size != 0>
               ${className}.logger.${method.logLevel}(${method.getMethodName()}(<#list method.arguments as
               argument>${argument}<#if argument_has_next>, , locale));
               <#else>
               ${className}.logger.${method.logLevel}(${method.getMethodName()}(locale));
               
           }
        }

        
    
    }

    <#macro impl methods genLogged>
       <#list methods as method>
        <#if !genLogged>override fun ${method.getMethodName()}(<#list method.parameters as parameter>${parameter.second}: ${parameter.first}<#if parameter_has_next>,  <#if method .parameters?size != 0>, locale: Locale?<#if genLogged> = null)): String {
        <#if method.arguments?size != 0>
            return MessageFormat.format("${method.value}", <#list method.arguments as argument>${argument}<#if argument_has_next>, );
        <#else>
            return "${method.value}";
        
        }

        <#if genLogged && method.logged>
        fun ${method.getLoggerName()}(<#list method.parameters as parameter>${parameter.second}: ${parameter.first}<#if parameter_has_next>, <#if method.parameters?size != 0>, Locale... locale) {
        <#if "${loggingType.name()}" == "SLF4J">
            if(${className}.logger.is${method.logLevel?cap_first}Enabled()) {
        <#elseif "${loggingType.name()}" == "JUL">
            if(${className}.logger.isLoggable(Level.${method.logLevel?upper_case})) {
        
               <#if method.arguments?size != 0>
                ${className}.logger.${method.logLevel}(${method.getMethodName()}(<#list method.arguments as argument>${argument}<#if argument_has_next>, , locale));
                <#else>
                ${className}.logger.${method.logLevel}(${method.getMethodName()}(locale));
                
            }
        }
        
        
    

    private open class LocalizedImpl: Localized {
    }

    <#list bundles?keys as bundle>
    private open class LocalizedImpl_${bundle}: LocalizedImpl${findParentExtension(bundle)}() {
    <@impl methods=bundles[bundle] genLogged=false />
    }

    
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy