View Javadoc

    1   /*
    2    * joey-gen and its relative products are published under the terms
    3    * of the Apache Software License.
    4    *
    5    * Created on 2004/11/10 9:43:18
    6    */
    7   package org.asyrinx.joey.gen.command.rdb;
    8
    9   import java.util.Map;
    10
    11  import org.apache.commons.lang.StringUtils;
    12  import org.asyrinx.joey.gen.model.Element;
    13  import org.asyrinx.joey.gen.model.rdb.RdbEnumeration;
    14  import org.asyrinx.joey.gen.model.rdb.Table;
    15
    16  /***
    17   * @author takeshi
    18   */
    19  public class CopyAncestorOption extends RdbCommand {
    20
    21      /***
    22       *
    23       */
    24      public CopyAncestorOption(Object optionKey) {
    25          super();
    26          this.optionKey = optionKey;
    27      }
    28
    29      protected final Object optionKey;
    30
    31      /*
    32       * (non-Javadoc)
    33       *
    34       * @see org.asyrinx.joey.gen.command.rdb.RdbCommand#visit(org.asyrinx.joey.gen.model.rdb.Table)
    35       */
    36      public void visit(Table table) {
    37          table.getOptions().put(optionKey, getOptionValue(table));
    38      }
    39
    40      /*
    41       * (non-Javadoc)
    42       *
    43       * @see org.asyrinx.joey.gen.command.rdb.RdbCommand#visit(org.asyrinx.joey.gen.model.rdb.RdbEnumeration)
    44       */
    45      public void visit(RdbEnumeration enumeration) {
    46          enumeration.getOptions().put(optionKey, getOptionValue(enumeration));
    47      }
    48
    49      public String getOptionValue(Element element) {
    50          final String result = getAncestorOptionValue(element);
    51          if (result != null)
    52              return result;
    53          else
    54              return (element.getParentElement() == null) ? null : element.getParentElement().getName();
    55      }
    56
    57      protected String getAncestorOptionValue(Element element) {
    58          String result = getValue(element.getOptions());
    59          if (!StringUtils.isEmpty(result)) {
    60              return result;
    61          } else {
    62              if (element.getParentElement() != null)
    63                  return getAncestorOptionValue(element.getParentElement());
    64              else
    65                  return null;
    66          }
    67      }
    68
    69      private String getValue(Map options) {
    70          final Object result = options.get(optionKey);
    71          return (result != null) ? result.toString() : null;
    72      }
    73
    74  }