
commons.box.app.MetaBeanConfigProperty Maven / Gradle / Ivy
Show all versions of commons-box-app Show documentation
package commons.box.app;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import commons.box.app.bean.MetaAccessProperty;
import commons.box.util.Orders;
import javax.annotation.Nonnull;
import java.io.Serializable;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
import java.util.Locale;
import java.util.Map;
/**
* MetaBean 的属性
*/
public interface MetaBeanConfigProperty extends MetaAccessProperty, MetaLabelValue,
HasKey, DataName, DataLabel, DataObject,
Comparable>, Cloneable {
/** 默认实现 name=key */
@Nonnull
@Override
public String name();
/** 此对象对应的配置 是 Meta Bean Config 的 key 有效的 mb property 应该总是返回非空的 config */
@Nonnull
public String config();
@Override
default String key() {
return this.name();
}
/**
* 属性对应的类名
*
* @return
*/
@Nonnull
public Class type();
/**
* 基本值类型或关联实体对象的类名
*
* 当属性关联到了 MetaBean 时,此时返回对应 MetaBean Config 的配置名
*
* @return
*/
@Nonnull
default Serializable typeTarget() {
return this.type();
}
/**
* 额外的配置项目
*
* @return
*/
public Map extprops();
/**
* 额外的配置项目
*
* @param key
* @return
*/
public Serializable extprop(String key);
/**
* 顺序
*
* @return
*/
public int index();
//----------------------------------- 代理 值获取 方法 -----------------------------------
/** 返回属性值 */
default Serializable val(MetaBean bean) {
return (bean != null) ? bean.getValue(this.key()) : null;
}
/** 按类型返回属性值 */
default Boolean asBoolean(MetaBean bean) {
return (bean != null) ? bean.asBoolean(this.key()) : null;
}
/** 按类型返回属性值 */
@SuppressWarnings("unchecked")
default T asEnum(MetaBean bean) {
return (bean != null) ? (T) bean.asEnum(this.key(), this.type()) : null;
}
/** 按类型返回属性值 */
default byte[] asBytes(MetaBean bean) {
return (bean != null) ? bean.asBytes(this.key()) : null;
}
/** 按类型返回属性值 */
default boolean asBooleanValue(MetaBean bean) {
return (bean != null) && bean.asBooleanValue(this.key());
}
/** 按类型返回属性值 */
default Byte asByte(MetaBean bean) {
return (bean != null) ? bean.asByte(this.key()) : null;
}
/** 按类型返回属性值 */
default byte asByteValue(MetaBean bean) {
return (bean != null) ? bean.asByteValue(this.key()) : 0;
}
/** 按类型返回属性值 */
default Short asShort(MetaBean bean) {
return (bean != null) ? bean.asShort(this.key()) : null;
}
/** 按类型返回属性值 */
default short asShortValue(MetaBean bean) {
return (bean != null) ? bean.asShortValue(this.key()) : 0;
}
/** 按类型返回属性值 */
default Integer asInteger(MetaBean bean) {
return (bean != null) ? bean.asInteger(this.key()) : null;
}
/** 按类型返回属性值 */
default int asIntValue(MetaBean bean) {
return (bean != null) ? bean.asIntValue(this.key()) : 0;
}
/** 按类型返回属性值 */
default Long asLong(MetaBean bean) {
return (bean != null) ? bean.asLong(this.key()) : null;
}
/** 按类型返回属性值 */
default long asLongValue(MetaBean bean) {
return (bean != null) ? bean.asLongValue(this.key()) : 0L;
}
/** 按类型返回属性值 */
default Float asFloat(MetaBean bean) {
return (bean != null) ? bean.asFloat(this.key()) : null;
}
/** 按类型返回属性值 */
default float asFloatValue(MetaBean bean) {
return (bean != null) ? bean.asFloatValue(this.key()) : 0;
}
/** 按类型返回属性值 */
default Double asDouble(MetaBean bean) {
return (bean != null) ? bean.asDouble(this.key()) : null;
}
/** 按类型返回属性值 */
default double asDoubleValue(MetaBean bean) {
return (bean != null) ? bean.asDoubleValue(this.key()) : 0;
}
/** 按类型返回属性值 */
default BigDecimal asBigDecimal(MetaBean bean) {
return (bean != null) ? bean.asBigDecimal(this.key()) : null;
}
/** 按类型返回属性值 */
default BigInteger asBigInteger(MetaBean bean) {
return (bean != null) ? bean.asBigInteger(this.key()) : null;
}
/** 按类型返回属性值 */
default String asString(MetaBean bean) {
return (bean != null) ? bean.asString(this.key()) : null;
}
/** 按类型返回属性值 */
default Date asDate(MetaBean bean) {
return (bean != null) ? bean.asDate(this.key()) : null;
}
/** 按类型返回属性值 */
default java.sql.Date asSqlDate(MetaBean bean) {
return (bean != null) ? bean.asSqlDate(this.key()) : null;
}
/** 按类型返回属性值 */
default java.sql.Timestamp asTimestamp(MetaBean bean) {
return (bean != null) ? bean.asTimestamp(this.key()) : null;
}
/** 按类型返回属性值 */
default T asObject(MetaBean bean, Class clazz) {
return (bean != null) ? bean.asObject(this.key(), clazz) : null;
}
/** 按类型返回属性值 */
default T asObject(MetaBean bean, Type type) {
return (bean != null) ? bean.asObject(this.key(), type) : null;
}
/** 按类型返回属性值 */
default JSONObject asJSONObject(MetaBean bean) {
return (bean != null) ? bean.asJSONObject(this.key()) : null;
}
/** 按类型返回属性值 */
default JSONArray asJSONArray(MetaBean bean) {
return (bean != null) ? bean.asJSONArray(this.key()) : null;
}
@Override
default int compareTo(MetaBeanConfigProperty o) {
if (o == null) return 1;
int s = Orders.compare(this.config(), o.config());
if (s != 0) return s;
s = Orders.compare(this.index(), o.index());
if (s != 0) return s;
s = Orders.compare(this.name(), o.name());
if (s != 0) return s;
return s;
}
}