service和dao类代码自动生成工具类

今天对手动创建service和dao类感觉有点烦,于是就想写个类将它们自动生成。好像eclipse有这种插件 ? 我没用过,我觉得还是用自己的好,呵呵。

下面的代码,已经测试过,没问题,我一直在用。有时间的话再给它添加个界面,好像这个也能用ant调用吧。

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 自动生成service和dao类代码的工具类
 * 
 * @author ypqiao
 *
 */
public class AutoGenerateCodeUtil {
	
	/**
	 * 执行方法
	 * @param domainDir domain目录
	 * @param serviceDir service目录
	 * @param daoDir dao目录
	 * @throws IOException
	 */
	public static void execute( File domainDir ,File serviceDir,File daoDir) throws IOException{
		
		// 检查目录是否为空
		if( domainDir == null || serviceDir == null || daoDir == null ) 
			throw new RuntimeException(" no such file ");
		
		// 检查domain目录下是否有文件
		File[] domain_Files = domainDir.listFiles();
		if( domain_Files.length == 0 )
			throw new RuntimeException(" no file in the domain dir ");
		
		
		for( File domain_File :domain_Files ){
			
			// 创建service接口和实现类
			create_interface_and_class_File(domain_File,serviceDir,"service");
			
			// 创建dao接口和实现类
			create_interface_and_class_File(domain_File,daoDir,"dao");
		}
		
	}

	
	/**
	 * 在指定的目录下创建domain相应的接口和实现类
	 * @param domain_class_File 
	 * @param targetDir
	 * @param type 分为service和dao两种
	 * @throws IOException
	 */
	private static void create_interface_and_class_File(File domain_class_File,
			File targetDir,String type) throws IOException {
		
		String interface_file_suffix_Name = null;
		String interface_impl_file_suffix_Name = null;
		
		if( "service".equals(type)){
			interface_file_suffix_Name = "Service.java";
			interface_impl_file_suffix_Name = "ServiceImpl.java";
		} else if("dao".equals(type)){
			interface_file_suffix_Name = "Dao.java";
			interface_impl_file_suffix_Name = "DaoImpl.java";
		}
		
		
		// 检查impl目录是否村子啊,若不存在则创建该目录
		File implDir = null;
		for( File temp : targetDir.listFiles()){
			if( temp != null && "impl".equals(temp.getName())){
				implDir = temp;
				break;
			}
		}
		
		if( implDir == null ){
			implDir = new File(targetDir,"impl");
			implDir.mkdir();
		}
		
		// 创建接口文件
		String domain_interface_file_Name = domain_class_File.getName()
				.substring(0, domain_class_File.getName().indexOf("."))
				+interface_file_suffix_Name;
		
		File domain_interface_File = new File(targetDir,domain_interface_file_Name);
		domain_interface_File.createNewFile();
		
		// 输入接口文件内容
		BufferedWriter interfaceWriter  = new BufferedWriter(
				new FileWriter(domain_interface_File));
		
		String interfacePackageInfo = StringUtil.getPackageInfo(domain_interface_File);
		String interfaceInfo = StringUtil.getInterfaceInfo(domain_interface_File);
		
		interfaceWriter.write(interfacePackageInfo);
		interfaceWriter.write(interfaceInfo);
		
		interfaceWriter.flush();
		interfaceWriter.close();
		
		
		// 创建实现类文件
		String domain_interface_impl_file_Name = domain_class_File.getName()
				.substring(0, domain_class_File.getName().indexOf("."))
				+interface_impl_file_suffix_Name;
		
		File domain_interface_impl_file = new File(implDir,domain_interface_impl_file_Name);
		domain_interface_impl_file.createNewFile();
		
		// 输入实现类文件内容
		BufferedWriter implWriter  = new BufferedWriter(
				new FileWriter(domain_interface_impl_file));
		
		String classPackageInfo =  StringUtil.getPackageInfo(domain_interface_impl_file);;
		String importInfo = StringUtil.getImportInfo(domain_interface_File);
		String classInfo = StringUtil.getClassInfo(domain_interface_impl_file,
				domain_interface_File);
		
		implWriter.write(classPackageInfo);
		implWriter.write(importInfo);
		implWriter.write(classInfo);
		implWriter.flush();
		implWriter.close();
	}
	
}


class StringUtil {
	
	/** 定义一个类Java文件的包信息 **/
	public static String getPackageInfo( File javaFile ){
		StringBuilder sb = new StringBuilder();
		sb.append("package ");
		
		String parentFilePath = javaFile.getParentFile().getPath();
		String packageStr = parentFilePath.substring(parentFilePath.indexOf("src\\")+4,
				parentFilePath.length());
		sb.append(packageStr.replace('\\', '.'));
		
		sb.append(";");
		sb.append("\n\n\n");
		
		return sb.toString();
	}
	
	
	/** 定义一个接口文件的接口信息 **/
	public static String getInterfaceInfo( File domain_interface_File ){
		StringBuilder sb = new StringBuilder();
		sb.append("public interface ");
		
		String interface_Name = domain_interface_File.getName()
				.substring(0,domain_interface_File.getName().indexOf("."));
		sb.append(interface_Name);
		
		sb.append(" {");
		sb.append("\n\n}");
		
		return sb.toString();
	}
	
	/** 定义一个类文件的类信息 **/
	public static String getClassInfo( File domain_interface_impl_File,File domain_interface_File ){
		StringBuilder sb = new StringBuilder();
		sb.append("public class ");
		
		String class_Name = domain_interface_impl_File.getName()
				.substring(0,domain_interface_impl_File.getName().indexOf("."));
		sb.append(class_Name);
		
		
		sb.append(" implements ");
		
		String interface_Name = domain_interface_File.getName()
				.substring(0,domain_interface_File.getName().indexOf("."));
		sb.append(interface_Name);
		
		sb.append(" {");
		sb.append("\n\n}");
		
		return sb.toString();
	}
	
	
	/** 定义一个类文件文件的import信息 **/
	public static String getImportInfo(File domain_interface_File){
		StringBuilder sb = new StringBuilder();
		sb.append("import ");
		
		String importStr = getPackageInfo(domain_interface_File).substring( getPackageInfo(domain_interface_File).indexOf("package")+8,getPackageInfo(domain_interface_File).indexOf(";"))
				+"."
				+domain_interface_File.getName().substring(0,domain_interface_File.getName().indexOf("."));
		sb.append(importStr);
		
		sb.append(";");
		sb.append("\n\n\n");
	
		return sb.toString();
		
	}
    	

}





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值