1 /*******************************************************************************
2 * Copyright (c) 2007, 2011 Association for Decentralized Information Management in
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * VTT Technical Research Centre of Finland - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.issues.common;
14 import java.util.Collection;
17 import org.simantics.db.ReadGraph;
18 import org.simantics.db.Resource;
19 import org.simantics.db.common.request.TernaryRead;
20 import org.simantics.db.exception.DatabaseException;
21 import org.simantics.issues.Severity;
22 import org.simantics.issues.ontology.IssueResource;
25 * @author Tuukka Lehtonen
27 public class MaxIssueSeverityRecursive extends TernaryRead<Resource, Resource, Set<Resource>, Severity> {
29 public MaxIssueSeverityRecursive(Resource resource, Resource childRelation, Set<Resource> typesToRecurse) {
30 super(resource, childRelation, typesToRecurse);
34 public Severity perform(ReadGraph graph) throws DatabaseException {
36 IssueResource ISSUE = graph.getService(IssueResource.class);
38 Collection<Resource> inv = graph.getObjects(parameter, ISSUE.Issue_HasContext_Inverse);
39 Collection<Resource> inv2 = graph.getObjects(parameter, ISSUE.Issue_ContextList_Element_Inverse);
40 if(inv.isEmpty() && inv2.isEmpty()) {
41 return graph.syncRequest(new ChildMaxIssueSeverity(parameter, parameter2, parameter3));
44 Severity max = graph.syncRequest(new MaxIssueSeveritySingle(parameter));
48 return graph.syncRequest(new ChildMaxIssueSeverity(parameter, parameter2, parameter3));