/*******************************************************************************
* Copyright (c) 2012 Spring IDE Developers
* 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:
* Spring IDE Developers - initial API and implementation
*******************************************************************************/
package org.springframework.ide.eclipse.data.beans.ui.model;
import java.util.Set;
import org.eclipse.core.resources.IProject;
import org.eclipse.jdt.core.IType;
import org.springframework.ide.eclipse.beans.core.internal.model.BeanClassReferences;
import org.springframework.ide.eclipse.beans.core.model.IBean;
import org.springframework.ide.eclipse.beans.ui.navigator.BeansNavigatorContentProvider;
import org.springframework.ide.eclipse.core.model.IModelElement;
import org.springframework.ide.eclipse.data.SpringDataUtils;
/**
* Content provider to add "referenced by" elements to Spring Data repository interfaces.
*
* @author Oliver Gierke
*/
public class RepositoriesModelContentProvider extends BeansNavigatorContentProvider {
/*
* (non-Javadoc)
* @see org.springframework.ide.eclipse.beans.ui.navigator.BeansNavigatorContentProvider#hasChildren(java.lang.Object)
*/
@Override
public boolean hasChildren(Object element) {
if (super.hasChildren(element)) {
return true;
}
if (!(element instanceof IType)) {
return false;
}
IType type = (IType) element;
IProject project = type.getJavaProject().getProject();
return SpringDataUtils.hasRepositoryBeanFor(project, type);
}
/*
* (non-Javadoc)
* @see org.springframework.ide.eclipse.beans.ui.navigator.BeansNavigatorContentProvider#getJavaTypeChildren(org.eclipse.jdt.core.IType)
*/
@Override
protected Object[] getJavaTypeChildren(IType type) {
IProject project = type.getJavaProject().getProject();
Set<IBean> beans = SpringDataUtils.getRepositoryBeansFor(project, type);
if (!beans.isEmpty()) {
return new Object[] { new BeanClassReferences(type, beans) };
}
return IModelElement.NO_CHILDREN;
}
}