Package org.beangle.ems.security.restrict.model

Source Code of org.beangle.ems.security.restrict.model.RestrictionBean

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

import java.util.Map;

import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.JoinColumn;
import javax.persistence.MapKeyColumn;
import javax.persistence.MappedSuperclass;
import javax.validation.constraints.NotNull;

import org.apache.commons.lang.StringUtils;
import org.beangle.commons.collection.CollectUtils;
import org.beangle.commons.lang.StrUtils;
import org.beangle.model.pojo.LongIdObject;
import org.beangle.ems.security.restrict.RestrictField;
import org.beangle.ems.security.restrict.RestrictPattern;
import org.beangle.ems.security.restrict.Restriction;

/**
* 资源访问限制
*
* @author chaostone
*/
@MappedSuperclass
public abstract class RestrictionBean extends LongIdObject implements Restriction {
  private static final long serialVersionUID = -1157873272781525823L;

  @NotNull
  protected RestrictPattern pattern;

  @NotNull
  protected boolean enabled = true;

  @ElementCollection
  @MapKeyColumn(name = "field_id")
  @Column(name = "content", length = 2000)
  @CollectionTable(joinColumns = @JoinColumn(name = "restriction_id"))
  private Map<Long, String> items = CollectUtils.newHashMap();

  public boolean isEnabled() {
    return enabled;
  }

  public void setEnabled(boolean enabled) {
    this.enabled = enabled;
  }

  public RestrictPattern getPattern() {
    return pattern;
  }

  public Map<Long, String> getItems() {
    return items;
  }

  public void setItems(Map<Long, String> items) {
    this.items = items;
  }

  public void setPattern(RestrictPattern pattern) {
    this.pattern = pattern;
  }

  protected Object clone() throws CloneNotSupportedException {
    return super.clone();
  }

  public String getItem(String paramName) {
    RestrictField param = getPattern().getEntity().getField(paramName);
    if (null == param) {
      return null;
    } else {
      return getItem(param);
    }
  }

  public String getItem(RestrictField param) {
    if (null == items || items.isEmpty()) {
      return null;
    } else {
      return (String) items.get(param.getId());
    }
  }

  public void setItem(RestrictField param, String text) {
    items.put(param.getId(), text);
  }

  public void merge(RestrictField param, String value) {
    setItem(param, evictComma(StrUtils.mergeSeq(getItem(param), value)));
  }

  public void shrink(RestrictField param, String value) {
    setItem(param, evictComma(StrUtils.subtractSeq(getItem(param), value)));
  }

  private static String evictComma(String str) {
    if (StringUtils.isEmpty(str)) return str;
    else {
      if (str.startsWith(",") && str.endsWith(",")) return str.substring(1, str.length() - 1);
      else if (str.startsWith(",")) {
        return str.substring(1);
      } else if (str.endsWith(",")) {
        return str.substring(0, str.length() - 1);
      } else {
        return str;
      }
    }
  }

}
TOP

Related Classes of org.beangle.ems.security.restrict.model.RestrictionBean

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.