All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sagacity.quickvo.QuickVOStart Maven / Gradle / Ivy

The newest version!
package org.sagacity.quickvo;

import static java.lang.System.out;

import java.util.logging.Logger;

import org.sagacity.quickvo.config.XMLConfigLoader;
import org.sagacity.quickvo.model.ConfigModel;
import org.sagacity.quickvo.utils.FreemarkerUtil;
import org.sagacity.quickvo.utils.LoggerUtil;

/**
 * @project sagacity-quickvo
 * @description 快速从数据库生成VO以及VO<-->PO 映射的mapping工具
 * @author zhongxuchen
 * @version v2.0,Date:2009-04-15
 */
public class QuickVOStart {
	private static Logger logger = null;

	/**
	 * 开始生成文件
	 * 
	 * @throws Exception
	 */
	public void doStart() {
		logger = LoggerUtil.getLogger();
		try {
			out.println("\n\n=========    welcome use sagacity-quickvo-5.2.4     ==========");
			out.println("/*----友情提示: 遇到问题请关注日志提示,最常见错误有3个:     -----------------------*/\n"
					+ "/*-1、没有匹配到表: 检查 include 正则表达式配置是否正确        \n"
					+ "/*-2、没有匹配到表: 检查 schema和catalog配置是否正确(含大小写),可尝试去除schema、catalog配置项     \n"
					+ "/*-3、VO中字段出现重复字段,错误就是schema和catalog配置问题,没有隔离不同schema   \n"
					+ "/*---------------------------------------------------------------*/\n\n ");
			Thread.sleep(1500);

			// 解析配置文件
			ConfigModel configModel = XMLConfigLoader.parse();
			TaskController.setConfigModel(configModel);
			// 创建vo和vof
			TaskController.create();
			FreemarkerUtil.destory();
			// 发生表字段重复现象
			if (Constants.hasRepeatField) {
				Thread.sleep(1000);
				logger.info("\n\n\n/*------------任务已结束,生成的VO对象中有重复字段致命性错误,具体原因:---------------------------*/\n"
						+ "/*-  就是datasource中的schema 和 catalog 配置问题,导致在多用户多实例环境下隔离不正确!\n"
						+ "/*--------------------------处理协助----------------------------------\n"
						+ "/*-1、比如mysql场景下可以设置schema和catalog的值一致进行尝试!\n"
						+ "/*-2、datasource中是可以配置schema和catalog属性的,如果没有可以自行调整和尝试赋值(不同数据库一般跟用户名,库名、tablespace等相关)!\n"
						+ "/*-3、取表字段的内部原理:conn.getMetaData().getColumns(catalog, schema, tableName, \"%\");\n"
						+ "/*-------------------------------------------------------------*/");
				Thread.sleep(10000);
			} else {
				logger.info("成功完成vo以及vo<-->po映射类的生成!");
			}
		} catch (ClassNotFoundException e) {
			logger.info("数据库驱动加载失败!请将数据库驱动jar文件放到当前目录libs目录下!" + e.getMessage());
		} catch (Exception e) {
			logger.info(e.getMessage());
		}
	}

	/**
	 * 主调度控制
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		QuickVOStart quickStart = new QuickVOStart();
		if (args != null && args.length > 0) {
			Constants.QUICK_CONFIG_FILE = args[0];
		}
		String baseDir;
		if (args != null && args.length > 1) {
			baseDir = args[1];
		} else {
			baseDir = System.getProperty("user.dir");
		}
		Constants.BASE_LOCATE = baseDir;
		// 代码调试时使用(真实场景不起作用,注意pom中要增加对应数据库驱动才可以运行)
		if (args == null || args.length == 0) {
			Constants.BASE_LOCATE = "D:\\personal\\sqltoy\\sqltoy-postgresql\\tools\\quickvo";
			Constants.QUICK_CONFIG_FILE = "quickvo.xml";
		}
		// 开始根据数据库产生VO文件
		quickStart.doStart();
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy