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 + -
显示快捷键?