X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.issues.common%2Fsrc%2Forg%2Fsimantics%2Fissues%2Fcommon%2FListModelIssuesBySeverity.java;fp=bundles%2Forg.simantics.issues.common%2Fsrc%2Forg%2Fsimantics%2Fissues%2Fcommon%2FListModelIssuesBySeverity.java;h=8cd6b0fb2147c993ac62ac9cf74e4b68582ac74e;hp=2bccc9761dcc89ab166fe1d38ded76d22cad5dac;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hpb=24e2b34260f219f0d1644ca7a138894980e25b14 diff --git a/bundles/org.simantics.issues.common/src/org/simantics/issues/common/ListModelIssuesBySeverity.java b/bundles/org.simantics.issues.common/src/org/simantics/issues/common/ListModelIssuesBySeverity.java index 2bccc9761..8cd6b0fb2 100644 --- a/bundles/org.simantics.issues.common/src/org/simantics/issues/common/ListModelIssuesBySeverity.java +++ b/bundles/org.simantics.issues.common/src/org/simantics/issues/common/ListModelIssuesBySeverity.java @@ -1,106 +1,106 @@ -/******************************************************************************* - * Copyright (c) 2013 Association for Decentralized Information Management - * in Industry THTH ry. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Semantum Oy - initial API and implementation - *******************************************************************************/ -package org.simantics.issues.common; - -import gnu.trove.map.hash.THashMap; -import gnu.trove.set.hash.THashSet; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import org.simantics.Simantics; -import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; -import org.simantics.db.common.request.ObjectsWithType; -import org.simantics.db.common.request.QuaternaryRead; -import org.simantics.db.exception.DatabaseException; -import org.simantics.db.layer0.adapter.Instances; -import org.simantics.issues.Severity; -import org.simantics.issues.common.preferences.IssuePrefs; -import org.simantics.issues.ontology.IssueResource; -import org.simantics.layer0.Layer0; - -/** - * @author Tuukka Lehtonen - * @see CountModelIssuesBySeverity - */ -public class ListModelIssuesBySeverity extends QuaternaryRead>> { - - public ListModelIssuesBySeverity(Resource model, boolean onlyUnresolved, boolean respectVisibility, Severity minSeverity) { - super(model, onlyUnresolved, respectVisibility, minSeverity); - } - - @SuppressWarnings("unchecked") - @Override - public Map> perform(ReadGraph graph) throws DatabaseException { - Layer0 L0 = Layer0.getInstance(graph); - IssueResource ISSUE = IssueResource.getInstance(graph); - - Severity[] keys = Severity.values(); - @SuppressWarnings("rawtypes") - List[] values = new List[keys.length]; - - Resource project = Simantics.getProjectResource(); - boolean showHidden = false; - boolean showNormal = true; - boolean showUser = true; - if (parameter3 && project != null) { - showHidden = IssuePrefs.showHiddenIssues(graph, project); - showNormal = IssuePrefs.showNormalIssues(graph, project); - showUser = IssuePrefs.showUserIssues(graph, project); - } - - Instances issueIndex = graph.getPossibleAdapter(ISSUE.Issue, Instances.class); - Collection modelIssues = graph.syncRequest(new ObjectsWithType(parameter, L0.ConsistsOf, ISSUE.Issue)); - Collection indexedIssues = issueIndex != null ? issueIndex.find(graph, parameter) : Collections.emptyList(); - Collection issues = !indexedIssues.isEmpty() ? new THashSet(modelIssues.size() + indexedIssues.size()) : modelIssues; - if (!indexedIssues.isEmpty()) { - issues.addAll(modelIssues); - issues.addAll(indexedIssues); - } - - final boolean ignoreResolved = parameter2; - for (Resource issue : issues) { - if (ignoreResolved && graph.hasStatement(issue, ISSUE.Resolved)) - continue; - boolean hidden = graph.hasStatement(issue, ISSUE.Hidden); - boolean user = graph.hasStatement(issue, ISSUE.UserIssue); - boolean normal = !hidden && !user; - if (!showHidden && hidden) - continue; - if (!showUser && user) - continue; - if (!showNormal && normal) - continue; - - Severity s = IssueUtils.toSeverity(ISSUE, graph.getPossibleObject(issue, ISSUE.Issue_HasSeverity)); - if (null != s && s.compareTo(parameter4) <= 0) { - int index = s.ordinal(); - @SuppressWarnings("rawtypes") - List list = values[index]; - if (list == null) - list = values[index] = new ArrayList(); - list.add(issue); - } - } - - THashMap> result = new THashMap>(values.length); - for (int i = 0; i < values.length; ++i) - if (values[i] != null) - result.put(keys[i], values[i]); - return result; - } - -} +/******************************************************************************* + * Copyright (c) 2013 Association for Decentralized Information Management + * in Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Semantum Oy - initial API and implementation + *******************************************************************************/ +package org.simantics.issues.common; + +import gnu.trove.map.hash.THashMap; +import gnu.trove.set.hash.THashSet; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import org.simantics.Simantics; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.common.request.ObjectsWithType; +import org.simantics.db.common.request.QuaternaryRead; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.adapter.Instances; +import org.simantics.issues.Severity; +import org.simantics.issues.common.preferences.IssuePrefs; +import org.simantics.issues.ontology.IssueResource; +import org.simantics.layer0.Layer0; + +/** + * @author Tuukka Lehtonen + * @see CountModelIssuesBySeverity + */ +public class ListModelIssuesBySeverity extends QuaternaryRead>> { + + public ListModelIssuesBySeverity(Resource model, boolean onlyUnresolved, boolean respectVisibility, Severity minSeverity) { + super(model, onlyUnresolved, respectVisibility, minSeverity); + } + + @SuppressWarnings("unchecked") + @Override + public Map> perform(ReadGraph graph) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + IssueResource ISSUE = IssueResource.getInstance(graph); + + Severity[] keys = Severity.values(); + @SuppressWarnings("rawtypes") + List[] values = new List[keys.length]; + + Resource project = Simantics.getProjectResource(); + boolean showHidden = false; + boolean showNormal = true; + boolean showUser = true; + if (parameter3 && project != null) { + showHidden = IssuePrefs.showHiddenIssues(graph, project); + showNormal = IssuePrefs.showNormalIssues(graph, project); + showUser = IssuePrefs.showUserIssues(graph, project); + } + + Instances issueIndex = graph.getPossibleAdapter(ISSUE.Issue, Instances.class); + Collection modelIssues = graph.syncRequest(new ObjectsWithType(parameter, L0.ConsistsOf, ISSUE.Issue)); + Collection indexedIssues = issueIndex != null ? issueIndex.find(graph, parameter) : Collections.emptyList(); + Collection issues = !indexedIssues.isEmpty() ? new THashSet(modelIssues.size() + indexedIssues.size()) : modelIssues; + if (!indexedIssues.isEmpty()) { + issues.addAll(modelIssues); + issues.addAll(indexedIssues); + } + + final boolean ignoreResolved = parameter2; + for (Resource issue : issues) { + if (ignoreResolved && graph.hasStatement(issue, ISSUE.Resolved)) + continue; + boolean hidden = graph.hasStatement(issue, ISSUE.Hidden); + boolean user = graph.hasStatement(issue, ISSUE.UserIssue); + boolean normal = !hidden && !user; + if (!showHidden && hidden) + continue; + if (!showUser && user) + continue; + if (!showNormal && normal) + continue; + + Severity s = IssueUtils.toSeverity(ISSUE, graph.getPossibleObject(issue, ISSUE.Issue_HasSeverity)); + if (null != s && s.compareTo(parameter4) <= 0) { + int index = s.ordinal(); + @SuppressWarnings("rawtypes") + List list = values[index]; + if (list == null) + list = values[index] = new ArrayList(); + list.add(issue); + } + } + + THashMap> result = new THashMap>(values.length); + for (int i = 0; i < values.length; ++i) + if (values[i] != null) + result.put(keys[i], values[i]); + return result; + } + +}