X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.eclipse.ui.workbench%2Fsrc%2Forg%2Fargeo%2Feclipse%2Fui%2Fworkbench%2Finternal%2Fjcr%2Fparts%2FNodePrivilegesPage.java;fp=org.argeo.eclipse.ui.workbench%2Fsrc%2Forg%2Fargeo%2Feclipse%2Fui%2Fworkbench%2Finternal%2Fjcr%2Fparts%2FNodePrivilegesPage.java;h=0000000000000000000000000000000000000000;hb=4338fa5772c552075801aa689e5c2488b85d6756;hp=1732fa439855580d829993da1bad26ae5f813c1e;hpb=277bb126a4b8523b93c2cd9abd345833a8387eba;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/internal/jcr/parts/NodePrivilegesPage.java b/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/internal/jcr/parts/NodePrivilegesPage.java deleted file mode 100644 index 1732fa439..000000000 --- a/org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/internal/jcr/parts/NodePrivilegesPage.java +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.eclipse.ui.workbench.internal.jcr.parts; - -import java.util.ArrayList; -import java.util.List; - -import javax.jcr.Node; -import javax.jcr.NodeIterator; -import javax.jcr.RepositoryException; -import javax.jcr.Value; - -import org.argeo.eclipse.ui.EclipseUiException; -import org.argeo.eclipse.ui.workbench.WorkbenchUiPlugin; -import org.eclipse.jface.viewers.ColumnLabelProvider; -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.TableViewerColumn; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.ui.forms.IManagedForm; -import org.eclipse.ui.forms.editor.FormEditor; -import org.eclipse.ui.forms.editor.FormPage; -import org.eclipse.ui.forms.widgets.ScrolledForm; - -/** - * Display and edit a given node privilege. For the time being it is completely - * JackRabbit specific (and hardcoded for this) and will display an empty page - * if using any other implementation - */ -public class NodePrivilegesPage extends FormPage { - - private Node context; - - private TableViewer viewer; - - public NodePrivilegesPage(FormEditor editor, String title, Node context) { - super(editor, "NodePrivilegesPage", title); - this.context = context; - } - - protected void createFormContent(IManagedForm managedForm) { - ScrolledForm form = managedForm.getForm(); - form.setText(WorkbenchUiPlugin - .getMessage("nodeRightsManagementPageTitle")); - FillLayout layout = new FillLayout(); - layout.marginHeight = 5; - layout.marginWidth = 5; - form.getBody().setLayout(layout); - if (isJackRabbit()) - createRightsPart(form.getBody()); - } - - /** Creates the authorization part */ - protected void createRightsPart(Composite parent) { - Table table = new Table(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); - table.setLinesVisible(true); - table.setHeaderVisible(true); - viewer = new TableViewer(table); - - // Group / user name - TableViewerColumn column = createTableViewerColumn(viewer, - "User/Group Name", 280); - column.setLabelProvider(new ColumnLabelProvider() { - private static final long serialVersionUID = -2290781173498395973L; - - public String getText(Object element) { - Node node = (Node) element; - try { - if (node.hasProperty("rep:principalName")) - return node.getProperty("rep:principalName") - .getString(); - } catch (RepositoryException e) { - throw new EclipseUiException("Unable to retrieve " - + "principal name on " + node, e); - } - return ""; - } - - public Image getImage(Object element) { - return null; - } - }); - - // Privileges - column = createTableViewerColumn(viewer, "Assigned privileges", 300); - column.setLabelProvider(new ColumnLabelProvider() { - private static final long serialVersionUID = -2290781173498395973L; - private String propertyName = "rep:privileges"; - - public String getText(Object element) { - Node node = (Node) element; - try { - if (node.hasProperty(propertyName)) { - String separator = ", "; - Value[] langs = node.getProperty(propertyName) - .getValues(); - StringBuilder builder = new StringBuilder(); - for (Value val : langs) { - String currStr = val.getString(); - builder.append(currStr).append(separator); - } - if (builder.lastIndexOf(separator) >= 0) - return builder.substring(0, builder.length() - - separator.length()); - else - return builder.toString(); - - } - } catch (RepositoryException e) { - throw new EclipseUiException("Unable to retrieve " - + "privileges on " + node, e); - } - return ""; - } - - public Image getImage(Object element) { - return null; - } - }); - - // Relevant node - column = createTableViewerColumn(viewer, "Relevant node", 300); - column.setLabelProvider(new ColumnLabelProvider() { - /** - * - */ - private static final long serialVersionUID = 4245522992038244849L; - - public String getText(Object element) { - Node node = (Node) element; - try { - return node.getParent().getParent().getPath(); - } catch (RepositoryException e) { - throw new EclipseUiException("Unable get path for " + node, e); - } - } - - public Image getImage(Object element) { - return null; - } - }); - - viewer.setContentProvider(new RightsContentProvider()); - viewer.setInput(getEditorSite()); - } - - protected TableViewerColumn createTableViewerColumn(TableViewer viewer, - String title, int bound) { - final TableViewerColumn viewerColumn = new TableViewerColumn(viewer, - SWT.NONE); - final TableColumn column = viewerColumn.getColumn(); - column.setText(title); - column.setWidth(bound); - column.setResizable(true); - column.setMoveable(true); - return viewerColumn; - } - - private class RightsContentProvider implements IStructuredContentProvider { - private static final long serialVersionUID = -7631476348552802706L; - - public void dispose() { - } - - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - } - - // TODO JackRabbit specific retrieval of authorization. Clean and - // generalize - public Object[] getElements(Object inputElement) { - try { - List privs = new ArrayList(); - - Node currNode = context; - String currPath = currNode.getPath(); - - loop: while (true) { - if (currNode.hasNode("rep:policy")) { - NodeIterator nit = currNode.getNode("rep:policy") - .getNodes(); - while (nit.hasNext()) { - Node currPrivNode = nit.nextNode(); - if (currPrivNode.getName().startsWith("allow")) - privs.add(currPrivNode); - } - } - if ("/".equals(currPath)) - break loop; - else { - currNode = currNode.getParent(); - currPath = currNode.getPath(); - } - } - - // AccessControlManager acm = context.getSession() - // .getAccessControlManager(); - // AccessControlPolicyIterator acpi = acm - // .getApplicablePolicies(context.getPath()); - // - // List acps = new - // ArrayList(); - // try { - // while (true) { - // Object obj = acpi.next(); - // acps.add((AccessControlPolicy) obj); - // } - // } catch (Exception e) { - // // No more elements - // } - // - // AccessControlList acl = ((AccessControlList) acps.get(0)); - // AccessControlEntry[] entries = acl.getAccessControlEntries(); - - return privs.toArray(); - } catch (Exception e) { - throw new EclipseUiException("Cannot retrieve authorization for " - + context, e); - } - } - } - - // simply check if we are using jackrabbit without adding code dependencies - private boolean isJackRabbit() { - try { - String cname = context.getSession().getClass().getName(); - return cname.startsWith("org.apache.jackrabbit"); - } catch (RepositoryException e) { - throw new EclipseUiException("Cannot check JCR implementation used on " - + context, e); - } - } - -} \ No newline at end of file