/** * Copyright (c) 2010, 2013 Darmstadt University of Technology. * 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: * Marcel Bruch - initial API and implementation. */ package org.eclipse.recommenders.examples.models; import java.io.File; import org.eclipse.recommenders.coordinates.ProjectCoordinate; import org.eclipse.recommenders.examples.models.UsingModelProvider.RecommendationModel; import org.eclipse.recommenders.models.IModelProvider; import org.eclipse.recommenders.models.IUniqueName; import org.eclipse.recommenders.utils.names.ITypeName; import com.google.common.base.Optional; @SuppressWarnings("unused") public class CompletionEngineExample { void resolveGavFromPackgeFragmentRoot(IPackageFragementRoot jdtElement, EclipseProjectCoordinateProvider r) { if (jdtElement.isjar()) { // ignore what type jdtElement is exactly! } else if (jdtElement.isSourceFolder()) { // src folders are mapped by the mapping service internally. } Optional<ProjectCoordinate> gav = r.map(jdtElement); } void resolveGavFromIJavaElement(IJavaElement jdtElement, EclipseProjectCoordinateProvider r) { // same for jar, src folder, package etc.: Optional<ProjectCoordinate> gav = r.map(jdtElement); } void resolveGavFromSourceFolder(IPackageFragementRoot srcFolder, EclipseProjectCoordinateProvider r) { } private static final class CompletionEngine { IModelProvider<IUniqueName<ITypeName>, RecommendationModel> modelProvider; EclipseProjectCoordinateProvider coordService; void computeProposals(IJavaElement e) { ProjectCoordinate pc = coordService.map(e).orNull(); ITypeName type = e.getITypeName(); // convert somehow to ITypeName IUniqueName<ITypeName> name = createQualifiedName(pc, type); RecommendationModel net = modelProvider.acquireModel(name).orNull(); // ... do work modelProvider.releaseModel(net); } private IUniqueName<ITypeName> createQualifiedName(ProjectCoordinate pc, ITypeName name) { return null; } } interface IJavaElement { ITypeName getITypeName(); } interface IPackageFragementRoot extends IJavaElement { // it's slightly more complicated but... File getFile(); boolean isjar(); boolean isSourceFolder(); } interface IJavaProject { } }