/* * 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.mapping.ui.model; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import org.eclipse.draw2d.geometry.Point; import org.eclipse.emf.ecore.EObject; import org.eclipse.swt.graphics.Image; import org.teiid.designer.diagram.ui.connection.NodeConnectionModel; import org.teiid.designer.diagram.ui.editor.DiagramEditorUtil; import org.teiid.designer.diagram.ui.model.DiagramModelNode; import org.teiid.designer.mapping.ui.UiConstants; import org.teiid.designer.mapping.ui.UiPlugin; import org.teiid.designer.mapping.ui.editor.MappingExtent; import org.teiid.designer.mapping.ui.editor.SummaryExtent; import org.teiid.designer.metamodels.diagram.Diagram; import org.teiid.designer.metamodels.diagram.DiagramEntity; import org.teiid.designer.metamodels.transformation.FragmentMappingRoot; import org.teiid.designer.metamodels.transformation.StagingTable; import org.teiid.designer.metamodels.transformation.TreeMappingRoot; /** * SummaryExtentModelNode * * @since 8.0 */ public class SummaryExtentNode extends MappingExtentNode implements UiConstants { private Image image; private HashMap hmapMappingClasses = new HashMap(); private static final String MAPPED_NODES_PREFIX = UiConstants.Util.getString("SummaryExtentNode.mappedNodes.prefix"); //$NON-NLS-1$ private static final String UNMAPPED_NODES_PREFIX = UiConstants.Util.getString("SummaryExtentNode.unmappedNodes.prefix"); //$NON-NLS-1$ public SummaryExtentNode( DiagramModelNode diagramModelNode, EObject modelObject, MappingExtent theExtent, boolean isCoarse ) { super(diagramModelNode, modelObject, theExtent, isCoarse); // System.out.println("[SummaryExtentNode.ctor 2] BOT"); } @Override protected DiagramEntity findDiagramEntity( Diagram diagram, Object secondaryObject ) { return null; } @Override protected void initialize( Diagram diagramModelObject, Object secondObject ) { // Don't create a diagramEntity for this object. } @Override public String toString() { return "SummaryExtentNode(" + getName() + ")"; //$NON-NLS-1$ //$NON-NLS-2$ } @Override public void setMappingClass( EObject locationEObject ) { // this.mappingClassEObject = locationEObject; } @Override public EObject getMappingClass() { return null; } public Image getImage() { if (image == null) { image = UiPlugin.getDefault().getImage(UiConstants.Images.COLUMN_FOR_SUMMARY_EXTENT); } return image; } public int getImagePosition() { return Position.UPPER_LEFT; } public HashMap getMappingClasses() { return hmapMappingClasses; } public void setMappingClasses( HashMap hmapMappingClasses ) { this.hmapMappingClasses = hmapMappingClasses; } /* * (non-Javadoc) * This concrete method sends back the "Mapping Class" or "Attribute" stored as the model * object. The locationEObject is the "target" end. This list can be used for hiliting, etc.. * @See org.teiid.designer.diagram.ui.model.DiagramModelNode#getDependencies() */ @Override public List getDependencies() { if (getModelObject() instanceof TreeMappingRoot || getModelObject() instanceof FragmentMappingRoot) { List deps = new ArrayList(1); // EObject target = TransformationHelper.getTargetEObject( getModelObject() ); // if( target != null ) { // List deps = new ArrayList(1); // deps.add(target); // return deps; // } Iterator connIter = getTargetConnections().iterator(); NodeConnectionModel nextLink = null; while (connIter.hasNext()) { nextLink = (NodeConnectionModel)connIter.next(); if (nextLink.getSourceNode() != null) deps.add(((DiagramModelNode)nextLink.getSourceNode()).getModelObject()); } return deps; } // else { // // The case where the model object is an "attribute" not a mapping class // // We need to get the dependencies from the "Mappings". // return Collections.EMPTY_LIST; // } return Collections.EMPTY_LIST; } // jh Defect 20609: Use the base class' implementation of updateModelForExtent(). // public void updateModelForExtent() { // jh Lyra: Implement This! @Override public List getAssociations( HashMap nodeMap ) { return Collections.EMPTY_LIST; } /** * @return */ @Override public MappingExtent getExtent() { return extent; } /** * @param extent */ @Override public void setExtent( MappingExtent extent ) { this.extent = extent; } @Override public void setExtentPosition( int newYOrigin ) { double zoomFactor = DiagramEditorUtil.getCurrentZoomFactor(); if (getExtent() != null) { int newY = (int)(getExtent().getOffset() / zoomFactor) + (int)(newYOrigin / zoomFactor); setPosition(new Point(X_ORIGIN, newY)); } else setPosition(new Point(X_ORIGIN, (int)(newYOrigin / zoomFactor))); } @Override public String getReferenceName() { String extentReference = extent.getDocumentNodeReference().toString(); return extentReference; } @Override public boolean isOnCoarseMappingDiagram() { return isCoarseExtent; } /* (non-Javadoc) * @See org.teiid.designer.diagram.ui.model.DiagramModelNode#getModelObject() */ @Override public EObject getModelObject() { if (isOnCoarseMappingDiagram()) { return super.getModelObject(); } else if (getExtent() != null && !(getExtent().getMappingReference() instanceof StagingTable)) { return super.getModelObject(); } if (getExtent() != null) { return getExtent().getMappingReference(); } return super.getModelObject(); } @Override public List getToolTipStrings() { List returnList = new ArrayList(); SummaryExtent seExtent = (SummaryExtent)getExtent(); addToolTipStringsForLocation(returnList, seExtent); returnList.add(MAPPED_NODES_PREFIX + " " + seExtent.getMappingClassColumnCount()); //$NON-NLS-1$ returnList.add(UNMAPPED_NODES_PREFIX + " " + seExtent.getUnmappedNodeCount()); //$NON-NLS-1$ return returnList; } }