📄 allprocessor.java
字号:
package com.easyjf.generator;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.persistence.Embedded;import javax.persistence.Entity;import javax.persistence.Id;import org.apache.velocity.context.Context;import com.easyjf.beans.BeanUtils;import com.easyjf.container.annonation.FormPO;import com.easyjf.util.StringUtils;import com.easyjf.web.tools.generator.TemplateProcess;public class AllProcessor implements TemplateProcess { private String beanClass; private String packageName; public String getPackageName() { return packageName; } public void setPackageName(String packageName) { this.packageName = packageName; } public String getBeanClass() { return beanClass; } public void setBeanClass(String beanClass) { this.beanClass = beanClass; } @SuppressWarnings( { "unchecked", "deprecation" }) public void process(Context context) throws Exception { Class bean = Class.forName(getBeanClass()); if (bean.isAnnotationPresent(Embedded.class)) { return; } if (bean != null && bean.isAnnotationPresent(Entity.class)) { String domainName = bean.getSimpleName(); FormPO af =(FormPO)bean.getAnnotation(FormPO.class); context.put("domainLabel", (af!=null&&af.label()!=null)?af.label():domainName); context.put("domainName", domainName); context.put("nowTime", new java.util.Date().toLocaleString()); String domain = domainName.substring(0, 1).toLowerCase() + domainName.substring(1); context.put("domain", domain); List<Map> fields = new ArrayList<Map>(); List<String> complexFields = new ArrayList<String>(); for (Field field : bean.getDeclaredFields()) { if (field.getName().equals("status")) { continue; } if (resovleGenerAnno(field)) { continue; } if (isSimpleType(field.getType())) { fields.add(parseField(field)); } else if (isComplexFields(field.getType())) { complexFields.add(field.getName()); } resovleIdAnno(context, fields, field); resovleEmbed(fields, complexFields, field); } context.put("fields", fields); context.put("complexFields", complexFields); context.put("packageName", packageName); String locath = packageName .substring(packageName.lastIndexOf(".") + 1); context.put("locath", locath); } } @SuppressWarnings("unchecked") private Map parseField(Field field) { Map map = new HashMap(); map.put("name", field.getName()); map.put("lable", field.getName()); com.easyjf.container.annonation.Field af = field .getAnnotation(com.easyjf.container.annonation.Field.class); if (af != null) { if (StringUtils.hasLength(af.name())) map.put("lable", af.name()); } return map; } @SuppressWarnings("unchecked") private void resovleEmbed(List<Map> fields, List<String> complexFields, Field field) { if (field.isAnnotationPresent(Embedded.class)) { for (Field f : field.getType().getDeclaredFields()) { if (field.getName().equals("status")) { continue; } if (resovleGenerAnno(field)) { continue; } if (isSimpleType(f.getType())) { fields.add(parseField(f)); } } complexFields.remove(complexFields.size() - 1); } } private boolean resovleGenerAnno(Field field) { if (field .isAnnotationPresent(com.easyjf.container.annonation.Field.class)) { com.easyjf.container.annonation.Field f = field .getAnnotation(com.easyjf.container.annonation.Field.class); boolean gen = f.gener(); return !gen; } return false; } @SuppressWarnings("unchecked") private void resovleIdAnno(Context context, List<Map> fields, Field field) { if (field.isAnnotationPresent(Id.class)) { fields.remove(fields.size() - 1); String fieldName = field.getName(); fieldName = fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); context.put("id", fieldName); } } @SuppressWarnings("unchecked") private boolean isSimpleType(Class clazz) { if (BeanUtils.isSimpleProperty(clazz)) { return true; } else if (Date.class.isAssignableFrom(clazz)) { return true; } return false; } @SuppressWarnings("unchecked") private boolean isComplexFields(Class clazz) { if (Collection.class.isAssignableFrom(clazz)) { return false; } if (Map.class.isAssignableFrom(clazz)) { return false; } return true; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -