View Javadoc

1   /*******************************************************************************
2    * Copyright (c) 2007, 2014 Massimiliano Ziccardi
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   *******************************************************************************/
16  package it.jnrpe.utils.thresholds;
17  
18  /**
19   * This stage handles the negate character ('^').
20   *
21   * Example Input : ^(0..100
22   *
23   * Produced Output : (0..100 and calls the
24   * {@link RangeConfig#setNegate(boolean)} passing <code>true</code>
25   *
26   * @author Massimiliano Ziccardi
27   */
28  class NegateStage extends Stage {
29  
30      /**
31       *
32       */
33      protected NegateStage() {
34          super("negate");
35      }
36  
37      /**
38       * Parses the threshold to remove the matched '^' char.
39       *
40       * No checks are performed against the passed in string: the object
41       * assumes that the string is correct since the {@link #canParse(String)}
42       * method <b>must</b> be called <b>before</b> this method.
43  
44       * @param threshold
45       *            The threshold chunk to be parsed
46       * @param tc
47       *            The threshold config object. This object will be populated
48       *            according to the passed in threshold.
49       * @return the remaining part of the threshold
50       */
51      @Override
52      public String parse(final String threshold, final RangeConfig tc) {
53          tc.setNegate(true);
54          return threshold.substring(1);
55      }
56  
57      /**
58       * Tells the parser if this stage is able to parse the current remaining
59       * threshold part.
60       *
61       * @param threshold
62       *            The threshold part to be parsed.
63       * @return <code>true</code> if this object can consume a part of the
64       *         threshold
65       */
66      public boolean canParse(final String threshold) {
67          if (threshold == null) {
68              return false;
69          }
70          return threshold.startsWith("^");
71      }
72  
73      /**
74       * This method is used to generate the exception message.
75       *
76       * @return the token that this stage is waiting for.
77       */
78      @Override
79      public String expects() {
80          return "^";
81      }
82  }