⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 codegenwizard.java

📁 基于eclipse的工具开发代码
💻 JAVA
字号:
package com.cownew.studio.modelDev.wizards;

import java.lang.reflect.InvocationTargetException;
import java.util.Iterator;
import java.util.Set;

import org.dom4j.DocumentException;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;

import com.cownew.studio.modelDev.codeGen.CodeGenException;
import com.cownew.studio.modelDev.codeGen.IEntityModelCodeGenerator;
import com.cownew.studio.modelDev.common.CommonUtils;
import com.cownew.studio.modelDev.common.EntityModelBean;
import com.cownew.studio.modelDev.common.EntityModelFileHandler;
import com.cownew.studio.modelDev.common.ModeValidateException;
import com.cownew.studio.modelDev.common.MsgBox;

public class CodeGenWizard extends Wizard
{
	private IStructuredSelection structSelect;

	private CodeGenOptionWizardPage codeGenOptionPage;

	private IPackageFragmentRoot targetSrcFolder;

	private boolean isOverrieExistsFile;

	private IEntityModelCodeGenerator codeGen;

	public CodeGenWizard(IStructuredSelection structSelect)
	{
		super();
		this.structSelect = structSelect;
	}

	@Override
	public void addPages()
	{
		super.addPages();
		codeGenOptionPage = new CodeGenOptionWizardPage(
				"Select new file container", structSelect);
		addPage(codeGenOptionPage);

	}

	@Override
	public boolean performFinish()
	{
		targetSrcFolder = codeGenOptionPage.getPackageFragmentRoot();
		isOverrieExistsFile = codeGenOptionPage.isOverrideExistsFile();
		codeGen = codeGenOptionPage.getCodeGenerator();

		try
		{
			processFiles();

		} catch (CoreException e)
		{
			CommonUtils.handleException(e);
			return false;
		} catch (InvocationTargetException e)
		{
			CommonUtils.handleException(e);
			return false;
		} catch (InterruptedException e)
		{
			CommonUtils.handleException(e);
			return false;
		}

		codeGenOptionPage.saveConfig();
		return true;
	}

	private void processFiles() throws CoreException,
			InvocationTargetException, InterruptedException
	{
		final Set<IFile> allFiles = CommonUtils
				.getAllFiles(structSelect, "emf");

		IRunnableWithProgress op = new IRunnableWithProgress() {
			public void run(IProgressMonitor monitor)
					throws InvocationTargetException
			{
				try
				{
					doFinish(allFiles, monitor);
				} catch (DocumentException e)
				{
					CommonUtils.handleExceptionAndAbort(e);
				} catch (CodeGenException e)
				{
					CommonUtils.handleExceptionAndAbort(e);
				} finally
				{
					monitor.done();
				}
			}
		};
		getContainer().run(true, true, op);
	}

	protected void doFinish(Set<IFile> allFiles, IProgressMonitor monitor)
			throws CodeGenException, DocumentException
	{
		monitor.beginTask("generate code", allFiles.size());

		codeGen.setIsOverrieExistsFile(isOverrieExistsFile);
		codeGen.setTargetSourceFolder(targetSrcFolder);

		Iterator<IFile> iterator = allFiles.iterator();
		int i = 0;
		while (iterator.hasNext())
		{
			IFile file = iterator.next();
			EntityModelBean bean = EntityModelFileHandler.xmlToBean(file);
			try
			{
				codeGen.generateCode(bean);
			} catch (ModeValidateException e)
			{
				MsgBox.showError(getShell(), e.getMessage());
				return;
			}
			monitor.worked(++i);
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -