/* * 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.xml.ui.wizards; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IResource; import org.teiid.designer.core.workspace.ModelUtil; import org.teiid.designer.core.xmi.XMIHeader; import org.teiid.designer.metamodels.xml.XmlDocument; import org.teiid.designer.metamodels.xml.XmlDocumentPackage; import org.teiid.designer.ui.explorer.ModelExplorerContentProvider; import org.teiid.designer.ui.viewsupport.ModelUtilities; /** * @since 8.0 */ public class XmlDocumentContentProvider extends ModelExplorerContentProvider { private Object root; public XmlDocumentContentProvider() { super.setShowModelContent(true); } public XmlDocumentContentProvider( final Object rootNode ) { this.root = rootNode; super.setShowModelContent(true); } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) */ @Override public Object[] getChildren( final Object parentElement ) { if (isXmlDocumentModel(parentElement)) { final Object[] allChildren = super.getChildren(parentElement); // Now only return XmlDocuments final List xmlDocNodes = new ArrayList(); for (final Object element : allChildren) if (element instanceof XmlDocument) xmlDocNodes.add(element); if (xmlDocNodes.isEmpty()) return new Object[0]; return xmlDocNodes.toArray(); } return super.getChildren(parentElement); } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object) */ @Override public Object getParent( final Object element ) { if (element instanceof IResource) return root; return super.getParent(element); } // /** // * @param theRoot The root to set. // * @since 5.0 // */ // public void setRoot(Object theRoot) { // this.root = theRoot; // } private boolean isXmlDocumentModel( final Object object ) { if (object instanceof IResource && ModelUtilities.isModelFile((IResource)object)) { final IResource iResource = (IResource)object; final XMIHeader header = ModelUtil.getXmiHeader(iResource); if (header != null) { final String mmURI = header.getPrimaryMetamodelURI(); if (mmURI != null && mmURI.equals(XmlDocumentPackage.eNS_URI)) return true; } } return false; } }