1 package org.simantics.diagram.symbolcontribution;
3 import org.eclipse.core.runtime.IStatus;
4 import org.eclipse.core.runtime.Status;
5 import org.simantics.db.ReadGraph;
6 import org.simantics.db.Resource;
7 import org.simantics.db.common.primitiverequest.PossibleAdapter;
8 import org.simantics.db.common.procedure.adapter.TransientCacheAsyncListener;
9 import org.simantics.db.exception.DatabaseException;
10 import org.simantics.diagram.internal.Activator;
11 import org.simantics.diagram.stubs.DiagramResource;
14 * @author Tuukka Lehtonen
16 public class SymbolProviderFactories {
18 public static boolean accept(ReadGraph graph, DiagramResource DIA, Resource contribution, Resource diagram) throws DatabaseException {
19 String name = graph.getPossibleAdapter(contribution, String.class);
23 for (Resource filterR : graph.getObjects(contribution, DIA.HasSymbolContributionFilter)) {
25 SymbolContributionFilter filter = graph.syncRequest(
26 new PossibleAdapter<SymbolContributionFilter>(filterR, SymbolContributionFilter.class),
27 TransientCacheAsyncListener.<SymbolContributionFilter> instance());
28 if (filter == null || !filter.accept(graph, contribution, filterR, diagram)) {
31 } catch (DatabaseException e) {
32 // If any errors happen when requesting for the filter, we can
33 // only assume that the graph related to their definitions is
34 // somehow corrupted. In this case we must assume that the filter
35 // did not pass since it did not work properly and true checking
36 // could not be performed to completion.
37 Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Filter " + filterR + " testing failed", e));