package org.isatools.isacreator.plugins;
import org.isatools.isacreator.configuration.RecommendedOntology;
import org.isatools.isacreator.ontologymanager.OntologySourceRefObject;
import org.isatools.isacreator.ontologymanager.common.OntologyTerm;
import org.isatools.isacreator.plugins.host.service.PluginOntologyCVSearch;
import org.isatools.isacreator.plugins.registries.OntologySearchPluginRegistry;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import java.util.*;
/**
* Created by the ISA team
*/
public class DefaultOntologySearchWidget implements PluginOntologyCVSearch {
private BundleContext context;
private boolean disposed = false;
private ServiceReference sRef;
private PluginOntologyCVSearch ontologySearchService;
public DefaultOntologySearchWidget(BundleContext context, ServiceReference sRef) {
this.context = context;
this.sRef = sRef;
}
public void dispose() {
if (disposed) {
context.ungetService(sRef);
context = null;
sRef = null;
ontologySearchService = null;
}
}
public void deregisterSearch() {
if (context != null && !disposed) {
try {
ontologySearchService = (PluginOntologyCVSearch) context.getService(sRef);
OntologySearchPluginRegistry.deregisterPlugin(ontologySearchService);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
public void registerSearch() {
if (context != null && !disposed) {
try {
ontologySearchService = (PluginOntologyCVSearch) context.getService(sRef);
OntologySearchPluginRegistry.registerPlugin(ontologySearchService);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
public Map<OntologySourceRefObject, List<OntologyTerm>> searchRepository(String term) {
if (context != null && !disposed) {
try {
ontologySearchService = (PluginOntologyCVSearch) context.getService(sRef);
return ontologySearchService.searchRepository(term);
} catch (Exception ex) {
ex.printStackTrace();
}
}
return new HashMap<OntologySourceRefObject, List<OntologyTerm>>();
}
public boolean hasPreferredResourceForCurrentField(Map<String, RecommendedOntology> recommendedOntologies) {
if (context != null && !disposed) {
try {
ontologySearchService = (PluginOntologyCVSearch) context.getService(sRef);
return ontologySearchService.hasPreferredResourceForCurrentField(recommendedOntologies);
} catch (Exception ex) {
ex.printStackTrace();
}
}
return false;
}
public Map<OntologySourceRefObject, List<OntologyTerm>> searchRepository(String term, Map<String, RecommendedOntology> recommendedOntologies, boolean searchAll) {
if (context != null && !disposed) {
try {
ontologySearchService = (PluginOntologyCVSearch) context.getService(sRef);
return ontologySearchService.searchRepository(term, recommendedOntologies, searchAll);
} catch (Exception ex) {
ex.printStackTrace();
}
}
return new HashMap<OntologySourceRefObject, List<OntologyTerm>>();
}
public Set<String> getAvailableResourceAbbreviations() {
if (context != null && !disposed) {
try {
ontologySearchService = (PluginOntologyCVSearch) context.getService(sRef);
return ontologySearchService.getAvailableResourceAbbreviations();
} catch (Exception ex) {
ex.printStackTrace();
}
}
return new HashSet<String>();
}
}