private void populateMappingInfo(EObject xmlEntity) { Resource resource = xmlEntity.eResource(); // model contents for this resource ModelContents mdlContents = new ModelContents(resource); XmlDocument document = getXmlDocument(xmlEntity); currentDocumentName = document.getName(); // fill the map with element to its mappingClass column value this.elementMap = new HashMap(); this.elementFullNames = new HashSet(); // get the mapping root associated with the transformation Iterator rootIter = mdlContents.getTransformations(document).iterator(); while (rootIter.hasNext()) { MappingRoot mappingRoot = (MappingRoot) rootIter.next(); // if there is a mapping root if (mappingRoot != null && mappingRoot instanceof TreeMappingRoot) { Iterator mappingIter = mappingRoot.getNested().iterator(); while (mappingIter.hasNext()) { Mapping nestedMapping = (Mapping) mappingIter.next(); // mapping Class columns List inputs = nestedMapping.getInputs(); // xml elements List outputs = nestedMapping.getOutputs(); if (!outputs.isEmpty() && !inputs.isEmpty()) { Object output = outputs.iterator().next(); Object input = inputs.iterator().next(); elementMap.put(output, input); if (output instanceof XmlElement) { elementFullNames.add(this.getFullName((EObject) output)); } } } } } }
/** * @see * com.metamatrix.modeler.core.metamodel.aspect.sql.SqlColumnAspect#isTranformationInputParameter(org.eclipse.emf.ecore.EObject) * @since 4.2 */ public boolean isTranformationInputParameter(EObject eObject) { CoreArgCheck.isInstanceOf(XmlElement.class, eObject); final XmlElement element = (XmlElement) eObject; if (element instanceof XmlRoot) { return false; } final XmlDocument doc = getDocParent(element); final XmlElement parent = getElementParent(element); if (doc == null || parent == null) { return false; } Resource eResource = element.eResource(); if (eResource instanceof EmfResource) { EmfResource emfResource = (EmfResource) eResource; ModelContents contents = emfResource.getModelContents(); if (contents != null) { for (final Iterator mappings = contents.getTransformations(doc).iterator(); mappings.hasNext(); ) { final TreeMappingRoot tmr = (TreeMappingRoot) mappings.next(); if (tmr.getOutputs().contains(parent)) { final Iterator nested = tmr.getNested().iterator(); while (nested.hasNext()) { final Mapping mapping = (Mapping) nested.next(); if (mapping.getOutputs().contains(element)) { if (mapping.getInputs().size() == 0) { return false; } Iterator i = mapping.getInputs().iterator(); while (i.hasNext()) { MappingClassColumn column = (MappingClassColumn) i.next(); SqlAspect aspect = AspectManager.getSqlAspect(column); if (!(aspect instanceof SqlColumnAspect)) { return false; } if (!((SqlColumnAspect) aspect).isTranformationInputParameter(column)) { return false; } } return true; } } } } } } return false; }