webpumpproject.java

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

JAVA
757
字号
	/**
	 * get the project's root direct
	 * @return IFolder
	 */
	public IFolder getRootDirFolder() {
		if (rootDirFolder == null) {
			this.initRootDirFolder(false);
		}
		return rootDirFolder;
	}
	
	/**
	 * init Root direct
	 * @param create boolean
	 * @return IFolder
	 */
	private IFolder initRootDirFolder(boolean create) {
		StringTokenizer tokenizer = new StringTokenizer(this.getRootDir(), "/\\:");
		IFolder folder = null;
		try {
			while (tokenizer.hasMoreTokens()) {
				String each = tokenizer.nextToken();
				if (folder == null) {
					folder = project.getFolder(each);
				} else {
					folder = folder.getFolder(each);
				}
				if (create) {
					this.createFolder(folder);
				}
			}
		} catch (CoreException ex) {
			WebpumpIDEPlugin.log(ex);
			folder = null;
			setRootDir("/");
		}
		this.rootDirFolder = folder;
		return folder;
	}
    
	/**
	 * create a new folder
	 * @param folderHandle
	 * @throws CoreException
	 */
	private void createFolder(IFolder folderHandle)  throws CoreException {		
		try {
			// Create the folder resource in the workspace
			folderHandle.create(false, true, null); //new SubProgressMonitor(monitor, 500));
		}
		catch (CoreException e) {
			// If the folder already existed locally, just refresh to get contents
			if (e.getStatus().getCode() == IResourceStatus.PATH_OCCUPIED)
				folderHandle.refreshLocal(IResource.DEPTH_INFINITE, null); //new SubProgressMonitor(monitor, 500));
			else
				throw e;
		}
	}
    
    /**
     * write new project file to plugin's xsl direct
     * @return boolean
     * @throws CoreException
     */
    private boolean writeProjectFile() throws CoreException{
        
        StringBuffer strBuffer = new StringBuffer();
		//取工程基本信息
		String[] strProjectInfo = m_objWebpumpNewWizardPage.getProjectInfo();        
		strBuffer.append("<?xml version=\"1.0\" encoding=\""+WebpumpIDEPlugin.filterXML(strProjectInfo[1])+"\"?>\n");	
        strBuffer.append("<project name=\"");
		strBuffer.append(WebpumpIDEPlugin.filterXML(this.getProject().getName()));
				
		//取系统的资源属性
		ResourceBundle bundle = WebpumpIDEPlugin.getDefault().getResourceBundle();
		String strLanguage = bundle.getLocale().getLanguage(); 		
		
		strBuffer.append("\" language = \"");		
		
		strBuffer.append(strLanguage);		
		strBuffer.append("\">\n\n");
        
        //取工程基本信息
        String[] strProjectInfo = m_objWebpumpNewWizardPage.getProjectInfo();
        
		strBuffer.append("\t<version>");
		strBuffer.append(WebpumpIDEPlugin.filterXML(strProjectInfo[0]));
		strBuffer.append("</version>\n");
		      
		strBuffer.append("\t<path>");
		strBuffer.append(WebpumpIDEPlugin.filterXML(this.getProject().getLocation().toString()));
		strBuffer.append("</path>\n");
		
		strBuffer.append("\t<charset>");
		strBuffer.append(WebpumpIDEPlugin.filterXML(strProjectInfo[1]));
		strBuffer.append("</charset>\n");
		

		
				
		strBuffer.append("\t<description>");
		strBuffer.append(WebpumpIDEPlugin.filterXML(strProjectInfo[3]));
		strBuffer.append("</description>\n\n");

        
		Vector vModuleInfo =  m_objWebpumpNewWizardPage.getModuleInfo();
		         
		String[] strDefaultModuleInfo = (String[])vModuleInfo.elementAt(0); 
         //取模块配置信息        
        strBuffer.append("\t<module-list default=\""+strDefaultModuleInfo[1]+"\">\n");     

        
        for (int i = 0;i<vModuleInfo.size();i++)
        {
        	String[] strModuleInfo = (String[])vModuleInfo.elementAt(i);
        	
			strBuffer.append("\t\t<module");
			
			strBuffer.append(" name=\"");
			strBuffer.append(WebpumpIDEPlugin.filterXML(strModuleInfo[0]));
			strBuffer.append("\"");
			
			strBuffer.append(" path=\"");
			strBuffer.append(WebpumpIDEPlugin.filterXML(strModuleInfo[1]));
			strBuffer.append("\"");
			
			strBuffer.append(" description=\"");
			strBuffer.append(WebpumpIDEPlugin.filterXML(strModuleInfo[2]));
			strBuffer.append("\">\n");
			strBuffer.append("\t\t\t<config-extends><![CDATA[\n");			
			strBuffer.append(getModuleConfigExtends(strModuleInfo[1],strDefaultModuleInfo[1]));
			strBuffer.append("\t\t\t\t]]>\n");
			strBuffer.append("\t\t\t</config-extends>\n");			
			strBuffer.append("</module>\n");
        	
        }   

        strBuffer.append("\t</module-list>\n\n");
		
		//取站点配置信息        
	   strBuffer.append("\t<site-config path=\"");
	   strBuffer.append(WebpumpIDEPlugin.filterXML(m_objWebpumpNewWizardPage.getSitePath()));      	      
	   strBuffer.append("\" ");
	        
	   strBuffer.append("debug=\"");
	   if (m_objWebpumpNewWizardPage.getCompileToSite())
			strBuffer.append("on");
		else
			strBuffer.append("off");	   
		strBuffer.append("\">");
	   
        
	   Vector vSiteInfo =  m_objWebpumpNewWizardPage.getSiteInfo();
        
	   for (int i = 0;i<vSiteInfo.size();i++)
	   {
		   String[] strSiteInfo = (String[])vSiteInfo.elementAt(i);
        	
		   strBuffer.append("\t\t<upload");
			
		   strBuffer.append(" name=\"");
		   strBuffer.append(WebpumpIDEPlugin.filterXML(strSiteInfo[0]));
		   strBuffer.append("\"");

		   strBuffer.append(" source=\"");
		   strBuffer.append(WebpumpIDEPlugin.filterXML(strSiteInfo[1]));
		   strBuffer.append("\"");

		   strBuffer.append(" target=\"");
		   strBuffer.append(WebpumpIDEPlugin.filterXML(strSiteInfo[2]));
		   strBuffer.append("\"/>\n");						
        	
	   }   

	   strBuffer.append("\t</site-config>\n\n");
		
	   strBuffer.append("\t<extends-config>\n");
	   strBuffer.append("\t</extends-config>\n");
	   
       strBuffer.append("</project>\n");

		try
		{
			String strContent = strBuffer.toString();
			
 			//取插?路径下XSL文?夹
			URL prefix = new URL(WebpumpIDEPlugin.getDefault().getDescriptor().getInstallURL(), "xsl/");
			
			//构建工程配置文件
			File projectFile = new File(this.getProject().getLocation().toString()+"/project.webpump");
			
			if (!projectFile.getParentFile().exists() )
			{
				projectFile.getParentFile().mkdirs();
			}
			
			//取插件路径下XSL文?夹
			URL xslpath = new URL(prefix,"project_"+strLanguage+".xsl");
			
			File projectXSLFile = new File(Platform.asLocalURL(xslpath).getFile());	
				
			if (!projectXSLFile.exists())
			{
				xslpath = new URL(prefix, "project.xsl");
			}			
			
			
			FileOutputStream objFileOutputStream = new FileOutputStream(projectFile);
			
			objFileOutputStream.write(strContent.getBytes(WebpumpIDEPlugin.filterXML(strProjectInfo[1])));
			objFileOutputStream.close(); 	
        	//FileUtil.toTextFile(projectFile,strContent);
        	
        	//创建工程文?结构  
			CreateFileByXSL.createFileByXSLT(this.getProject().getLocation().toString()+"/project.webpump",Platform.asLocalURL(xslpath).getFile()); 
			
			//删?临时文?*.000
			Path  objPath = new Path(this.getProject().getLocation().toString());
			File objFile = objPath.toFile();
						
			FileUtil.removeFile(objFile,".000");
			
			File targetFile = new File(this.getProject().getLocation().append("project-config")+"\\");
				
			try
			{
				//取插?路径下lib文?夹
				URL sourceprefix = new URL(WebpumpIDEPlugin.getDefault().getDescriptor().getInstallURL(), "xsl/");
						
				sourceprefix = new URL(sourceprefix,"copy");
				
				//复制所有的配置文?
				File sourceFile = new File(Platform.asLocalURL(sourceprefix).getFile());			
			
				FileUtil.copyDir(sourceFile,targetFile);
				
				//复制application Resources文?
				URL resourceURL = new URL(WebpumpIDEPlugin.getDefault().getDescriptor().getInstallURL(), "resources/");
				
				URL resourceFileURl = new URL(resourceURL, "ApplicationResources_"+strLanguage+".properties");
				
				File sFile = null;
				sourceFile = new File(Platform.asLocalURL(resourceFileURl).getFile());	
				
				if (sourceFile.exists())
				{
					sFile = sourceFile;
				}
				else
				{
					resourceFileURl = new URL(resourceURL, "ApplicationResources.properties");
					sFile = new File(Platform.asLocalURL(resourceFileURl).getFile());	
				}
				
				if (sFile!=null&&sFile.exists())
				{
					for (int i = 0;i<vModuleInfo.size();i++ )
					{
						String[] strModuleInfo = (String[])vModuleInfo.elementAt(i);
						
						targetFile = new File(this.getProject().getLocation().append("module")+"/"+strModuleInfo[1]+"/config/ApplicationResources.properties");
						
						FileUtil.copyFile(sourceFile,targetFile);
					}
				}
				
				
			}
			catch(Exception e)
			{
				WebpumpIDEPlugin.log(e);
			}
			
		   
		}
        catch(Exception e)
        {
			WebpumpIDEPlugin.log(e);
        }
        return true;
    }

	/**
	 * @see org.eclipse.core.resources.IProjectNature#configure()
	 */
	public void configure() throws CoreException {
		
		
	}

	/**
	 * @see org.eclipse.core.resources.IProjectNature#deconfigure()
	 */
	public void deconfigure() throws CoreException {
		
		
	}
	
	public static String getModuleConfigExtends(String strModuleName,String strDefaultModule)
	{
		StringBuffer strInfo = new StringBuffer();
	
		strInfo.append("				<!-- ========== Controller Configuration ================================ -->\n");
		strInfo.append("				<controller>\n");
		strInfo.append("				  <set-property property=\"inputForward\" value=\"false\"/>\n");
		strInfo.append("				</controller>\n\n");

		strInfo.append("				<!-- ========== Message Resources Definitions =========================== -->\n");
		strInfo.append("				<message-resources parameter=\"properties."+strModuleName+".ApplicationResources\"/>\n\n");

		strInfo.append("				<!-- ========== Plug Ins Configuration ================================== -->\n");
		strInfo.append("				<plug-in className=\"org.apache.struts.plugins.ModuleConfigVerifier\"/>\n\n");
		
		strInfo.append("				<plug-in className=\"org.apache.struts.validator.ValidatorPlugIn\">\n");
		
		if (strModuleName.equals(strDefaultModule))
			strInfo.append("					<set-property property=\"pathnames\" value=\"/WEB-INF/config/validationrule.xml,/WEB-INF/config/validation.xml\"/>\n");
		else
			strInfo.append("					<set-property property=\"pathnames\" value=\"/WEB-INF/config/validationrule.xml,/WEB-INF/config/"+strModuleName+"/validation.xml\"/>\n");
					
		strInfo.append("				</plug-in>\n\n");
 		
 		if (strModuleName.equals(strDefaultModule))
 		{
			strInfo.append("				<plug-in className=\"com.webpump.sdk.plugin.DataSourceManagerPlugIn\">\n\n");
			strInfo.append("					<set-property property=\"datasourcekeys\" value=\"\"/>\n");
			strInfo.append("				</plug-in>\n");
		  
			strInfo.append("				<plug-in className=\"com.webpump.sdk.plugin.ExternalSQLPlugIn\">\n");
			strInfo.append("					<set-property property=\"pathnames\" value=\"properties.ExternalSQL\"/>\n");
            strInfo.append("                    <set-property property=\"dbFilter\"   value=\"com.webpump.sdk.sql.DefaultDBFilters\"/>\n");
			strInfo.append("				</plug-in>  \n\n");
 			
            strInfo.append("                <plug-in className=\"com.webpump.sdk.session.SessionPlugIn\">\n");
            strInfo.append("                    <set-property property=\"sessionTimeOut\" value=\"30\"/>\n");
            strInfo.append("                    <set-property property=\"batchTime\" value=\"0\"/>\n");
            strInfo.append("                    <set-property property=\"dataSource\" value=\"\"/>\n");
            strInfo.append("                    <set-property property=\"sessionBean\" value=\"javax.servlet.http.HttpSession\"/>\n");
            strInfo.append("                    <set-property property=\"sessionManagerBean\" value=\"com.webpump.sdk.session.HttpSessionManager\"/>\n");
            strInfo.append("                    <set-property property=\"dataAccessBean\" value=\"com.webpump.sdk.session.WPDefaultDataAccess\"/>\n");
            strInfo.append("                </plug-in>\n");
 
 		}

		strInfo.append("				<plug-in className=\"com.webpump.sdk.plugin.FilterPlugIn\">\n");
		strInfo.append("					<set-property property=\"fileFilter\"    value=\"com.webpump.sdk.plugin.filter.DefaultFileFilters\"/>\n");
		strInfo.append("					<set-property property=\"requestFilter\" value=\"com.webpump.sdk.plugin.filter.DefaultRequestFilters\"/>\n");
		strInfo.append("				</plug-in>\n\n");

		strInfo.append("				<plug-in className=\"com.webpump.sdk.plugin.PageAttributesPlugIn\">\n");
		if (strModuleName.equals(strDefaultModule))
			strInfo.append("					<set-property property=\"pageAttributeFile\" value=\"/WEB-INF/config/webpumpextendconfig.xml\"/>\n");
		else
			strInfo.append("					<set-property property=\"pageAttributeFile\" value=\"/WEB-INF/config/"+strModuleName+"/"+strModuleName+"webpumpextendconfig.xml\"/>\n");
				
		strInfo.append("				</plug-in>\n\n");


		strInfo.append("				<plug-in className=\"com.webpump.sdk.plugin.InitParamPlugIn\">\n");
		strInfo.append("					<set-property property=\"connectDB\"   value=\"ON\"/>\n");
		strInfo.append("					<set-property property=\"dumpFlag\"    value=\"ON\"/>\n");
		strInfo.append("					<set-property property=\"uploadDir\"   value=\"c:/temp/upload\"/>\n");
		strInfo.append("					<set-property property=\"downloadDir\" value=\"c:/temp/download\"/>\n");
		strInfo.append("				</plug-in>\n\n");

		strInfo.append("				<plug-in className=\"com.webpump.sdk.plugin.SecurityBeanPlugIn\">\n");
		strInfo.append("					<set-property property=\"securitybeanfactory\" value=\"com.webpump.sdk.plugin.security.DefaultSecurityBeanFactory\"/>\n");
		strInfo.append("					<set-property property=\"securitybean\" value=\"com.webpump.sdk.plugin.security.DefaultSecurityBean\"/>\n");
		strInfo.append("				</plug-in>\n\n");
		
				
		return strInfo.toString();
	}
	
  
	
}

⌨️ 快捷键说明

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