<?xml version="1.0"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to you 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.
  -->

<!--
  This version of checkstyle is based on the Apache Giraph checkstyle
  configuration, which in turn is based on Hadoop and common-math
  configurations.

  The documentation for checkstyle is available at

  http://checkstyle.sourceforge.net
-->

<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.1//EN" "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">

<!-- Calcite customization of default Checkstyle behavior -->
<module name="Checker">
  <property name="localeLanguage" value="en"/>

  <!-- Checks for Javadoc comments (checker).           -->
  <!-- See http://checkstyle.sf.net/config_javadoc.html -->
    <!-- Require package javadoc -->
  <module name="JavadocPackage"/>

  <module name="TreeWalker">
    <property name="cacheFile" value="target/checkstyle-cachefile"/>

    <!-- Checks for blocks. You know, those {}'s         -->
    <!-- See http://checkstyle.sf.net/config_blocks.html -->
      <!-- No empty blocks (i.e. catch); must contain at least a comment -->
    <module name="EmptyBlock">
      <property name="option" value="text"/>
    </module>
    <module name="AvoidNestedBlocks">
        <property name="allowInSwitchCase" value="true"/>
    </module>
    <module name="LeftCurly"/>
      <!-- No if/else/do/for/while without braces -->
    <module name="NeedBraces"/>
    <module name="RightCurly"/>

    <!-- Checks for class design                         -->
    <!-- See http://checkstyle.sf.net/config_design.html -->
      <!-- Utility class should not be instantiated, they must have a
           private constructor -->
    <module name="HideUtilityClassConstructor"/>

    <!-- Checks for common coding problems               -->
    <!-- See http://checkstyle.sf.net/config_coding.html -->
    <module name="EmptyStatement"/>
      <!-- Require hash code override when equals is -->
    <module name="EqualsHashCode"/>
      <!-- Disallow unnecessary instantiation of Boolean, String -->
    <module name="IllegalInstantiation">
      <property name="classes" value="java.lang.Boolean, java.lang.String"/>
    </module>
      <!-- Switch statements should be complete and with independent cases -->
    <module name="FallThrough"/>
    <module name="SimplifyBooleanExpression"/>
    <module name="SimplifyBooleanReturn"/>
      <!-- Only one statement per line allowed -->
    <module name="OneStatementPerLine"/>
      <!-- Don't add up parentheses when they are not required -->
    <module name="UnnecessaryParentheses" />
      <!-- Don't use = or != for string comparisons -->
    <module name="StringLiteralEquality" />
      <!-- Don't declare multiple variables in the same statement -->
    <module name="MultipleVariableDeclarations" />
      <!-- String literals more than one character long should not be
           repeated several times -->
      <!-- the "unchecked" string is also accepted to allow
           @SuppressWarnings("unchecked") -->
      <!-- Disabling for now until we have a better ignoreStringsRegexp -->
      <!--
    <module name="MultipleStringLiterals" >
      <property name="ignoreStringsRegexp" value='^(("")|(".")|("unchecked"))$'/>
    </module>
      -->

    <!-- Checks for imports                              -->
    <!-- See http://checkstyle.sf.net/config_import.html -->
    <module name="RedundantImport"/>
      <!-- Import should be explicit, and only from pure java packages.
           But we allow imports that are only used in javadoc. -->
    <module name="UnusedImports">
      <property name="processJavadoc" value="true"/>
    </module>
    <module name="IllegalImport" />

    <!-- Checks for Javadoc comments (tree walker).       -->
    <!-- See http://checkstyle.sf.net/config_javadoc.html -->
      <!-- Javadoc must be formatted correctly -->
    <module name="JavadocStyle">
      <property name="checkFirstSentence" value="false"/>
    </module>
      <!-- Must have class / interface header comments -->
    <module name="JavadocType"/>

    <!-- Miscellaneous other checks (tree walker).     -->
    <!-- See http://checkstyle.sf.net/config_misc.html -->
      <!-- Java style arrays -->
    <module name="ArrayTypeStyle"/>
      <!-- Indentation -->
    <module name="Indentation">
      <property name="caseIndent" value="0"/>
      <property name="basicOffset" value="2"/>
      <property name="braceAdjustment" value="0"/>
    </module>
      <!-- Turn this on to see what needs to be done
    <module name="TodoComment"/>
       -->
    <module name="UpperEll"/>

    <module name="OperatorWrap"/>

    <!-- Modifier Checks                                    -->
    <!-- See http://checkstyle.sf.net/config_modifiers.html -->
      <!-- Use a consistent way to put modifiers -->
    <module name="ModifierOrder"/>
    <module name="RedundantModifier"/>

    <!-- Checks for Naming Conventions.                  -->
    <!-- See http://checkstyle.sf.net/config_naming.html -->
      <!-- Constant names should obey the traditional all uppercase
           naming convention -->
    <module name="ConstantName"/>
    <module name="LocalFinalVariableName">
      <!-- Allow '_' except first. -->
      <property name="format" value="^[a-z][a-zA-Z0-9_]*$"/>
    </module>
    <module name="LocalVariableName">
      <!-- Allow '_' except first. -->
      <property name="format" value="^[a-z][a-zA-Z0-9_]*$"/>
    </module>
    <module name="MemberName"/>
    <module name="MethodName">
      <!-- Allow trailing '_', signifying private methods.
           Also allow '_' prefix, indicating disabled method or junit test. -->
      <property name="format" value="^_?[a-z][a-zA-Z0-9]*_?$"/>
    </module>
    <module name="PackageName"/>
    <module name="ParameterName">
      <!-- Allow trailing '_'. -->
      <property name="format" value="^[a-z][a-zA-Z0-9]*_?$"/>
    </module>
    <module name="StaticVariableName"/>
    <module name="TypeName"/>

    <!-- Checks for regexp expressions.                  -->
    <!-- See http://checkstyle.sf.net/config_regexp.html -->

    <!-- No trailing whitespace -->
    <module name="Regexp">
      <property name="format" value="[ \t]+$"/>
      <property name="illegalPattern" value="true"/>
      <property name="message" value="Trailing whitespace"/>
    </module>

    <!-- Authors should be in pom.xml file -->
    <module name="Regexp">
      <property name="format" value="@author"/>
      <property name="illegalPattern" value="true"/>
      <property name="message" value="developers names should be in pom file"/>
    </module>

    <!-- No multi-line C-style comments except at start of line. -->
    <module name="Regexp">
      <property name="format" value="^ +/\*[^*][^/]$"/>
      <property name="illegalPattern" value="true"/>
      <property name="message" value="C-style comment"/>
    </module>

    <module name="Regexp">
      <property name="format" value="^ +/\*$"/>
      <property name="illegalPattern" value="true"/>
      <property name="message" value="C-style comment"/>
    </module>

    <!-- Checks for Size Violations.                    -->
    <!-- See http://checkstyle.sf.net/config_sizes.html -->
    <!-- Lines cannot exceed 80 chars, except if they are hyperlinks
         or strings (possibly preceded by '+' and followed by say '),'. -->
    <module name="LineLength">
      <property name="max" value="100"/>
      <property name="ignorePattern" value="^import|@see|@link|@BaseMessage|href|^[ +]*&quot;.*&quot;[);,]*$"/>
    </module>
      <!-- Over time, we will revise this down -->
    <module name="MethodLength">
      <property name="max" value="390"/>
    </module>

    <!-- Checks for whitespace (tree walker)                 -->
    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
    <module name="EmptyForIteratorPad"/>
      <!-- Spacing around methods -->
    <module name="MethodParamPad">
      <property name="option" value="nospace"/>
      <property name="allowLineBreaks" value="true"/>
     </module>
      <!-- No whitespace before a token -->
    <module name="NoWhitespaceBefore"/>
      <!-- Whitespace after tokens is required -->
    <module name="WhitespaceAfter"/>
      <!-- Whitespace around tokens is required -->
    <module name="WhitespaceAround">
        <property name="allowEmptyConstructors" value="true"/>
        <property name="allowEmptyMethods" value="true"/>
    </module>
    <module name="ParenPad"/>
    <module name="TypecastParenPad"/>
      <!-- No extra whitespace around types -->
    <module name="GenericWhitespace"/>

    <!-- Required for SuppressionCommentFilter below -->
    <module name="FileContentsHolder"/>
  </module>

  <!-- Setup special comments to suppress specific checks from source files -->
  <module name="SuppressionCommentFilter">
    <property name="offCommentFormat" value="CHECKSTYLE\: stop ([\w\|]+)"/>
    <property name="onCommentFormat"  value="CHECKSTYLE\: resume ([\w\|]+)"/>
    <property name="checkFormat"      value="$1"/>
  </module>

  <!-- Turn off all checks between OFF and ON -->
  <module name="SuppressionCommentFilter">
    <property name="offCommentFormat" value="CHECKSTYLE\: OFF"/>
    <property name="onCommentFormat"  value="CHECKSTYLE\: ON"/>
  </module>

  <!-- Turn off checks for the next N lines. -->
  <module name="SuppressWithNearbyCommentFilter">
    <property name="commentFormat" value="CHECKSTYLE: +IGNORE (\d+)"/>
    <property name="influenceFormat" value="$1"/>
  </module>

  <module name="net.hydromatic.toolbox.checkstyle.HydromaticFileSetCheck"/>

  <module name="SuppressionFilter">
    <property name="file" value="${checkstyle.suppressions.file}"/>
  </module>
</module>
