Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: SLC RCP
-Bundle-SymbolicName: org.argeo.slc.client.rcp; singleton:=true
+Bundle-SymbolicName: org.argeo.slc.client.rcp;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: org.argeo.slc.client.rcp.ClientRcpPlugin
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Import-Package: org.argeo.slc.client.ui.views,
+Import-Package: org.argeo.slc.client.ui.services,
+ org.argeo.slc.client.ui.views,
org.argeo.slc.core.test.tree;version="0.13.0.SNAPSHOT-r3768",
org.argeo.slc.execution;version="0.13.0.SNAPSHOT-r3770",
org.argeo.slc.process;version="0.13.0.SNAPSHOT-r3770",
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
- <bean id="testManagerServiceAdapter" class="org.argeo.slc.services.impl.TestManagerServiceAdapter">
+ <!--
+ <bean id="testManagerServiceAdapter" class="org.argeo.slc.services.impl.TestManagerServiceAdapter">-->
+
+ <bean id="testManagerServiceAdapter" class="org.argeo.slc.client.ui.services.TestManagerServiceAdapter">
<property name="testManagerService" ref="testManagerService" />
</bean>
+
<bean id="slcExecutionServiceAdapter" class="org.argeo.slc.services.impl.SlcExecutionServiceAdapter">
<property name="slcExecutionService" ref="slcExecutionService" />
</bean>
import org.argeo.slc.client.ui.views.ExecutionModulesView;
import org.argeo.slc.client.ui.views.ResultListView;
+import org.argeo.slc.client.ui.views.SlcExecutionListView;
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IPerspectiveFactory;
IPageLayout.LEFT, 0.5f, editorArea);
layout.addStandaloneView(ResultListView.ID, false, IPageLayout.RIGHT,
0.5f, editorArea);
+ layout.addStandaloneView(SlcExecutionListView.ID, false,
+ IPageLayout.BOTTOM, 0.5f, editorArea);
}
}
Require-Bundle: org.eclipse.ui;resolution:=optional,
org.eclipse.rap.ui;resolution:=optional,
org.eclipse.core.runtime;resolution:=optional,
- com.springsource.org.hibernate;resolution:=optional
+ com.springsource.org.hibernate;resolution:=optional,
+ org.argeo.slc.specs
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Export-Package: org.argeo.slc.client.ui,
org.argeo.slc.client.ui.actions,
+ org.argeo.slc.client.ui.services,
org.argeo.slc.client.ui.views
Import-Package: org.apache.commons.logging;version="1.1.1",
org.argeo.eclipse.spring,
org.argeo.eclipse.ui,
org.argeo.slc.build;version="0.13.0.SNAPSHOT-r3685",
+ org.argeo.slc.core.attachment,
org.argeo.slc.core.runtime;version="0.13.0.SNAPSHOT-r3701",
org.argeo.slc.core.test.tree;version="0.13.0.SNAPSHOT-r3768",
org.argeo.slc.dao.test.tree;version="0.13.0.SNAPSHOT-r3768",
org.argeo.slc.deploy;version="0.13.0.SNAPSHOT-r3724",
org.argeo.slc.execution;version="0.13.0.SNAPSHOT-r3685",
+ org.argeo.slc.msg.test.tree,
org.argeo.slc.process;version="0.13.0.SNAPSHOT-r3685",
org.argeo.slc.runtime;version="0.13.0.SNAPSHOT-r3685",
org.argeo.slc.services;version="0.13.0.SNAPSHOT-r3773",
+ org.argeo.slc.test,
org.hibernate.hql.ast,
org.hibernate.jdbc,
org.springframework.beans.factory,
http://www.springframework.org/schema/beans \r
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
\r
+ <!-- DAO -->\r
<reference id="testResultCollectionDao"\r
interface="org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao" />\r
+ <reference id="slcExecutionDao" interface="org.argeo.slc.dao.process.SlcExecutionDao" />\r
+\r
+ <!-- Services -->\r
<reference id="slcExecutionService" interface="org.argeo.slc.services.SlcExecutionService" />\r
<list id="slcAgents" interface="org.argeo.slc.runtime.SlcAgent" />\r
</beans:beans>
\ No newline at end of file
scope="prototype">
<property name="testResultCollectionDao" ref="testResultCollectionDao" />
</bean>
+
+ <bean id="org.argeo.slc.client.ui.SlcExecutionListView" class="org.argeo.slc.client.ui.views.SlcExecutionListView"
+ scope="prototype">
+ <property name="slcExecutionDao" ref="slcExecutionDao" />
+ </bean>
<bean id="executionModulesContentProvider"
class="org.argeo.slc.client.ui.views.ExecutionModulesContentProvider">
class="org.argeo.eclipse.spring.SpringExtensionFactory"
name="Results"
restorable="true">
+ </view>
+ <view
+ id="org.argeo.slc.client.ui.SlcExecutionListView"
+ class="org.argeo.eclipse.spring.SpringExtensionFactory"
+ name="Slc Executions"
+ restorable="true">
</view>
</extension>
</action>
</actionSet>
</extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ defaultHandler="org.argeo.slc.client.ui.commands.RefreshHandler"
+ id="org.argeo.slc.client.ui.RefreshResultList"
+ name="RefreshResultList ">
+ </command>
+ </extension>
</plugin>
--- /dev/null
+package org.argeo.slc.client.ui.commands;
+
+import org.argeo.slc.client.ui.views.ResultListView;
+import org.argeo.slc.client.ui.views.SlcExecutionListView;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class RefreshHandler extends AbstractHandler {
+
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ResultListView view = (ResultListView) HandlerUtil
+ .getActiveWorkbenchWindow(event).getActivePage().findView(
+ ResultListView.ID);
+ view.retrieveResults();
+ SlcExecutionListView selView = (SlcExecutionListView) HandlerUtil
+ .getActiveWorkbenchWindow(event).getActivePage().findView(
+ SlcExecutionListView.ID);
+ selView.retrieveResults();
+ return null;
+ }
+
+}
--- /dev/null
+package org.argeo.slc.client.ui.services;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.slc.SlcException;
+import org.argeo.slc.client.ui.ClientUiPlugin;
+import org.argeo.slc.core.attachment.Attachment;
+import org.argeo.slc.core.attachment.SimpleAttachment;
+import org.argeo.slc.core.test.tree.TreeTestResult;
+import org.argeo.slc.core.test.tree.TreeTestResultListener;
+import org.argeo.slc.msg.test.tree.AddTreeTestResultAttachmentRequest;
+import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;
+import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;
+import org.argeo.slc.msg.test.tree.ResultPartRequest;
+import org.argeo.slc.services.TestManagerService;
+import org.argeo.slc.test.TestResultPart;
+import org.eclipse.ui.handlers.IHandlerService;
+
+/** In memory access to a test manager service */
+public class TestManagerServiceAdapter implements TreeTestResultListener {
+ private static final Log log = LogFactory
+ .getLog(TestManagerServiceAdapter.class);
+
+ private Boolean onlyOnClose = false;
+
+ private TestManagerService testManagerService;
+
+ public void resultPartAdded(TreeTestResult testResult,
+ TestResultPart testResultPart) {
+ if (onlyOnClose)
+ return;
+
+ if (testResult.getResultParts().size() == 1
+ && testResult.getResultParts().values().iterator().next()
+ .getParts().size() == 1) {
+ CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
+ testResult);
+ testManagerService.createTreeTestResult(req);
+ } else {
+ ResultPartRequest req = new ResultPartRequest(testResult);
+ testManagerService.addResultPart(req);
+ }
+ }
+
+ public void close(TreeTestResult testResult) {
+
+ if (onlyOnClose) {
+ CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
+ testResult);
+ testManagerService.createTreeTestResult(req);
+ } else {
+ CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(
+ testResult);
+ testManagerService.closeTreeTestResult(req);
+ }
+
+ // TODO : clean this -> pb of thread && commandID hardCoded.
+ // We force the refresh of the list view.
+ ClientUiPlugin.getDefault().getWorkbench().getDisplay().syncExec(
+ new Runnable() {
+ public void run() {
+ IHandlerService handlerService = (IHandlerService) ClientUiPlugin
+ .getDefault().getWorkbench().getService(
+ IHandlerService.class);
+ try {
+ handlerService
+ .executeCommand(
+ "org.argeo.slc.client.ui.RefreshResultList",
+ null);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new SlcException(
+ "Problem while rendering result. "
+ + e.getMessage());
+ }
+ }
+ }
+
+ );
+
+ }
+
+ public void addAttachment(TreeTestResult testResult, Attachment attachment) {
+ if (onlyOnClose)
+ return;
+ AddTreeTestResultAttachmentRequest req = new AddTreeTestResultAttachmentRequest();
+ req.setResultUuid(testResult.getUuid());
+ req.setAttachment((SimpleAttachment) attachment);
+ testManagerService.addAttachment(req);
+
+ }
+
+ /** Publishes the test result only when it gets closed. */
+ public void setOnlyOnClose(Boolean onlyOnClose) {
+ this.onlyOnClose = onlyOnClose;
+ }
+
+ public void setTestManagerService(TestManagerService testManagerService) {
+ this.testManagerService = testManagerService;
+ }
+
+}
--- /dev/null
+package org.argeo.slc.client.ui.views;
+
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.slc.core.test.tree.ResultAttributes;
+import org.argeo.slc.dao.process.SlcExecutionDao;
+import org.argeo.slc.process.SlcExecution;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.part.ViewPart;
+
+public class SlcExecutionListView extends ViewPart {
+ private final static Log log = LogFactory
+ .getLog(SlcExecutionListView.class);
+
+ public static final String ID = "org.argeo.slc.client.ui.SlcExecutionListView";
+
+ private TableViewer viewer;
+
+ private SlcExecutionDao slcExecutionDao;
+
+ public void createPartControl(Composite parent) {
+ Table table = createTable(parent);
+ viewer = new TableViewer(table);
+ viewer.setLabelProvider(new ViewLabelProvider());
+ viewer.setContentProvider(new ViewContentProvider());
+
+ viewer.setInput(getViewSite());
+ }
+
+ protected Table createTable(Composite parent) {
+ int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL
+ | SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
+
+ Table table = new Table(parent, style);
+
+ GridData gridData = new GridData(GridData.FILL_BOTH);
+ gridData.grabExcessVerticalSpace = true;
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.horizontalSpan = 3;
+ table.setLayoutData(gridData);
+
+ table.setLinesVisible(true);
+ table.setHeaderVisible(true);
+
+ TableColumn column = new TableColumn(table, SWT.LEFT, 0);
+ column.setText("Date");
+ column.setWidth(200);
+
+ column = new TableColumn(table, SWT.LEFT, 1);
+ column.setText("Host");
+ column.setWidth(100);
+
+ column = new TableColumn(table, SWT.LEFT, 2);
+ column.setText("Id");
+ column.setWidth(300);
+
+ column = new TableColumn(table, SWT.LEFT, 3);
+ column.setText("Status");
+ column.setWidth(100);
+
+ return table;
+ }
+
+ protected static class ViewContentProvider implements
+ IStructuredContentProvider {
+
+ public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
+ }
+
+ public void dispose() {
+ }
+
+ @SuppressWarnings("unchecked")
+ public Object[] getElements(Object obj) {
+ if (obj instanceof List) {
+ return ((List<ResultAttributes>) obj).toArray();
+ } else {
+ return new Object[0];
+ }
+ }
+ }
+
+ protected class ViewLabelProvider extends LabelProvider implements
+ ITableLabelProvider {
+ public String getColumnText(Object obj, int index) {
+ SlcExecution ra = (SlcExecution) obj;
+ switch (index) {
+
+ case 0:
+ return getText(ra.getStartDate());
+ case 1:
+ return ra.getHost();
+ case 2:
+ return ra.getUuid();
+ case 3:
+ return ra.currentStep().getType();
+ }
+ return getText(obj);
+ }
+
+ public Image getColumnImage(Object obj, int index) {
+ return null;
+ }
+
+ }
+
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+
+ public void retrieveResults() {
+ try {
+ List<SlcExecution> lst = slcExecutionDao.listSlcExecutions();
+
+ if (log.isTraceEnabled())
+ log.trace("Result attributes count: " + lst.size());
+ viewer.setInput(lst);
+ // viewer.refresh();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public void setSlcExecutionDao(SlcExecutionDao slcExecutionDao) {
+ this.slcExecutionDao = slcExecutionDao;
+ }
+
+}
\r
@Controller\r
public class RenderingResultController {\r
- // private static final Log log = LogFactory\r
- // .getLog(RenderingResultController.class);\r
+ // private static final Log log =\r
+ // LogFactory.getLog(RenderingResultController.class);\r
\r
public final static String MODELKEY_RESULT = "result";\r
\r