📄 codegenutils.java
字号:
package com.cownew.studio.modelDev.codeGen.hib;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.dom4j.DocumentException;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import com.cownew.studio.Activator;
import com.cownew.studio.modelDev.common.CommonUtils;
import com.cownew.studio.modelDev.common.EntityFieldModelBean;
import com.cownew.studio.modelDev.common.EntityModelBean;
import com.cownew.studio.modelDev.common.EntityModelFileHandler;
import com.cownew.studio.modelDev.common.enumdef.DataTypeEnum;
import com.cownew.studio.modelDev.common.enumdef.LinkTypeEnum;
public class CodeGenUtils
{
/**
* 得到与实体对象bean相关的import语句
* @param bean
* @param project
* @return
*/
public static Set<String> getImports(EntityModelBean bean, IProject project)
{
// 使用Set可以保证import语句中不会有重复项
Set<String> importSet = new HashSet<String>();
importSet.add("java.util.*");
importSet.add("java.sql.*");
importSet.add("java.math.*");
List<EntityFieldModelBean> fieldList = bean.getFieldList();
for (int i = 0, n = fieldList.size(); i < n; i++)
{
EntityFieldModelBean field = fieldList.get(i);
if (field.isLinkProperty() == false
|| CommonUtils.isEmptyString(field.getLinkEntity()))
{
continue;
}
// 添加管理实体的import语句
EntityModelBean linkBean = entityToXMLBean(field.getLinkEntity(),
project);
String linkPackage = linkBean.getPackageName();
if (!CommonUtils.isEmptyString(linkPackage)
&& !linkPackage.equals(bean.getPackageName()))
{
importSet.add(linkPackage + ".*");
}
}
return importSet;
}
/**
* 将实体中定义的数据类型转化为Java中的属性类型
* @param field
* @param nameStrategy
* @param project
* @return
*/
public static String dataTypeToJavaString(EntityFieldModelBean field,
INameStrategy nameStrategy, IProject project)
{
DataTypeEnum dataType = field.getDataype();
if (!field.isLinkProperty())
{
if (dataType == DataTypeEnum.BIGDECIMAL)
return "BigDecimal";
if (dataType == DataTypeEnum.BLOB)
return "Blob";
if (dataType == DataTypeEnum.BOOLEAN)
return "boolean";
if (dataType == DataTypeEnum.CLOB)
return "Clob";
if (dataType == DataTypeEnum.DATE)
return "java.sql.Date";
if (dataType == DataTypeEnum.INTEGER)
return "int";
if (dataType == DataTypeEnum.STRING)
return "String";
throw new IllegalArgumentException();
}
LinkTypeEnum linkType = field.getLinkType();
// ONETOMANY类型的关联字段
if (linkType == LinkTypeEnum.ONETOMANY)
{
return "Set";
}
// ONETOONE和MANYTOONE类型的关联字段翻译成对应的类型
if (linkType == LinkTypeEnum.ONETOONE
|| linkType == LinkTypeEnum.MANYTOONE)
{
EntityModelBean linkBean = entityToXMLBean(field.getLinkEntity(),
project);
return nameStrategy.entityNameToOVName(linkBean.getName());
}
throw new IllegalArgumentException();
}
/**
* 将实体中定义的数据类型转化为数据库类型
* @param field
* @return
*/
public static String dataTypeToDBDef(EntityFieldModelBean field)
{
DataTypeEnum dataType = field.getDataype();
if (!field.isLinkProperty())
{
if (dataType == DataTypeEnum.BIGDECIMAL)
return "big_decimal";
if (dataType == DataTypeEnum.BLOB)
return "blob";
if (dataType == DataTypeEnum.BOOLEAN)
return "boolean";
if (dataType == DataTypeEnum.CLOB)
return "clob";
if (dataType == DataTypeEnum.DATE)
return "date";
if (dataType == DataTypeEnum.INTEGER)
return "int";
if (dataType == DataTypeEnum.STRING)
return "string";
throw new IllegalArgumentException();
}
LinkTypeEnum linkType = field.getLinkType();
if (linkType == LinkTypeEnum.MANYTOONE)
{
return null;
}
if (linkType == LinkTypeEnum.ONETOONE)
{
return "string";
}
throw new IllegalArgumentException();
}
private static EntityModelBean entityToXMLBean(String entity,
IProject project)
{
IFile file = project.getFile(entity);
if (file == null || file.exists() == false)
{
Activator.logErrorMsg("link entity:" + entity + " not exists!");
return null;
}
EntityModelBean linkBean;
try
{
linkBean = EntityModelFileHandler.xmlToBean(file);
} catch (DocumentException e)
{
Activator.logException(e);
return null;
}
return linkBean;
}
/**
* 得到实体modelBean中名称为fieldName的字段的字段对象
* @param modelBean
* @param fieldName
* @return
*/
public static EntityFieldModelBean getFieldModelByName(
EntityModelBean modelBean, String fieldName)
{
List<EntityFieldModelBean> fieldList = modelBean.getFieldList();
for (int i = 0, n = fieldList.size(); i < n; i++)
{
EntityFieldModelBean field = fieldList.get(i);
if (field.getName().equals(fieldName))
{
return field;
}
}
throw new IllegalArgumentException("field:" + fieldName + "not found!");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -