View Javadoc
1   /**
2    * Copyright (C) 2014-2016 Philip Helger (www.helger.com)
3    * philip[at]helger[dot]com
4    *
5    * Licensed under the Apache License, Version 2.0 (the "License");
6    * you may not use this file except in compliance with the License.
7    * You may obtain a copy of the License at
8    *
9    *         http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package com.helger.schematron.svrl;
18  
19  import javax.annotation.Nonnull;
20  import javax.annotation.Nullable;
21  
22  import org.oclc.purl.dsdl.svrl.FailedAssert;
23  import org.oclc.purl.dsdl.svrl.SuccessfulReport;
24  
25  import com.helger.commons.ValueEnforcer;
26  import com.helger.commons.error.EErrorLevel;
27  import com.helger.commons.error.IErrorLevel;
28  
29  /**
30   * The default implementation of {@link ISVRLErrorLevelDeterminator}.
31   *
32   * @author Philip Helger
33   */
34  public class DefaultSVRLErrorLevelDeterminator implements ISVRLErrorLevelDeterminator
35  {
36    public static final IErrorLevel DEFAULT_ERROR_LEVEL = EErrorLevel.ERROR;
37  
38    /**
39     * Get the error level associated with a single failed assertion.
40     *
41     * @param sFlag
42     *        The flag to be queried. May be <code>null</code>.
43     * @return The error level and never <code>null</code>.
44     */
45    @Nonnull
46    public IErrorLevel getErrorLevelFromFlag (@Nullable final String sFlag)
47    {
48      if (sFlag == null)
49        return DEFAULT_ERROR_LEVEL;
50  
51      if (sFlag.equalsIgnoreCase ("warning") || sFlag.equalsIgnoreCase ("warn"))
52        return EErrorLevel.WARN;
53  
54      if (sFlag.equalsIgnoreCase ("error") || sFlag.equalsIgnoreCase ("err"))
55        return EErrorLevel.ERROR;
56  
57      if (sFlag.equalsIgnoreCase ("fatal") ||
58          sFlag.equalsIgnoreCase ("fatal_error") ||
59          sFlag.equalsIgnoreCase ("fatalerror"))
60        return EErrorLevel.FATAL_ERROR;
61  
62      throw new IllegalArgumentException ("Cannot convert the SVRL failed assertion flag '" +
63                                          sFlag +
64                                          "' to an error level. Please extend the preceeding list!");
65    }
66  
67    @Nonnull
68    public IErrorLevel getErrorLevelFromFailedAssert (@Nonnull final FailedAssert aFailedAssert)
69    {
70      ValueEnforcer.notNull (aFailedAssert, "FailedAssert");
71  
72      return getErrorLevelFromFlag (aFailedAssert.getFlag ());
73    }
74  
75    @Nonnull
76    public IErrorLevel getErrorLevelFromSuccessfulReport (@Nonnull final SuccessfulReport aSuccessfulReport)
77    {
78      ValueEnforcer.notNull (aSuccessfulReport, "SuccessfulReport");
79  
80      return getErrorLevelFromFlag (aSuccessfulReport.getFlag ());
81    }
82  }