import java.io.File;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ijwt.element.Global;
import com.ijwt.element.Table;
/**
* @author InJavaWeTrust
*/
public enum UtilFile {
INSTANCE;
private static Logger log = LoggerFactory.getLogger(UtilFile.class);
/**
* 创建目录
* @param path 需要生成的目录
*/
public void createDir(String path) {
if(StringUtils.isNotEmpty(path)) {
File folder = new File(path);
boolean tof = folder.mkdirs();
if (tof) {
log.info("---->目录[{}]创建成功!!!", folder.getName());
} else {
log.info("---->目录[{}]创建失败或已存在!!!", folder);
}
}
}
/**
* 初始化目录
* @param global
*/
public void initDirName(Global global) {
// 1.po
String poDir = global.getOsdir() + File.separatorChar + "po";
createDir(poDir);
// 2.xml
String xmlDir = global.getOsdir() + File.separatorChar + "xml";
createDir(xmlDir);
}
public void generateTableFile(Global global) {
log.info("------------------生成表文件开始------------------");
List<Table> tableList = UtilXML.INSTANCE.getTableList();
for (Table table : tableList) {
String tableName = table.getTableName();
log.info("----> [{}] 表", tableName);
//校验从xml配置文件中得到的表名是否存在于当前数据中
if (!UtilDB.getAllTableName().contains(tableName)) {
log.warn("=====>当前数据库不包含此 [{}] 表,请检查配置!!!", tableName);
continue;
}
String javaClassName = UtilString.INSTANCE.capitalize(UtilString.INSTANCE.columnNameToJavaName(tableName));
Map<Object, Object> map = UtilFreemarker.INSTANCE.getTableInfo(tableName);
map.put("author", global.getAuthor());
map.put("project", global.getProject());
map.put("className", javaClassName);
map.put("javapackage", global.getJavapackage());
// 1.po
String poName = global.getOsdir() + File.separatorChar + "po" + File.separatorChar + javaClassName + "PO.java";
UtilFreemarker.INSTANCE.generateFile(poName, "javapo.ftl", map);
// 2.xml
String mapperName = global.getOsdir() + File.separatorChar + "xml" + File.separatorChar + javaClassName + ".xml";
UtilFreemarker.INSTANCE.generateFile(mapperName, "mapper.ftl", map);
}
}
}