/**
* Bean的转换类
* 会将形如APP_INFO_SERVICE的字符串转换成T类型appInfoService
* Created by hollis on 15/7/21.
*/
public class BeanTransverter implements BeanFactoryAware {
private BeanFactory beanFactory;
/**
* 获取类型为clazz,beanId为enumName(A_BEAN -> aBean)的Bean。
* @param enumName
* @return
*/
public T getBean(String enumName) {
String beanName = toBeanName(enumName);
return (T) beanFactory.getBean(beanName);
}
private String toBeanName(String enumName) {
String lowerCase = enumName.toLowerCase();
String replacedStr = StringUtils.replace(lowerCase, "_", " ");
String capitaliseAllWords = StringUtils.capitaliseAllWords(replacedStr);
String[] parts = StringUtils.split(capitaliseAllWords, " ");
String join = StringUtils.join(parts, "");
return StringUtils.uncapitalise(join);
}
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}
}
/**
* @author hollis
*/
public class LabelItemProcessor implements ItemProcessor> {
private BeanTransverter beanTransverter;
public List process(AppinfoDO item) throws Exception {
List appLabelDOs = new ArrayList();
for(LabelItemEnum labelItem : LabelItemEnum.values()){
LabelMarker labelMarker = beanTransverter.getBean(labelItem.toString());
AppLabelDO appLabelDO = labelMarker.marking(item);
if(StringUtils.isNotBlank(appLabelDO.getLabelName())){
appLabelDOs.add(appLabelDO);
}
}
return appLabelDOs;
}
public void setBeanTransverter(BeanTransverter beanTransverter) {
this.beanTransverter = beanTransverter;
}
}