com.jsmartframework.web.config.FileVersion.java Source code

Java tutorial

Introduction

Here is the source code for com.jsmartframework.web.config.FileVersion.java

Source

/*
 * JSmart Framework - Java Web Development Framework
 * Copyright (c) 2015, Jeferson Albino da Silva, All rights reserved.
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3.0 of the License, or (at your option) any later version.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/

package com.jsmartframework.web.config;

import org.apache.commons.lang.StringUtils;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.util.regex.Pattern;

public final class FileVersion {

    private static Pattern extensionsPattern;

    private static Pattern foldersPattern;

    private static Pattern minifiedPattern = Pattern.compile("[^\\s]+(\\.min\\.)+.*");

    private String version;

    private boolean auto;

    private String[] extensions;

    private String[] excludeFolders;

    private boolean includeMinified;

    @XmlAttribute
    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        if (StringUtils.isNotBlank(version)) {
            this.version = version;
        }
    }

    @XmlAttribute
    public boolean isAuto() {
        return auto;
    }

    public void setAuto(boolean auto) {
        this.auto = auto;
    }

    @XmlAttribute
    @XmlJavaTypeAdapter(value = AttributeAdapter.class)
    public String[] getExtensions() {
        return extensions;
    }

    public boolean hasExtension(String file) {
        if (extensionsPattern != null && file != null) {
            return extensionsPattern.matcher(file).find();
        }
        return false;
    }

    public void setExtensions(String[] extensions) {
        this.extensions = extensions;
        if (extensions == null || extensions.length == 0) {
            return;
        }

        StringBuilder patternBuilder = new StringBuilder("[^\\s]+(\\.(");
        for (int index = 0; index < extensions.length; index++) {
            if (extensions[index].contains(".")) {
                extensions[index] = extensions[index].replace(".", "");
            }
            if (index != 0) {
                patternBuilder.append("|");
            }
            patternBuilder.append(extensions[index]);
        }
        patternBuilder.append("))$");
        extensionsPattern = Pattern.compile(patternBuilder.toString());
    }

    @XmlAttribute(name = "includeMinified")
    public boolean isIncludeMinified() {
        return includeMinified;
    }

    public void setIncludeMinified(boolean includeMinified) {
        this.includeMinified = includeMinified;
    }

    public boolean isMinifiedFile(String file) {
        return minifiedPattern.matcher(file).find();
    }

    @XmlAttribute(name = "excludeFolders")
    @XmlJavaTypeAdapter(value = AttributeAdapter.class)
    public String[] getExcludeFolders() {
        return excludeFolders;
    }

    public boolean isOnExcludeFolders(String file) {
        if (foldersPattern != null && file != null) {
            return foldersPattern.matcher(file).find();
        }
        return false;
    }

    public void setExcludeFolders(String[] excludeFolders) {
        this.excludeFolders = excludeFolders;
        if (excludeFolders == null || excludeFolders.length == 0) {
            return;
        }

        StringBuilder patternBuilder = new StringBuilder("[^\\s]*(");
        for (int index = 0; index < excludeFolders.length; index++) {
            if (excludeFolders[index].contains("/")) {
                excludeFolders[index] = excludeFolders[index].replace("/", "");
            }
            if (index != 0) {
                patternBuilder.append("|");
            }
            patternBuilder.append(excludeFolders[index]);
        }
        patternBuilder.append(")+/.*");
        foldersPattern = Pattern.compile(patternBuilder.toString());
    }

}