
commons.box.util.MBs Maven / Gradle / Ivy
Show all versions of commons-box-app Show documentation
package commons.box.util;
import commons.box.app.MetaBean;
import commons.box.app.MetaBeanConfig;
import commons.box.app.MetaBeanFactory;
import commons.box.app.MetaBeanObject;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 提供了操作 meta bean 的快捷方法
*/
public class MBs {
public static final MetaBean[] EMPTY = new MetaBean[]{};
/**
* 获取所有的配置工厂
*
* @return
*/
@Nonnull
public static List factories() {
return Beans.bean().metaBeanFactories();
}
/**
* 获取配置实例
*
* @param config
* @return
*/
@Nullable
public static MetaBeanConfig config(String config) {
return Beans.bean().metaBeanConfig(config);
}
/**
* 以 MetaBeanObject 封装实例,此实例以key作为 equals 和 hashcode 对应的值
*
* 一般用于实际业务组件中需要做 Set/Map 去重处理
*
* @return
*/
public MetaBean keyobj(MetaBean mb) {
return MetaBeanObject.from(mb);
}
/**
* 以 MetaBeanObject 封装实例,此实例以key作为 equals 和 hashcode 对应的值
*
* 一般用于实际业务组件中需要做 Set/Map 去重处理
*
* @param mbs
* @return
*/
public MetaBean[] keyobjs(MetaBean... mbs) {
if (Collects.isEmpty(mbs)) return EMPTY;
MetaBean[] result = new MetaBean[mbs.length];
for (int i = 0; i < result.length; i++) {
if (mbs[i] instanceof MetaBeanObject) result[i] = mbs[i];
if (mbs[i] != null) result[i] = MetaBeanObject.from(mbs[i]);
else result[i] = null;
}
return result;
}
/**
* 以 MetaBeanObject 封装实例,此实例以key作为 equals 和 hashcode 对应的值
*
* 一般用于实际业务组件中需要做 Set/Map 去重处理
*
* @param mbs
* @return
*/
public List keyobjs(Collection mbs) {
if (mbs == null) return Collects.immlist();
List result = new ArrayList<>();
for (MetaBean mb : mbs) {
if (mb instanceof MetaBeanObject) result.add(mb);
else if (mb != null) result.add(MetaBeanObject.from(mb));
}
return result;
}
/**
* 获取 MetaBean 未包装实例,非 MetaBeanObject 对象返回自身
*
* @return
*/
public MetaBean raw(MetaBean mb) {
return (mb != null) ? mb.raw() : null;
}
/**
* 获取 MetaBean 未包装实例,非 MetaBeanObject 对象返回自身
*
* @return
*/
public MetaBean[] raws(MetaBean... mbs) {
if (Collects.isEmpty(mbs)) return EMPTY;
MetaBean[] result = new MetaBean[mbs.length];
for (int i = 0; i < result.length; i++) {
if (mbs[i] != null) result[i] = mbs[i].raw();
else result[i] = null;
}
return result;
}
/**
* 获取 MetaBean 未包装实例,非 MetaBeanObject 对象返回自身
*
* 本操作不会返回 null 元素(当输入列表包含空值时,返回列表会丢弃原空值的元素)
*
* @return
*/
public List raw(Collection mbs) {
if (mbs == null) return Collects.immlist();
List result = new ArrayList<>();
for (MetaBean mb : mbs) {
if (mb != null) result.add(mb.raw());
}
return result;
}
/**
* 使用值map 构建生成对应的 MetaBean 对象
*
* @param config
* @param map
* @return
*/
@Nullable
public MetaBean inst(MetaBeanConfig config, Map map) {
if (config == null) return null;
return config.inst(map);
}
/**
* 使用值map 构建生成对应的 MetaBean 对象
*
* @param config
* @param maps
* @return
*/
@Nonnull
public MetaBean[] insts(MetaBeanConfig config, Map[] maps) {
if (config == null) return EMPTY;
return config.insts(maps);
}
/**
* 使用值map 构建生成对应的 MetaBean 对象
*
* @param config
* @param maps
* @return
*/
@Nonnull
public List insts(MetaBeanConfig config, Collection