Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2014 the original author or authors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package ro.pippo.groovy;
 
 
 import java.net.URL;
 import java.util.Date;
 import java.util.Map;
 
 
Base class for Pippo Groovy Templates.

Author(s):
James Moger
 
 public abstract class PippoGroovyTemplate extends BaseTemplate {
 
     private final Logger log = LoggerFactory.getLogger(PippoGroovyTemplate.class);
 
     private final Map<StringStringmodelTypes;
 
     private final MarkupTemplateEngine engine;
 
     Router router;
 
     String language;
 
     Locale locale;
 
 
     Messages messages;
 
 
 
 
     public PippoGroovyTemplate(final MarkupTemplateEngine templateEnginefinal Map model,
             final Map<StringStringmodelTypesfinal TemplateConfiguration configuration) {
         super(templateEnginemodelmodelTypesconfiguration);
 
         this. = modelTypes;
         this. = templateEngine;
         this. = new AtomicReference<>();
         this. = new AtomicReference<>();
     }
 
     @SuppressWarnings("unchecked")
     public void setup(Languages languagesMessages messagesRouter router) {
         this. = languages;
         this. = messages;
         this. = router;
 
         // set global template variables
         getModel().put("contextPath",  router.getContextPath());
         getModel().put("appPath",  router.getApplicationPath());
 
         String language = (StringgetModel().get(.);
         if (StringUtils.isNullOrEmpty(language)) {
             language = languages.getLanguageOrDefault(language);
         }
        this. = language;
        // prepare the locale
        if (locale == null) {
            locale = languages.getLocaleOrDefault(language);
        }
        this. = locale;
    }
    public void ln() throws IOException {
        newLine();
    }
    public String webjarsAt(String path) {
        return classpathResourceAt(pathWebjarsResourceHandler.class);
    }
    public String publicAt(String path) {
        return classpathResourceAt(pathPublicResourceHandler.class);
    }
    private String classpathResourceAt(String pathAtomicReference<StringpatternRef,
                                       Class<? extends ClasspathResourceHandlerresourceHandlerClass) {
        if (patternRef.get() == null) {
            String pattern = .uriPatternFor(resourceHandlerClass);
            if (pattern == null) {
                throw new PippoRuntimeException("You must register a route for {}",
                        resourceHandlerClass.getSimpleName());
            }
            patternRef.set(pattern);
        }
        Map<StringObjectparameters = new HashMap<>();
        parameters.put(.path);
        String uri = .uriFor(patternRef.get(), parameters);
        return uri;
    }
    public String i18n(String messageKeythrows IOException {
        String messageValue = .get(messageKey);
        return messageValue;
    }
    public String i18n(String messageKeyObject... argsthrows IOException {
        String messageValue = .get(messageKeyargs);
        return messageValue;
    }
    public String formatTime(Object inputString styleOrPattern) {
        Date date = getDateObject(input);
        DateFormat df;
        int type = parseStyle(styleOrPattern);
        if (type == -1) {
            df = new SimpleDateFormat(styleOrPattern);
        } else {
            df = DateFormat.getDateTimeInstance(typetype);
        }
        String value = df.format(date);
        return value;
    }
    private Date getDateObject(Object value) {
        if (value instanceof Date) {
            return (Datevalue;
        } else if (value instanceof Calendar) {
            return ((Calendarvalue).getTime();
        } else if (value instanceof Long) {
            return new Date((Longvalue);
        } else {
            throw new PippoRuntimeException("Failed to get a date object from {}!"value);
        }
    }
    protected Integer parseStyle(String style) {
        if ("full".equals(style)) {
            return .;
        } else if ("long".equals(style)) {
            return .;
        } else if ("short".equals(style)) {
            return .;
        } else if ("medium".equals(style)) {
            return .;
        } else {
            return -1;
        }
    }
    public String prettyTime(Object input) {
        if ( == null) {
            this. = new PrettyTime();
        }
        Date date = getDateObject(input);
        String value = .format(date);
        return value;
    }
    public String ng(String contentthrows IOException {
        return "{{ " + content + " }}";
    }

    
Imports a template and renders it using the specified model, allowing fine grained composition of templates and layouting. This works similarily to a template include but allows a distinct model to be used. If the layout inherits from the parent model, a new model is created, with the values from the parent model, eventually overriden with those provided specifically for this layout.

Parameters:
model model to be passed to the template
templateName the name of the template to be used as a layout
inheritModel a boolean indicating if we should inherit the parent model
Returns:
this template instance
Throws:
java.io.IOException
java.lang.ClassNotFoundException
    @Override
    public Object layout(Map modelString templateNameboolean inheritModelthrows IOException,
            ClassNotFoundException {
        Map submodel = inheritModel ? forkModel(model) : model;
        URL resource = .resolveTemplate(templateName);
        PippoGroovyTemplate template = (PippoGroovyTemplate
                .createTypeCheckedModelTemplate(resource).make(submodel);
        template.setup();
        template.writeTo(getOut());
        return this;
    }
    @SuppressWarnings("unchecked")
    private Map forkModel(Map m) {
        Map result = new HashMap();
        result.putAll(getModel());
        result.putAll(m);
        return result;
    }
New to GrepCode? Check out our FAQ X