blob: 95c79f7dba086b2b2810ccacffa13a19a8cb917c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 Oracle. 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:
* Oracle - initial API and implementation
*******************************************************************************/
package org.eclipse.jpt.eclipselink.ui.internal.platform;
import java.util.Collection;
import java.util.List;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jpt.core.JpaFile;
import org.eclipse.jpt.core.JpaProject;
import org.eclipse.jpt.core.context.AttributeMapping;
import org.eclipse.jpt.core.context.TypeMapping;
import org.eclipse.jpt.core.internal.XmlJpaFile;
import org.eclipse.jpt.eclipselink.core.EclipseLinkJpaFile;
import org.eclipse.jpt.eclipselink.ui.internal.EclipseLinkJpaUiFactory;
import org.eclipse.jpt.eclipselink.ui.internal.ddlgen.EclipseLinkDDLGeneratorUi;
import org.eclipse.jpt.eclipselink.ui.internal.java.details.DefaultOneToManyMappingUiProvider;
import org.eclipse.jpt.eclipselink.ui.internal.java.details.DefaultOneToOneMappingUiProvider;
import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.BasicCollectionMappingUiProvider;
import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.BasicMapMappingUiProvider;
import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.TransformationMappingUiProvider;
import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmBasicMappingUiProvider;
import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmIdMappingUiProvider;
import org.eclipse.jpt.eclipselink.ui.internal.orm.details.EclipseLinkOrmVersionMappingUiProvider;
import org.eclipse.jpt.eclipselink.ui.internal.orm.details.OrmDetailsProvider;
import org.eclipse.jpt.eclipselink.ui.internal.persistencexml.details.PersistenceDetailsProvider;
import org.eclipse.jpt.eclipselink.ui.internal.structure.EclipseLinkPersistenceResourceModelStructureProvider;
import org.eclipse.jpt.ui.details.AttributeMappingUiProvider;
import org.eclipse.jpt.ui.details.DefaultAttributeMappingUiProvider;
import org.eclipse.jpt.ui.details.JpaDetailsProvider;
import org.eclipse.jpt.ui.details.TypeMappingUiProvider;
import org.eclipse.jpt.ui.internal.details.EmbeddedIdMappingUiProvider;
import org.eclipse.jpt.ui.internal.details.EmbeddedMappingUiProvider;
import org.eclipse.jpt.ui.internal.details.ManyToManyMappingUiProvider;
import org.eclipse.jpt.ui.internal.details.ManyToOneMappingUiProvider;
import org.eclipse.jpt.ui.internal.details.OneToManyMappingUiProvider;
import org.eclipse.jpt.ui.internal.details.OneToOneMappingUiProvider;
import org.eclipse.jpt.ui.internal.details.TransientMappingUiProvider;
import org.eclipse.jpt.ui.internal.java.details.JavaDetailsProvider;
import org.eclipse.jpt.ui.internal.platform.base.BaseJpaPlatformUi;
import org.eclipse.jpt.ui.internal.structure.OrmResourceModelStructureProvider;
import org.eclipse.jpt.ui.navigator.JpaNavigatorProvider;
import org.eclipse.jpt.ui.structure.JpaStructureProvider;
public class EclipseLinkJpaPlatformUI extends BaseJpaPlatformUi
{
public EclipseLinkJpaPlatformUI() {
super();
}
// **************** structure view content *********************************
@Override
public JpaStructureProvider buildStructureProvider(JpaFile jpaFile) {
String resourceType = jpaFile.getResourceType();
if (resourceType == EclipseLinkJpaFile.ECLIPSELINK_ORM_RESOURCE_TYPE) {
return new OrmResourceModelStructureProvider((XmlJpaFile) jpaFile);
}
if (resourceType == JpaFile.PERSISTENCE_RESOURCE_TYPE) {
return new EclipseLinkPersistenceResourceModelStructureProvider((XmlJpaFile) jpaFile);
}
return super.buildStructureProvider(jpaFile);
}
// **************** navigator content **************************************
public JpaNavigatorProvider buildNavigatorProvider() {
return new EclipseLinkNavigatorProvider();
}
@Override
protected EclipseLinkJpaUiFactory createJpaUiFactory() {
return new EclipseLinkJpaUiFactory();
}
public void generateDDL(JpaProject project, IStructuredSelection selection) {
String projectLocation = project.getProject().getLocation().toString();
EclipseLinkDDLGeneratorUi.generate(project, projectLocation, selection);
}
@Override
protected void addDetailsProvidersTo(Collection<JpaDetailsProvider> providers) {
//using a different OrmDetailsProvider and the one in BaseJpaPlatformUi.
//This is not the best solution here, just trying to make it work for M3.
//TODO JpaPlatformUi really needs a complete overhaul
providers.add(new JavaDetailsProvider());
providers.add(new OrmDetailsProvider());
providers.add(new PersistenceDetailsProvider());
}
@Override
protected void addJavaAttributeMappingUiProvidersTo(
List<AttributeMappingUiProvider<? extends AttributeMapping>> providers) {
super.addJavaAttributeMappingUiProvidersTo(providers);
providers.add(BasicCollectionMappingUiProvider.instance());
providers.add(BasicMapMappingUiProvider.instance());
providers.add(TransformationMappingUiProvider.instance());
}
@Override
protected void addDefaultJavaAttributeMappingUiProvidersTo(
List<DefaultAttributeMappingUiProvider<? extends AttributeMapping>> providers) {
super.addDefaultJavaAttributeMappingUiProvidersTo(providers);
providers.add(DefaultOneToOneMappingUiProvider.instance());
providers.add(DefaultOneToManyMappingUiProvider.instance());
}
@Override
protected void addJavaTypeMappingUiProvidersTo(
List<TypeMappingUiProvider<? extends TypeMapping>> providers) {
super.addJavaTypeMappingUiProvidersTo(providers);
}
@Override
protected void addOrmAttributeMappingUiProvidersTo(List<AttributeMappingUiProvider<? extends AttributeMapping>> providers) {
providers.add(EclipseLinkOrmBasicMappingUiProvider.instance());
providers.add(BasicCollectionMappingUiProvider.instance());
providers.add(BasicMapMappingUiProvider.instance());
providers.add(EmbeddedMappingUiProvider.instance());
providers.add(EmbeddedIdMappingUiProvider.instance());
providers.add(EclipseLinkOrmIdMappingUiProvider.instance());
providers.add(ManyToManyMappingUiProvider.instance());
providers.add(ManyToOneMappingUiProvider.instance());
providers.add(OneToManyMappingUiProvider.instance());
providers.add(OneToOneMappingUiProvider.instance());
providers.add(TransformationMappingUiProvider.instance());
providers.add(TransientMappingUiProvider.instance());
providers.add(EclipseLinkOrmVersionMappingUiProvider.instance());
}
}