<?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 headers -->
  <!-- See http://checkstyle.sf.net/config_header.html -->
    <!-- Verify that EVERY source file has the appropriate license -->
  <module name="Header">
    <property name="headerFile" value="${checkstyle.header.file}"/>
  </module>

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

  <!-- Miscellaneous other checks (checker).         -->
  <!-- See http://checkstyle.sf.net/config_misc.html -->
    <!-- Require files to end with newline characters -->
  <module name="NewlineAtEndOfFile">
    <property name="lineSeparator" value="lf"/>
  </module>

  <!-- Checks for whitespace (tree walker)                 -->
  <!-- See http://checkstyle.sf.net/config_whitespace.html -->
    <!-- No tabs allowed! -->
  <module name="FileTabCharacter"/>

  <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" />
    <module name="AvoidStarImport" />
    <module name="ImportOrder">
      <property name="groups" value="org.apache.calcite,org.apache,au.com.,com.,io.,mondrian.,net.,org.,scala.,/^javax?\./"/>
      <property name="ordered" value="true"/>
      <property name="separated" value="true"/>
      <property name="option" value="bottom"/>
    </module>

    <!-- 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>
