/* * Copyright 2004-2015 the Seasar Foundation and the Others. * * 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 org.seasar.framework.autodetector.impl; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import org.seasar.framework.autodetector.ResourceAutoDetector; /** * {@link ResourceAutoDetector}の抽象クラスです。 * * @author taedium * */ public abstract class AbstractResourceAutoDetector implements ResourceAutoDetector { private List targetDirPaths = new ArrayList(); private List resourceNamePatterns = new ArrayList(); private List ignoreResourceNamePatterns = new ArrayList(); /** * {@link AbstractResourceAutoDetector}のデフォルトコンストラクタです。 */ public AbstractResourceAutoDetector() { } /** * ターゲットのディレクトリのパスを追加します。 * * @param targetDirPath */ public void addTargetDirPath(final String targetDirPath) { targetDirPaths.add(targetDirPath); } /** * ターゲットのディレクトリのパスを返します。 * * @return ターゲットのディレクトリのパス */ public int getTargetDirPathSize() { return targetDirPaths.size(); } /** * ターゲットのディレクトリのパスを返します。 * * @param index * @return ターゲットのディレクトリのパス */ public String getTargetDirPath(final int index) { return (String) targetDirPaths.get(index); } /** * リソース名のパターンを追加します。 * * @param resourceName */ public void addResourceNamePattern(final String resourceName) { resourceNamePatterns.add(Pattern.compile(resourceName)); } /** * 無視するリソース名のパターンを追加します。 * * @param resourceName */ public void addIgnoreResourceNamePattern(final String resourceName) { ignoreResourceNamePatterns.add(Pattern.compile(resourceName)); } /** * リソース名のパターンを返します。 * * @param index * @return リソース名のパターン */ public Pattern getResourceNamePattern(final int index) { return (Pattern) resourceNamePatterns.get(index); } /** * リソース名のパターン数を返します。 * * @return リソース名のパターン数 */ public int getResourceNamePatternSize() { return resourceNamePatterns.size(); } /** * 無視するリソース名のパターンを返します。 * * @param index * @return 無視するリソース名のパターン */ public Pattern getIgnoreResourceNamePattern(final int index) { return (Pattern) ignoreResourceNamePatterns.get(index); } /** * 無視するリソース名のパターン数を返します。 * * @return 無視するリソース名のパターン数 */ public int getIgnoreResourceNamePatternSize() { return ignoreResourceNamePatterns.size(); } /** * 適用されるかどうかを返します。 * * @param resourceName * リソース名 * @return 適用されるかどうか */ protected boolean isApplied(final String resourceName) { for (int i = 0; i < getResourceNamePatternSize(); i++) { final Pattern pattern = getResourceNamePattern(i); if (pattern.matcher(resourceName).matches()) { return true; } } return false; } /** * 無視されるかどうかを返します。 * * @param resourceName * リソース名 * @return 無視されるかどうか */ protected boolean isIgnored(final String resourceName) { for (int i = 0; i < getIgnoreResourceNamePatternSize(); i++) { final Pattern pattern = getIgnoreResourceNamePattern(i); if (pattern.matcher(resourceName).matches()) { return true; } } return false; } }