eclipse 自动生成代码插件开发

1、new file 选择plug-in Project 输入projectName next 最后选择plug-in with a popup menu finish。

2.调用eclipse插件接口 实现自己代码生成功能,具体

package com.th.generator.popup.actions;

import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.eclipse.core.internal.resources.WorkspaceRoot;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.osgi.service.datalocation.Location;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IActionDelegate;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;

public class TemplateAddAction implements IObjectActionDelegate {

	private Shell shell;
	private ISelection selection;

	/**
	 * Constructor for Action1.
	 */
	public TemplateAddAction() {
		super();
	}

	/**
	 * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
	 */
	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
		shell = targetPart.getSite().getShell();
	}

	/**
	 * @see IActionDelegate#run(IAction)
	 */
	public void run(IAction action) {
		// MessageDialog.openInformation(shell, "Generator", "代码生成 was executed.");
		IStructuredSelection structured = (IStructuredSelection) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService()
				.getSelection("org.eclipse.jdt.ui.PackageExplorer");
		Object element = structured.getFirstElement();
		// Object element2 = ((IStructuredSelection) selection).getFirstElement();
		String packageName = element.toString();

		FileDialog dialog = new FileDialog(shell, SWT.OPEN);
		dialog.setText("模板选择");
		dialog.setFilterExtensions(new String[] { "*.*", "*.xml", "*.txt", "*.asmx" });
		String filePath = dialog.open();
		if (dialog != null) {

			// java.io.File file = new java.io.File(filePath);
			InputStream in = null;
			Properties p = null;
			try {
				in = new BufferedInputStream(new FileInputStream(filePath));
				p = new Properties();
				p.load(in);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			try {
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}

			String url = p.getProperty("url");
			String user = p.getProperty("user");
			String password = p.getProperty("password");
			String driverClassName = p.getProperty("driverClassName");
			String tableName = p.getProperty("tableName");
			String templatePath = p.getProperty("templatePath");
			String templatName = p.getProperty("templatName");

			ReflectDataBase cjb = new ReflectDataBase(url, user, password, driverClassName, tableName);
			try {
				// cjb.getColumn();

				//eclipse工作空间路径
				Location work = Platform.getInstanceLocation();
				String url2 = work.getURL().getPath();
				
				String eclipseRoot = Platform.getInstallLocation().getURL().toString();
				eclipseRoot = eclipseRoot.replace("file:/", "");
				String outPath = url2 + getProjectPath(packageName) + "sql/";

				//String workSpace = Platform.getInstanceLocation().getURL().getPath();
				//IWorkspace workspace = ResourcesPlugin.getWorkspace();
				//WorkspaceRoot root = (WorkspaceRoot) workspace.getRoot();
				
//				java.io.File f = new java.io.File("D:/Tips.txt");
//				BufferedWriter bw = new BufferedWriter(new FileWriter(f));
//				bw.write("realPath" + outPath);
//				bw.flush();
//				bw.close();
				
				//packageName = packageName.replace(" [in src [in fdfdf]]", "");
				String objectName = CreateJavaBean.toUpperStrIndex(BeanHump.underlineToCamel(tableName));
				
				packageName = packageName.substring(0,packageName.indexOf('[')-1) + ".domain";
				
				CreateMapperXml.createXml(objectName, packageName + "." + objectName, tableName, cjb, templatePath, templatName, outPath);

			} catch (Exception e) {
				e.printStackTrace();
			}

			System.out.println("执行成功...");

		}

	}

	/**
	 * @see IActionDelegate#selectionChanged(IAction, ISelection)
	 */
	public void selectionChanged(IAction action, ISelection selection) {
		this.selection = selection;
	}

	public static String getProjectPath(String path) {
		String packName = path.substring(0, path.indexOf('[') - 1);
		path = path.substring(path.indexOf('['), path.length() - 1);
		path = path.replace("[in ", "");
		path = path.replace("]", "");
		System.out.println("path" + path);
		String[] ss = path.split(" ");
		return ss[1] + "/" + ss[0] + "/" + packName.replace(".", "/") + "/";
	}
	

}

properties配置:

url=jdbc:oracle:thin:@127.0.0.1:1521:ccip
user=test
password=test
driverClassName=oracle.jdbc.driver.OracleDriver
tableName=T_MM_CHECK
templatePath=D:/myXml/
templatName=myXmlFtl.ftl


最后右键 需要生成代码xml的package

会在package的sql文件处 生成mapper.xml

猜你喜欢

转载自blog.csdn.net/u013278314/article/details/80360779