Java tutorial
/* * 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()); } }