]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.e4/src/org/argeo/cms/e4/monitoring/CmsSessionsView.java
[maven-release-plugin] prepare for next development iteration
[lgpl/argeo-commons.git] / org.argeo.cms.e4 / src / org / argeo / cms / e4 / monitoring / CmsSessionsView.java
1 //package org.argeo.eclipse.ui.workbench.osgi;
2 //public class BundlesView {}
3
4 package org.argeo.cms.e4.monitoring;
5
6 import java.util.ArrayList;
7 import java.util.Collection;
8 import java.util.List;
9
10 import javax.annotation.PostConstruct;
11 import javax.naming.ldap.LdapName;
12
13 import org.argeo.cms.CmsException;
14 import org.argeo.cms.auth.CmsSession;
15 import org.argeo.eclipse.ui.ColumnViewerComparator;
16 import org.argeo.eclipse.ui.specific.EclipseUiSpecificUtils;
17 import org.argeo.util.LangUtils;
18 import org.eclipse.e4.ui.di.Focus;
19 import org.eclipse.jface.viewers.ColumnLabelProvider;
20 import org.eclipse.jface.viewers.IStructuredContentProvider;
21 import org.eclipse.jface.viewers.TableViewer;
22 import org.eclipse.jface.viewers.TableViewerColumn;
23 import org.eclipse.jface.viewers.Viewer;
24 import org.eclipse.swt.SWT;
25 import org.eclipse.swt.widgets.Composite;
26 import org.osgi.framework.BundleContext;
27 import org.osgi.framework.FrameworkUtil;
28 import org.osgi.framework.InvalidSyntaxException;
29 import org.osgi.framework.ServiceReference;
30
31 /**
32 * Overview of the active CMS sessions.
33 */
34 public class CmsSessionsView {
35 private final static BundleContext bc = FrameworkUtil.getBundle(CmsSessionsView.class).getBundleContext();
36
37 private TableViewer viewer;
38
39 @PostConstruct
40 public void createPartControl(Composite parent) {
41 viewer = new TableViewer(parent);
42 viewer.setContentProvider(new CmsSessionContentProvider());
43 viewer.getTable().setHeaderVisible(true);
44
45 EclipseUiSpecificUtils.enableToolTipSupport(viewer);
46
47 int longColWidth = 150;
48 int smallColWidth = 100;
49
50 // Display name
51 TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
52 column.getColumn().setWidth(longColWidth);
53 column.getColumn().setText("User");
54 column.setLabelProvider(new ColumnLabelProvider() {
55 private static final long serialVersionUID = -5234573509093747505L;
56
57 public String getText(Object element) {
58 return ((CmsSession) element).getAuthorization().toString();
59 }
60
61 public String getToolTipText(Object element) {
62 return ((CmsSession) element).getUserDn().toString();
63 }
64 });
65 new ColumnViewerComparator(column);
66
67 // Creation time
68 column = new TableViewerColumn(viewer, SWT.NONE);
69 column.getColumn().setWidth(smallColWidth);
70 column.getColumn().setText("Since");
71 column.setLabelProvider(new ColumnLabelProvider() {
72 private static final long serialVersionUID = -5234573509093747505L;
73
74 public String getText(Object element) {
75 return LangUtils.since(((CmsSession) element).getCreationTime());
76 }
77
78 public String getToolTipText(Object element) {
79 return ((CmsSession) element).getCreationTime().toString();
80 }
81 });
82 new ColumnViewerComparator(column);
83
84 // Username
85 column = new TableViewerColumn(viewer, SWT.NONE);
86 column.getColumn().setWidth(smallColWidth);
87 column.getColumn().setText("Username");
88 column.setLabelProvider(new ColumnLabelProvider() {
89 private static final long serialVersionUID = -5234573509093747505L;
90
91 public String getText(Object element) {
92 LdapName userDn = ((CmsSession) element).getUserDn();
93 return userDn.getRdn(userDn.size() - 1).getValue().toString();
94 }
95
96 public String getToolTipText(Object element) {
97 return ((CmsSession) element).getUserDn().toString();
98 }
99 });
100 new ColumnViewerComparator(column);
101
102 // UUID
103 column = new TableViewerColumn(viewer, SWT.NONE);
104 column.getColumn().setWidth(smallColWidth);
105 column.getColumn().setText("UUID");
106 column.setLabelProvider(new ColumnLabelProvider() {
107 private static final long serialVersionUID = -5234573509093747505L;
108
109 public String getText(Object element) {
110 return ((CmsSession) element).getUuid().toString();
111 }
112
113 public String getToolTipText(Object element) {
114 return getText(element);
115 }
116 });
117 new ColumnViewerComparator(column);
118
119 // Local ID
120 column = new TableViewerColumn(viewer, SWT.NONE);
121 column.getColumn().setWidth(smallColWidth);
122 column.getColumn().setText("Local ID");
123 column.setLabelProvider(new ColumnLabelProvider() {
124 private static final long serialVersionUID = -5234573509093747505L;
125
126 public String getText(Object element) {
127 return ((CmsSession) element).getLocalId();
128 }
129
130 public String getToolTipText(Object element) {
131 return getText(element);
132 }
133 });
134 new ColumnViewerComparator(column);
135
136 viewer.setInput(bc);
137
138 }
139
140 @Focus
141 public void setFocus() {
142 if (viewer != null)
143 viewer.getControl().setFocus();
144 }
145
146 /** Content provider managing the array of bundles */
147 private static class CmsSessionContentProvider implements IStructuredContentProvider {
148 private static final long serialVersionUID = -8533792785725875977L;
149
150 public Object[] getElements(Object inputElement) {
151 if (inputElement instanceof BundleContext) {
152 BundleContext bc = (BundleContext) inputElement;
153 Collection<ServiceReference<CmsSession>> srs;
154 try {
155 srs = bc.getServiceReferences(CmsSession.class, null);
156 } catch (InvalidSyntaxException e) {
157 throw new CmsException("Cannot retrieve CMS sessions", e);
158 }
159 List<CmsSession> res = new ArrayList<>();
160 for (ServiceReference<CmsSession> sr : srs) {
161 res.add(bc.getService(sr));
162 }
163 return res.toArray();
164 }
165 return null;
166 }
167
168 public void dispose() {
169 }
170
171 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
172 }
173 }
174 }