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