1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one *
3 * or more contributor license agreements. See the NOTICE file *
4 * distributed with this work for additional information *
5 * regarding copyright ownership. The ASF licenses this file *
6 * to you under the Apache License, Version 2.0 (the *
7 * "License"); you may not use this file except in compliance *
8 * with the License. You may obtain a copy of the License at *
9 * *
10 * http://www.apache.org/licenses/LICENSE-2.0 *
11 * *
12 * Unless required by applicable law or agreed to in writing, *
13 * software distributed under the License is distributed on an *
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
15 * KIND, either express or implied. See the License for the *
16 * specific language governing permissions and limitations *
17 * under the License. *
18 */
19 package org.apache.rat.configuration.builders;
20
21 import org.apache.rat.ConfigurationException;
22 import org.apache.rat.analysis.IHeaderMatcher;
23 import org.apache.rat.analysis.matchers.NotMatcher;
24 import org.apache.rat.config.parameters.MatcherBuilder;
25
26 /**
27 * A builder for the NotMatcher.
28 */
29 @MatcherBuilder(NotMatcher.class)
30 public class NotBuilder extends ChildContainerBuilder {
31
32 @Override
33 public NotMatcher build() {
34 if (children.isEmpty()) {
35 throw new ConfigurationException("'not' type matcher requires one and only one enclosed matcher");
36 }
37 return new NotMatcher(getId(), children.get(0).build());
38 }
39
40 @Override
41 public String toString() {
42 return String.format("NotBuilder: %s", !children.isEmpty() ? children.get(0) : null);
43 }
44
45 /**
46 * Sets the enclosed matcher. Prior to this call the builder is invalid and the {@code build()} will fail.
47 * @param enclosed The matcher to negate.
48 * @return this.
49 */
50 public NotBuilder setEnclosed(final IHeaderMatcher.Builder enclosed) {
51 if (children.isEmpty()) {
52 children.add(enclosed);
53 } else {
54 children.set(0, enclosed);
55 }
56 return this;
57 }
58 }