]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/maintenance/LogDeploymentUi.java
Add JGit to client.
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / maintenance / LogDeploymentUi.java
1 package org.argeo.cms.maintenance;
2
3 import java.text.DateFormat;
4 import java.text.SimpleDateFormat;
5 import java.util.Enumeration;
6 import java.util.GregorianCalendar;
7 import java.util.TimeZone;
8
9 import org.argeo.cms.util.CmsUtils;
10 import org.eclipse.swt.SWT;
11 import org.eclipse.swt.layout.GridData;
12 import org.eclipse.swt.widgets.Composite;
13 import org.eclipse.swt.widgets.Display;
14 import org.eclipse.swt.widgets.Text;
15 import org.osgi.service.log.LogEntry;
16 import org.osgi.service.log.LogListener;
17 import org.osgi.service.log.LogReaderService;
18
19 class LogDeploymentUi extends AbstractOsgiComposite implements LogListener {
20 private static final long serialVersionUID = 590221539553514693L;
21
22 private DateFormat dateFormat = new SimpleDateFormat("MMdd HH:mm");
23
24 private Display display;
25 private Text logDisplay;
26
27 public LogDeploymentUi(Composite parent, int style) {
28 super(parent, style);
29 }
30
31 @Override
32 protected void initUi(int style) {
33 LogReaderService logReader = getService(LogReaderService.class);
34 // FIXME use server push
35 // logReader.addLogListener(this);
36 this.display = getDisplay();
37 this.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
38 logDisplay = new Text(this, SWT.WRAP | SWT.MULTI | SWT.READ_ONLY);
39 logDisplay.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
40 CmsUtils.markup(logDisplay);
41 @SuppressWarnings("unchecked")
42 Enumeration<LogEntry> logEntries = (Enumeration<LogEntry>) logReader.getLog();
43 while (logEntries.hasMoreElements())
44 logDisplay.append(printEntry(logEntries.nextElement()));
45 }
46
47 private String printEntry(LogEntry entry) {
48 StringBuilder sb = new StringBuilder();
49 GregorianCalendar calendar = new GregorianCalendar(TimeZone.getDefault());
50 calendar.setTimeInMillis(entry.getTime());
51 sb.append(dateFormat.format(calendar.getTime())).append(' ');
52 sb.append(entry.getMessage());
53 sb.append('\n');
54 return sb.toString();
55 }
56
57 @Override
58 public void logged(LogEntry entry) {
59 if (display.isDisposed())
60 return;
61 display.asyncExec(() -> {
62 if (logDisplay.isDisposed())
63 return;
64 logDisplay.append(printEntry(entry));
65 });
66 display.wake();
67 }
68
69 // @Override
70 // public void dispose() {
71 // super.dispose();
72 // getService(LogReaderService.class).removeLogListener(this);
73 // }
74 }