webpumpproject.java

来自「一个eclipse插件源代码。用于web开发」· Java 代码 · 共 757 行 · 第 1/2 页

JAVA
757
字号
/*
 * $Header: /home/cvs/WEBPUMP2.0/WebPumpIDE_Src/WebPumpIDE/src/com/webpump/ui/wizard/WebpumpProject.java,v 1.2 2004/12/29 09:45:31 wang_j Exp $
 * $Revision: 1.2 $
 * $Date: 2004/12/29 09:45:31 $
 *
 * ====================================================================
 *
 * The NanJing HopeRun(IT-FOREST) Software License, Version 2.0.0
 *
 * Copyright 2003-2004 by NanJing HopeRun(IT-FOREST) Information System Co., Ltd, CHINA and
 *                        IT Forest Corporation
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of
 * HopeRun(IT-FOREST) Information System Co., Ltd, CHINA and IT Forest Corporation.
 * You shall not disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into with
 * HopeRun(IT-FOREST) Information System Co., Ltd, CHINA and IT Forest Corporation.
 */
package com.webpump.ui.wizard;

 
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.ResourceBundle;
import java.util.StringTokenizer;
import java.util.Vector;

import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectNature;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceStatus;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.PlatformObject;
import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;

import java.net.URL;

import com.webpump.ui.perspective.WebpumpIDEPlugin;
import com.webpump.ui.util.CreateFileByXSL;

/**
 * the object of Webpump Project
 * 
 * @author wang_j
 * @version 2.0 2004-02-12 
 */
public class WebpumpProject extends PlatformObject implements IProjectNature  {
	
	//属性文??
	private static final String PROPERTIES_FILENAME = ".webpumpplugin";
	
	//根目录?识
	private static final String KEY_ROOTDIR = "rootDir";
	
	//webpump配置页面对?
	private WebpumpNewWizardPage m_objWebpumpNewWizardPage; 
	
	//webpump工程对?	
	protected IProject project;
	
	//Java工程对?
	protected IJavaProject javaProject;
	
	//根目录
	protected String rootDir = "";
	
	//根目录文?夹
	protected IFolder rootDirFolder;

	/**
	 * Gets the project.
	 * @return Returns a IProject
	 */
	public IProject getProject() {
		return project;
	}

	/**
	 * Sets the project.
	 * @param project The project to set
	 */
	public void setProject(IProject project) {
		this.project = project;
	}
	
	/*
	 * @see IProjectNature#getProject()
	 */
	public IJavaProject getJavaProject() {
		return javaProject;
	}

	/*
	 * @see IProjectNature#setProject(IProject)
	 */
	public void setJavaProject(IJavaProject javaProject) {
		this.javaProject = javaProject;
		this.setProject(javaProject.getProject());
	}

	/**
	 * set project's Nature
	 * @param project object of IJavaProject
	 */
	public static void addWebpumpNature(IJavaProject project) {
		try {
			JDTUtil.addNatureToProject(project.getProject(), WebpumpIDEPlugin.NATURE_ID); 	
		} catch(CoreException ex) {
			WebpumpIDEPlugin.log(ex.getMessage());
		}
	}
	
	/**
	 * remove Nature from Project
	 * @param project object of IJavaProject
	 */
	public static void removeWebpumpNature(IJavaProject project) {
		try {
			JDTUtil.removeNatureToProject(project.getProject(), WebpumpIDEPlugin.NATURE_ID); 	
		} catch(CoreException ex) {
			WebpumpIDEPlugin.log(ex.getMessage());
		}
	}

	/**
	 * create WebpumpProject object 
	 * @return WebpumpProject  
	 * Return a WebProject if this javaProject has the tomcat nature
	 * Return null if Project has not tomcat nature
	 */
	public static WebpumpProject create(IJavaProject javaProject) {
        WebpumpProject result = null;
		try {
			result = (WebpumpProject)javaProject.getProject().getNature(WebpumpIDEPlugin.NATURE_ID);
			if(result != null)
				result.setJavaProject(javaProject);
		} catch(CoreException ex) {
			WebpumpIDEPlugin.log(ex.getMessage());
		}
		return result;
	}

	/**
	 * create WebpumpProject object 
	 * @return WebpumpProject  
	 * Return a TomcatProject if this Project has the tomcat nature
	 * Return null if Project has not tomcat nature
	 */
	public static WebpumpProject create(IProject project) {

		IJavaProject javaProject = JavaCore.create(project);
		if(javaProject != null) {
			return WebpumpProject.create(javaProject);
		} else {
			return null;
		}
	}	
	
	/**
	 * read Propertites File
	 * @return File Object
	 */
	private File getPropertiesFile() {
		return (this.getProject().getLocation().append(PROPERTIES_FILENAME).toFile());
	}
	
	/**
	 * get a Propertites from Property By Key 
	 * @param key	Property's index
	 * @return	String Property's Value
	 */
 	private String readProperty(String key) {
		String result = null;
		try {
			result = FileUtil.readPropertyInXMLFile(getPropertiesFile(), key);
		} catch (IOException e) {
			try {
				result = getJavaProject().getCorrespondingResource().getPersistentProperty(new QualifiedName("TomcatProject", key));
			} catch (Exception e2) {
				WebpumpIDEPlugin.log(e2);
			}
		}
		
		if(result == null) {
			result = "";
		}
			
		return result;
	}

	
	/**
	 * Gets the rootDir.
	 * @return Returns a String
	 */
	public String getRootDir() {
		return this.readProperty(KEY_ROOTDIR);
	}	

