Package org.carrot2.workbench.core.ui

Source Code of org.carrot2.workbench.core.ui.SearchJob

/*
* Carrot2 project.
*
* Copyright (C) 2002-2014, Dawid Weiss, Stanisław Osiński.
* All rights reserved.
*
* Refer to the full license file "carrot2.LICENSE"
* in the root folder of the repository checkout or at:
* http://www.carrot2.org/carrot2.LICENSE
*/

package org.carrot2.workbench.core.ui;

import java.util.Map;

import org.carrot2.core.*;
import org.carrot2.workbench.core.WorkbenchCorePlugin;
import org.eclipse.core.runtime.*;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.ui.PlatformUI;

/**
* A processing job runs a query specified by the {@link SearchInput} on an instance of
* the {@link Controller} acquired from {@link WorkbenchCorePlugin}.
*/
public final class SearchJob extends Job
{
    /**
     * Result to be processed.
     */
    private final SearchResult searchResult;

    /**
     *
     */
    public SearchJob(String title, SearchResult results)
    {
        super(title);
        this.searchResult = results;
    }

    /**
     * Constructs a search job, naming it after the
     * input's {@link SearchInput#getName()}.
     */
    public SearchJob(SearchResult results)
    {
        this(results.getInput().getName(), results);
    }
   
    /**
     * Run this job
     */
    @Override
    protected IStatus run(IProgressMonitor monitor)
    {
        final SearchInput searchInput = searchResult.getInput();
        final WorkbenchCorePlugin core = WorkbenchCorePlugin.getDefault();

        final ProcessingComponentDescriptor source = core.getComponent(searchInput.getSourceId());
        final ProcessingComponentDescriptor algorithm = core.getComponent(searchInput.getAlgorithmId());
   
        IStatus status;
        monitor.beginTask("Processing: "
            + source.getLabel() + " -> " + algorithm.getLabel(), IProgressMonitor.UNKNOWN);

        try
        {
            final Map<String, Object> attributes =
                searchInput.getAttributeValueSet().getAttributeValues();

            final Controller controller = core.getController();

            final ProcessingResult result = controller.process(
                attributes, source.getId(), algorithm.getId());

            PlatformUI.getWorkbench().getDisplay().syncExec(
                new Runnable()
                {
                    public void run()
                    {
                        searchResult.getInput().setAttribute(
                            CachingProcessingComponentManager.CACHE_BYPASS_ATTR, false, false);
                        searchResult.setProcessingResult(result);
                    }
                }
            );
            status = Status.OK_STATUS;
        }
        catch (ProcessingException ex)
        {
            status = new Status(IStatus.ERROR, WorkbenchCorePlugin.PLUGIN_ID,
                "Processing error: " + ex.getMessage(), ex);
        }
        finally
        {
            monitor.done();
        }

        return status;
    }
}
TOP

Related Classes of org.carrot2.workbench.core.ui.SearchJob

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.