com.bdaum.zoom.ai.internal.services.AiService.java Source code

Java tutorial

Introduction

Here is the source code for com.bdaum.zoom.ai.internal.services.AiService.java

Source

/*
 * This file is part of the ZoRa project: http://www.photozora.org.
 *
 * ZoRa is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * ZoRa is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with ZoRa; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * (c) 2016 Berthold Daum  
 */
package com.bdaum.zoom.ai.internal.services;

import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.PreferencesUtil;

import com.bdaum.zoom.ai.internal.AiActivator;
import com.bdaum.zoom.ai.internal.preference.AiPreferencePage;
import com.bdaum.zoom.ai.internal.preference.PreferenceConstants;
import com.bdaum.zoom.cat.model.asset.Asset;
import com.bdaum.zoom.core.internal.ai.IAiService;
import com.bdaum.zoom.core.internal.ai.Prediction;
import com.bdaum.zoom.core.internal.lire.Algorithm;

public class AiService implements IAiService {

    /**
     * Called when service is activated.
     */
    protected void activate() {
        AiActivator.getDefault().logInfo(Messages.AiService_service_activated);
    }

    /**
     * Called when service is deactivated.
     */
    protected void deactivate() {
        AiActivator.getDefault().logInfo(Messages.AiService_service_deactivated);
    }

    @Override
    public Prediction predict(byte[] jpeg, String serviceId) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(serviceId);
            if (provider != null)
                return provider.predict(jpeg);
            return new Prediction("", null, null, //$NON-NLS-1$
                    new Status(IStatus.ERROR, AiActivator.PLUGIN_ID, Messages.AiService_provider_not_found));
        }
        return new Prediction("", null, null, //$NON-NLS-1$
                new Status(IStatus.INFO, AiActivator.PLUGIN_ID, Messages.AiService_deactivated));
    }

    @Override
    public int rate(Asset asset, String opId, int maxRating, String modelId, String serviceId) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(serviceId);
            if (provider != null)
                return provider.rate(asset, opId, maxRating, modelId);
        }
        return -1;
    }

    @Override
    public String[] getRatingModelIds(String serviceId) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(serviceId);
            if (provider != null)
                return provider.getRatingModelIds();
        }
        return null;
    }

    @Override
    public String[] getRatingModelLabels(String serviceId) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(serviceId);
            if (provider != null)
                return provider.getRatingModelLabels();
        }
        return null;
    }

    @Override
    public float getMarkAbove(String serviceId) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(serviceId);
            if (provider != null)
                return provider.getMarkAbove();
        }
        return 0.99f;
    }

    @Override
    public boolean getMarkKnownOnly(String serviceId) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(serviceId);
            if (provider != null)
                return provider.getMarkKnownOnly();
        }
        return true;
    }

    @Override
    public String[] getProviderIds() {
        IAiServiceProvider[] providers = AiActivator.getDefault().getServiceProviders();
        String[] ids = new String[providers.length];
        for (int i = 0; i < ids.length; i++)
            ids[i] = providers[i].getId();
        return ids;
    }

    @Override
    public String[] getRatingProviderNames() {
        IAiServiceProvider[] providers = AiActivator.getDefault().getServiceProviders();
        List<String> list = new ArrayList<>(providers.length);
        for (int i = 0; i < providers.length; i++) {
            String[] ratingModelIds = providers[i].getRatingModelIds();
            if (ratingModelIds != null && ratingModelIds.length > 0)
                list.add(providers[i].getName());
        }
        return list.toArray(new String[list.size()]);
    }

    @Override
    public String[] getRatingProviderIds() {
        IAiServiceProvider[] providers = AiActivator.getDefault().getServiceProviders();
        List<String> list = new ArrayList<>(providers.length);
        for (int i = 0; i < providers.length; i++) {
            String[] ratingModelIds = providers[i].getRatingModelIds();
            if (ratingModelIds != null && ratingModelIds.length > 0)
                list.add(providers[i].getId());
        }
        return list.toArray(new String[list.size()]);
    }

    @Override
    public String[] getProviderNames() {
        IAiServiceProvider[] providers = AiActivator.getDefault().getServiceProviders();
        String[] names = new String[providers.length];
        for (int i = 0; i < names.length; i++)
            names[i] = providers[i].getName();
        return names;
    }

    @Override
    public boolean isEnabled() {
        return AiActivator.getDefault().getPreferenceStore().getBoolean(PreferenceConstants.ENABLE);
    }

    @Override
    public boolean configure(Shell shell) {
        PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(shell, AiPreferencePage.ID, null, null);
        return dialog.open() == PreferenceDialog.OK;
    }

    @Override
    public void dispose(String providerId) {
        IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(providerId);
        if (provider != null)
            provider.dispose();

    }

    @Override
    public boolean checkAdultContents(String providerId) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(providerId);
            if (provider != null)
                return provider.checkAdultContent();
        }
        return false;
    }

    @Override
    public boolean checkFaces(String providerId) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(providerId);
            if (provider != null)
                return provider.checkFaces();
        }
        return false;
    }

    @Override
    public boolean generateDescription(String providerId) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(providerId);
            if (provider != null)
                return provider.generateDescription();
        }
        return false;
    }

    @Override
    public String getTitle(String providerId) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(providerId);
            if (provider != null)
                return provider.getTitle();
        }
        return null;
    }

    @Override
    public int getLatency(String providerId) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(providerId);
            if (provider != null)
                return provider.getLatency();
        }
        return -1;
    }

    @Override
    public float[] getFeatureVector(BufferedImage image, String serviceId, int featureId) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(serviceId);
            if (provider != null)
                return provider.getFeatureVector(image, featureId);
        }
        return null;
    }

    @Override
    public boolean hasProvider(String id) {
        IAiServiceProvider[] providers = AiActivator.getDefault().getServiceProviders();
        for (IAiServiceProvider provider : providers)
            if (provider.getId().equals(id))
                return true;
        return false;
    }

    @Override
    public boolean isAccountValid(String providerId) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(providerId);
            if (provider != null)
                return provider.isAccountValid();
        }
        return false;
    }

    @Override
    public Algorithm[] getLireAlgorithms() {
        List<Algorithm> algs = new ArrayList<>(3);
        IAiServiceProvider[] providers = AiActivator.getDefault().getServiceProviders();
        for (IAiServiceProvider provider : providers) {
            Algorithm[] algorithms = provider.getAlgorithms();
            if (algorithms != null)
                for (Algorithm algorithm : algorithms)
                    algs.add(algorithm);
        }
        return algs.toArray(new Algorithm[algs.size()]);
    }

    @Override
    public Class<?> getFeature(String providerId, Algorithm algorithm) {
        if (isEnabled()) {
            IAiServiceProvider provider = AiActivator.getDefault().getServiceProvider(providerId);
            if (provider != null)
                return provider.getFeature(algorithm);
        }
        return null;
    }

}