5692/MyBatisGenerator

/src/main/java/com/mybatis/generator/core/exception/GeneratorException.java
package com.mybatis.generator.core.util;

import java.io.File;
import java.io.FilenameFilter;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

/**
* 文件操作工具类
*
* @author wq
*/
public class FileUtil {

/**
* 获取指定目录下所有文件
*
* @param dirPath 目录路径
* @return 文件列表
*/
public static List<File> getAllFileList(String dirPath) {
List<File> fileLists = new ArrayList<>();
File dir = new File(dirPath);
if (!dir.exists()) {
throw new IllegalArgumentException("指定的目录不存在: " + dirPath);
}

File[] files = dir.listFiles();
if (files == null) {
throw new IllegalArgumentException("指定的目录不是有效目录: " + dirPath);
}

for (File file : files) {
if (file.isFile()) {
fileLists.add(file);
}
}

return fileLists;
}

/**
* 获取指定目录下指定扩展名的所有文件
*
* @param dirPath 目录路径
* @param extName 扩展名
* @return 文件列表
*/
public static List<File> getFilesByExt(String dirPath, String extName) {
List<File> fileLists = new ArrayList<>();
File dir = new File(dirPath);
if (!dir.exists()) {
throw new IllegalArgumentException("指定的目录不存在: " + dirPath);
}

File[] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(extName);
}
});

if (files == null) {
throw new IllegalArgumentException("指定的目录不是有效目录: " + dirPath);
}

for (File file : files) {
if (file.isFile()) {
fileLists.add(file);
}
}

return fileLists;
}

/**
* 将指定目录下的所有文件复制到目标目录下
*
* @param sourceDir 源目录
* @param targetDir 目标目录
*/
public static void copyAllFile(String sourceDir, String targetDir) {
File sourceDirFile = new File(sourceDir);
File targetDirFile = new File(targetDir);

if (!targetDirFile.exists()) {
targetDirFile.mkdirs();
}

File[] files = sourceDirFile.listFiles();
if (files == null) {
throw new IllegalArgumentException("指定的目录不是有效目录: " + sourceDir);
}

for (File file : files) {
File targetFile = new File(targetDir + File.separator + file.getName());
if (file.isFile()) {
copyFile(file, targetFile);
}
}
}

/**
* 将指定文件复制到目标目录下
*
* @param sourceFile 源文件
* @param targetFile 目标文件
*/
public static void copyFile(File sourceFile, File targetFile) {
try {
InputStream in = new java.io.FileInputStream(sourceFile);
OutputStream out = new java.io.FileOutputStream(targetFile);

byte[] buffer = new byte[1024 * 4];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}

out.flush();
out.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 根据指定的文件名过滤器获取指定目录下所有文件
*
* @param dirPath 目录路径
* @param filter 文件名过滤器
* @return 文件列表
*/
public static List<File> getAllFileList(String dirPath, FilenameFilter filter) {
List<File> fileLists = new ArrayList<>();
File dir = new File(dirPath);
if (!dir.exists()) {
throw new IllegalArgumentException("指定的目录不存在: " + dirPath);
}

File[] files = dir.listFiles(filter);
if (files == null) {
throw new IllegalArgumentException("指定的目录不是有效目录: " + dirPath);
}

for (File file : files) {
if (file.isFile()) {
fileLists.add(file);
}
}

return fileLists;
}
}

/src/main/java/com/mybatis/generator/core/impl/GeneratorServiceImpl.java
package com.mybatis.generator.core.service.impl;

import com.mybatis.generator.core.dao.GeneratorDao;
import com.mybatis.generator.core.entity.Generator;
import com.mybatis.generator.core.exception.GeneratorException;
import com.mybatis.generator.core.service.GeneratorService;
import com.mybatis.generator.core.util.DateUtil;
import com.mybatis.generator.core.util.FileUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.File;
import java.util.List;

/**
* 生成器业务实现类
*
* @author wq
*/
@Service
public class GeneratorServiceImpl implements GeneratorService {

@Autowired
private GeneratorDao generatorDao;

@Override
public Generator generate(Generator generator) {
String generatorId = generator.getId();
String generatorName = generator.getGeneratorName();
String generatorType = generator.getGeneratorType();
String generatorPath = generator.getGeneratorPath();
String generatorSqlPath = generator.getGeneratorSqlPath();
String generatorControllerPath = generator.getGeneratorControllerPath();

// 检