	/**
	 * Sets the rootDir.
	 * @param rootDir The rootDir to set
	 */
	public void setRootDir(String rd) {
		this.rootDir = rd;
		this.rootDirFolder = null;
	}
	
	/**
	 * get Webpump Wizard Page 
	 * @return WebpumpNewWizardPage webpump wizard Page
	 */
	public WebpumpNewWizardPage getPage()
	{
		return this.m_objWebpumpNewWizardPage; 
	}
	
	/**
	 * set Webpump Wizard Page
	 * @param objWebpumpNewWizardPage
	 */
	public void setPage(WebpumpNewWizardPage objWebpumpNewWizardPage)
	{
		this.m_objWebpumpNewWizardPage = objWebpumpNewWizardPage; 
	}
				
	/**
	 * Create File Struct where wizard finished
	 * Run all the steps to configure a JavaProject as a TomcatProject
	 */
	public void fullConfiguration() throws CoreException, IOException {
		if(!rootDir.equals("")) {
			this.initRootDirFolder(true);	
		}
		
		//创建工程结构文?
		writeProjectFile();
		
		//为Webpump工程加?库导?
		this.addWebpumpJarToProjectClasspath();
		
		//清?默认的源路径				
		this.clearDefaultSourceEntries();
		
		//刷新工程
		this.getProject().refreshLocal(IResource.DEPTH_INFINITE, null);
		
		//根据工程配置?设置源路径
		this.addDefaultSourceEntries();
		

	}

	/**
	 * clear source path  from project classpath
	 * 
	 * @throws CoreException
	 */
	public void clearDefaultSourceEntries()  throws CoreException {
		IClasspathEntry[] entries = javaProject.getRawClasspath();
		List cp= new ArrayList(entries.length + 1);
		for(int i=0; i<entries.length; i++) {
			if(entries[i].getEntryKind() != IClasspathEntry.CPE_SOURCE) {
				cp.add(entries[i]);
			}
		}
		javaProject.setRawClasspath((IClasspathEntry[])cp.toArray(new IClasspathEntry[cp.size()]), null);
	}

	/**
	 * set Source path  to project classpath
	 * @throws CoreException
	 */
	public void addDefaultSourceEntries()  throws CoreException {
		
		Path objPath = null;
		
		String strSitePath = m_objWebpumpNewWizardPage.getSitePath();		
			
		//创建链接文?夹
		IFolder objFolder = this.getProject().getFolder("web_classes");

		objFolder.createLink(new Path(strSitePath).append("WEB-INF/classes"), IResource.ALLOW_MISSING_LOCAL , null);
				
		//判断用户是否设置了直接编?到站?
		if (m_objWebpumpNewWizardPage.getCompileToSite() )
		{		
			objPath =  new Path(getRootDir()+"\\"+this.getProject().getName()+"\\web_classes");
		}
		else
		{
			
			//构建默认class默出路径
			objPath = new Path(getRootDir()+"\\"+this.getProject().getName()+"\\bin");
						

		}
		
		//设置工程输出路径
		javaProject.setOutputLocation(objPath,null);
		
		//取系统模块设置
		Vector  vModuleInfo = m_objWebpumpNewWizardPage.getModuleInfo();
		
		IClasspathEntry[] entries = javaProject.getRawClasspath();		
		List cp= new ArrayList(entries.length + vModuleInfo.size());
		cp.addAll(Arrays.asList(entries));
		
		for (int i = 0; i<vModuleInfo.size();i++)
		{
			//取模块配置信息
			String[] strModuelInfo = (String[])vModuleInfo.elementAt(i);
			
			//设置模块中的src路径为源路径
			IClasspathEntry srcEntry = JavaCore.newSourceEntry(new Path("/"+this.getProject().getName()+"/module/"+strModuelInfo[1]+"/src"));
			cp.add(srcEntry);
						
		}
		 
		javaProject.setRawClasspath((IClasspathEntry[])cp.toArray(new IClasspathEntry[cp.size()]), null);
	}

	/**
	 * Add webpump.jar and jasper.jar to project classpath
	 * @throws CoreException
	 */	
	public void addWebpumpJarToProjectClasspath()  throws CoreException {

		File targetFile = new File(this.getProject().getLocation()+"\\lib\\");
				
		try
		{
			//取插?路径下lib文?夹
			URL prefix = new URL(WebpumpIDEPlugin.getDefault().getDescriptor().getInstallURL(), "lib");		
				
			//复制所有的lib文?
			File sourceFile = new File(Platform.asLocalURL(prefix).getFile());			
			

			FileUtil.copyDir(sourceFile,targetFile);
		}
		catch(Exception e)
		{
			WebpumpIDEPlugin.log(e);
		}
		
		//首先复制文?到工程下
		
		IClasspathEntry[] entries = javaProject.getRawClasspath();
		List cp= new ArrayList(entries.length + 1);
		cp.addAll(Arrays.asList(entries));
			
		File[] files = targetFile.listFiles();
		for(int i=0; i<files.length; i++) {
				if(!files[i].isDirectory()) {
					
					Path objPath = new Path(getRootDir()+"\\"+this.getProject().getName()+"\\lib\\"+files[i].getName());
					cp.add(JavaCore.newLibraryEntry(objPath, null, null,false));
				}
			}


		
		javaProject.setRawClasspath((IClasspathEntry[])cp.toArray(new IClasspathEntry[cp.size()]), null);
        
	}
	

⌨️ 快捷键说明

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