/** * <p>Copyright: Copyright (c) 2009</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.ui; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.swt.widgets.Display; import com.hundsun.ares.studio.core.ARESCore; import com.hundsun.ares.studio.core.ARESModelException; import com.hundsun.ares.studio.core.ConsoleHelper; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.core.IResPathEntry; import com.hundsun.ares.studio.core.registry.IModuleRootDescriptor; import com.hundsun.ares.studio.core.registry.ModulesRootTypeRegistry; import com.hundsun.ares.studio.internal.core.ARESProject; /** * ���respath�����õ�ģ����Ƿ������Ӧ�IJ�� * @author liaogc */ public class ResPathChecker { private static ResPathChecker instance = null; private static final Logger console = ConsoleHelper.getLogger(); private static Logger logger = Logger.getLogger(ResPathChecker.class.getName()); private StringBuffer messasge = new StringBuffer();/*������Ϣ*/ private static String METADATA_MODULEROOT_TYPE = "com.hundsun.ares.studio.jres.moduleroot.metadata"; private static String DOMMONDATA_MODULEROOT_TYPE= "com.hundsun.ares.studio.jres.moduleroot.commondata"; private static String DATABASE_MODULEROOT_TYPE= "com.hundsun.ares.studio.jres.moduleroot.database"; private static String TOOL_MODULE_ROOT_TYPE = "com.hundsun.ares.studio.jres.moduleroot.tools"; private static String ATOMROOT_MODULE_ROOT_TYPE = "com.hundsun.ares.studio.atom.resources.atomroot"; private static String LOGICROOT_MODULE_ROOT_TYPE = "com.hundsun.ares.studio.logic.resources.logicroot"; private static String BUSINESS_MODULE_ROOT_TYPE = "com.hundsun.ares.studio.jres.moduleroot.business"; private static String BOJECT_MODULE_ROOT_TYPE ="com.hundsun.ares.studio.jres.obj.root"; private static String PROCEDURE_MODULE_ROOT_TYPE = "com.hundsun.ares.studio.procedure.resources.procedure"; private static String CRES_NATRUE = "com.hundsun.ares.studio.cresnature"; private ResPathChecker(){ } public static ResPathChecker getInstance(){ if(null ==instance){ instance = new ResPathChecker(); } return instance; } /** * ����respath.xml�е����õ�ģ�����ʵ��com.hundsun.ares.studio.core.moduleRoot��չ��IJ���Ƚ�,���respath.xmlģ�鲻������ز������д�����ʾ */ public void resPathCheck(){ List<IARESProject> projects = this.getWorksapceProjects(); Map<String, IModuleRootDescriptor> types = ModulesRootTypeRegistry.getInstance().getRootTypes(); for(IARESProject project:projects){ IResPathEntry[] resPathEntries; try { resPathEntries = ((ARESProject)project).readResPath(); if(resPathEntries!=null){ for(IResPathEntry resPathEntry:resPathEntries){ String type = resPathEntry.getType(); if(!(types!=null && types.keySet().contains(type))){//������õ�ģ�鲻������ز�� if(StringUtils.equals(METADATA_MODULEROOT_TYPE, type)){ messasge.append("��Ŀ"+project.getElementName()+":"+type+"�������Ԫ�������"+"\r\n"); }else if(StringUtils.equals(DOMMONDATA_MODULEROOT_TYPE, type)){ messasge.append("��Ŀ"+project.getElementName()+":"+type+"������ڻ����������"+"\r\n"); }else if(StringUtils.equals(DATABASE_MODULEROOT_TYPE, type)){ messasge.append("��Ŀ"+project.getElementName()+":"+type+"����������ݿ����"+"\r\n"); }else if(StringUtils.equals(TOOL_MODULE_ROOT_TYPE, type)){ messasge.append("��Ŀ"+project.getElementName()+":"+type+"��������û��ű����"+"\r\n"); }else if(StringUtils.equals(ATOMROOT_MODULE_ROOT_TYPE, type)){ checkARESNature(project); messasge.append("��Ŀ"+project.getElementName()+":"+type+"�������CRESԭ�����"+"\r\n"); }else if(StringUtils.equals(LOGICROOT_MODULE_ROOT_TYPE, type)){ checkARESNature(project); messasge.append("��Ŀ"+project.getElementName()+":"+type+"�������CRES�߼����"+"\r\n"); }else if(StringUtils.equals(BUSINESS_MODULE_ROOT_TYPE, type)){ messasge.append("��Ŀ"+project.getElementName()+":"+type+"������ڷ���ӿ����"+"\r\n"); }else if(StringUtils.equals(BOJECT_MODULE_ROOT_TYPE, type)){ messasge.append("��Ŀ"+project.getElementName()+":"+type+"������ڶ������"+"\r\n"); }else if(StringUtils.equals(PROCEDURE_MODULE_ROOT_TYPE, type)){ messasge.append("��Ŀ"+project.getElementName()+":"+type+"������ڹ������"+"\r\n"); } } } } } catch (ARESModelException e) { e.printStackTrace(); } } if(StringUtils.isNotBlank(this.getMessasge().toString())){//������ڴ��� console.error(messasge.toString()); logger.error(messasge.toString()); Status status = new Status(IStatus.ERROR, ARESUI.PLUGIN_ID, messasge.toString()); ErrorDialog.openError(Display.getDefault().getActiveShell(), "respath���õ�ģ����д�:", null, status); } } /** * @return the messasge */ public String getMessasge() { return messasge.toString(); } /** * ��ù����ռ��е����зǹرյ�ARESProject��Ŀ * @return */ private List<IARESProject> getWorksapceProjects(){ List<IARESProject>aresProjects = new ArrayList<IARESProject>(); IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); if(projects!=null && projects.length>0){ for(IProject project:projects){ if(project.isOpen()&& ARESProject.hasARESNature(project)){ IARESProject aresProject = ARESCore.create(project); if(aresProject!=null){ aresProjects.add(aresProject); } } } } return aresProjects; } /** * У���Ƿ����AresNature * @param project */ private void checkARESNature(IARESProject project){ try { if(!project.getProject().hasNature(CRES_NATRUE)){ messasge.append("��Ŀ:"+project.getElementName()+" "+CRES_NATRUE+"�������CRES Feature���"+"\r\n"); } } catch (CoreException e) { e.printStackTrace(); } } }