Package org.beangle.ems.dictionary.model

Source Code of org.beangle.ems.dictionary.model.BaseCode

/* Copyright c 2005-2012.
* Licensed under GNU  LESSER General Public License, Version 3.
* http://www.gnu.org/licenses
*/
package org.beangle.ems.dictionary.model;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Date;

import javax.persistence.Cacheable;
import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.beangle.model.pojo.LongIdTimeObject;
import org.beangle.model.pojo.TemporalActiveEntity;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

/**
* 基础代码的基类
* </p>
* 很对基础代码数据成员结构相似,仅在数据库中表名和列名 不一样,带都含有这些基类中规定的数据类型,所以把这种结构相似性抽出来,
* 节省代码的编制量.每个子类代码仍要有自己的类型定义和数据库映射定义. 基类和数据库表没有映射关系,仅仅是数据抽象.
*
* @author chaostone
* @version $Id: BaseCode.java May 4, 2011 7:28:27 PM chaostone $
*/
@SuppressWarnings("rawtypes")
@MappedSuperclass
@Cacheable
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public abstract class BaseCode<T extends BaseCode> extends LongIdTimeObject implements Comparable<T>,
    TemporalActiveEntity {

  private static final long serialVersionUID = 5728157880502841506L;

  /**
   * 基础代码的代码关键字
   */
  @Column(unique = true)
  @NotNull
  @Size(max = 32)
  protected String code;

  /**
   * 代码中文名称
   */
  @NotNull
  @Size(max = 100)
  protected String name;

  /**
   * 代码英文名称
   */
  @Size(max = 100)
  protected String engName;

  /**
   * 生效时间
   */
  @NotNull
  protected Date effectiveAt;

  /**
   * 失效时间
   */
  protected Date invalidAt;

  public BaseCode() {
  }

  public BaseCode(Long id) {
    this.id = id;
  }

  public void genIdFromCode() {
    setId(Long.valueOf(getCode()));
  }

  /**
   * 查询基础代码是否具有扩展属性,一般供子类使用。
   *
   * @return
   */
  public boolean hasExtPros() {
    Field[] fields = getClass().getDeclaredFields();
    for (int i = 0; i < fields.length; i++) {
      if (!(Modifier.isFinal(fields[i].getModifiers()) || Modifier.isStatic(fields[i].getModifiers()))) { return true; }
    }
    return false;
  }

  /**
   * 获得代码
   *
   * @return 代码
   */
  public String getCode() {
    return code;
  }

  /**
   * 设置代码
   *
   * @param code
   *            代码
   */
  public void setCode(String code) {
    this.code = code;
  }

  /**
   * 获得名称
   *
   * @return 名称
   */
  public String getName() {
    return name;
  }

  /**
   * 设置名称
   *
   * @param name
   *            名称
   */
  public void setName(String name) {
    this.name = name;
  }

  /**
   * 获得英文名
   *
   * @return 英文名
   */
  public String getEngName() {
    return engName;
  }

  /**
   * 设置英文名
   *
   * @param engName
   *            英文名
   */
  public void setEngName(String engName) {
    this.engName = engName;
  }

  /**
   * 获得生效时间
   *
   * @return 生效时间
   */
  public Date getEffectiveAt() {
    return effectiveAt;
  }

  /**
   * 设置生效时间
   *
   * @param effectiveAt
   *            生效时间
   */
  public void setEffectiveAt(Date effectiveAt) {
    this.effectiveAt = effectiveAt;
  }

  /**
   * 获得失效时间
   *
   * @return 失效时间
   */
  public Date getInvalidAt() {
    return invalidAt;
  }

  /**
   * 设置失效时间
   *
   * @param invalidAt
   *            失效时间
   */
  public void setInvalidAt(Date invalidAt) {
    this.invalidAt = invalidAt;
  }

  public int compareTo(T arg0) {
    T other = (T) arg0;
    return this.getCode().compareTo(other.getCode());
  }

  public String toString() {
    return new ToStringBuilder(this).append("name", this.name).append("id", this.id)
        .append("code", this.code).append("engName", this.engName).toString();
  }
}
TOP

Related Classes of org.beangle.ems.dictionary.model.BaseCode

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.