/*******************************************************************************
 * Copyright (c) 2003, 2006 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 * IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.jst.j2ee.navigator.internal;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.jst.j2ee.application.ApplicationPackage;
import org.eclipse.jst.j2ee.common.CommonPackage;
import org.eclipse.jst.j2ee.internal.earcreation.modulemap.ModulemapPackage;

/**
 * This class handles the EAR navigator content to the project explorer
 */
public class EARContentProvider extends J2EEContentProvider {
	
	/**
	 * Default constructor
	 */
	public EARContentProvider() {
		super();
	}
	
	/**
	 * Constructor
	 * @param aViewerId
	 */
	public EARContentProvider(String aViewerId) {
		super(aViewerId);
	}
	
	/**
	 * This method will filter out any non Application DD objects so as not to duplicate meta nodes in
	 * the binary modules case.
	 */
	public Object[] getChildren(Object aParentElement) {
		if (aParentElement instanceof EObject) {
			EObject eObject = (EObject)aParentElement;
			String emfPackage = eObject.eClass().getEPackage().getNsURI();
			if (!emfPackage.equals(ApplicationPackage.eNS_URI)&&
					!emfPackage.equals(CommonPackage.eNS_URI)&&!emfPackage.equals(ModulemapPackage.eNS_URI))
				return new Object[]{};
		}
		return super.getChildren(aParentElement);
	}
}
