diff options
author | donald.g.dunne | 2014-05-29 20:05:02 +0000 |
---|---|---|
committer | Donald Dunne | 2014-06-03 14:06:02 +0000 |
commit | 3e7de2b8ff1b8a3c199d210eec4504db7bf574fe (patch) | |
tree | 09b9b764d822befa86cb2be81f639f7e8d32f60f /plugins/org.eclipse.osee.framework.ui.skynet | |
parent | eca03004097ea019d9159446634d30b68f211317 (diff) | |
download | org.eclipse.osee-3e7de2b8ff1b8a3c199d210eec4504db7bf574fe.tar.gz org.eclipse.osee-3e7de2b8ff1b8a3c199d210eec4504db7bf574fe.tar.xz org.eclipse.osee-3e7de2b8ff1b8a3c199d210eec4504db7bf574fe.zip |
feature[ats_ATS34674]: Disable searches for access controlled branches
Change-Id: Ice8daf533a497c1eb10a13f412041ba09f3fded8
Diffstat (limited to 'plugins/org.eclipse.osee.framework.ui.skynet')
5 files changed, 81 insertions, 6 deletions
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/OSGI-INF/osee.access.service.ref.xml b/plugins/org.eclipse.osee.framework.ui.skynet/OSGI-INF/osee.access.service.ref.xml new file mode 100644 index 00000000000..9b2b1973dca --- /dev/null +++ b/plugins/org.eclipse.osee.framework.ui.skynet/OSGI-INF/osee.access.service.ref.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osee.framework.ui.skynet.access.AccessControlService"> + <implementation class="org.eclipse.osee.framework.ui.skynet.access.AccessControlService"/> + <reference bind="setAccessService" cardinality="1..1" interface="org.eclipse.osee.framework.core.services.IAccessControlService" name="IAccessControlService" policy="static"/> +</scr:component> diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/AccessControlService.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/AccessControlService.java new file mode 100644 index 00000000000..3f9ab70d4f8 --- /dev/null +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/access/AccessControlService.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * Copyright (c) 2014 Boeing. + * 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: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.framework.ui.skynet.access; + +import org.eclipse.osee.framework.core.services.IAccessControlService; + +/** + * @author Donald G. Dunne + */ +public class AccessControlService { + + private static IAccessControlService accessService; + + public static IAccessControlService getAccessService() { + return accessService; + } + + public void setAccessService(IAccessControlService accessService) { + AccessControlService.accessService = accessService; + } + +} diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchPage.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchPage.java index 1bcdebbc43f..95e0ba677a7 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchPage.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/ArtifactSearchPage.java @@ -31,6 +31,7 @@ import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.osee.framework.core.data.IArtifactType; import org.eclipse.osee.framework.core.data.IAttributeType; import org.eclipse.osee.framework.core.data.IOseeBranch; +import org.eclipse.osee.framework.core.enums.PermissionEnum; import org.eclipse.osee.framework.core.model.type.RelationType; import org.eclipse.osee.framework.help.ui.OseeHelpContext; import org.eclipse.osee.framework.jdk.core.type.Named; @@ -42,7 +43,9 @@ import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager; import org.eclipse.osee.framework.skynet.core.artifact.BranchManager; import org.eclipse.osee.framework.skynet.core.attribute.AttributeTypeManager; import org.eclipse.osee.framework.skynet.core.relation.RelationTypeManager; +import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.plugin.util.HelpUtil; +import org.eclipse.osee.framework.ui.skynet.access.AccessControlService; import org.eclipse.osee.framework.ui.skynet.internal.Activator; import org.eclipse.osee.framework.ui.skynet.search.filter.FilterModel; import org.eclipse.osee.framework.ui.skynet.search.filter.FilterModelList; @@ -116,6 +119,7 @@ public class ArtifactSearchPage extends DialogPage implements ISearchPage, IRepl branchSelect.setDisplayLabel(false); branchSelect.setSelection(BranchManager.getLastBranch()); branchSelect.createWidgets(mainComposite, 2); + branchSelect.addListener(new BranchSelectListener(branchSelect)); addFilterControls(mainComposite); addTableControls(mainComposite); @@ -134,6 +138,23 @@ public class ArtifactSearchPage extends DialogPage implements ISearchPage, IRepl } } + private static class BranchSelectListener implements Listener { + + private final XBranchSelectWidget branchSelect; + + public BranchSelectListener(XBranchSelectWidget branchSelect) { + this.branchSelect = branchSelect; + } + + @Override + public void handleEvent(Event event) { + IOseeBranch branch = branchSelect.getSelection(); + if (!isBranchReadable(branch)) { + AWorkbench.popup(String.format("Read Access Denied for branch [%s]", branch)); + } + } + } + private IOseeBranch getSelectedBranch() { IOseeBranch branch = branchSelect.getData(); if (branch == null) { @@ -399,7 +420,7 @@ public class ArtifactSearchPage extends DialogPage implements ISearchPage, IRepl }); Table table = new Table(composite, SWT.BORDER | SWT.V_SCROLL | SWT.HIDE_SELECTION); - filterviewer = new FilterTableViewer(table); + filterviewer = new FilterTableViewer(table, this); GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); gridData.heightHint = 100; gridData.widthHint = 500; @@ -472,14 +493,22 @@ public class ArtifactSearchPage extends DialogPage implements ISearchPage, IRepl super.setVisible(visible); } - public static void updateOKStatus() { - if (filterviewer == null || filterviewer.getFilterList().getFilters().isEmpty()) { + public void updateOKStatus() { + if (isBranchReadable(getSelectedBranch()) && filterviewer == null || filterviewer.getFilterList().getFilters().isEmpty()) { getContainer().setPerformActionEnabled(false); } else { getContainer().setPerformActionEnabled(true); } } + private static boolean isBranchReadable(IOseeBranch branch) { + boolean read = false; + if (branch != null) { + read = AccessControlService.getAccessService().hasPermission(branch, PermissionEnum.READ); + } + return read; + } + private String asString(FilterModel model) { StringBuilder builder = new StringBuilder(); builder.append(model.getSearch()); diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/QuickSearchView.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/QuickSearchView.java index b3f94a59641..def0051e6b8 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/QuickSearchView.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/QuickSearchView.java @@ -23,6 +23,7 @@ import org.eclipse.jface.action.Action; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.osee.framework.core.data.IOseeBranch; import org.eclipse.osee.framework.core.enums.DeletionFlag; +import org.eclipse.osee.framework.core.enums.PermissionEnum; import org.eclipse.osee.framework.core.model.Branch; import org.eclipse.osee.framework.help.ui.OseeHelpContext; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; @@ -32,8 +33,10 @@ import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.skynet.core.artifact.BranchManager; import org.eclipse.osee.framework.skynet.core.artifact.search.SearchOptions; import org.eclipse.osee.framework.skynet.core.artifact.search.SearchRequest; +import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.skynet.FrameworkImage; import org.eclipse.osee.framework.ui.skynet.OseeStatusContributionItemFactory; +import org.eclipse.osee.framework.ui.skynet.access.AccessControlService; import org.eclipse.osee.framework.ui.skynet.panels.SearchComposite; import org.eclipse.osee.framework.ui.skynet.util.DbConnectionExceptionComposite; import org.eclipse.osee.framework.ui.skynet.widgets.GenericViewPart; @@ -264,6 +267,8 @@ public class QuickSearchView extends GenericViewPart { final IOseeBranch branch = branchSelect.getData(); if (branch == null) { branchLabel.setText("Error: Must Select a Branch"); + } else if (!AccessControlService.getAccessService().hasPermission(branch, PermissionEnum.READ)) { + AWorkbench.popup(String.format("Access Denied for branch [%s]", branch)); } else if (Widgets.isAccessible(attrSearchComposite) && attrSearchComposite.isExecuteSearchEvent(event) && Widgets.isAccessible(optionsComposite)) { DeletionFlag allowDeleted = isIncludeDeletedEnabled() ? INCLUDE_DELETED : EXCLUDE_DELETED; NewSearchUI.activateSearchResultView(); @@ -285,7 +290,6 @@ public class QuickSearchView extends GenericViewPart { } } } - } private class GuidSearchListener implements Listener { @@ -297,6 +301,11 @@ public class QuickSearchView extends GenericViewPart { final IOseeBranch branch = branchSelect.getData(); if (branch == null) { branchLabel.setText("Error: Must Select a Branch"); + } else if (!AccessControlService.getAccessService().hasPermission(branch, PermissionEnum.READ)) { + // since AttributeSearchListener is called when Select Branch is actioned, only display if this is the guid search button + if ((event.widget instanceof Button) && ((Button) event.widget).getText().equals("Search")) { + AWorkbench.popup(String.format("Access Denied for branch [%s]", branch)); + } } else if (Widgets.isAccessible(guidSearchComposite) && guidSearchComposite.isExecuteSearchEvent(event)) { String searchString = guidSearchComposite.getQuery(); List<String> invalids = new LinkedList<String>(); diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterTableViewer.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterTableViewer.java index d6c2967f578..aded643f17f 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterTableViewer.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/search/filter/FilterTableViewer.java @@ -38,12 +38,14 @@ public class FilterTableViewer { public static final int SEARCH_NUM = 1; public static final int TYPE_NUM = 2; public static final int VALUE_NUM = 3; + private final ArtifactSearchPage page; /** * @param table - */ - public FilterTableViewer(Table table) { + public FilterTableViewer(Table table, ArtifactSearchPage page) { this.table = table; + this.page = page; this.createControl(); @@ -115,7 +117,7 @@ public class FilterTableViewer { public void refresh() { tableViewer.refresh(); - ArtifactSearchPage.updateOKStatus(); + page.updateOKStatus(); } /** |