/**
* Step 1:根据beanExcelPath路径,导入所有Bean到beans
*/
private void importBeans() {
Bean bean = null;
//获取页签个数,从第二个页签开始,每个页签为一个bean
int sum = this.hssfWorkbook.getNumberOfSheets();
for (int excelBeanIndex = 1; excelBeanIndex < sum; excelBeanIndex++) {
//将页签内容解析生成bean
bean = importBean(excelBeanIndex);
beans.add(bean);
}
}
private Bean importBean(int excelBeanIndex) {
Bean bean = null;
String beanName = null;
String beanNote = null;
String since = null;
String version = null;
String author = null;
List<Parameter> parameters = new ArrayList<Parameter>();
Parameter parameter = null;
String parameterName = null;
String parameterNote = null;
String parameterClazz = null;
int beginParameter = 1;
hssfSheet=hssfWorkbook.getSheetAt(excelBeanIndex);
beanName = hssfWorkbook.getSheetName(excelBeanIndex);
beanNote = cellValue(0, 1);
since = Util.date2String(new Date(), "yyyy/MM/dd");
version = cellValue(0, 3);
author = cellValue(0, 4);
while (true) {
parameterName = cellValue(beginParameter+1, 0);
if (Util.isNullOrEmpty(parameterName))
break;
parameterNote = cellValue(beginParameter+1, 4);
// TODO 数据库字段类型转换成java基本类型
parameterClazz = cellValue(beginParameter+1, 1);
parameter = new Parameter(parameterName, parameterNote,
parameterClazz);
parameters.add(parameter);
beginParameter++;
}
bean = new Bean(beanName, beanNote, since, version, author, parameters);
return bean;
}
/**
* Step 2:根据模板地址,返回模板的字符串
* @param templatePath 某一个模板地址
* @return 读出模板的所有字符
*/
private String importTemplate(String templatePath, Bean bean) {
String s, temp = new String(), result = new String();
try {
bufferedReader = new BufferedReader(new FileReader(templatePath));
while ((s = bufferedReader.readLine()) != null) {
if (s.indexOf(PARAMETER_FOR_BEGIN) > 0) {
while (true) {
s = bufferedReader.readLine();
if (s == null || s.indexOf(PARAMETER_FOR_END) > 0)
break;
temp += s + "\n";
}
result += convertBean(temp, bean);
temp = "";
} else {
result += convert(s, bean) + "\n";
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
private String convertBean(String s, Bean bean) {
String result = "";
String temp;
List<Parameter> parameters = bean.getParameters();
for (Parameter parameter : parameters) {
temp = s;
result += converParameter(temp, parameter);
}
return result;
}
分享到:
相关推荐
cglib 动态代理 完整代码
generator 是一个 Java 实用程序,用于从 DataBase 生成 Java bean,以自动创建基于数据库的小应用程序,不需要很大的持久性问题
直接输入java SqlToBean会出现如下帮助信息:H:BeanGenerator>java SqlToBean/**@author godblessyou@Date: 2005-05-06@OICQ: 345343747@param s:sourceFile "demo.sql" NaviCat导出的sql脚本文件,最好与...
包括系统管理后台和前端动态网页的设计搭建。系统管理后台提供给俱乐部员工使用,可以对俱乐部的课程、器材、房间等进行管理维护;前端网页主要提供给消费者使用,可以在线浏览课程、预约上课等。 技术栈:JavaScript,Mysql 数据库,JSP、tomcat、HTML、CSS。
tomcat安装及配置教程 Tomcat安装配置基础详细教程讲解.docx
51单片机智能百叶窗项目
PHP课程网站络管理系统
2023年上半年度TikTok行业白皮书电子版.zip
卡尔曼滤波算法 扩展卡尔曼滤波(Extended Kalman Filter, EKF)是卡尔曼滤波的一种扩展,用于解决非线性系统的状态估计问题。EKF通过局部线性化非线性函数来近似非线性系统的行为,从而应用标准的卡尔曼滤波算法。下面是一个简单的扩展卡尔曼滤波算法的Python实现示例,以及对其核心步骤的解读。 ### Python代码实现 ```python import numpy as np def ekf(x, P, measurement_func, measurement_jacobian, control_input=None, control_jacobian=None, measurement=None, R=None, Q=None): """ 扩展卡尔曼滤波算法实现 参数: x: 上一时刻的状态估计值,维度为(n,)的np.array P: 上一时刻的协方差矩阵,维度为(n,n)的np.array measurement_func: 非线性测量模型函数,输入状态输出测量值 measureme
tomcat安装及配置教程
《2022_电商出海营销白皮书》.zip
Python课设-学生信息管理系统
适合塑胶类产品设计:内容1:自攻螺丝塑胶孔设计,塑胶螺丝孔设计尺寸要求,十二种经典的螺栓防松设计,螺纹及螺纹连接件 ,螺丝柱设计,螺丝制作工艺及设计准则详述.,螺丝与塑胶柱的基本设计要求,螺丝设计选用规范,螺丝设计标准解析,螺丝孔设计标准,螺丝及塑胶螺丝柱的设计.,螺丝标准,螺丝柱设计,等
1、QT界面布局学习 2、Custom Plot组件学习 3、Custom Plot组件示例 4、Custom Plot组件二次开发
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
TikTok直播运营分享1_20231126105338.zip
目前为止几乎包含 Service Tool 工具的所有版本,支持CANON目前为止的所有型号
FPGA Verilog PLL锁相环 FIFO同步 ip核调用 仿真工程 FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,允许用户根据设计需求配置其内部逻辑。在FPGA中,Verilog是一种硬件描述语言,用于编写数字电路的逻辑设计。PLL(Phase-Locked Loop)是FPGA中常用的一种频率合成技术,它通过锁定相位来同步不同信号源,常用于时钟管理和频率分频。 锁相环(PLL)在Verilog中实现通常包括电压控制振荡器(VCO)、分频器、鉴相器和低通滤波器等模块。PLL设计的关键在于调整这些模块参数,以达到所需的输出频率和相位关系。 FIFO(First-In-First-Out)是一种常用的存储结构,用于在不同时钟域之间传递数据,解决时钟域间的同步问题。在FPGA设计中,FIFO的Verilog实现会涉及到读写指针管理和深度控制,确保数据的正确存取。 在FPGA设计中,经常需要调用预定义的IP(Intellectual Property)核,如PLL和FIFO IP,这些核由供应商提供,经过验证,可以直接集成到设计中。
《2023_TikTok_for_Business_社群电商爆品营销白皮书》.zip
高校思想政治理论课教师研究专项教学方法改革择优推广项目.doc