/** * Copyright (c) 2015 Codetrails GmbH. * 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.internal.models.rcp; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jdt.core.IType; import org.eclipse.recommenders.internal.models.rcp.l10n.Messages; import org.eclipse.recommenders.models.IModelProvider; import org.eclipse.recommenders.models.UniqueTypeName; import org.eclipse.recommenders.models.rcp.IProjectCoordinateProvider; public class PrefetchModelArchiveJob<M> extends Job { private IType receiverType; private IProjectCoordinateProvider pcProvider; private IModelProvider<UniqueTypeName, M> modelProvider; public PrefetchModelArchiveJob(IType type, IProjectCoordinateProvider pcProvider, IModelProvider<UniqueTypeName, M> modelProvider) { super(Messages.JOB_NAME_PREFETCHING_MODEL_ARCHIVE); this.receiverType = type; this.pcProvider = pcProvider; this.modelProvider = modelProvider; setSystem(true); } @Override protected IStatus run(IProgressMonitor monitor) { monitor.beginTask(Messages.MONITOR_NAME_RESOLVING_COORDINATES, IProgressMonitor.UNKNOWN); try { UniqueTypeName name = pcProvider.toUniqueName(receiverType).orNull(); M model = modelProvider.acquireModel(name).orNull(); modelProvider.releaseModel(model); } catch (Exception e) { // ignore } finally { monitor.done(); } return Status.OK_STATUS; } }