package com.hundsun.ares.studio.jres.basicdata.ui.validator; import java.util.Collection; import java.util.Collections; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.eclipse.emf.common.util.BasicDiagnostic; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.ui.ide.IDE; import com.hundsun.ares.studio.core.IARESProblem; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.validate.IAresContext; import com.hundsun.ares.studio.core.validate.IResValidator; import com.hundsun.ares.studio.jres.basicdata.constant.IBasicDataEpacakgeConstant; import com.hundsun.ares.studio.jres.basicdata.core.basicdata.StandardFieldModelAndData; import com.hundsun.ares.studio.jres.basicdata.core.basicdata.validate.util.BasicDataViewerValidator; import com.hundsun.ares.studio.jres.basicdata.core.basicdata.validate.util.IKeyTableLocator; import com.hundsun.ares.studio.jres.basicdata.core.basicdata.validate.util.InfoTableLocatorHelper; import com.hundsun.ares.studio.validate.ValidateUtil; public class StdModelAndDataResValidator implements IResValidator { protected Collection<IARESProblem> doValidate(IARESResource resource, Map<String, IAresContext> contexts) { BasicDiagnostic basicDiagnostic = new BasicDiagnostic(); Map<Object, Object> context = ValidateUtil.getValidateContext(resource); try { String editorID = IDE.getEditorDescriptor(resource.getElementName()).getId(); EObject info = resource.getInfo(StandardFieldModelAndData.class); EStructuralFeature reference = info.eClass().getEStructuralFeature(IBasicDataEpacakgeConstant.Attr_Info_Items); //����Ϣ�� if(reference != null){ IKeyTableLocator helper = new InfoTableLocatorHelper(info); helper.reset(); context.put(IBasicDataEpacakgeConstant.Info_Table_Locator_Helper,helper); } BasicDataViewerValidator.INSTANCE.validate(info,IBasicDataEpacakgeConstant.StandardField_Package_Define, basicDiagnostic, context); Collection<IARESProblem> problems = ValidateUtil.diagnosticChainToARESProblem(basicDiagnostic); if(!StringUtils.isEmpty(editorID)){ for(IARESProblem problem:problems){ problem.setAttribute(IDE.EDITOR_ID_ATTR, editorID); } } return problems; } catch (Exception e) { e.printStackTrace(); } return Collections.EMPTY_LIST; } @Override public Collection<IARESProblem> validate(IARESResource resource, Map<String, IAresContext> contexts) { return doValidate(resource, contexts); } }