/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.core.metamodel.aspect.core.aspects.validation.rules; import org.eclipse.core.runtime.IStatus; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.teiid.core.designer.util.CoreArgCheck; import org.teiid.designer.core.ModelerCore; import org.teiid.designer.core.validation.ObjectValidationRule; import org.teiid.designer.core.validation.ValidationContext; import org.teiid.designer.core.validation.ValidationProblem; import org.teiid.designer.core.validation.ValidationProblemImpl; import org.teiid.designer.core.validation.ValidationResult; import org.teiid.designer.core.validation.ValidationResultImpl; import org.teiid.designer.metamodels.core.ModelImport; /** * @since 8.0 */ public class InvalidModelImportRule implements ObjectValidationRule { /** * @see org.teiid.designer.core.validation.ObjectValidationRule#validate(org.eclipse.emf.ecore.EObject, * org.teiid.designer.core.validation.ValidationContext) * @since 4.3 */ @Override public void validate( EObject eObject, ValidationContext context ) { CoreArgCheck.isInstanceOf(ModelImport.class, eObject); final ModelImport modelImport = (ModelImport)eObject; final String location = modelImport.getModelLocation(); final Resource resource = eObject.eResource(); CoreArgCheck.isNotNull(resource, "resource"); //$NON-NLS-1$ if (location == null) { ValidationResult result = new ValidationResultImpl(eObject, resource); ValidationProblem problem = new ValidationProblemImpl(0, IStatus.ERROR, ModelerCore.Util.getString("InvalidModelImportRule.0"), //$NON-NLS-1$ getLocationPath(modelImport), getURIString(modelImport)); result.addProblem(problem); context.addResult(result); return; } // Defect 17511 - The UUID in the import should not the same as the containing resource. String resourceUUID = ModelerCore.getObjectIdString(modelImport.getModel()); String importResourceUUID = modelImport.getUuid(); if (resourceUUID != null && resourceUUID.equals(importResourceUUID)) { ValidationResult result = new ValidationResultImpl(eObject, modelImport); Object[] params = new Object[] {location}; String msg = ModelerCore.Util.getString("InvalidModelImportRule.The_model_import_is_invalid", params); //$NON-NLS-1$ ValidationProblem problem = new ValidationProblemImpl(0, IStatus.ERROR, msg, getLocationPath(modelImport), getURIString(modelImport)); result.addProblem(problem); context.addResult(result); } // // Check to see if the import is to the Teiid Designer built-in datatypes // // resource or to one of the Emf XMLSchema resources // if (WorkspaceResourceFinderUtil.isGlobalResource(location)) { // return; // } // // //MyDefect : Fixing 17511 // //UUID in the import should not the same as the containing resource. // String modelObjectId = modelImport.getModel().getObjectId().toString(); // String modelUuid = modelImport.getUuid(); // if( modelObjectId.equals( modelUuid ) ) { // ValidationResult result = new ValidationResultImpl(eObject, modelImport); // Object[] params = new Object[]{location}; // String msg = ModelerCore.Util.getString("InvalidModelImportRule.The_model_import_is_invalid", params); //$NON-NLS-1$ // ValidationProblem problem = new ValidationProblemImpl(0, IStatus.ERROR, msg); // result.addProblem(problem); // context.addResult(result); // } } private static String getURIString( EObject eoj ) { return ModelerCore.getModelEditor().getUri(eoj).toString(); } private static String getLocationPath( EObject eoj ) { return ModelerCore.getModelEditor().getModelRelativePath(eoj).toString(); } }