[JGIT PATCH v4 04/24] Added the iterface Rules.
Signed-off-by: Florian Koeberle <florianskarten@web.de>
---
.../src/org/spearce/jgit/treewalk/rules/Rules.java | 121 ++++++++++++++++++++
1 files changed, 121 insertions(+), 0 deletions(-)
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/treewalk/rules/Rules.java
diff --git a/org.spearce.jgit/src/org/spearce/jgit/treewalk/rules/Rules.java b/org.spearce.jgit/src/org/spearce/jgit/treewalk/rules/Rules.java
new file mode 100644
index 0000000..0a71150
--- /dev/null
+++ b/org.spearce.jgit/src/org/spearce/jgit/treewalk/rules/Rules.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2008, Florian Köberle <florianskarten@web.de>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ *
+ * - Neither the name of the Git Development Community nor the
+ * names of its contributors may be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.spearce.jgit.treewalk.rules;
+
+/**
+ * A {@link Rules} instances defines ignore or do not ignore rules for files in
+ * a directory. It can't directly be used to match files in sub directories, but
+ * provides a method {@link #getRulesForSubDirectory}.
+ *
+ */
+public interface Rules {
+
+ /**
+ * Provides the instance of {@link IgnoreAllRules}.
+ */
+ public static final Rules IGNORE_ALL = new IgnoreAllRules();
+
+ /**
+ * Provides the instance of {@link IgnoreNothingRules}.
+ */
+ public static final Rules IGNORE_NOTHING = new IgnoreNothingRules();
+
+ /**
+ * @param fileName
+ * the name of the file or directory.
+ * @param fileIsDirectory
+ * should be true if the file is a directory.
+ * @return true if the file or directory should be ignored.
+ */
+ public abstract boolean shouldIgnore(String fileName,
+ boolean fileIsDirectory);
+
+ /**
+ * @param directoryName
+ * the sub directory for which you want an {@link Rules}
+ * instance.
+ * @return an {@link Rules} instance, which can be used to check files in
+ * the specified sub directory.
+ */
+ public abstract Rules getRulesForSubDirectory(String directoryName);
+
+ /**
+ * This implementation ignores everything.
+ */
+ public static final class IgnoreAllRules implements Rules {
+ private IgnoreAllRules() {
+ // declared to make the constructor private
+ }
+
+ public Rules getRulesForSubDirectory(String directoryName) {
+ return this;
+ }
+
+ public boolean shouldIgnore(String fileName, boolean fileIsDirectory) {
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "Rules[IGNORE_ALL]";
+ }
+ }
+
+ /**
+ * This implementation ignores nothing.
+ */
+ public static final class IgnoreNothingRules implements Rules {
+ private IgnoreNothingRules() {
+ // declared to make the constructor private
+ }
+
+ public Rules getRulesForSubDirectory(String directoryName) {
+ return this;
+ }
+
+ public boolean shouldIgnore(String fileName, boolean fileIsDirectory) {
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return "Rules[IGNORE_NOTHING]";
+ }
+ }
+
+}
--
1.5.4.3