content: /*
   * Copyright 1999-2018 Alibaba Group Holding Ltd.
   *
   * Licensed 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.
   */
  package com.alibaba.druid.wall;
  
  import com.alibaba.druid.support.monitor.annotation.AggregateType;
  import com.alibaba.druid.support.monitor.annotation.MField;
  import com.alibaba.druid.support.monitor.annotation.MTable;
  
  import java.util.ArrayList;
  import java.util.LinkedHashMap;
  import java.util.List;
  import java.util.Map;
  
  @MTable(name = "druid_wall")
  public class WallProviderStatValue {
      @MField(aggregate = AggregateType.None)
      private String name;
  
      @MField(aggregate = AggregateType.Sum)
      private long checkCount;
      @MField(aggregate = AggregateType.Sum)
      private long hardCheckCount;
      @MField(aggregate = AggregateType.Sum)
      private long violationCount;
      @MField(aggregate = AggregateType.Sum)
      private long whiteListHitCount;
      @MField(aggregate = AggregateType.Sum)
      private long blackListHitCount;
      @MField(aggregate = AggregateType.Sum)
      private long syntaxErrorCount;
      @MField(aggregate = AggregateType.Sum)
      private long violationEffectRowCount;
  
      private final List<WallTableStatValue> tables = new ArrayList<WallTableStatValue>();
      private final List<WallFunctionStatValue> functions = new ArrayList<WallFunctionStatValue>();
  
      private final List<WallSqlStatValue> whiteList = new ArrayList<WallSqlStatValue>();
      private final List<WallSqlStatValue> blackList = new ArrayList<WallSqlStatValue>();
  
      public WallProviderStatValue() {
      }
  
      public String getName() {
          return name;
      }
  
      public void setName(String name) {
          this.name = name;
      }
  
      public long getCheckCount() {
          return checkCount;
      }
  
      public void setCheckCount(long checkCount) {
          this.checkCount = checkCount;
      }
  
      public long getHardCheckCount() {
          return hardCheckCount;
      }
  
      public void setHardCheckCount(long hardCheckCount) {
          this.hardCheckCount = hardCheckCount;
      }
  
      public long getViolationCount() {
          return violationCount;
      }
  
      public void setViolationCount(long violationCount) {
          this.violationCount = violationCount;
      }
  
      public long getWhiteListHitCount() {
          return whiteListHitCount;
      }
  
      public void setWhiteListHitCount(long whiteListHitCount) {
          this.whiteListHitCount = whiteListHitCount;
      }
  
      public long getBlackListHitCount() {
          return blackListHitCount;
      }
  
      public void setBlackListHitCount(long blackListHitCount) {
          this.blackListHitCount = blackListHitCount;
      }
  
      public long getSyntaxErrorCount() {
          return syntaxErrorCount;
      }
  
      public void setSyntaxErrorCount(long syntaxErrorCount) {
          this.syntaxErrorCount = syntaxErrorCount;
      }
  
      public long getViolationEffectRowCount() {
          return violationEffectRowCount;
      }
  
      public void setViolationEffectRowCount(long violationEffectRowCount) {
          this.violationEffectRowCount = violationEffectRowCount;
      }
  
      public List<WallTableStatValue> getTables() {
          return tables;
      }
  
      public List<WallFunctionStatValue> getFunctions() {
          return functions;
      }
  
      public List<WallSqlStatValue> getWhiteList() {
          return whiteList;
      }
  
      public List<WallSqlStatValue> getBlackList() {
          return blackList;
      }
  
      public Map<String, Object> toMap() {
          Map<String, Object> info = new LinkedHashMap<String, Object>();
  
          info.put("checkCount", this.getCheckCount());
          info.put("hardCheckCount", this.getHardCheckCount());
          info.put("violationCount", this.getViolationCount());
          info.put("violationEffectRowCount", this.getViolationEffectRowCount());
          info.put("blackListHitCount", this.getBlackListHitCount());
          info.put("blackListSize", this.getBlackList().size());
          info.put("whiteListHitCount", this.getWhiteListHitCount());
          info.put("whiteListSize", this.getWhiteList().size());
          info.put("syntaxErrorCount", this.getSyntaxErrorCount());
  
          {
              List<Map<String, Object>> tables = new ArrayList<Map<String, Object>>(this.tables.size());
              for (WallTableStatValue tableStatValue : this.tables) {
                  Map<String, Object> statMap = tableStatValue.toMap();
                  tables.add(statMap);
              }
              info.put("tables", tables);
          }
  
          {
              List<Map<String, Object>> functions = new ArrayList<Map<String, Object>>();
              for (WallFunctionStatValue funStatValue : this.functions) {
                  Map<String, Object> statMap = funStatValue.toMap();
                  functions.add(statMap);
              }
              info.put("functions", functions);
          }
  
          {
              List<Map<String, Object>> blackList = new ArrayList<Map<String, Object>>(this.blackList.size());
              for (WallSqlStatValue sqlStatValue : this.blackList) {
                  blackList.add(sqlStatValue.toMap());
              }
              info.put("blackList", blackList);
          }
  
          {
              List<Map<String, Object>> whiteList = new ArrayList<Map<String, Object>>(this.whiteList.size());
              for (WallSqlStatValue sqlStatValue : this.whiteList) {
                  whiteList.add(sqlStatValue.toMap());
              }
              info.put("whiteList", whiteList);
          }
  
          return info;
      }
  }
  