content: /*
   * Copyright 1999-2012 Alibaba Group.
   *  
   * 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.
   */
  /**
   * (created at 2012-6-12)
   */
  package com.alibaba.cobar.config.model.rule;
  
  import java.util.ArrayList;
  import java.util.Collections;
  import java.util.List;
  
  /**
   * @author <a href="mailto:shuo.qius@alibaba-inc.com">QIU Shuo</a>
   */
  public class RuleConfig {
      private final List<String> columns;
      private final String algorithm;
      private RuleAlgorithm ruleAlgorithm;
  
      public RuleConfig(String[] columns, String algorithm) {
          if (algorithm == null) {
              throw new IllegalArgumentException("algorithm is null");
          }
          this.algorithm = algorithm;
          if (columns == null || columns.length <= 0) {
              throw new IllegalArgumentException("no rule column is found");
          }
          List<String> list = new ArrayList<String>(columns.length);
          for (String column : columns) {
              if (column == null) {
                  throw new IllegalArgumentException("column value is null: " + columns);
              }
              list.add(column.toUpperCase());
          }
          this.columns = Collections.unmodifiableList(list);
      }
  
      public RuleAlgorithm getRuleAlgorithm() {
          return ruleAlgorithm;
      }
  
      public void setRuleAlgorithm(RuleAlgorithm ruleAlgorithm) {
          this.ruleAlgorithm = ruleAlgorithm;
      }
  
      /**
       * @return unmodifiable, upper-case
       */
      public List<String> getColumns() {
          return columns;
      }
  
      /**
       * @return never null
       */
      public String getAlgorithm() {
          return algorithm;
      }
  
  }
  