content: /**
   * Copyright 2009 Alexander Kuznetsov 
   *
   * 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 org.apache.lucene.morphology.dictionary;
  
  import java.util.Objects;
  
  /**
   * Represent information of how word form created form it imutible part.
   */
  public class FlexiaModel {
      private String code;
      private String suffix;
      private String prefix;
  
      public FlexiaModel(String code, String suffix, String prefix) {
          this.code = code;
          this.suffix = suffix;
          this.prefix = prefix;
      }
  
      public String getCode() {
          return code;
      }
  
      public void setCode(String code) {
          this.code = code;
      }
  
      public String getSuffix() {
          return suffix;
      }
  
      public void setSuffix(String suffix) {
          this.suffix = suffix;
      }
  
      public String getPrefix() {
          return prefix;
      }
  
      public void setPrefix(String prefix) {
          this.prefix = prefix;
      }
  
      public String create(String s) {
          return prefix + s + suffix;
      }
  
      @Override
      public String toString() {
          return "FlexiaModel{" +
                  "code='" + code + '\'' +
                  ", suffix='" + suffix + '\'' +
                  ", prefix='" + prefix + '\'' +
                  '}';
      }
  
      @Override
      public boolean equals(Object o) {
          if (this == o) return true;
          if (o == null || getClass() != o.getClass()) return false;
  
          FlexiaModel that = (FlexiaModel) o;
  
          if (!Objects.equals(code, that.code)) return false;
          if (!Objects.equals(prefix, that.prefix)) return false;
          return Objects.equals(suffix, that.suffix);
      }
  
      @Override
      public int hashCode() {
          int result = code != null ? code.hashCode() : 0;
          result = 31 * result + (suffix != null ? suffix.hashCode() : 0);
          result = 31 * result + (prefix != null ? prefix.hashCode() : 0);
          return result;
      }
  }
  