[openrtm-commit:00028] r168 - in trunk/rtmtools: jp.go.aist.rtm.systemeditor jp.go.aist.rtm.systemeditor/META-INF jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/nl jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/action jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/editor jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/views jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/views/logview jp.go.aist.rtm.systemeditor.nl1 jp.go.aist.rtm.systemeditor.nl1/META-INF jp.go.aist.rtm.systemeditor.nl1/src/jp/go/aist/rtm/systemeditor/nl jp.go.aist.rtm.toolscommon jp.go.aist.rtm.toolscommon/META-INF jp.go.aist.rtm.toolscommon/idl jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/adapterfactory jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/validation jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/nl jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/propertysource jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/workbenchadapter jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/validation jp.go.aist.rtm.toolscommon/text jp.go.aist.rtm.toolscommon.nl1/META-INF jp.go.aist.rtm.toolscommon.nl1/src/jp/go/aist/rtm/toolscommon/nl
openrtm @ openrtm.org
openrtm @ openrtm.org
2011年 4月 28日 (木) 12:04:06 JST
Author: ta
Date: 2011-04-28 12:04:05 +0900 (Thu, 28 Apr 2011)
New Revision: 168
Added:
trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/action/StartLoggingActionDelegate.java
trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/views/logview/
trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/views/logview/LogView.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/idl/Logger.idl
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/CorbaLogObserver.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaLogObserverImpl.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/CorbaObserverStore.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/RTCLogStore.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/validation/CorbaLogObserverValidator.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/propertysource/CorbaObserverPropertySource.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/workbenchadapter/CorbaObserverWorkbenchAdapter.java
Modified:
trunk/rtmtools/jp.go.aist.rtm.systemeditor.nl1/META-INF/MANIFEST.MF
trunk/rtmtools/jp.go.aist.rtm.systemeditor.nl1/plugin_ja.properties
trunk/rtmtools/jp.go.aist.rtm.systemeditor.nl1/src/jp/go/aist/rtm/systemeditor/nl/messages_ja.properties
trunk/rtmtools/jp.go.aist.rtm.systemeditor/META-INF/MANIFEST.MF
trunk/rtmtools/jp.go.aist.rtm.systemeditor/plugin.properties
trunk/rtmtools/jp.go.aist.rtm.systemeditor/plugin.xml
trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/nl/messages.properties
trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/editor/AbstractSystemDiagramContextMenuProvider.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon.nl1/META-INF/MANIFEST.MF
trunk/rtmtools/jp.go.aist.rtm.toolscommon.nl1/src/jp/go/aist/rtm/toolscommon/nl/messages_ja.properties
trunk/rtmtools/jp.go.aist.rtm.toolscommon/META-INF/MANIFEST.MF
trunk/rtmtools/jp.go.aist.rtm.toolscommon/plugin.xml
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/adapterfactory/WorkbenchAdapterFactory.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component.ecore
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/ComponentFactory.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/ComponentPackage.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/CorbaComponent.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/CorbaObserver.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/ComponentFactoryImpl.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/ComponentPackageImpl.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaComponentImpl.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaObserverImpl.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaStatusObserverImpl.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/SystemDiagramImpl.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/ComponentAdapterFactory.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/ComponentSwitch.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/validation/CorbaComponentValidator.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/nl/messages.properties
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/workbenchadapter/ComponentWorkbenchAdapter.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/validation/AbstractValidator.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/validation/ValidateException.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/validation/Validator.java
trunk/rtmtools/jp.go.aist.rtm.toolscommon/text/description.txt
Log:
RTSE updates.
- support log observer.
- add logview.
Modified: trunk/rtmtools/jp.go.aist.rtm.systemeditor/META-INF/MANIFEST.MF
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.systemeditor/META-INF/MANIFEST.MF 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.systemeditor/META-INF/MANIFEST.MF 2011-04-28 03:04:05 UTC (rev 168)
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: jp.go.aist.rtm.systemeditor;singleton:=true
-Bundle-Version: 1.1.0.v20110411
+Bundle-Version: 1.1.0.v20110428
Bundle-Activator: jp.go.aist.rtm.systemeditor.RTSystemEditorPlugin
Bundle-Localization: plugin
Require-Bundle:
Modified: trunk/rtmtools/jp.go.aist.rtm.systemeditor/plugin.properties
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.systemeditor/plugin.properties 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.systemeditor/plugin.properties 2011-04-28 03:04:05 UTC (rev 168)
@@ -67,6 +67,7 @@
Create_Composite_Component =Create Composite Component
Decompose_Composite_Component =Decompose Composite Component
Open_With_System_Diagram_Editor =Open With System Diagram Editor
+StartLogging.label =Start Logging
All_Disconnect =All Disconnect
Modified: trunk/rtmtools/jp.go.aist.rtm.systemeditor/plugin.xml
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.systemeditor/plugin.xml 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.systemeditor/plugin.xml 2011-04-28 03:04:05 UTC (rev 168)
@@ -88,8 +88,8 @@
name="%RT_Log_View"
icon="icons/RT_icon.png"
category="rtse"
- class="org.eclipse.ui.internal.console.ConsoleView"
- id="jp.go.aist.rtm.systemeditor.ui.views.RTLogView">
+ class="jp.go.aist.rtm.systemeditor.ui.views.logview.LogView"
+ id="jp.go.aist.rtm.systemeditor.ui.views.logview.LogView">
</view>
</extension>
@@ -201,7 +201,7 @@
</visibility>
<action id="jp.go.aist.rtm.systemeditor.ui.action.CombineActionDelegate"
label="%Create_Composite_Component"
- menubarPath="additions"
+ menubarPath="composite"
class="jp.go.aist.rtm.systemeditor.ui.action.CombineActionDelegate">
</action>
</viewerContribution>
@@ -213,7 +213,7 @@
</visibility>
<action id="jp.go.aist.rtm.systemeditor.ui.action.CombineActionDelegate"
label="%Create_Composite_Component"
- menubarPath="additions"
+ menubarPath="composite"
class="jp.go.aist.rtm.systemeditor.ui.action.CombineActionDelegate">
</action>
</viewerContribution>
@@ -276,7 +276,7 @@
<action id="jp.go.aist.rtm.systemeditor.ui.action.DecomposeComponentAction"
label="%Decompose_Composite_Component"
enablesFor="1"
- menubarPath="additions"
+ menubarPath="composite"
class="jp.go.aist.rtm.systemeditor.ui.action.DecomposeComponentFormPopupMenuActionDelegate">
</action>
</objectContribution>
@@ -287,7 +287,7 @@
<action id="jp.go.aist.rtm.systemeditor.ui.action.OpenCompositeComponentAction"
label="%Open_With_System_Diagram_Editor"
enablesFor="1"
- menubarPath="additions"
+ menubarPath="composite"
class="jp.go.aist.rtm.systemeditor.ui.action.OpenCompositeComponentFormPopupMenuActionDelegate">
</action>
</objectContribution>
@@ -311,6 +311,18 @@
label="%Export">
</action>
</objectContribution>
+ <objectContribution
+ adaptable="true"
+ id="jp.go.aist.rtm.systemeditor.ui.objectContribution.Component"
+ objectClass="jp.go.aist.rtm.systemeditor.ui.editor.editpart.ComponentEditPart">
+ <action
+ class="jp.go.aist.rtm.systemeditor.ui.action.StartLoggingActionDelegate"
+ id="jp.go.aist.rtm.systemeditor.ui.action.StartLoggingAction"
+ label="%StartLogging.label"
+ enablesFor="1"
+ menubarPath="additions">
+ </action>
+ </objectContribution>
</extension>
<extension point = "org.eclipse.ui.actionSets">
@@ -438,7 +450,7 @@
relative="jp.go.aist.rtm.systemeditor.ui.views.configurationview.ConfigurationView">
</view>
<view
- id="jp.go.aist.rtm.systemeditor.ui.views.RTLogView"
+ id="jp.go.aist.rtm.systemeditor.ui.views.logview.LogView"
relationship="stack"
relative="jp.go.aist.rtm.systemeditor.ui.views.configurationview.ConfigurationView">
</view>
@@ -447,7 +459,7 @@
<viewShortcut id="jp.go.aist.rtm.systemeditor.ui.views.managercontrolview.ManagerControlView"/>
<viewShortcut id="jp.go.aist.rtm.systemeditor.ui.views.compositecomponentview.CompositeComponentView"/>
<viewShortcut id="jp.go.aist.rtm.systemeditor.ui.views.executioncontextview.ExecutionContextView"/>
- <viewShortcut id="jp.go.aist.rtm.systemeditor.ui.views.RTLogView"/>
+ <viewShortcut id="jp.go.aist.rtm.systemeditor.ui.views.logview.LogView"/>
</perspectiveExtension>
</extension>
Modified: trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/nl/messages.properties
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/nl/messages.properties 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/nl/messages.properties 2011-04-28 03:04:05 UTC (rev 168)
@@ -320,3 +320,5 @@
ExecutionContextView.12=Detach
ExecutionContextView.13=Attach
SelectAttachComponentDialog.1=Please select component attached to Context.
+StartLoggingActionDelegate.start=Start Logging
+StartLoggingActionDelegate.stop=Stop Logging
Added: trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/action/StartLoggingActionDelegate.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/action/StartLoggingActionDelegate.java (rev 0)
+++ trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/action/StartLoggingActionDelegate.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -0,0 +1,86 @@
+package jp.go.aist.rtm.systemeditor.ui.action;
+
+import jp.go.aist.rtm.systemeditor.nl.Messages;
+import jp.go.aist.rtm.systemeditor.ui.editor.AbstractSystemDiagramEditor;
+import jp.go.aist.rtm.systemeditor.ui.editor.editpart.ComponentEditPart;
+import jp.go.aist.rtm.toolscommon.model.component.Component;
+import jp.go.aist.rtm.toolscommon.model.component.ComponentFactory;
+import jp.go.aist.rtm.toolscommon.model.component.CorbaComponent;
+import jp.go.aist.rtm.toolscommon.model.component.CorbaLogObserver;
+import jp.go.aist.rtm.toolscommon.model.component.SystemDiagram;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+public class StartLoggingActionDelegate implements IObjectActionDelegate {
+
+ static final String ACTION_START_LOGGING = Messages
+ .getString("StartLoggingActionDelegate.start");
+ static final String ACTION_STOP_LOGGING = Messages
+ .getString("StartLoggingActionDelegate.stop");
+
+ SystemDiagram diagram;
+ CorbaComponent component;
+
+ @Override
+ public void run(IAction action) {
+ if (component == null) {
+ return;
+ }
+ //
+ if (component.getLogObserver() != null) {
+ component.getLogObserver().finish();
+ } else {
+ CorbaLogObserver obs = ComponentFactory.eINSTANCE
+ .createCorbaLogObserver();
+ obs.attachComponent(component);
+ }
+ }
+
+ @Override
+ public void selectionChanged(IAction action, ISelection selection) {
+ component = null;
+ if (selection instanceof IStructuredSelection) {
+ Object part = ((IStructuredSelection) selection).getFirstElement();
+ if (part instanceof ComponentEditPart) {
+ Component model = ((ComponentEditPart) part).getModel();
+ if (model instanceof CorbaComponent) {
+ component = (CorbaComponent) model;
+ }
+ }
+ }
+ //
+ if (component == null || !component.supportedCorbaObserver()) {
+ action.setText(ACTION_START_LOGGING);
+ action.setEnabled(false);
+ return;
+ }
+ //
+ String actionName = ACTION_START_LOGGING;
+ if (component.getLogObserver() != null) {
+ actionName = ACTION_STOP_LOGGING;
+ }
+ action.setText(actionName);
+ action.setEnabled(canExecution());
+ }
+
+ @Override
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ diagram = null;
+ if (targetPart instanceof AbstractSystemDiagramEditor) {
+ AbstractSystemDiagramEditor editor = (AbstractSystemDiagramEditor) targetPart;
+ if (editor.isOnline()) {
+ diagram = editor.getSystemDiagram();
+ }
+ }
+ action.setEnabled(canExecution());
+ }
+
+ boolean canExecution() {
+ return (diagram != null && component != null);
+ }
+
+}
Modified: trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/editor/AbstractSystemDiagramContextMenuProvider.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/editor/AbstractSystemDiagramContextMenuProvider.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/editor/AbstractSystemDiagramContextMenuProvider.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -34,6 +34,9 @@
menuManager.add(new Separator("executionContext_before"));
menuManager.add(new Separator("executionContext"));
menuManager.add(new Separator("executionContext_after"));
+ menuManager.add(new Separator("composite_before"));
+ menuManager.add(new Separator("composite"));
+ menuManager.add(new Separator("composite_after"));
menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS
+ "_before"));
menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
Added: trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/views/logview/LogView.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/views/logview/LogView.java (rev 0)
+++ trunk/rtmtools/jp.go.aist.rtm.systemeditor/src/jp/go/aist/rtm/systemeditor/ui/views/logview/LogView.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -0,0 +1,634 @@
+package jp.go.aist.rtm.systemeditor.ui.views.logview;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import jp.go.aist.rtm.systemeditor.RTSystemEditorPlugin;
+import jp.go.aist.rtm.toolscommon.model.component.Component;
+import jp.go.aist.rtm.toolscommon.model.component.CorbaComponent;
+import jp.go.aist.rtm.toolscommon.model.component.SystemDiagram;
+import jp.go.aist.rtm.toolscommon.model.component.SystemDiagramKind;
+import jp.go.aist.rtm.toolscommon.model.component.util.RTCLogStore;
+import jp.go.aist.rtm.toolscommon.util.AdapterUtil;
+
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.CheckboxCellEditor;
+import org.eclipse.jface.viewers.ColumnViewer;
+import org.eclipse.jface.viewers.EditingSupport;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableColorProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.part.ViewPart;
+
+public class LogView extends ViewPart {
+
+ static final OpenRTM.LogLevel[] LEVEL_LIST = new OpenRTM.LogLevel[] {
+ OpenRTM.LogLevel.ERROR, //
+ OpenRTM.LogLevel.WARN, //
+ OpenRTM.LogLevel.INFO, //
+ OpenRTM.LogLevel.NORMAL, //
+ OpenRTM.LogLevel.DEBUG, //
+ OpenRTM.LogLevel.TRACE, //
+ OpenRTM.LogLevel.VERBOSE, //
+ OpenRTM.LogLevel.PARANOID //
+ };
+
+ static final int PROPERTY_DISP = 0;
+ static final int PROPERTY_RTC = 1;
+
+ static final int PROPERTY_TIME = 0;
+ static final int PROPERTY_LEVEL = 1;
+ static final int PROPERTY_COMP = 2;
+ static final int PROPERTY_LOGGER = 3;
+ static final int PROPERTY_BODY = 4;
+
+ TableViewer rtclistTableViewer;
+ Table rtclistTable;
+ TableViewer rtclogTableViewer;
+ Table rtclogTable;
+
+ SystemDiagram targetDiagram;
+
+ RTCStore rtcStore;
+ List<RTCLog> logList;
+
+ LogViewerFilter filter;
+
+ SimpleDateFormat df;
+
+ public LogView() {
+ this.df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ }
+
+ public LogView getLogView() {
+ return this;
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ GridLayout gl;
+ GridData gd;
+
+ gl = new GridLayout();
+ gl.numColumns = 3;
+ parent.setLayout(gl);
+
+ SashForm sashForm = new SashForm(parent, SWT.HORIZONTAL);
+ gd = new GridData();
+ gd.horizontalAlignment = SWT.FILL;
+ gd.verticalAlignment = SWT.FILL;
+ gd.grabExcessHorizontalSpace = true;
+ gd.grabExcessVerticalSpace = true;
+ gd.horizontalSpan = 2;
+ sashForm.setLayoutData(gd);
+
+ createRTCListPart(sashForm);
+
+ createRTCLogPart(sashForm);
+
+ sashForm.setWeights(new int[] { 20, 80 });
+
+ setSiteSelection();
+ }
+
+ Composite createRTCListPart(SashForm sash) {
+ GridLayout gl;
+ GridData gd;
+
+ Composite composite = new Composite(sash, SWT.FILL);
+ gl = new GridLayout();
+ gl.marginWidth = 0;
+ gl.marginHeight = 0;
+ gl.numColumns = 1;
+ composite.setLayout(gl);
+
+ rtclistTableViewer = new TableViewer(composite, SWT.FULL_SELECTION
+ | SWT.SINGLE | SWT.BORDER);
+ rtclistTableViewer.setContentProvider(new ArrayContentProvider());
+
+ rtclistTable = rtclistTableViewer.getTable();
+ rtclistTable.setLinesVisible(true);
+ rtclistTable.setHeaderVisible(true);
+ gd = new GridData();
+ gd.verticalAlignment = SWT.FILL;
+ gd.horizontalAlignment = SWT.FILL;
+ gd.grabExcessVerticalSpace = true;
+ gd.grabExcessHorizontalSpace = true;
+ rtclistTable.setLayoutData(gd);
+
+ gl = new GridLayout(1, false);
+ gl.numColumns = 1;
+ rtclistTable.setLayout(gl);
+
+ TableViewerColumn col;
+ col = createColumn(rtclistTableViewer, "", 30);
+ col.setEditingSupport(new RTCEditingSupport(rtclistTableViewer,
+ PROPERTY_DISP));
+
+ createColumn(rtclistTableViewer, "component", 90);
+
+ rtclistTableViewer.setLabelProvider(new RTCLabelProvider());
+
+ Combo levelCombo = new Combo(composite, SWT.READ_ONLY);
+ gd = new GridData();
+ gd.horizontalAlignment = SWT.FILL;
+ gd.grabExcessHorizontalSpace = true;
+ levelCombo.setLayoutData(gd);
+
+ for (OpenRTM.LogLevel lv : LEVEL_LIST) {
+ levelCombo.add(RTCLogStore.toLevelName(lv));
+ }
+ levelCombo.select(0);
+ levelCombo.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ Combo c = (Combo) e.widget;
+ if (c.getSelectionIndex() < 0) {
+ return;
+ }
+ OpenRTM.LogLevel lv = LEVEL_LIST[c.getSelectionIndex()];
+ filter.level = lv;
+ }
+ });
+
+ return composite;
+ }
+
+ Composite createRTCLogPart(SashForm sash) {
+ GridLayout gl;
+ GridData gd;
+
+ Composite composite = new Composite(sash, SWT.FILL);
+ gl = new GridLayout();
+ gl.numColumns = 2;
+ gl.marginWidth = 0;
+ gl.marginHeight = 0;
+ composite.setLayout(gl);
+
+ rtclogTableViewer = new TableViewer(composite, SWT.FULL_SELECTION
+ | SWT.SINGLE | SWT.BORDER);
+ rtclogTableViewer.setContentProvider(new ArrayContentProvider());
+
+ filter = new LogViewerFilter();
+ rtclogTableViewer.setFilters(new ViewerFilter[] { filter });
+ filter.rtcNames.add("ConsoleIn0");
+
+ rtclogTable = rtclogTableViewer.getTable();
+ rtclogTable.setLinesVisible(true);
+
+ gd = new GridData();
+ gd.verticalAlignment = SWT.FILL;
+ gd.horizontalAlignment = SWT.FILL;
+ gd.grabExcessVerticalSpace = true;
+ gd.grabExcessHorizontalSpace = true;
+ gd.horizontalSpan = 2;
+ rtclogTable.setLayoutData(gd);
+ rtclogTable.setHeaderVisible(true);
+
+ createColumn(rtclogTableViewer, "time", 80);
+ createColumn(rtclogTableViewer, "level", 60);
+ createColumn(rtclogTableViewer, "component", 90);
+ createColumn(rtclogTableViewer, "logger", 60);
+ createColumn(rtclogTableViewer, "message", 120);
+
+ rtclogTableViewer.setLabelProvider(new LogLabelProvider());
+
+ return composite;
+ }
+
+ TableViewerColumn createColumn(TableViewer viewer, String title, int width) {
+ TableViewerColumn col;
+ col = new TableViewerColumn(viewer, SWT.NONE);
+ col.getColumn().setText(title);
+ col.getColumn().setWidth(width);
+ return col;
+ }
+
+ /** å
é¨ã¢ãã«(RTCä¸è¦§)ãæ§ç¯ */
+ void buildData() {
+ if (targetDiagram == null) {
+ return;
+ }
+ rtcStore = RTCStore.get(targetDiagram);
+
+ refreshData();
+ }
+
+ /** å
é¨ã¢ãã«(ãã°ä¸è¦§)ãæ§ç¯ [éåæ] */
+ void buildLogData() {
+ if (rtcStore == null) {
+ return;
+ }
+ if (logList == null) {
+ logList = new ArrayList<RTCLog>();
+ }
+ logList.clear();
+ //
+ List<String> id_list = new ArrayList<String>();
+ for (RTCStore.RTC rtc : rtcStore.rtcs) {
+ if (rtc.comp.getLogObserver() == null) {
+ continue;
+ }
+ id_list.add(rtc.comp.getLogObserver().getServiceProfile().id);
+ }
+ List<RTCLogStore.Record> records = RTCLogStore.eINSTANCE.find(id_list,
+ 10000);
+ for (RTCLogStore.Record r : records) {
+ RTCLog rlog = new RTCLog(r);
+ logList.add(rlog);
+ }
+ }
+
+ /** å
é¨ã¢ãã«(RTCä¸è¦§)ãã表示 */
+ void refreshData() {
+ rtclistTableViewer.setInput(Collections.EMPTY_LIST);
+ if (rtcStore != null) {
+ rtclistTableViewer.setInput(rtcStore.rtcs);
+ if (rtclistTable.getItemCount() <= 0) {
+ return;
+ }
+ }
+ }
+
+ /** å
é¨ã¢ãã«(ãã°ä¸è¦§)ãã表示 [éåæ] */
+ void refreshLogData() {
+ if (rtcStore == null) {
+ return;
+ }
+ filter.rtcNames.clear();
+ for (RTCStore.RTC rtc : rtcStore.rtcs) {
+ if (rtc.display) {
+ filter.rtcNames.add(rtc.comp.getInstanceNameL());
+ }
+ }
+ try {
+ rtclogTableViewer.getControl().getDisplay().asyncExec(
+ new Runnable() {
+ @Override
+ public void run() {
+ if (rtclogTableViewer.getControl().isDisposed()) {
+ return;
+ }
+ if (rtclogTableViewer.getInput() == null) {
+ rtclogTableViewer.setInput(logList);
+ }
+ rtclogTableViewer.refresh();
+ }
+ });
+ } catch (Exception e) {
+ }
+ }
+
+ @Override
+ public void dispose() {
+ if (refresher != null) {
+ refresher.end();
+ }
+ super.dispose();
+ }
+
+ @Override
+ public void setFocus() {
+ // TODO Auto-generated method stub
+ }
+
+ /** RTCä¸è¦§ã表ãã¯ã©ã¹ */
+ static class RTCStore {
+ static Map<SystemDiagram, RTCStore> store = new HashMap<SystemDiagram, RTCStore>();
+
+ public static RTCStore get(SystemDiagram diagram) {
+ RTCStore result = store.get(diagram);
+ if (result == null) {
+ result = new RTCStore();
+ store.put(diagram, result);
+ }
+ result.reset(diagram);
+ return result;
+ }
+
+ List<RTC> rtcs = new ArrayList<RTC>();
+
+ void reset(SystemDiagram diagram) {
+ List<String> pathes = new ArrayList<String>();
+ for (RTC rtc : rtcs) {
+ if (rtc.display) {
+ pathes.add(rtc.comp.getPathId());
+ }
+ }
+ rtcs.clear();
+ for (Component comp : diagram.getRegisteredComponents()) {
+ if (!(comp instanceof CorbaComponent)) {
+ continue;
+ }
+ CorbaComponent corbaComp = (CorbaComponent) comp;
+ if (corbaComp.getLogObserver() == null) {
+ continue;
+ }
+ RTC rtc = new RTC(corbaComp);
+ if (pathes.contains(comp.getPathId())) {
+ rtc.display = true;
+ }
+ rtcs.add(rtc);
+ }
+ }
+
+ static class RTC {
+ boolean display;
+ CorbaComponent comp;
+
+ RTC(CorbaComponent comp) {
+ this.comp = comp;
+ this.display = false;
+ }
+ }
+ }
+
+ /** RTCãã°ã表ãã¯ã©ã¹ */
+ static class RTCLog {
+ RTC.Time time;
+ OpenRTM.LogLevel level;
+ String levelName;
+ String rtcName;
+ String logger;
+ String message;
+
+ RTCLog(RTCLogStore.Record r) {
+ this.time = r.getTime();
+ this.level = r.getLevel();
+ this.levelName = r.getLevelName();
+ this.rtcName = r.getRtcName();
+ this.logger = r.getLoggerName();
+ this.message = r.getMessage();
+ }
+ }
+
+ /** RTCä¸è¦§è¡¨ç¤ºã®LabelProvider */
+ public class RTCLabelProvider extends LabelProvider implements
+ ITableLabelProvider {
+ @Override
+ public Image getColumnImage(Object element, int columnIndex) {
+ Image result = null;
+ RTCStore.RTC entry = (RTCStore.RTC) element;
+ if (columnIndex == 0) {
+ if (entry.display) {
+ result = RTSystemEditorPlugin
+ .getCachedImage("icons/checkbox_checked.png");
+ } else {
+ result = RTSystemEditorPlugin
+ .getCachedImage("icons/checkbox_unchecked.png");
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ RTCStore.RTC entry = (RTCStore.RTC) element;
+ if (columnIndex == 1) {
+ return entry.comp.getInstanceNameL();
+ }
+ return null;
+ }
+ }
+
+ /** RTCä¸è¦§è¡¨ç¤ºã®EditingSupport */
+ public class RTCEditingSupport extends EditingSupport {
+ CellEditor editor;
+ int column;
+
+ public RTCEditingSupport(ColumnViewer viewer, int column) {
+ super(viewer);
+ // Create the correct editor based on the column index
+ switch (column) {
+ case PROPERTY_DISP:
+ editor = new CheckboxCellEditor(((TableViewer) viewer)
+ .getTable());
+ break;
+ default:
+ break;
+ }
+ this.column = column;
+ }
+
+ @Override
+ protected boolean canEdit(Object element) {
+ return true;
+ }
+
+ @Override
+ protected CellEditor getCellEditor(Object element) {
+ return editor;
+ }
+
+ @Override
+ protected Object getValue(Object element) {
+ if (!(element instanceof RTCStore.RTC))
+ return null;
+ RTCStore.RTC entry = (RTCStore.RTC) element;
+ switch (this.column) {
+ case PROPERTY_DISP:
+ return entry.display;
+ default:
+ break;
+ }
+ return null;
+ }
+
+ @Override
+ protected void setValue(Object element, Object value) {
+ if (element instanceof RTCStore.RTC == false)
+ return;
+ RTCStore.RTC entry = (RTCStore.RTC) element;
+ switch (this.column) {
+ case PROPERTY_DISP:
+ entry.display = ((Boolean) value).booleanValue();
+ break;
+ default:
+ break;
+ }
+ getViewer().update(element, null);
+ }
+ }
+
+ /** ãã°ä¸è¦§è¡¨ç¤ºã®ViewerFilter */
+ public static class LogViewerFilter extends ViewerFilter {
+ List<String> rtcNames = new ArrayList<String>();
+ OpenRTM.LogLevel level = OpenRTM.LogLevel.ERROR;
+
+ @Override
+ public boolean select(Viewer viewer, Object parentElement,
+ Object element) {
+ RTCLog entry = (RTCLog) element;
+ if (!rtcNames.contains(entry.rtcName)) {
+ return false;
+ }
+ if (level.value() < entry.level.value()) {
+ return false;
+ }
+ return true;
+ }
+ }
+
+ /** ãã°ä¸è¦§è¡¨ç¤ºã®LabelProvider */
+ public class LogLabelProvider extends LabelProvider implements
+ ITableLabelProvider, ITableColorProvider {
+ @Override
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ RTCLog entry = (RTCLog) element;
+ switch (columnIndex) {
+ case PROPERTY_TIME:
+ long milisec = (long) entry.time.sec * 1000;
+ Date date = new Date(milisec);
+ return String.format("%s.%09d", df.format(date),
+ entry.time.nsec);
+ case PROPERTY_LEVEL:
+ return entry.levelName;
+ case PROPERTY_COMP:
+ return entry.rtcName;
+ case PROPERTY_LOGGER:
+ return entry.logger;
+ case PROPERTY_BODY:
+ return entry.message;
+ default:
+ break;
+ }
+ return null;
+ }
+
+ @Override
+ public Color getBackground(Object element, int columnIndex) {
+ return null;
+ }
+
+ @Override
+ public Color getForeground(Object element, int columnIndex) {
+ return null;
+ }
+ }
+
+ static class Refresher extends Thread {
+ LogView view;
+ boolean running;
+
+ public Refresher(LogView view) {
+ this.view = view;
+ }
+
+ @Override
+ public void run() {
+ running = true;
+ while (running) {
+ try {
+ view.buildLogData();
+ view.refreshLogData();
+ //
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ running = false;
+ }
+ }
+ }
+
+ public void end() {
+ running = false;
+ }
+ }
+
+ Refresher refresher;
+
+ ISelectionListener selectionListener = new ISelectionListener() {
+ @Override
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ targetDiagram = null;
+ if (selection instanceof IStructuredSelection) {
+ IStructuredSelection ss = (IStructuredSelection) selection;
+ Object firstElement = ss.getFirstElement();
+ Object adapter = AdapterUtil.getAdapter(firstElement,
+ SystemDiagram.class);
+ if (adapter != null) {
+ SystemDiagram sd = (SystemDiagram) adapter;
+ if (SystemDiagramKind.ONLINE_LITERAL.equals(sd.getKind())) {
+ targetDiagram = sd;
+ }
+ }
+ }
+ buildData();
+ //
+ if (targetDiagram == null) {
+ if (refresher != null) {
+ refresher.end();
+ }
+ return;
+ }
+ if (refresher == null || !refresher.isAlive()) {
+ refresher = new Refresher(getLogView());
+ refresher.setDaemon(true);
+ refresher.start();
+ }
+ }
+ };
+
+ void setSiteSelection() {
+ if (getSite() == null) {
+ return;
+ }
+ getSite().getWorkbenchWindow().getSelectionService()
+ .addSelectionListener(selectionListener);
+
+ // SelectionProviderãç»é²(ããããã£ã»ãã¥ã¼é£æº)
+ getSite().setSelectionProvider(new ISelectionProvider() {
+ public void addSelectionChangedListener(
+ ISelectionChangedListener listener) {
+ }
+
+ public ISelection getSelection() {
+ StructuredSelection result = null;
+ if (targetDiagram != null) {
+ result = new StructuredSelection(targetDiagram);
+ }
+ return result;
+ }
+
+ public void removeSelectionChangedListener(
+ ISelectionChangedListener listener) {
+ }
+
+ public void setSelection(ISelection selection) {
+ }
+ });
+ }
+
+}
Modified: trunk/rtmtools/jp.go.aist.rtm.systemeditor.nl1/META-INF/MANIFEST.MF
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.systemeditor.nl1/META-INF/MANIFEST.MF 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.systemeditor.nl1/META-INF/MANIFEST.MF 2011-04-28 03:04:05 UTC (rev 168)
@@ -2,6 +2,6 @@
Bundle-ManifestVersion: 2
Bundle-Name: Graphical Editor for RT system Nl1 Fragment
Bundle-SymbolicName: jp.go.aist.rtm.systemeditor.nl1
-Bundle-Version: 1.1.0.v20110411
+Bundle-Version: 1.1.0.v20110428
Fragment-Host: jp.go.aist.rtm.systemeditor;bundle-version="0.0.0"
Bundle-Vendor: AIST
Modified: trunk/rtmtools/jp.go.aist.rtm.systemeditor.nl1/plugin_ja.properties
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.systemeditor.nl1/plugin_ja.properties 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.systemeditor.nl1/plugin_ja.properties 2011-04-28 03:04:05 UTC (rev 168)
@@ -67,6 +67,7 @@
Create_Composite_Component = \u8907\u5408\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u4f5c\u6210
Decompose_Composite_Component = \u8907\u5408\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u89e3\u9664
Open_With_System_Diagram_Editor = \u30a8\u30c7\u30a3\u30bf\u3067\u958b\u304f
+StartLogging.label = \u30ed\u30b0\u53ce\u96c6\u3092\u958b\u59cb
All_Disconnect =\u3059\u3079\u3066\u5207\u65ad
Modified: trunk/rtmtools/jp.go.aist.rtm.systemeditor.nl1/src/jp/go/aist/rtm/systemeditor/nl/messages_ja.properties
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.systemeditor.nl1/src/jp/go/aist/rtm/systemeditor/nl/messages_ja.properties 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.systemeditor.nl1/src/jp/go/aist/rtm/systemeditor/nl/messages_ja.properties 2011-04-28 03:04:05 UTC (rev 168)
@@ -320,3 +320,5 @@
ExecutionContextView.12=\u30c7\u30bf\u30c3\u30c1
ExecutionContextView.13=\u30a2\u30bf\u30c3\u30c1
SelectAttachComponentDialog.1=\u30a2\u30bf\u30c3\u30c1\u3059\u308b\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+StartLoggingActionDelegate.start=\u30ed\u30b0\u53ce\u96c6\u3092\u958b\u59cb
+StartLoggingActionDelegate.stop=\u30ed\u30b0\u53ce\u96c6\u3092\u505c\u6b62
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/META-INF/MANIFEST.MF
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/META-INF/MANIFEST.MF 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/META-INF/MANIFEST.MF 2011-04-28 03:04:05 UTC (rev 168)
@@ -2,12 +2,13 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: jp.go.aist.rtm.toolscommon; singleton:=true
-Bundle-Version: 1.1.0.v20110411
+Bundle-Version: 1.1.0.v20110428
Bundle-ClassPath: .,
lib/commons-lang-2.2.jar
Bundle-Vendor: %providerName
Bundle-Localization: plugin
-Export-Package: RTC,
+Export-Package: OpenRTM,
+ RTC,
RTM,
_SDOPackage,
jp.go.aist.rtm.toolscommon,
Added: trunk/rtmtools/jp.go.aist.rtm.toolscommon/idl/Logger.idl
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/idl/Logger.idl (rev 0)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/idl/Logger.idl 2011-04-28 03:04:05 UTC (rev 168)
@@ -0,0 +1,388 @@
+// -*- IDL -*-
+/*!
+ * @file Logger.idl
+ * @brief Component logger SDO service
+ * @date $Date$
+ * @author Noriaki Ando <n-ando at aist.go.jp>
+ *
+ * Copyright (C) 2011
+ * Noriaki Ando
+ * Intelligent Systems Research Institute,
+ * National Institute of
+ * Advanced Industrial Science and Technology (AIST), Japan
+ * All rights reserved.
+ *
+ * $Id$
+ *
+ */
+
+#include <BasicDataType.idl>
+#include <SDOPackage11.idl>
+/*!
+ * @if jp
+ * @brief R|[lgOûWT[rXC^[tF[X
+ *
+ * R|[lgÌOîñðO©çæ¾·é½ßÌC^[tF[XBR
+ * |[lgÉεÄA{SDOT[rXIuWFNgðA^b`·é±ÆÅA
+ * R|[lgªoÍ·éOðO©çæ¾·é±ÆªÅ«éB
+ *
+ * @since 1.1
+ *
+ * @else
+ * @brief Component logging service interface
+ *
+ * This interface defines logging service of an RT-Component from
+ * outside. Attaching this service interface to an RT-Component, you
+ * can get logging information from the RT-Component.
+ *
+ * @since 1.1
+ * @endif
+ *
+ */
+module OpenRTM
+{
+ /*!
+ * @if jp
+ *
+ * @brief Ox
+ *
+ * OxBOxÍ9iK èA»ê¼êȺÌÓ¡ðÂB
+ *
+ * - SILENT : MO@\ðItÉ·é½ßÌ^x
+ * - ERROR : G[ª¶µ½±ÆðÓ¡·éOx
+ * - WARN : G[ÅÍÈ¢ªÓ·×«xðÓ¡·éOx
+ * - INFO : tÁIÈîñðñ·é½ßÌOx
+ * - NORMAL : ÊíÌîñðñ·é½ßÌOx
+ * - DEBUG : fobOîñðñ·éÛÌOx
+ * - TRACE : g[XxÌîñðñ·éÛÌOx
+ * - VERBOSE : g[XîñÈãÉÚ×Èîñðñ·éÛÌOx
+ * - PARANOID: A^CüúÀsÌîñðñ·éOx
+ *
+ * @else
+ *
+ * @brief Log level
+ *
+ * This enumeration defines log levels. The log level consists of
+ * nine levels, and each level means the following meaning.
+ *
+ * - SILENT : Pseudo log level to stop logging function.
+ * - ERROR : This log level means that an error event is occurring.
+ * - WARN : This log level means that a warning event is occurring.
+ * - INFO : This log level used to notify information.
+ * - NORMAL : This log level means that an event is normal thing.
+ * - DEBUG : This log level used to notify debugging information.
+ * - TRACE : This log level used to notify trace information.
+ * - VERBOSE : This log level used to notify more detailed information.
+ * - PARANOID: This is used only to notify information in real-time loop.
+ *
+ * @endif
+ */
+ enum LogLevel
+ {
+ SILENT,
+ ERROR,
+ WARN,
+ INFO,
+ NORMAL,
+ DEBUG,
+ TRACE,
+ VERBOSE,
+ PARANOID
+ };
+
+ /*!
+ * @if jp
+ * @brief OR[h\¢Ì
+ *
+ * ObZ[WðÜÞOîñðÛ·é\¢Ì
+ *
+ * @else
+ * @brief Log record structure
+ *
+ * This struct defines logging information including log message.
+ *
+ * @endif
+ *
+ */
+ struct LogRecord
+ {
+ /*!
+ * @if jp
+ * @brief
+ * ^CX^v
+ * @else
+ * @brief Time
+ * Time stump.
+ * @endif
+ */
+ RTC::Time time;
+
+ /*!
+ * @if jp
+ * @brief K[¼
+ * Oð«±ñ¾K[IuWFNg¼
+ * @else
+ * @brief logger name
+ * The logger name which writes this record.
+ * @endif
+ */
+ string loggername;
+
+ /*!
+ * @if jp
+ * @brief Ox
+ * ±ÌR[hÌOx
+ * @else
+ * @brief Log level
+ * The log level of this record
+ * @endif
+ */
+ LogLevel level;
+
+ /*!
+ * @if jp
+ * @brief bZ[W
+ * ObZ[W
+ * @else
+ * @brief Message
+ * Log message.
+ * @endif
+ */
+ string message;
+ };
+
+
+ /*!
+ * @if jp
+ *
+ * @interface Logger C^[tF[X
+ *
+ * ÂÊÌRTCÌOîñðæ¾·é½ßÌT[rXC^[tF[XBSDO
+ * Service ƵÄÎÛÆÈéRTC/SDOÉεÄA^b`³êARTC/SDOÌO
+ * îñðO©çæ¾·éBÀÛÌV[PXÍȺÌÊèÅ éB
+ *
+ * -# SDO::get_configuration() Éæè Configuration IuWFNgðæ¾
+ * -# Configuration::add_service_profile() ÉæèTool¤Ì
+ * Logger ð ServiceProfile Éæè RTC É^¦éB
+ * ServiceProfile Ìo[ÍȺÌæ¤ÉÝè·é±Æ
+ * - id: UUID ÈÇêÓÈIDðÝè·éBíÉàKvÉÈéÌÅATool
+ * ¤ÅÍIDð۵Ĩ©È¯êÎÈçÈ¢B
+ * - interface_type: YT[rXÌIFRÌIDð¶ñƵÄwèBRTC¤Å
+ * ͱ̶ñÉæèYT[rXIuWFNgðó¯üêé©è·
+ * é½ßwèÍK{ÆÈéB
+ * - properties: RTC¤ÌT[rXÌó¯üê¤ÉÊm·évpeBðÝ
+ * è·éB±ÌT[rXÅÍAºLÌOxÖAÌvpeBð
+ * wè·éB
+ * - service: SDOService IuWFNgÌQÆðwè·éB
+ * -# RTC¤ÅK[Ö̫ݪLÁ½êÉÍ publish() Iy[V
+ * ª LogRecord \¢ÌƵÄObZ[Wâ^CX^vðT[
+ * rX¤ÉÊm·éBT[rXðÛ·é¤ÅÍALogRecordàÌîñ
+ * ðt@CÉ«ÞA\¦·éÌû@Åp·é±ÆªÅ«éB
+ * -# RTC¤ªI¹·éÆ«ÉÍAclose() Iy[VªÄÑo³êéÌ
+ * ÅAT[rXñ¤ÍKØÈI¹ðs¤Kvª éBclose()ªÄ
+ * Îê½êÍAremove_service_profile() Éæ辦IÉT[rXð
+ * í·éKvÍÈ¢BܽRTC¤ÅÍclose() ðÄñ¾ãÍAYT[
+ * rXÉÖ·éîñâ\[XðKØÉJúµÈ¯êÎÈçÈ¢B
+ * -# c[ÌT[rXñ¤ªI¹·éêÈÇÍA
+ * remove_service_profile() Iy[VðÄÑoµAYRTCãÌ
+ * \[XðKØÉJú·éKvª éBRTC¤ÍA
+ * remove_service_profile() ªÄÑo³ê½ÛÉÍAYMOÉÖ
+ * ·é\[XðKØÉJú·éKvª éB
+ *
+ * ãLÌvZXðºLV[PX}ɦ·B
+ *
+ * <pre>
+ *
+ * [RTC] [Configuration] [Logger] [Tool]
+ * | | | |
+ * | | get_configuration() | |
+ * |<------------------------------------------------|
+ * | | | |
+ * | | add_service_profile(prof) |
+ * | |<-----------------------------------|
+ * | | | |
+ * | | publish(logrecord) | |
+ * |----------------------------------->| |
+ * | | publish(logrecord) | |
+ * |----------------------------------->| |
+ * | | : | |
+ * | | : | |
+ * | | 1) RTCªæÉI¹·éÆ« |
+ * | | : | |
+ * | | [close()] | |
+ * |----------------------------------->| |
+ * | | : | |
+ * | | 2) c[ªMOðI¹·éÆ« |
+ * | | : | |
+ * | | remove_service_profile(id) |
+ * | |<-----------------------------------|
+ * | | | |
+ * | | x x
+ *
+ * </pre>
+ *
+ * ȨAServiceProfile::properties Éwè·évpeBƵÄÍA
+ *
+ * - logger.log_level: (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE, VERBOSE,
+ * PARANOID)
+ * - logger.filter: logger name or "ALL"
+ *
+ * ª éA
+ *
+ * - logger.log_level: ERROR, WARN, INFO, NORMAL, DEBUG, TRACE,
+ * VERBOSE ܽÍPARANOID ̤¿êÂðwè·éB³wèÌêÍ
+ * NORMAL ƯÆÈéBwè³ê½xƯ é¢Í»êæèdv
+ * ÈîñªMO³êéB·Èí¿A»ê¼êÌOxðwèµ½
+ * ÛÉoͳêéOÍȺÌÖWÉÈéB
+ * - ERROR : (ERROR)
+ * - WARN : (ERROR, WARN)
+ * - INFO : (ERROR, WARN, INFO)
+ * - NORMAL : (ERROR, WARN, INFO, NORMAL)
+ * - DEBUG : (ERROR, WARN, INFO, NORMAL, DEBUG)
+ * - TRACE : (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE)
+ * - VERBOSE : (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE, VERBOSE)
+ * - PARANOID: (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE, VERBOSE, PARA)
+ * - logger.filter: RTCàÍARTC{ÌAf[^|[gAT[rX|[g
+ * »ê¼êÌIuWFNgÉK[IuWFNgª¶Ý·éB±Ìv
+ * peBÍMO·éÎÛÌK[IuWFNgðJ}æØèÅwè
+ * ·éBܽÍAALLðwè·é±ÆÅRTCzºÌ·×ÄÌMOIuWF
+ * Ng©çÌbZ[WðóM·éB³wèÌêÍALLƯÉÈéB
+ *
+ * @else
+ * @class
+ *
+ * @interface Logger interface
+ *
+ * This interface defines logging service for each RT-Component.
+ * This service would be attached to a target RTC/SDO, and provides
+ * functionality to collect log information from remote
+ * applications. Actual process sequences are the following.
+ *
+ * -# Get configuration object by SDO::get_configuration()
+ * -# Attach Logger object with ServiceProfile by
+ * Configuration::add_service_profile(). ServiceProfile should be
+ * set as follows.
+ * - id: An unique ID like UUID. This ID is used when this service
+ * is removed. Tools or applications should keep the ID for
+ * this.
+ * - interface_type: Specify this service's IFR ID in string. This
+ * string is used to search available service in the RTC,
+ * and if it matches with available SDO services, this
+ * service is accepted.
+ * - properties: This member specifies properties to notify
+ * information to the target RTC. The following properties
+ * for log level and others would be specified in this
+ * properties.
+ *
+ * - service: A SDOService object reference is specified.
+ * -# When logging occurs in the RTC side, the "publish()" operation
+ * notifies a log message, time stump and so on to the service
+ * provider as a LogRecord structure. The service provider can
+ * use notified information for example writing to files and
+ * showing them on the display.
+ * -# When RTC is terminated, the "close()" operation is called, and
+ * the service provider has to terminate the logging service
+ * properly. In this case, tools and applications that have
+ * service provider do not need to call remove_service_profile()
+ * and remove the service explicitly. After calling close()
+ * operation, the RTC has to release the service profile and
+ * resources.
+ * -# When tools and applications terminate services, they have to
+ * call remove_service_profile() operation, and have to release
+ * resources in the target RTC. When remove_service_profile() is
+ * called, the RTC have to release service profile and resources
+ * for this service.
+ *
+ * The following diagram shows above mentioned sequence.
+ *
+ * <pre>
+ *
+ * [RTC] [Configuration] [Logger] [Tool]
+ * | | | |
+ * | | get_configuration() | |
+ * |<------------------------------------------------|
+ * | | | |
+ * | | add_service_profile(prof) |
+ * | |<-----------------------------------|
+ * | | | |
+ * | | publish(logrecord) | |
+ * |----------------------------------->| |
+ * | | publish(logrecord) | |
+ * |----------------------------------->| |
+ * | | : | |
+ * | | : | |
+ * | | 1) When RTC is terminated |
+ * | | : | |
+ * | | [close()] | |
+ * |----------------------------------->| |
+ * | | : | |
+ * | | 2) When tool terminates logging |
+ * | | : | |
+ * | | remove_service_profile(id) |
+ * | |<-----------------------------------|
+ * | | | |
+ * | | x x
+ *
+ * </pre>
+ *
+ * So far, the following properties for ServiceProfile::properties
+ * are available.
+ *
+ * - logger.log_level: (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE, VERBOSE,
+ * PARANOID)
+ * - logger.filter: logger name or "ALL"
+ *
+ *
+ * - logger.log_level: One of ERROR, WARN, INFO, NORMAL, DEBUG,
+ * TRACE, VERBOSE or PARANOID can be specified. If no
+ * properties are specified, it will be NORMAL. Log messages
+ * equals and/or more important specified log level would be
+ * published. The following list shows the relation between
+ * specified level and published level.
+ * - ERROR : (ERROR)
+ * - WARN : (ERROR, WARN)
+ * - INFO : (ERROR, WARN, INFO)
+ * - NORMAL : (ERROR, WARN, INFO, NORMAL)
+ * - DEBUG : (ERROR, WARN, INFO, NORMAL, DEBUG)
+ * - TRACE : (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE)
+ * - VERBOSE : (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE, VERBOSE)
+ * - PARANOID: (ERROR, WARN, INFO, NORMAL, DEBUG, TRACE, VERBOSE, PARA)
+ * - logger.filter: Some logger objects exist in some object of an
+ * RTC such as RTC body, data port, service port and so on.
+ * Some logger objects exist in some object of an RTC such as
+ * RTC body, data port, service port and so on. This properties
+ * specify target logger names separated with commas. If ALL is
+ * specified, all the logger's messages under the target RTC's
+ * logger would be published. If no property is specified, all
+ * the messages will be published.
+ *
+ * @endif
+ *
+ */
+ interface Logger
+ : SDOPackage::SDOService
+ {
+ /*!
+ * @if jp
+ * @brief ObZ[WzM
+ * ObZ[WðzM·é
+ * @else
+ * @brief Publish log message
+ * This operation publishes log message.
+ * @endif
+ */
+ oneway void publish(in LogRecord record);
+
+ /*!
+ * @if jp
+ * @brief T[rXÌI¹
+ * MOT[rXÌI¹ðÊm·é
+ * @else
+ * @brief Terminate service
+ * This operation notifies logging service.
+ * @endif
+ */
+ void close();
+ };
+};
+
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/plugin.xml
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/plugin.xml 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/plugin.xml 2011-04-28 03:04:05 UTC (rev 168)
@@ -82,7 +82,7 @@
</factory>
<factory
class="jp.go.aist.rtm.toolscommon.adapterfactory.WorkbenchAdapterFactory"
- adaptableType="jp.go.aist.rtm.toolscommon.model.component.CorbaStatusObserver">
+ adaptableType="jp.go.aist.rtm.toolscommon.model.component.CorbaObserver">
<adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/>
</factory>
<factory
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/adapterfactory/WorkbenchAdapterFactory.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/adapterfactory/WorkbenchAdapterFactory.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/adapterfactory/WorkbenchAdapterFactory.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -2,7 +2,7 @@
import jp.go.aist.rtm.toolscommon.model.component.Component;
import jp.go.aist.rtm.toolscommon.model.component.ContextHandler;
-import jp.go.aist.rtm.toolscommon.model.component.CorbaStatusObserver;
+import jp.go.aist.rtm.toolscommon.model.component.CorbaObserver;
import jp.go.aist.rtm.toolscommon.model.component.ExecutionContext;
import jp.go.aist.rtm.toolscommon.model.component.InPort;
import jp.go.aist.rtm.toolscommon.model.component.OutPort;
@@ -13,7 +13,7 @@
import jp.go.aist.rtm.toolscommon.model.manager.RTCManager;
import jp.go.aist.rtm.toolscommon.ui.workbenchadapter.ComponentWorkbenchAdapter;
import jp.go.aist.rtm.toolscommon.ui.workbenchadapter.ContextHandlerWorkbenchAdapter;
-import jp.go.aist.rtm.toolscommon.ui.workbenchadapter.CorbaStatusObserverWorkbenchAdapter;
+import jp.go.aist.rtm.toolscommon.ui.workbenchadapter.CorbaObserverWorkbenchAdapter;
import jp.go.aist.rtm.toolscommon.ui.workbenchadapter.ExecutionContextWorkbenchAdapter;
import jp.go.aist.rtm.toolscommon.ui.workbenchadapter.InPortWorkbenchAdapter;
import jp.go.aist.rtm.toolscommon.ui.workbenchadapter.OutPortWorkbenchAdapter;
@@ -50,8 +50,8 @@
return new ExecutionContextWorkbenchAdapter();
} else if (adaptable instanceof ContextHandler) {
return new ContextHandlerWorkbenchAdapter();
- } else if (adaptable instanceof CorbaStatusObserver) {
- return new CorbaStatusObserverWorkbenchAdapter();
+ } else if (adaptable instanceof CorbaObserver) {
+ return new CorbaObserverWorkbenchAdapter();
} else if (adaptable instanceof SystemDiagram) {
return new SystemDiagramWorkbenchAdapter();
} else if (adaptable instanceof RTCManager) {
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/ComponentFactory.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/ComponentFactory.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/ComponentFactory.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -135,6 +135,15 @@
CorbaStatusObserver createCorbaStatusObserver();
/**
+ * Returns a new object of class '<em>Corba Log Observer</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Corba Log Observer</em>'.
+ * @generated
+ */
+ CorbaLogObserver createCorbaLogObserver();
+
+ /**
* Returns a new object of class '<em>Specification</em>'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/ComponentPackage.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/ComponentPackage.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/ComponentPackage.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -2160,13 +2160,22 @@
int CORBA_COMPONENT__STATUS_OBSERVER = COMPONENT_FEATURE_COUNT + 10;
/**
+ * The feature id for the '<em><b>Log Observer</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CORBA_COMPONENT__LOG_OBSERVER = COMPONENT_FEATURE_COUNT + 11;
+
+ /**
* The number of structural features of the '<em>Corba Component</em>' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int CORBA_COMPONENT_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 11;
+ int CORBA_COMPONENT_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 12;
/**
* The meta object id for the '{@link jp.go.aist.rtm.toolscommon.model.component.impl.CorbaPortSynchronizerImpl <em>Corba Port Synchronizer</em>}' class.
@@ -2725,6 +2734,43 @@
int CORBA_STATUS_OBSERVER_FEATURE_COUNT = CORBA_OBSERVER_FEATURE_COUNT + 0;
/**
+ * The meta object id for the '{@link jp.go.aist.rtm.toolscommon.model.component.impl.CorbaLogObserverImpl <em>Corba Log Observer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see jp.go.aist.rtm.toolscommon.model.component.impl.CorbaLogObserverImpl
+ * @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getCorbaLogObserver()
+ * @generated
+ */
+ int CORBA_LOG_OBSERVER = 24;
+
+ /**
+ * The feature id for the '<em><b>Service Profile</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CORBA_LOG_OBSERVER__SERVICE_PROFILE = CORBA_OBSERVER__SERVICE_PROFILE;
+
+ /**
+ * The feature id for the '<em><b>Servant</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CORBA_LOG_OBSERVER__SERVANT = CORBA_OBSERVER__SERVANT;
+
+ /**
+ * The number of structural features of the '<em>Corba Log Observer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CORBA_LOG_OBSERVER_FEATURE_COUNT = CORBA_OBSERVER_FEATURE_COUNT + 0;
+
+ /**
* The meta object id for the '{@link jp.go.aist.rtm.toolscommon.model.component.SystemDiagramKind <em>System Diagram Kind</em>}' enum.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -2732,7 +2778,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getSystemDiagramKind()
* @generated
*/
- int SYSTEM_DIAGRAM_KIND = 24;
+ int SYSTEM_DIAGRAM_KIND = 25;
/**
* The meta object id for the '<em>RTC Component Profile</em>' data type.
@@ -2742,7 +2788,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getRTCComponentProfile()
* @generated
*/
- int RTC_COMPONENT_PROFILE = 30;
+ int RTC_COMPONENT_PROFILE = 31;
/**
* The meta object id for the '<em>RTCRT Object</em>' data type.
@@ -2752,7 +2798,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getRTCRTObject()
* @generated
*/
- int RTCRT_OBJECT = 29;
+ int RTCRT_OBJECT = 30;
/**
* The meta object id for the '<em>List</em>' data type.
@@ -2762,7 +2808,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getList()
* @generated
*/
- int LIST = 37;
+ int LIST = 38;
/**
* The meta object id for the '<em>Servant</em>' data type.
@@ -2772,7 +2818,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getServant()
* @generated
*/
- int SERVANT = 38;
+ int SERVANT = 39;
/**
* The meta object id for the '<em>SDO Configuration</em>' data type.
@@ -2782,7 +2828,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getSDOConfiguration()
* @generated
*/
- int SDO_CONFIGURATION = 25;
+ int SDO_CONFIGURATION = 26;
/**
* The meta object id for the '<em>SDO Configuration Set</em>' data type.
@@ -2792,7 +2838,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getSDOConfigurationSet()
* @generated
*/
- int SDO_CONFIGURATION_SET = 26;
+ int SDO_CONFIGURATION_SET = 27;
/**
* The meta object id for the '<em>RTC Connector Profile</em>' data type.
@@ -2802,7 +2848,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getRTCConnectorProfile()
* @generated
*/
- int RTC_CONNECTOR_PROFILE = 31;
+ int RTC_CONNECTOR_PROFILE = 32;
/**
* The meta object id for the '<em>RTC Port Profile</em>' data type.
@@ -2812,7 +2858,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getRTCPortProfile()
* @generated
*/
- int RTC_PORT_PROFILE = 32;
+ int RTC_PORT_PROFILE = 33;
/**
* The meta object id for the '<em>RTC Execution Context</em>' data type.
@@ -2822,7 +2868,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getRTCExecutionContext()
* @generated
*/
- int RTC_EXECUTION_CONTEXT = 33;
+ int RTC_EXECUTION_CONTEXT = 34;
/**
* The meta object id for the '<em>Property Change Listener</em>' data type.
@@ -2832,7 +2878,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getPropertyChangeListener()
* @generated
*/
- int PROPERTY_CHANGE_LISTENER = 35;
+ int PROPERTY_CHANGE_LISTENER = 36;
/**
* The meta object id for the '<em>SDO Organization</em>' data type.
@@ -2842,7 +2888,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getSDOOrganization()
* @generated
*/
- int SDO_ORGANIZATION = 27;
+ int SDO_ORGANIZATION = 28;
/**
@@ -2853,7 +2899,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getSDOServiceProfile()
* @generated
*/
- int SDO_SERVICE_PROFILE = 28;
+ int SDO_SERVICE_PROFILE = 29;
/**
* The meta object id for the '<em>Port Interface Profile</em>' data type.
@@ -2863,7 +2909,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getPortInterfaceProfile()
* @generated
*/
- int PORT_INTERFACE_PROFILE = 36;
+ int PORT_INTERFACE_PROFILE = 37;
/**
@@ -2874,7 +2920,7 @@
* @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getRTCExecutionContextProfile()
* @generated
*/
- int RTC_EXECUTION_CONTEXT_PROFILE = 34;
+ int RTC_EXECUTION_CONTEXT_PROFILE = 35;
/**
@@ -3359,6 +3405,17 @@
EReference getCorbaComponent_StatusObserver();
/**
+ * Returns the meta object for the reference '{@link jp.go.aist.rtm.toolscommon.model.component.CorbaComponent#getLogObserver <em>Log Observer</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Log Observer</em>'.
+ * @see jp.go.aist.rtm.toolscommon.model.component.CorbaComponent#getLogObserver()
+ * @see #getCorbaComponent()
+ * @generated
+ */
+ EReference getCorbaComponent_LogObserver();
+
+ /**
* Returns the meta object for class '{@link jp.go.aist.rtm.toolscommon.model.component.ComponentSpecification <em>Specification</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -4275,6 +4332,16 @@
EClass getCorbaStatusObserver();
/**
+ * Returns the meta object for class '{@link jp.go.aist.rtm.toolscommon.model.component.CorbaLogObserver <em>Corba Log Observer</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Corba Log Observer</em>'.
+ * @see jp.go.aist.rtm.toolscommon.model.component.CorbaLogObserver
+ * @generated
+ */
+ EClass getCorbaLogObserver();
+
+ /**
* Returns the meta object for enum '{@link jp.go.aist.rtm.toolscommon.model.component.SystemDiagramKind <em>System Diagram Kind</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -4819,6 +4886,14 @@
EReference CORBA_COMPONENT__STATUS_OBSERVER = eINSTANCE.getCorbaComponent_StatusObserver();
/**
+ * The meta object literal for the '<em><b>Log Observer</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CORBA_COMPONENT__LOG_OBSERVER = eINSTANCE.getCorbaComponent_LogObserver();
+
+ /**
* The meta object literal for the '{@link jp.go.aist.rtm.toolscommon.model.component.impl.ComponentSpecificationImpl <em>Specification</em>}' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -5541,6 +5616,16 @@
EClass CORBA_STATUS_OBSERVER = eINSTANCE.getCorbaStatusObserver();
/**
+ * The meta object literal for the '{@link jp.go.aist.rtm.toolscommon.model.component.impl.CorbaLogObserverImpl <em>Corba Log Observer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see jp.go.aist.rtm.toolscommon.model.component.impl.CorbaLogObserverImpl
+ * @see jp.go.aist.rtm.toolscommon.model.component.impl.ComponentPackageImpl#getCorbaLogObserver()
+ * @generated
+ */
+ EClass CORBA_LOG_OBSERVER = eINSTANCE.getCorbaLogObserver();
+
+ /**
* The meta object literal for the '{@link jp.go.aist.rtm.toolscommon.model.component.SystemDiagramKind <em>System Diagram Kind</em>}' enum.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/CorbaComponent.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/CorbaComponent.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/CorbaComponent.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -35,6 +35,7 @@
* <li>{@link jp.go.aist.rtm.toolscommon.model.component.CorbaComponent#getRTCRTObjects <em>RTCRT Objects</em>}</li>
* <li>{@link jp.go.aist.rtm.toolscommon.model.component.CorbaComponent#getIor <em>Ior</em>}</li>
* <li>{@link jp.go.aist.rtm.toolscommon.model.component.CorbaComponent#getStatusObserver <em>Status Observer</em>}</li>
+ * <li>{@link jp.go.aist.rtm.toolscommon.model.component.CorbaComponent#getLogObserver <em>Log Observer</em>}</li>
* </ul>
* </p>
*
@@ -288,11 +289,37 @@
void setStatusObserver(CorbaStatusObserver value);
/**
+ * Returns the value of the '<em><b>Log Observer</b></em>' reference.
* <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Log Observer</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
* <!-- end-user-doc -->
+ * @return the value of the '<em>Log Observer</em>' reference.
+ * @see #setLogObserver(CorbaLogObserver)
+ * @see jp.go.aist.rtm.toolscommon.model.component.ComponentPackage#getCorbaComponent_LogObserver()
* @model
* @generated
*/
+ CorbaLogObserver getLogObserver();
+
+ /**
+ * Sets the value of the '{@link jp.go.aist.rtm.toolscommon.model.component.CorbaComponent#getLogObserver <em>Log Observer</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Log Observer</em>' reference.
+ * @see #getLogObserver()
+ * @generated
+ */
+ void setLogObserver(CorbaLogObserver value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
int startR();
/**
@@ -351,6 +378,14 @@
*/
RTObject getCorbaObjectInterface();
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean supportedCorbaObserver();
+
RTC.ExecutionContext getPrimaryRTCExecutionContext();
void activateAll();
Added: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/CorbaLogObserver.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/CorbaLogObserver.java (rev 0)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/CorbaLogObserver.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package jp.go.aist.rtm.toolscommon.model.component;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Corba Log Observer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see jp.go.aist.rtm.toolscommon.model.component.ComponentPackage#getCorbaLogObserver()
+ * @model
+ * @generated
+ */
+public interface CorbaLogObserver extends CorbaObserver {
+} // CorbaLogObserver
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/CorbaObserver.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/CorbaObserver.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/CorbaObserver.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -89,6 +89,14 @@
* @model
* @generated
*/
- boolean detachComponent(CorbaComponent component);
+ boolean detachComponent();
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean finish();
+
} // CorbaObserver
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/ComponentFactoryImpl.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/ComponentFactoryImpl.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/ComponentFactoryImpl.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -119,6 +119,7 @@
case ComponentPackage.CORBA_CONTEXT_HANDLER: return createCorbaContextHandler();
case ComponentPackage.CORBA_OBSERVER: return createCorbaObserver();
case ComponentPackage.CORBA_STATUS_OBSERVER: return createCorbaStatusObserver();
+ case ComponentPackage.CORBA_LOG_OBSERVER: return createCorbaLogObserver();
default:
throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
}
@@ -360,6 +361,16 @@
* <!-- end-user-doc -->
* @generated
*/
+ public CorbaLogObserver createCorbaLogObserver() {
+ CorbaLogObserverImpl corbaLogObserver = new CorbaLogObserverImpl();
+ return corbaLogObserver;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public ComponentSpecification createComponentSpecification() {
ComponentSpecificationImpl componentSpecification = new ComponentSpecificationImpl();
return componentSpecification;
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/ComponentPackageImpl.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/ComponentPackageImpl.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/ComponentPackageImpl.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -22,6 +22,7 @@
import jp.go.aist.rtm.toolscommon.model.component.CorbaConnectorProfile;
import jp.go.aist.rtm.toolscommon.model.component.CorbaContextHandler;
import jp.go.aist.rtm.toolscommon.model.component.CorbaExecutionContext;
+import jp.go.aist.rtm.toolscommon.model.component.CorbaLogObserver;
import jp.go.aist.rtm.toolscommon.model.component.CorbaObserver;
import jp.go.aist.rtm.toolscommon.model.component.CorbaPortSynchronizer;
import jp.go.aist.rtm.toolscommon.model.component.CorbaStatusObserver;
@@ -234,6 +235,13 @@
* <!-- end-user-doc -->
* @generated
*/
+ private EClass corbaLogObserverEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
private EClass componentSpecificationEClass = null;
/**
@@ -737,6 +745,15 @@
* <!-- end-user-doc -->
* @generated
*/
+ public EReference getCorbaComponent_LogObserver() {
+ return (EReference)corbaComponentEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EClass getExecutionContext() {
return executionContextEClass;
}
@@ -1538,6 +1555,15 @@
* <!-- end-user-doc -->
* @generated
*/
+ public EClass getCorbaLogObserver() {
+ return corbaLogObserverEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EClass getComponentSpecification() {
return componentSpecificationEClass;
}
@@ -1873,6 +1899,7 @@
createEAttribute(corbaComponentEClass, CORBA_COMPONENT__RTCRT_OBJECTS);
createEAttribute(corbaComponentEClass, CORBA_COMPONENT__IOR);
createEReference(corbaComponentEClass, CORBA_COMPONENT__STATUS_OBSERVER);
+ createEReference(corbaComponentEClass, CORBA_COMPONENT__LOG_OBSERVER);
corbaPortSynchronizerEClass = createEClass(CORBA_PORT_SYNCHRONIZER);
createEAttribute(corbaPortSynchronizerEClass, CORBA_PORT_SYNCHRONIZER__RTC_PORT_PROFILE);
@@ -1894,6 +1921,8 @@
corbaStatusObserverEClass = createEClass(CORBA_STATUS_OBSERVER);
+ corbaLogObserverEClass = createEClass(CORBA_LOG_OBSERVER);
+
// Create enums
systemDiagramKindEEnum = createEEnum(SYSTEM_DIAGRAM_KIND);
@@ -1975,6 +2004,7 @@
corbaObserverEClass.getESuperTypes().add(this.getIPropertyMap());
corbaObserverEClass.getESuperTypes().add(theCorePackage.getIAdaptable());
corbaStatusObserverEClass.getESuperTypes().add(this.getCorbaObserver());
+ corbaLogObserverEClass.getESuperTypes().add(this.getCorbaObserver());
// Initialize classes and features; add operations and parameters
initEClass(systemDiagramEClass, SystemDiagram.class, "SystemDiagram", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -2222,6 +2252,7 @@
initEAttribute(getCorbaComponent_RTCRTObjects(), this.getRTCRTObject(), "rTCRTObjects", "", 0, -1, CorbaComponent.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEAttribute(getCorbaComponent_Ior(), ecorePackage.getEString(), "ior", null, 0, 1, CorbaComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getCorbaComponent_StatusObserver(), this.getCorbaStatusObserver(), null, "statusObserver", null, 0, 1, CorbaComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCorbaComponent_LogObserver(), this.getCorbaLogObserver(), null, "logObserver", null, 0, 1, CorbaComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
addEOperation(corbaComponentEClass, ecorePackage.getEInt(), "startR", 0, 1, IS_UNIQUE, IS_ORDERED);
@@ -2239,6 +2270,8 @@
addEOperation(corbaComponentEClass, this.getRTCRTObject(), "getCorbaObjectInterface", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEOperation(corbaComponentEClass, ecorePackage.getEBoolean(), "supportedCorbaObserver", 0, 1, IS_UNIQUE, IS_ORDERED);
+
initEClass(corbaPortSynchronizerEClass, CorbaPortSynchronizer.class, "CorbaPortSynchronizer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEAttribute(getCorbaPortSynchronizer_RTCPortProfile(), this.getRTCPortProfile(), "rTCPortProfile", null, 0, 1, CorbaPortSynchronizer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -2290,13 +2323,16 @@
op = addEOperation(corbaObserverEClass, ecorePackage.getEBoolean(), "attachComponent", 0, 1, IS_UNIQUE, IS_ORDERED);
addEParameter(op, this.getCorbaComponent(), "component", 0, 1, IS_UNIQUE, IS_ORDERED);
- op = addEOperation(corbaObserverEClass, ecorePackage.getEBoolean(), "detachComponent", 0, 1, IS_UNIQUE, IS_ORDERED);
- addEParameter(op, this.getCorbaComponent(), "component", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEOperation(corbaObserverEClass, ecorePackage.getEBoolean(), "detachComponent", 0, 1, IS_UNIQUE, IS_ORDERED);
+ addEOperation(corbaObserverEClass, ecorePackage.getEBoolean(), "finish", 0, 1, IS_UNIQUE, IS_ORDERED);
+
initEClass(corbaStatusObserverEClass, CorbaStatusObserver.class, "CorbaStatusObserver", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
addEOperation(corbaStatusObserverEClass, ecorePackage.getEBoolean(), "isTimeOut", 0, 1, IS_UNIQUE, IS_ORDERED);
+ initEClass(corbaLogObserverEClass, CorbaLogObserver.class, "CorbaLogObserver", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
// Initialize enums and add enum literals
initEEnum(systemDiagramKindEEnum, SystemDiagramKind.class, "SystemDiagramKind");
addEEnumLiteral(systemDiagramKindEEnum, SystemDiagramKind.ONLINE_LITERAL);
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaComponentImpl.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaComponentImpl.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaComponentImpl.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -19,6 +19,7 @@
import jp.go.aist.rtm.toolscommon.model.component.ConfigurationSet;
import jp.go.aist.rtm.toolscommon.model.component.ContextHandler;
import jp.go.aist.rtm.toolscommon.model.component.CorbaComponent;
+import jp.go.aist.rtm.toolscommon.model.component.CorbaLogObserver;
import jp.go.aist.rtm.toolscommon.model.component.CorbaConfigurationSet;
import jp.go.aist.rtm.toolscommon.model.component.CorbaExecutionContext;
import jp.go.aist.rtm.toolscommon.model.component.CorbaPortSynchronizer;
@@ -28,6 +29,7 @@
import jp.go.aist.rtm.toolscommon.model.component.Port;
import jp.go.aist.rtm.toolscommon.model.component.SystemDiagram;
import jp.go.aist.rtm.toolscommon.model.component.util.CorbaObjectStore;
+import jp.go.aist.rtm.toolscommon.model.component.util.CorbaObserverStore;
import jp.go.aist.rtm.toolscommon.model.component.util.CorbaPropertyMap;
import jp.go.aist.rtm.toolscommon.model.component.util.IPropertyMapUtil;
import jp.go.aist.rtm.toolscommon.model.core.CorbaWrapperObject;
@@ -47,7 +49,6 @@
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.util.EDataTypeEList;
@@ -85,6 +86,7 @@
* <li>{@link jp.go.aist.rtm.toolscommon.model.component.impl.CorbaComponentImpl#getRTCRTObjects <em>RTCRT Objects</em>}</li>
* <li>{@link jp.go.aist.rtm.toolscommon.model.component.impl.CorbaComponentImpl#getIor <em>Ior</em>}</li>
* <li>{@link jp.go.aist.rtm.toolscommon.model.component.impl.CorbaComponentImpl#getStatusObserver <em>Status Observer</em>}</li>
+ * <li>{@link jp.go.aist.rtm.toolscommon.model.component.impl.CorbaComponentImpl#getLogObserver <em>Log Observer</em>}</li>
* </ul>
* </p>
*
@@ -271,6 +273,16 @@
*/
protected CorbaStatusObserver statusObserver;
+ /**
+ * The cached value of the '{@link #getLogObserver() <em>Log Observer</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLogObserver()
+ * @generated
+ * @ordered
+ */
+ protected CorbaLogObserver logObserver;
+
protected IPropertyMapUtil properties;
/**
@@ -509,19 +521,12 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
@Override
public CorbaStatusObserver getStatusObserver() {
- if (statusObserver != null && statusObserver.eIsProxy()) {
- InternalEObject oldStatusObserver = (InternalEObject)statusObserver;
- statusObserver = (CorbaStatusObserver)eResolveProxy(oldStatusObserver);
- if (statusObserver != oldStatusObserver) {
- if (eNotificationRequired())
- eNotify(new ENotificationImpl(this, Notification.RESOLVE, ComponentPackage.CORBA_COMPONENT__STATUS_OBSERVER, oldStatusObserver, statusObserver));
- }
- }
- return statusObserver;
+ return CorbaObserverStore.eINSTANCE
+ .findStatusObserver(getCorbaObjectInterface());
}
/**
@@ -536,16 +541,53 @@
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @generated
+ * @generated NOT
*/
@Override
public void setStatusObserver(CorbaStatusObserver newStatusObserver) {
+ CorbaObserverStore.eINSTANCE.registStatusObserver(
+ getCorbaObjectInterface(), newStatusObserver);
+ //
CorbaStatusObserver oldStatusObserver = statusObserver;
statusObserver = newStatusObserver;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ComponentPackage.CORBA_COMPONENT__STATUS_OBSERVER, oldStatusObserver, statusObserver));
}
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public CorbaLogObserver getLogObserver() {
+ return CorbaObserverStore.eINSTANCE
+ .findLogObserver(getCorbaObjectInterface());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CorbaLogObserver basicGetLogObserver() {
+ return logObserver;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setLogObserver(CorbaLogObserver newLogObserver) {
+ CorbaObserverStore.eINSTANCE.registLogObserver(
+ getCorbaObjectInterface(), newLogObserver);
+ //
+ CorbaLogObserver oldLogObserver = logObserver;
+ logObserver = newLogObserver;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ComponentPackage.CORBA_COMPONENT__LOG_OBSERVER, oldLogObserver, logObserver));
+ }
+
@Override
public RTC.RTObject getCorbaObjectInterface() {
return RTC.RTObjectHelper.narrow(getCorbaObject());
@@ -726,6 +768,9 @@
case ComponentPackage.CORBA_COMPONENT__STATUS_OBSERVER:
if (resolve) return getStatusObserver();
return basicGetStatusObserver();
+ case ComponentPackage.CORBA_COMPONENT__LOG_OBSERVER:
+ if (resolve) return getLogObserver();
+ return basicGetLogObserver();
}
return super.eGet(featureID, resolve, coreType);
}
@@ -775,6 +820,9 @@
case ComponentPackage.CORBA_COMPONENT__STATUS_OBSERVER:
setStatusObserver((CorbaStatusObserver)newValue);
return;
+ case ComponentPackage.CORBA_COMPONENT__LOG_OBSERVER:
+ setLogObserver((CorbaLogObserver)newValue);
+ return;
}
super.eSet(featureID, newValue);
}
@@ -820,6 +868,9 @@
case ComponentPackage.CORBA_COMPONENT__STATUS_OBSERVER:
setStatusObserver((CorbaStatusObserver)null);
return;
+ case ComponentPackage.CORBA_COMPONENT__LOG_OBSERVER:
+ setLogObserver((CorbaLogObserver)null);
+ return;
}
super.eUnset(featureID);
}
@@ -854,6 +905,8 @@
return IOR_EDEFAULT == null ? ior != null : !IOR_EDEFAULT.equals(ior);
case ComponentPackage.CORBA_COMPONENT__STATUS_OBSERVER:
return statusObserver != null;
+ case ComponentPackage.CORBA_COMPONENT__LOG_OBSERVER:
+ return logObserver != null;
}
return super.eIsSet(featureID);
}
@@ -1421,9 +1474,9 @@
if (oec != null) {
for (RTC.ExecutionContext ec : oec) {
// ec profile
- cc.synchronizeRemote_EC_ECProfile(ec);
+ synchronizeRemote_EC_ECProfile(ec);
// ec state
- cc.synchronizeRemote_EC_ECState(ec);
+ synchronizeRemote_EC_ECState(ec);
// component state
cc.synchronizeRemote_EC_ComponentState(ec);
}
@@ -1473,6 +1526,10 @@
/** RTC.ComponentProfileã®åæ (CORBA=>ãªãã¸ã§ã¯ãDB) */
public void synchronizeRemote_RTCComponentProfile() {
RTC.RTObject ro = getCorbaObjectInterface();
+ synchronizeRemote_RTCComponentProfile(ro);
+ }
+
+ public static void synchronizeRemote_RTCComponentProfile(RTC.RTObject ro) {
try {
RTC.ComponentProfile prof = ro.get_component_profile();
CorbaObjectStore.eINSTANCE.registRTCProfile(ro, prof);
@@ -1484,6 +1541,11 @@
/** RTC.PortProfileã®åæ (CORBA=>ãªãã¸ã§ã¯ãDB) */
public void synchronizeRemote_RTCPortProfile(String name) {
RTC.RTObject ro = getCorbaObjectInterface();
+ synchronizeRemote_RTCPortProfile(ro, name);
+ }
+
+ public static void synchronizeRemote_RTCPortProfile(RTC.RTObject ro,
+ String name) {
RTC.PortProfile prof = CorbaObjectStore.eINSTANCE.findRTCPortProfile(
ro, name);
if (prof != null) {
@@ -1510,6 +1572,10 @@
/** RTC.ExecutionContextã®åæ (CORBA=>ãªãã¸ã§ã¯ãDB) */
public void synchronizeRemote_RTCExecutionContexts() {
RTC.RTObject ro = getCorbaObjectInterface();
+ synchronizeRemote_RTCExecutionContexts(ro);
+ }
+
+ public static void synchronizeRemote_RTCExecutionContexts(RTC.RTObject ro) {
boolean update = false;
try {
// owned context
@@ -1551,8 +1617,13 @@
/** RTC.ExecutionContextã®åæ(comp_state) (CORBA=>ãªãã¸ã§ã¯ãDB) */
public void synchronizeRemote_EC_ComponentState(RTC.ExecutionContext ec) {
+ RTC.RTObject ro = getCorbaObjectInterface();
+ synchronizeRemote_EC_ComponentState(ro, ec);
+ }
+
+ public static void synchronizeRemote_EC_ComponentState(RTC.RTObject ro,
+ RTC.ExecutionContext ec) {
try {
- RTC.RTObject ro = getCorbaObjectInterface();
RTC.LifeCycleState state = ec.get_component_state(ro);
int stateValue = RTC_STATUS(state);
CorbaObjectStore.eINSTANCE.registComponentState(ec, ro, stateValue);
@@ -1562,7 +1633,7 @@
}
/** RTC.ExecutionContextã®åæ(ec_state) (CORBA=>ãªãã¸ã§ã¯ãDB) */
- public void synchronizeRemote_EC_ECState(RTC.ExecutionContext ec) {
+ public static void synchronizeRemote_EC_ECState(RTC.ExecutionContext ec) {
try {
int ecStateValue = ExecutionContext.STATE_UNKNOWN;
if (ec.is_running()) {
@@ -1577,7 +1648,7 @@
}
/** RTC.ExecutionContextã®åæ(ec_profile) (CORBA=>ãªãã¸ã§ã¯ãDB) */
- public void synchronizeRemote_EC_ECProfile(RTC.ExecutionContext ec) {
+ public static void synchronizeRemote_EC_ECProfile(RTC.ExecutionContext ec) {
try {
RTC.ExecutionContextProfile prof;
if (ec._is_a(RTC.ExecutionContextServiceHelper.id())) {
@@ -1647,8 +1718,12 @@
/** SDO.ConfigurationSetã®åæ (CORBA=>ãªãã¸ã§ã¯ãDB) */
public void synchronizeRemote_ConfigurationSets() {
RTC.RTObject ro = getCorbaObjectInterface();
- _SDOPackage.Configuration conf = getSDOConfiguration();
+ synchronizeRemote_ConfigurationSets(ro);
+ }
+
+ public static void synchronizeRemote_ConfigurationSets(RTC.RTObject ro) {
try {
+ _SDOPackage.Configuration conf = ro.get_configuration();
_SDOPackage.ConfigurationSet[] cs = conf.get_configuration_sets();
CorbaObjectStore.eINSTANCE.registConfigSet(ro, cs);
} catch (Exception e) {
@@ -1695,8 +1770,12 @@
/** SDO.ConfigurationSet(active)ã®åæ (CORBA=>ãªãã¸ã§ã¯ãDB) */
public void synchronizeRemote_ActiveConfigurationSet() {
RTC.RTObject ro = getCorbaObjectInterface();
- _SDOPackage.Configuration conf = getSDOConfiguration();
+ synchronizeRemote_ActiveConfigurationSet(ro);
+ }
+
+ public static void synchronizeRemote_ActiveConfigurationSet(RTC.RTObject ro) {
try {
+ _SDOPackage.Configuration conf = ro.get_configuration();
_SDOPackage.ConfigurationSet cs = conf
.get_active_configuration_set();
CorbaObjectStore.eINSTANCE.registActiveConfigSet(ro, cs);
@@ -1711,6 +1790,10 @@
boolean update = false;
_SDOPackage.ConfigurationSet cs = CorbaObjectStore.eINSTANCE
.findActiveConfigSet(ro);
+ if (cs == null) {
+ setActiveConfigurationSet(null);
+ return;
+ }
if (!(getActiveConfigurationSet() instanceof CorbaConfigurationSet)) {
update = true;
} else {
@@ -1737,14 +1820,18 @@
/** RTC.RTObjectã¡ã³ãã®åæ (CORBA=>ãªãã¸ã§ã¯ãDB) */
public void synchronizeRemote_RTCRTObjects() {
RTC.RTObject ro = getCorbaObjectInterface();
- Organization org = getSDOOrganization();
- if (org == null) {
- return;
- }
+ synchronizeRemote_RTCRTObjects(ro);
+ }
+
+ public static void synchronizeRemote_RTCRTObjects(RTC.RTObject ro) {
List<RTC.RTObject> list = CorbaObjectStore.eINSTANCE
.getCompositeMemberList(ro);
try {
- _SDOPackage.SDO[] sdo_list = org.get_members();
+ Organization[] orgs = ro.get_owned_organizations();
+ if (orgs.length == 0) {
+ return;
+ }
+ _SDOPackage.SDO[] sdo_list = orgs[0].get_members();
if (sdo_list == null) {
return;
}
@@ -1976,8 +2063,10 @@
}
static _SDOPackage.ServiceProfile dummyServiceProfile;
+ Boolean supportCorbaObserver = null;
- boolean supportedCorbaObserver() {
+ @Override
+ public boolean supportedCorbaObserver() {
// OpenRTM-aistãã¼ã¸ã§ã³ãã§ãã¯
if (dummyServiceProfile == null) {
dummyServiceProfile = new _SDOPackage.ServiceProfile();
@@ -1985,14 +2074,17 @@
dummyServiceProfile.interface_type = "";
dummyServiceProfile.properties = new _SDOPackage.NameValue[0];
}
- boolean result = true;
- try {
- result = !getSDOConfiguration().add_service_profile(
- dummyServiceProfile);
- } catch (Exception e) {
- result = false;
+ if (supportCorbaObserver == null) {
+ boolean result = true;
+ try {
+ result = !getSDOConfiguration().add_service_profile(
+ dummyServiceProfile);
+ } catch (Exception e) {
+ result = false;
+ }
+ supportCorbaObserver = Boolean.valueOf(result);
}
- return result;
+ return supportCorbaObserver.booleanValue();
}
@Override
Added: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaLogObserverImpl.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaLogObserverImpl.java (rev 0)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaLogObserverImpl.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -0,0 +1,168 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package jp.go.aist.rtm.toolscommon.model.component.impl;
+
+import java.util.logging.Logger;
+
+import jp.go.aist.rtm.toolscommon.ToolsCommonPlugin;
+import jp.go.aist.rtm.toolscommon.model.component.ComponentPackage;
+import jp.go.aist.rtm.toolscommon.model.component.CorbaComponent;
+import jp.go.aist.rtm.toolscommon.model.component.CorbaLogObserver;
+import jp.go.aist.rtm.toolscommon.model.component.util.CorbaObserverStore;
+import jp.go.aist.rtm.toolscommon.model.component.util.RTCLogStore;
+
+import org.eclipse.emf.ecore.EClass;
+import org.omg.PortableServer.Servant;
+
+import static jp.go.aist.rtm.toolscommon.util.RTMixin.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Corba Log Observer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class CorbaLogObserverImpl extends CorbaObserverImpl implements CorbaLogObserver {
+
+ static Logger log = ToolsCommonPlugin.getLogger();
+
+ public static final String[] LEVEL_NAMES = new String[] { "SILENT", //
+ "ERROR", //
+ "WARN", //
+ "INFO", //
+ "NORMAL", //
+ "DEBUG", //
+ "TRACE", //
+ "VERBOSE", //
+ "PARANOID", //
+ };
+
+ protected LoggerPOAImpl servant;
+
+ RTC.RTObject rtc;
+ String rtcName;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected CorbaLogObserverImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ComponentPackage.Literals.CORBA_LOG_OBSERVER;
+ }
+
+ @Override
+ public Servant getServant() {
+ if (servant == null) {
+ servant = new LoggerPOAImpl(this);
+ }
+ return servant;
+ }
+
+ @Override
+ public boolean attachComponent(CorbaComponent component) {
+ RTC.RTObject ro = component.getCorbaObjectInterface();
+ if (rtc == null) {
+ rtc = ro;
+ rtcName = component.getInstanceNameL();
+ }
+ if (!eql(rtc, ro)) {
+ return false;
+ }
+ CorbaLogObserver obs = CorbaObserverStore.eINSTANCE.findLogObserver(ro);
+ if (obs != null) {
+ return true;
+ } else {
+ serviceProfile = new _SDOPackage.ServiceProfile();
+ serviceProfile.interface_type = OpenRTM.LoggerHelper.id();
+ setProperty("logger.filter", "ALL");
+ //
+ activate();
+ try {
+ boolean result = addServiceProfile(rtc.get_configuration());
+ if (!result) {
+ deactivate();
+ return false;
+ }
+ } catch (Exception e) {
+ deactivate();
+ return false;
+ }
+ CorbaObserverStore.eINSTANCE.registLogObserver(ro, this);
+ }
+ return true;
+ }
+
+ @Override
+ public boolean detachComponent() {
+ if (rtc == null) {
+ return true;
+ }
+ if (!CorbaObserverStore.eINSTANCE.isEmptyComponentReference(rtc)) {
+ return true;
+ }
+ return finish();
+ }
+
+ @Override
+ public boolean finish() {
+ if (rtc == null) {
+ return true;
+ }
+ //
+ boolean result = false;
+ try {
+ result = removeServiceProfile(rtc.get_configuration());
+ } catch (Exception e) {
+ }
+ deactivate();
+ //
+ RTCLogStore.eINSTANCE.remove(serviceProfile.id);
+ CorbaObserverStore.eINSTANCE.removeLogObserver(rtc);
+ //
+ return result;
+ }
+
+ public void save(OpenRTM.LogRecord record) {
+ log.info("publish(" + LEVEL_NAMES[record.level.value()] + ", "
+ + record.loggername + ", " + record.message + ")");
+ RTCLogStore.eINSTANCE.save(serviceProfile.id, rtcName, record);
+ }
+
+ static class LoggerPOAImpl extends OpenRTM.LoggerPOA {
+ CorbaLogObserverImpl parent;
+
+ public LoggerPOAImpl(CorbaLogObserverImpl parent) {
+ this.parent = parent;
+ }
+
+ @Override
+ public void publish(OpenRTM.LogRecord record) {
+ parent.save(record);
+ }
+
+ @Override
+ public void close() {
+ // TODO Auto-generated method stub
+
+ }
+ }
+
+} //CorbaLogObserverImpl
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaObserverImpl.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaObserverImpl.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaObserverImpl.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -6,8 +6,6 @@
*/
package jp.go.aist.rtm.toolscommon.model.component.impl;
-import java.util.ArrayList;
-import java.util.List;
import java.util.UUID;
import java.util.logging.Logger;
@@ -17,15 +15,16 @@
import jp.go.aist.rtm.toolscommon.model.component.ComponentPackage;
import jp.go.aist.rtm.toolscommon.model.component.CorbaComponent;
import jp.go.aist.rtm.toolscommon.model.component.CorbaObserver;
-import jp.go.aist.rtm.toolscommon.model.component.SystemDiagram;
import jp.go.aist.rtm.toolscommon.model.component.util.CorbaPropertyMap;
import jp.go.aist.rtm.toolscommon.model.component.util.IPropertyMapUtil;
+import jp.go.aist.rtm.toolscommon.ui.propertysource.CorbaObserverPropertySource;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.ui.views.properties.IPropertySource;
import org.omg.CORBA.ORB;
import org.omg.CORBA.ORBPackage.InvalidName;
@@ -217,20 +216,15 @@
throw new UnsupportedOperationException();
}
- protected boolean addServiceProfile(CorbaComponent component) {
- boolean result;
- try {
- serviceProfile.id = UUID.randomUUID().toString();
- result = component.getSDOConfiguration().add_service_profile(
- serviceProfile);
- //
- log.info("add_service_profile: id=" + serviceProfile.id
- + " ior=" + serviceProfile.service + " obs="
- + this.getClass());
- } catch (Exception e) {
- result = false;
- }
- return result;
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean detachComponent() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
}
/**
@@ -238,21 +232,37 @@
* <!-- end-user-doc -->
* @generated
*/
- public boolean detachComponent(CorbaComponent component) {
+ public boolean finish() {
// TODO: implement this method
// Ensure that you remove @generated or mark it @generated NOT
throw new UnsupportedOperationException();
}
- protected boolean removeServiceProfile(CorbaComponent component) {
+ protected boolean addServiceProfile(_SDOPackage.Configuration config) {
boolean result;
try {
- result = component.getSDOConfiguration().remove_service_profile(
- serviceProfile.id);
+ serviceProfile.id = UUID.randomUUID().toString();
+ result = config.add_service_profile(serviceProfile);
//
+ log.info("add_service_profile: id=" + serviceProfile.id
+ + " type=" + serviceProfile.interface_type + " ior="
+ + serviceProfile.service + " obs="
+ + this.getClass().getName());
+ } catch (Exception e) {
+ result = false;
+ }
+ return result;
+ }
+
+ protected boolean removeServiceProfile(_SDOPackage.Configuration config) {
+ boolean result;
+ try {
+ result = config.remove_service_profile(serviceProfile.id);
+ //
log.info("remove_service_profile: id=" + serviceProfile.id
- + " ior=" + serviceProfile.service + " obs="
- + this.getClass());
+ + " type=" + serviceProfile.interface_type + " ior="
+ + serviceProfile.service + " obs="
+ + this.getClass().getName());
} catch (Exception e) {
result = false;
}
@@ -352,61 +362,11 @@
@SuppressWarnings("unchecked")
@Override
public Object getAdapter(Class adapter) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public boolean isCompositeMember(CorbaComponent component) {
- if (component.eContainer() instanceof SystemDiagram) {
- SystemDiagram sd = (SystemDiagram) component.eContainer();
- if (sd.getCompositeComponent() != null) {
- return true;
- }
+ java.lang.Object result = null;
+ if (IPropertySource.class.equals(adapter)) {
+ result = new CorbaObserverPropertySource(this);
}
- return false;
+ return result;
}
- protected static class ComponentList {
- List<CorbaComponent> components;
-
- ComponentList() {
- this.components = new ArrayList<CorbaComponent>();
- }
-
- public CorbaComponent get(int index) {
- return components.get(index);
- }
-
- public boolean add(CorbaComponent component) {
- return components.add(component);
- }
-
- public boolean contain(CorbaComponent component) {
- for (CorbaComponent comp : components) {
- if (comp == component) {
- return true;
- }
- }
- return false;
- }
-
- public boolean isEmpty() {
- return components.isEmpty();
- }
-
- public CorbaComponent remove(CorbaComponent component) {
- int index = -1;
- for (int i = 0; i < components.size(); i++) {
- if (components.get(i) == component) {
- index = i;
- break;
- }
- }
- if (index != -1) {
- return components.remove(index);
- }
- return null;
- }
- }
-
} //CorbaObserverImpl
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaStatusObserverImpl.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaStatusObserverImpl.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/CorbaStatusObserverImpl.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -20,15 +20,24 @@
import jp.go.aist.rtm.toolscommon.model.component.CorbaStatusObserver;
import jp.go.aist.rtm.toolscommon.model.component.ExecutionContext;
import jp.go.aist.rtm.toolscommon.model.component.util.CorbaObjectStore;
-import jp.go.aist.rtm.toolscommon.ui.propertysource.CorbaStatusObserverPropertySource;
+import jp.go.aist.rtm.toolscommon.model.component.util.CorbaObserverStore;
import org.eclipse.emf.ecore.EClass;
-import org.eclipse.ui.views.properties.IPropertySource;
import org.omg.PortableServer.Servant;
import static jp.go.aist.rtm.toolscommon.util.RTMixin.*;
import static jp.go.aist.rtm.toolscommon.manager.ToolsCommonPreferenceManager.*;
+import static jp.go.aist.rtm.toolscommon.model.component.impl.CorbaComponentImpl.synchronizeRemote_RTCComponentProfile;
+import static jp.go.aist.rtm.toolscommon.model.component.impl.CorbaComponentImpl.synchronizeRemote_RTCExecutionContexts;
+import static jp.go.aist.rtm.toolscommon.model.component.impl.CorbaComponentImpl.synchronizeRemote_RTCPortProfile;
+import static jp.go.aist.rtm.toolscommon.model.component.impl.CorbaComponentImpl.synchronizeRemote_RTCRTObjects;
+import static jp.go.aist.rtm.toolscommon.model.component.impl.CorbaComponentImpl.synchronizeRemote_EC_ComponentState;
+import static jp.go.aist.rtm.toolscommon.model.component.impl.CorbaComponentImpl.synchronizeRemote_EC_ECProfile;
+import static jp.go.aist.rtm.toolscommon.model.component.impl.CorbaComponentImpl.synchronizeRemote_EC_ECState;
+import static jp.go.aist.rtm.toolscommon.model.component.impl.CorbaComponentImpl.synchronizeRemote_ActiveConfigurationSet;
+import static jp.go.aist.rtm.toolscommon.model.component.impl.CorbaComponentImpl.synchronizeRemote_ConfigurationSets;
+
/**
* <!-- begin-user-doc -->
* An implementation of the model object '<em><b>Corba Status Observer</b></em>'.
@@ -55,9 +64,9 @@
RTC.RTObject rtc;
- static Map<RTC.RTObject, _SDOPackage.ServiceProfile> profileMap;
+ PropertyChangeListener listener;
+
static Map<RTC.RTObject, HeartBeat> hbMap;
- static Map<RTC.RTObject, ComponentList> componentListMap;
/**
* <!-- begin-user-doc -->
@@ -66,15 +75,9 @@
*/
protected CorbaStatusObserverImpl() {
super();
- if (profileMap == null) {
- profileMap = new HashMap<RTC.RTObject, _SDOPackage.ServiceProfile>();
- }
if (hbMap == null) {
hbMap = new HashMap<RTC.RTObject, HeartBeat>();
}
- if (componentListMap == null) {
- componentListMap = new HashMap<RTC.RTObject, ComponentList>();
- }
}
/**
@@ -115,8 +118,6 @@
return servant;
}
- PropertyChangeListener listener;
-
@Override
public boolean attachComponent(CorbaComponent component) {
RTC.RTObject ro = component.getCorbaObjectInterface();
@@ -126,9 +127,10 @@
if (!eql(rtc, ro)) {
return false;
}
- _SDOPackage.ServiceProfile prof = profileMap.get(rtc);
- if (prof != null) {
- serviceProfile = prof;
+ CorbaStatusObserver obs = CorbaObserverStore.eINSTANCE
+ .findStatusObserver(ro);
+ if (obs != null) {
+ return true;
} else {
HeartBeat hb = new HeartBeat();
hbMap.put(rtc, hb);
@@ -151,58 +153,54 @@
.addPropertyChangeListener(listener);
//
activate();
- boolean result = addServiceProfile(component);
- if (!result) {
+ try {
+ boolean result = addServiceProfile(rtc.get_configuration());
+ if (!result) {
+ deactivate();
+ return false;
+ }
+ } catch (Exception e) {
deactivate();
return false;
}
- profileMap.put(rtc, serviceProfile);
+ CorbaObserverStore.eINSTANCE.registStatusObserver(ro, this);
}
- ComponentList components = getComponentList();
- if (!components.contain(component)) {
- components.add(component);
- component.setStatusObserver(this);
- }
return true;
}
@Override
- public boolean detachComponent(CorbaComponent component) {
- RTC.RTObject ro = component.getCorbaObjectInterface();
- if (!eql(rtc, ro)) {
- return false;
+ public boolean detachComponent() {
+ if (rtc == null) {
+ return true;
}
- ComponentList components = getComponentList();
- if (components.contain(component)) {
- if (!isCompositeMember(component)) {
- components.remove(component);
- component.setStatusObserver(null);
- }
+ if (!CorbaObserverStore.eINSTANCE.isEmptyComponentReference(rtc)) {
+ return true;
}
- if (!components.isEmpty()) {
+ //
+ return finish();
+ }
+
+ @Override
+ public boolean finish() {
+ if (rtc == null) {
return true;
}
- boolean result = removeServiceProfile(component);
+ //
+ boolean result = false;
+ try {
+ result = removeServiceProfile(rtc.get_configuration());
+ } catch (Exception e) {
+ }
deactivate();
- profileMap.remove(rtc);
+ //
+ CorbaObserverStore.eINSTANCE.removeStatusObserver(rtc);
hbMap.remove(rtc);
ToolsCommonPreferenceManager.getInstance()
.removePropertyChangeListener(listener);
+ //
return result;
}
- ComponentList getComponentList() {
- if (rtc == null) {
- return new ComponentList();
- }
- ComponentList result = componentListMap.get(rtc);
- if (result == null) {
- result = new ComponentList();
- componentListMap.put(rtc, result);
- }
- return result;
- }
-
public void notifyStatus(OpenRTM.StatusKind status_kind, String hint) {
if (OpenRTM.StatusKind.HEARTBEAT.equals(status_kind)) {
// H.Båä¿¡
@@ -217,14 +215,13 @@
log.info("update_status(" + TYPE_NAMES[status_kind.value()] + ", "
+ hint + ")");
- ComponentList components = getComponentList();
- if (components.isEmpty()) {
+ if (CorbaObserverStore.eINSTANCE.isEmptyComponentReference(rtc)) {
return;
}
- CorbaComponentImpl ccImpl = (CorbaComponentImpl) components.get(0);
+ //
if (OpenRTM.StatusKind.COMPONENT_PROFILE.equals(status_kind)) {
// RTC.ComponentProfileã®å¤æ´éç¥
- ccImpl.synchronizeRemote_RTCComponentProfile();
+ synchronizeRemote_RTCComponentProfile(rtc);
}
if (OpenRTM.StatusKind.RTC_STATUS.equals(status_kind)) {
// RTCç¶æ
ã®å¤æ´éç¥
@@ -253,9 +250,9 @@
}
//
RTC.ExecutionContext ec = CorbaObjectStore.eINSTANCE.findContext(
- ccImpl.getCorbaObjectInterface(), id);
- CorbaObjectStore.eINSTANCE.registComponentState(ec, ccImpl
- .getCorbaObjectInterface(), stateValue);
+ rtc, id);
+ CorbaObjectStore.eINSTANCE
+ .registComponentState(ec, rtc, stateValue);
}
if (OpenRTM.StatusKind.EC_STATUS.equals(status_kind)) {
// ECç¶æ
ã®å¤æ´éç¥
@@ -270,24 +267,41 @@
String id = ss[1];
//
if ("ATTACHED".equals(action) || "DETACHED".equals(action)) {
- ccImpl.synchronizeRemote_RTCExecutionContexts();
- RTC.ExecutionContext ec = CorbaObjectStore.eINSTANCE
- .findContext(ccImpl.getCorbaObjectInterface(), id);
+ RTC.ExecutionContext oldEc = CorbaObjectStore.eINSTANCE
+ .findContext(rtc, id);
+ //
+ synchronizeRemote_RTCExecutionContexts(rtc);
+ //
+ RTC.ExecutionContext newEc = CorbaObjectStore.eINSTANCE
+ .findContext(rtc, id);
+ //
+ RTC.ExecutionContext ec = null;
+ if ("ATTACHED".equals(action)) {
+ ec = newEc;
+ } else if ("DETACHED".equals(action)) {
+ ec = oldEc;
+ }
if (ec != null) {
- ccImpl.synchronizeRemote_EC_ECProfile(ec);
- ccImpl.synchronizeRemote_EC_ComponentState(ec);
+ synchronizeRemote_EC_ECProfile(ec);
+ synchronizeRemote_EC_ComponentState(rtc, ec);
+ // è¤åRTCã®åæ
å ±ã®å¤æ´éç¥ããªããããECã®ã¢ã¿ãã/ãã¿ããæã«ECãªã¼ãã¼ãæ´æ°
+ RTC.ExecutionContextProfile ecprof = CorbaObjectStore.eINSTANCE
+ .findECProfile(ec);
+ if (ecprof != null && ecprof.owner != null) {
+ synchronizeRemote_RTCRTObjects(ecprof.owner);
+ }
}
} else if ("RATE_CHANGED".equals(action)) {
RTC.ExecutionContext ec = CorbaObjectStore.eINSTANCE
- .findContext(ccImpl.getCorbaObjectInterface(), id);
+ .findContext(rtc, id);
if (ec != null) {
- ccImpl.synchronizeRemote_EC_ECProfile(ec);
+ synchronizeRemote_EC_ECProfile(ec);
}
} else if ("STARTUP".equals(action) || "SHUTDOWN".equals(action)) {
RTC.ExecutionContext ec = CorbaObjectStore.eINSTANCE
- .findContext(ccImpl.getCorbaObjectInterface(), id);
+ .findContext(rtc, id);
if (ec != null) {
- ccImpl.synchronizeRemote_EC_ECState(ec);
+ synchronizeRemote_EC_ECState(ec);
}
}
}
@@ -304,9 +318,9 @@
String port_name = ss[1];
//
if ("CONNECT".equals(action) || "DISCONNECT".equals(action)) {
- ccImpl.synchronizeRemote_RTCPortProfile(port_name);
+ synchronizeRemote_RTCPortProfile(rtc, port_name);
} else if ("ADD".equals(action) || "REMOVE".equals(action)) {
- ccImpl.synchronizeRemote_RTCComponentProfile();
+ synchronizeRemote_RTCComponentProfile(rtc);
}
}
if (OpenRTM.StatusKind.CONFIGURATION.equals(status_kind)) {
@@ -315,9 +329,16 @@
return;
}
if ("ACTIVATE_CONFIG_SET".equals(hint)) {
- ccImpl.synchronizeRemote_ActiveConfigurationSet();
+ synchronizeRemote_ActiveConfigurationSet(rtc);
} else {
- ccImpl.synchronizeRemote_ConfigurationSets();
+ synchronizeRemote_ConfigurationSets(rtc);
+ // è¤åRTCã®å
¬éãã¼ãå¤æ´ã®éç¥ããªãã®ã§ãConfigurationSetã®éç¥æã«ãããã¡ã¤ã«ãæ´æ°
+ RTC.ComponentProfile prof = CorbaObjectStore.eINSTANCE
+ .findRTCProfile(rtc);
+ if (prof != null && prof.category != null
+ && prof.category.startsWith("composite.")) {
+ synchronizeRemote_RTCComponentProfile(rtc);
+ }
}
}
}
@@ -340,32 +361,19 @@
return;
}
HeartBeat hb = hbMap.get(rtc);
- serviceProfile = profileMap.get(rtc);
if (hb == null || serviceProfile == null) {
return;
}
- ComponentList components = getComponentList();
- if (components.isEmpty()) {
- return;
- }
- CorbaComponent component = components.get(0);
//
hb.updatePreference();
setProperty("heartbeat.enable", hb.getPropEnable());
setProperty("heartbeat.interval", hb.getPropInterval());
//
- removeServiceProfile(component);
- addServiceProfile(component);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public Object getAdapter(Class adapter) {
- java.lang.Object result = null;
- if (IPropertySource.class.equals(adapter)) {
- result = new CorbaStatusObserverPropertySource(this);
+ try {
+ removeServiceProfile(rtc.get_configuration());
+ addServiceProfile(rtc.get_configuration());
+ } catch (Exception e) {
}
- return result;
}
static class ComponentObserverPOAImpl extends OpenRTM.ComponentObserverPOA {
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/SystemDiagramImpl.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/SystemDiagramImpl.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/impl/SystemDiagramImpl.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -15,11 +15,13 @@
import java.util.Map;
import jp.go.aist.rtm.toolscommon.model.component.Component;
+import jp.go.aist.rtm.toolscommon.model.component.ComponentFactory;
import jp.go.aist.rtm.toolscommon.model.component.ComponentPackage;
import jp.go.aist.rtm.toolscommon.model.component.CorbaStatusObserver;
import jp.go.aist.rtm.toolscommon.model.component.PortConnector;
import jp.go.aist.rtm.toolscommon.model.component.SystemDiagram;
import jp.go.aist.rtm.toolscommon.model.component.SystemDiagramKind;
+import jp.go.aist.rtm.toolscommon.model.component.util.CorbaObserverStore;
import jp.go.aist.rtm.toolscommon.model.component.util.IPropertyMapUtil;
import jp.go.aist.rtm.toolscommon.model.component.util.PropertyMap;
import jp.go.aist.rtm.toolscommon.model.core.impl.ModelElementImpl;
@@ -434,25 +436,34 @@
@Override
public synchronized void removeComponent(Component component) {
- if (component instanceof CorbaComponentImpl) {
- CorbaComponentImpl corbaComp = (CorbaComponentImpl) component;
- // ç¶æ
éç¥ãªãã¶ã¼ã解é¤
- if (corbaComp.getStatusObserver() != null) {
- corbaComp.getStatusObserver().detachComponent(corbaComp);
- }
- }
+ removeObserver(component);
for (Component comp : component.getComponents()) {
- if (comp instanceof CorbaComponentImpl) {
- CorbaComponentImpl corbaComp = (CorbaComponentImpl) comp;
- // ç¶æ
éç¥ãªãã¶ã¼ã解é¤
- if (corbaComp.getStatusObserver() != null) {
- corbaComp.getStatusObserver().detachComponent(corbaComp);
- }
- }
+ removeObserver(comp);
}
+ //
getComponents().remove(component);
}
+ void removeObserver(Component component) {
+ if (!(component instanceof CorbaComponentImpl)) {
+ return;
+ }
+ if (isCompositeMember(component)) {
+ return;
+ }
+ CorbaComponentImpl corbaComp = (CorbaComponentImpl) component;
+ //
+ CorbaObserverStore.eINSTANCE.removeComponentReference(corbaComp);
+ // ç¶æ
éç¥ãªãã¶ã¼ã解é¤
+ if (corbaComp.getStatusObserver() != null) {
+ corbaComp.getStatusObserver().detachComponent();
+ }
+ // ãã°éç¥ãªãã¶ã¼ã解é¤
+ if (corbaComp.getLogObserver() != null) {
+ corbaComp.getLogObserver().detachComponent();
+ }
+ }
+
@Override
public synchronized void removeComponents(List<Component> components) {
for (Component c : components) {
@@ -467,24 +478,11 @@
@Override
public synchronized void addComponent(int pos, Component component) {
- if (component instanceof CorbaComponentImpl) {
- CorbaComponentImpl corbaComp = (CorbaComponentImpl) component;
- if (corbaComp.supportedCorbaObserver()) {
- // ç¶æ
éç¥ãªãã¶ã¼ãç»é²
- CorbaStatusObserver ob = new CorbaStatusObserverImpl();
- ob.attachComponent(corbaComp);
- }
- }
+ addObserver(component);
for (Component comp : component.getComponents()) {
- if (comp instanceof CorbaComponentImpl) {
- CorbaComponentImpl corbaComp = (CorbaComponentImpl) comp;
- if (corbaComp.supportedCorbaObserver()) {
- // ç¶æ
éç¥ãªãã¶ã¼ãç»é²
- CorbaStatusObserver ob = new CorbaStatusObserverImpl();
- ob.attachComponent(corbaComp);
- }
- }
+ addObserver(comp);
}
+ //
if (pos == -1) {
getComponents().add(component);
} else {
@@ -492,6 +490,25 @@
}
}
+ void addObserver(Component component) {
+ if (!(component instanceof CorbaComponentImpl)) {
+ return;
+ }
+ if (isCompositeMember(component)) {
+ return;
+ }
+ CorbaComponentImpl corbaComp = (CorbaComponentImpl) component;
+ if (!corbaComp.supportedCorbaObserver()) {
+ return;
+ }
+ // ç¶æ
éç¥ãªãã¶ã¼ãç»é²
+ CorbaStatusObserver ob = ComponentFactory.eINSTANCE
+ .createCorbaStatusObserver();
+ ob.attachComponent(corbaComp);
+ //
+ CorbaObserverStore.eINSTANCE.addComponentReference(corbaComp);
+ }
+
@Override
public synchronized void addComponents(List<Component> components) {
for (Component c : components) {
@@ -506,6 +523,16 @@
}
}
+ public boolean isCompositeMember(Component component) {
+ if (component.eContainer() instanceof SystemDiagram) {
+ SystemDiagram sd = (SystemDiagram) component.eContainer();
+ if (sd.getCompositeComponent() != null) {
+ return true;
+ }
+ }
+ return false;
+ }
+
@Override
public SystemDiagram getRootDiagram() {
if (getParentSystemDiagram() == null) return this;
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/ComponentAdapterFactory.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/ComponentAdapterFactory.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/ComponentAdapterFactory.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -193,6 +193,10 @@
return createCorbaStatusObserverAdapter();
}
@Override
+ public Adapter caseCorbaLogObserver(CorbaLogObserver object) {
+ return createCorbaLogObserverAdapter();
+ }
+ @Override
public Adapter caseIAdaptable(IAdaptable object) {
return createIAdaptableAdapter();
}
@@ -471,6 +475,20 @@
}
/**
+ * Creates a new adapter for an object of class '{@link jp.go.aist.rtm.toolscommon.model.component.CorbaLogObserver <em>Corba Log Observer</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see jp.go.aist.rtm.toolscommon.model.component.CorbaLogObserver
+ * @generated
+ */
+ public Adapter createCorbaLogObserverAdapter() {
+ return null;
+ }
+
+ /**
* Creates a new adapter for an object of class '{@link jp.go.aist.rtm.toolscommon.model.component.ComponentSpecification <em>Specification</em>}'.
* <!-- begin-user-doc -->
* This default implementation returns null so that we can easily ignore cases;
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/ComponentSwitch.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/ComponentSwitch.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/ComponentSwitch.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -353,6 +353,15 @@
if (result == null) result = defaultCase(theEObject);
return result;
}
+ case ComponentPackage.CORBA_LOG_OBSERVER: {
+ CorbaLogObserver corbaLogObserver = (CorbaLogObserver)theEObject;
+ T result = caseCorbaLogObserver(corbaLogObserver);
+ if (result == null) result = caseCorbaObserver(corbaLogObserver);
+ if (result == null) result = caseIPropertyMap(corbaLogObserver);
+ if (result == null) result = caseIAdaptable(corbaLogObserver);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
default: return defaultCase(theEObject);
}
}
@@ -613,6 +622,21 @@
}
/**
+ * Returns the result of interpreting the object as an instance of '<em>Corba Log Observer</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Corba Log Observer</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCorbaLogObserver(CorbaLogObserver object) {
+ return null;
+ }
+
+ /**
* Returns the result of interpreting the object as an instance of '<em>Specification</em>'.
* <!-- begin-user-doc -->
* This implementation returns null;
Added: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/CorbaObserverStore.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/CorbaObserverStore.java (rev 0)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/CorbaObserverStore.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -0,0 +1,172 @@
+package jp.go.aist.rtm.toolscommon.model.component.util;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import jp.go.aist.rtm.toolscommon.model.component.CorbaComponent;
+import jp.go.aist.rtm.toolscommon.model.component.CorbaLogObserver;
+import jp.go.aist.rtm.toolscommon.model.component.CorbaStatusObserver;
+
+public class CorbaObserverStore {
+
+ public static CorbaObserverStore eINSTANCE = new CorbaObserverStore();
+
+ // RTC.RTObj => ComponentList
+ Map<RTC.RTObject, ComponentList> compReferenceMap;
+ // RTC.RTObj => CorbaStatusObserver
+ Map<RTC.RTObject, CorbaStatusObserver> statusObserverMap;
+ // RTC.RTObj => CorbaLogObserver
+ Map<RTC.RTObject, CorbaLogObserver> logObserverMap;
+
+ public CorbaObserverStore() {
+ this.compReferenceMap = new HashMap<RTC.RTObject, ComponentList>();
+ this.statusObserverMap = new HashMap<RTC.RTObject, CorbaStatusObserver>();
+ this.logObserverMap = new HashMap<RTC.RTObject, CorbaLogObserver>();
+ }
+
+ /**
+ * RTC.RTObjectãåç
§ãã CorbaComponentã追å ãã¾ãã
+ */
+ public void addComponentReference(RTC.RTObject ro, CorbaComponent comp) {
+ ComponentList list = compReferenceMap.get(ro);
+ if (list == null) {
+ list = new ComponentList();
+ compReferenceMap.put(ro, list);
+ }
+ list.add(comp);
+ }
+
+ public void addComponentReference(CorbaComponent comp) {
+ addComponentReference(comp.getCorbaObjectInterface(), comp);
+ }
+
+ /**
+ * RTC.RTObjectãåç
§ãã CorbaComponentãåé¤ãã¾ãã
+ */
+ public void removeComponentReference(RTC.RTObject ro, CorbaComponent comp) {
+ ComponentList list = compReferenceMap.get(ro);
+ if (list == null) {
+ return;
+ }
+ list.remove(comp);
+ }
+
+ public void removeComponentReference(CorbaComponent comp) {
+ removeComponentReference(comp.getCorbaObjectInterface(), comp);
+ }
+
+ /**
+ * RTC.RTObjectãåç
§ãã CorbaComponentã®ä¸è¦§ãåå¾ãã¾ãã
+ */
+ public ComponentList findComponentReferenceList(RTC.RTObject ro) {
+ ComponentList result = compReferenceMap.get(ro);
+ if (result == null) {
+ result = new ComponentList();
+ }
+ return result;
+ }
+
+ /**
+ * RTC.RTObjectãåç
§ãã CorbaComponentãåå¨ããªãå ´åã¯true
+ */
+ public boolean isEmptyComponentReference(RTC.RTObject ro) {
+ ComponentList list = compReferenceMap.get(ro);
+ if (list == null) {
+ return true;
+ }
+ return list.isEmpty();
+ }
+
+ /**
+ * RTC.RTObjectããã¼ã« CorbaStatusObserverãæ¤ç´¢ãã¾ãã
+ */
+ public CorbaStatusObserver findStatusObserver(RTC.RTObject ro) {
+ return statusObserverMap.get(ro);
+ }
+
+ /**
+ * RTC.RTObjectããã¼ã« CorbaStatusObserverãä¿åãã¾ãã
+ */
+ public synchronized CorbaStatusObserver registStatusObserver(
+ RTC.RTObject ro, CorbaStatusObserver observer) {
+ return statusObserverMap.put(ro, observer);
+ }
+
+ /**
+ * RTC.RTObjectããã¼ã« CorbaStatusObserverãåé¤ãã¾ãã
+ */
+ public synchronized CorbaStatusObserver removeStatusObserver(RTC.RTObject ro) {
+ return statusObserverMap.remove(ro);
+ }
+
+ /**
+ * RTC.RTObjectããã¼ã« CorbaLogObserverãæ¤ç´¢ãã¾ãã
+ */
+ public CorbaLogObserver findLogObserver(RTC.RTObject ro) {
+ return logObserverMap.get(ro);
+ }
+
+ /**
+ * RTC.RTObjectããã¼ã« CorbaLogObserverãä¿åãã¾ãã
+ */
+ public synchronized CorbaLogObserver registLogObserver(RTC.RTObject ro,
+ CorbaLogObserver observer) {
+ return logObserverMap.put(ro, observer);
+ }
+
+ /**
+ * RTC.RTObjectããã¼ã« CorbaLogObserverãåé¤ãã¾ãã
+ */
+ public synchronized CorbaLogObserver removeLogObserver(RTC.RTObject ro) {
+ return logObserverMap.remove(ro);
+ }
+
+ public static class ComponentList {
+ List<CorbaComponent> components;
+
+ ComponentList() {
+ this.components = new ArrayList<CorbaComponent>();
+ }
+
+ public CorbaComponent get(int index) {
+ return components.get(index);
+ }
+
+ public boolean add(CorbaComponent component) {
+ if (contain(component)) {
+ return true;
+ }
+ return components.add(component);
+ }
+
+ public boolean contain(CorbaComponent component) {
+ for (CorbaComponent comp : components) {
+ if (comp == component) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean isEmpty() {
+ return components.isEmpty();
+ }
+
+ public CorbaComponent remove(CorbaComponent component) {
+ int index = -1;
+ for (int i = 0; i < components.size(); i++) {
+ if (components.get(i) == component) {
+ index = i;
+ break;
+ }
+ }
+ if (index != -1) {
+ return components.remove(index);
+ }
+ return null;
+ }
+ }
+
+}
Added: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/RTCLogStore.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/RTCLogStore.java (rev 0)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/util/RTCLogStore.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -0,0 +1,132 @@
+package jp.go.aist.rtm.toolscommon.model.component.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static jp.go.aist.rtm.toolscommon.util.RTMixin.*;
+
+public class RTCLogStore {
+
+ public static RTCLogStore eINSTANCE = new RTCLogStore();
+
+ List<Record> store;
+
+ RTCLogStore() {
+ this.store = new ArrayList<Record>();
+ }
+
+ /**
+ * ãã°éç¥ãªãã¶ã¼ãã®IDãªã¹ããæå®ãã¦ã対象㮠RTCãã°ãæ¤ç´¢ãã¾ãã
+ */
+ public synchronized List<Record> find(List<String> id_list, int limit) {
+ List<Record> result = new ArrayList<Record>();
+ int count = 0;
+ for (Record r : store) {
+ if (!id_list.contains(r.observer_id)) {
+ continue;
+ }
+ result.add(r);
+ count++;
+ if (limit > 0 && count > limit) {
+ break;
+ }
+ }
+ return result;
+ }
+
+ public List<Record> find(List<String> id_list) {
+ return find(id_list, 0);
+ }
+
+ /**
+ * ãã°éç¥ãªãã¶ã¼ãã®IDã«é¢é£ä»ãã¦ãRTCãã°ãä¿åãã¾ãã
+ */
+ public synchronized void save(String id, String name,
+ OpenRTM.LogRecord record) {
+ Record r = new Record(id, name, record);
+ store.add(0, r);
+ }
+
+ /**
+ * ãã°éç¥ãªãã¶ã¼ãã®IDãæå®ãã¦ã対象㮠RTCãã°ãåé¤ãã¾ãã
+ */
+ public synchronized void remove(String id) {
+ List<Record> unmodified = new ArrayList<Record>(store);
+ for (Record r : unmodified) {
+ if (eql(id, r.observer_id)) {
+ store.remove(r);
+ }
+ }
+ }
+
+ /**
+ * ãã°ã¬ãã«ãªãã¸ã§ã¯ãããæååã«å¤æãã¾ãã
+ */
+ public static String toLevelName(OpenRTM.LogLevel lv) {
+ if (OpenRTM.LogLevel.ERROR.equals(lv)) {
+ return "ERROR";
+ } else if (OpenRTM.LogLevel.WARN.equals(lv)) {
+ return "WARN";
+ } else if (OpenRTM.LogLevel.INFO.equals(lv)) {
+ return "INFO";
+ } else if (OpenRTM.LogLevel.NORMAL.equals(lv)) {
+ return "NORMAL";
+ } else if (OpenRTM.LogLevel.DEBUG.equals(lv)) {
+ return "DEBUG";
+ } else if (OpenRTM.LogLevel.TRACE.equals(lv)) {
+ return "TRACE";
+ } else if (OpenRTM.LogLevel.VERBOSE.equals(lv)) {
+ return "VERBOSE";
+ } else if (OpenRTM.LogLevel.PARANOID.equals(lv)) {
+ return "PARANOID";
+ }
+ return "UNKNOWN";
+ }
+
+ /**
+ * RTCãã°ã表ãã¯ã©ã¹
+ */
+ public static class Record {
+ String observer_id;
+ String rtc_name;
+ String level_name;
+ OpenRTM.LogRecord r;
+
+ Record(String id, String name, OpenRTM.LogRecord record) {
+ this.observer_id = id;
+ this.rtc_name = name;
+ this.level_name = toLevelName(record.level);
+ this.r = record;
+ }
+
+ public String getObserverId() {
+ return observer_id;
+ }
+
+ public String getRtcName() {
+ return rtc_name;
+
+ }
+
+ public String getLevelName() {
+ return level_name;
+ }
+
+ public RTC.Time getTime() {
+ return r.time;
+ }
+
+ public OpenRTM.LogLevel getLevel() {
+ return r.level;
+ }
+
+ public String getLoggerName() {
+ return r.loggername;
+ }
+
+ public String getMessage() {
+ return r.message;
+ }
+ }
+
+}
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/validation/CorbaComponentValidator.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/validation/CorbaComponentValidator.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/validation/CorbaComponentValidator.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -8,6 +8,7 @@
import _SDOPackage.Configuration;
import _SDOPackage.ConfigurationSet;
import _SDOPackage.Organization;
+import jp.go.aist.rtm.toolscommon.model.component.CorbaLogObserver;
import jp.go.aist.rtm.toolscommon.model.component.CorbaStatusObserver;
import org.eclipse.emf.common.util.EList;
@@ -41,4 +42,6 @@
boolean validateIor(String value);
boolean validateStatusObserver(CorbaStatusObserver value);
+
+ boolean validateLogObserver(CorbaLogObserver value);
}
\ No newline at end of file
Added: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/validation/CorbaLogObserverValidator.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/validation/CorbaLogObserverValidator.java (rev 0)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component/validation/CorbaLogObserverValidator.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -0,0 +1,19 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package jp.go.aist.rtm.toolscommon.model.component.validation;
+
+
+/**
+ * A sample validator interface for {@link jp.go.aist.rtm.toolscommon.model.component.CorbaLogObserver}.
+ * This doesn't really do anything, and it's not a real EMF artifact.
+ * It was generated by the org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's code generator can be extended.
+ * This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
+ */
+public interface CorbaLogObserverValidator {
+ boolean validate();
+
+}
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component.ecore
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component.ecore 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/model/component.ecore 2011-04-28 03:04:05 UTC (rev 168)
@@ -294,6 +294,7 @@
<eOperations name="finalizeR" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
<eOperations name="exitR" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
<eOperations name="getCorbaObjectInterface" eType="#//RTCRTObject"/>
+ <eOperations name="supportedCorbaObserver" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="executionContextState"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" transient="true"
defaultValueLiteral="0"/>
@@ -313,6 +314,7 @@
upperBound="-1" eType="#//RTCRTObject" transient="true" defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="ior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="statusObserver" eType="#//CorbaStatusObserver"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="logObserver" eType="#//CorbaLogObserver"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CorbaPortSynchronizer" eSuperTypes="core.ecore#//CorbaWrapperObject #//PortSynchronizer">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="rTCPortProfile" eType="#//RTCPortProfile"/>
@@ -360,9 +362,8 @@
<eOperations name="attachComponent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eParameters name="component" eType="#//CorbaComponent"/>
</eOperations>
- <eOperations name="detachComponent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
- <eParameters name="component" eType="#//CorbaComponent"/>
- </eOperations>
+ <eOperations name="detachComponent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="finish" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="serviceProfile" eType="#//SDOServiceProfile"
changeable="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="servant" eType="#//Servant"
@@ -371,5 +372,6 @@
<eClassifiers xsi:type="ecore:EClass" name="CorbaStatusObserver" eSuperTypes="#//CorbaObserver">
<eOperations name="isTimeOut" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CorbaLogObserver" eSuperTypes="#//CorbaObserver"/>
<eClassifiers xsi:type="ecore:EDataType" name="Servant" instanceClassName="org.omg.PortableServer.Servant"/>
</ecore:EPackage>
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/nl/messages.properties
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/nl/messages.properties 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/nl/messages.properties 2011-04-28 03:04:05 UTC (rev 168)
@@ -44,9 +44,9 @@
PortInterfaceProfilePropertySource.unknown=<UNKNOWN>
PortInterfaceProfilePropertySource.polarity.provided=PROVIDED
PortInterfaceProfilePropertySource.polarity.required=REQUIRED
-CorbaStatusObserverPropertySource.disp.interface_type=Interface Type
-CorbaStatusObserverPropertySource.disp.service=Service
-CorbaStatusObserverPropertySource.unknown=<UNKNOWN>
+CorbaObserverPropertySource.disp.interface_type=Interface Type
+CorbaObserverPropertySource.disp.service=Service
+CorbaObserverPropertySource.unknown=<UNKNOWN>
SystemDiagramPropertySource.disp.system_id=System ID
SystemDiagramPropertySource.disp.kind=Kind
SystemDiagramPropertySource.disp.create_date=Create Date
Added: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/propertysource/CorbaObserverPropertySource.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/propertysource/CorbaObserverPropertySource.java (rev 0)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/propertysource/CorbaObserverPropertySource.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -0,0 +1,69 @@
+package jp.go.aist.rtm.toolscommon.ui.propertysource;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import jp.go.aist.rtm.toolscommon.model.component.CorbaObserver;
+import jp.go.aist.rtm.toolscommon.nl.Messages;
+
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.TextPropertyDescriptor;
+
+/**
+ * CorbaObserverã®IPropertySourceã¯ã©ã¹
+ */
+public class CorbaObserverPropertySource extends AbstractPropertySource {
+
+ static final String ID = "ID";
+ static final String INTERFACE_TYPE = "INTERFACE_TYPE";
+ static final String SERVICE = "SERVICE";
+
+ static final String DISP_ID = "ID";
+ static final String DISP_INTERFACE_TYPE = Messages
+ .getString("CorbaObserverPropertySource.disp.interface_type");
+ static final String DISP_SERVICE = Messages
+ .getString("CorbaObserverPropertySource.disp.service");
+
+ static final String UNKNOWN = Messages
+ .getString("CorbaObserverPropertySource.unknown");
+
+ CorbaObserver observer;
+
+ public CorbaObserverPropertySource(CorbaObserver observer) {
+ this.observer = observer;
+ }
+
+ @Override
+ public IPropertyDescriptor[] getPropertyDescriptors() {
+ List<IPropertyDescriptor> result = new ArrayList<IPropertyDescriptor>();
+ result.add(new TextPropertyDescriptor(ID, DISP_ID));
+ result.add(new TextPropertyDescriptor(INTERFACE_TYPE,
+ DISP_INTERFACE_TYPE));
+ result.add(new TextPropertyDescriptor(SERVICE, DISP_SERVICE));
+ for (String key : observer.getPropertyKeys()) {
+ result.add(new TextPropertyDescriptor(new DynamicID("PROPERTIES",
+ key), key));
+ }
+ return (IPropertyDescriptor[]) result
+ .toArray(new IPropertyDescriptor[result.size()]);
+ }
+
+ @Override
+ public java.lang.Object getPropertyValue(java.lang.Object id) {
+ String result = UNKNOWN;
+ if (ID.equals(id)) {
+ result = observer.getServiceProfile().id;
+ } else if (INTERFACE_TYPE.equals(id)) {
+ result = observer.getServiceProfile().interface_type;
+ } else if (SERVICE.equals(id)) {
+ result = observer.getServiceProfile().service.toString();
+ } else if (id instanceof DynamicID) {
+ DynamicID dynamicId = (DynamicID) id;
+ if ("PROPERTIES".equals(dynamicId.categoryId)) {
+ return observer.getProperty(dynamicId.subId);
+ }
+ }
+ return result;
+ }
+
+}
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/workbenchadapter/ComponentWorkbenchAdapter.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/workbenchadapter/ComponentWorkbenchAdapter.java 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/workbenchadapter/ComponentWorkbenchAdapter.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -41,6 +41,9 @@
if (cc.getStatusObserver() != null) {
result.add(cc.getStatusObserver());
}
+ if (cc.getLogObserver() != null) {
+ result.add(cc.getLogObserver());
+ }
}
return result.toArray();
}
Added: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/workbenchadapter/CorbaObserverWorkbenchAdapter.java
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/workbenchadapter/CorbaObserverWorkbenchAdapter.java (rev 0)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/ui/workbenchadapter/CorbaObserverWorkbenchAdapter.java 2011-04-28 03:04:05 UTC (rev 168)
@@ -0,0 +1,29 @@
+package jp.go.aist.rtm.toolscommon.ui.workbenchadapter;
+
+import jp.go.aist.rtm.toolscommon.model.component.CorbaLogObserver;
+import jp.go.aist.rtm.toolscommon.model.component.CorbaStatusObserver;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+
+public class CorbaObserverWorkbenchAdapter extends ModelElementWorkbenchAdapter {
+ @Override
+ public ImageDescriptor getImageDescriptor(Object o) {
+ return null;
+ }
+
+ @Override
+ public String getLabel(Object o) {
+ if (o instanceof CorbaStatusObserver) {
+ return "StatusObserver";
+ } else if (o instanceof CorbaLogObserver) {
+ return "LogObserver";
+ }
+ return "Observer";
+ }
+
+ @Override
+ public Object[] getChildren(Object o) {
+ return null;
+ }
+
+}
Property changes on: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/validation/AbstractValidator.java
___________________________________________________________________
Deleted: svn:executable
- *
Property changes on: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/validation/ValidateException.java
___________________________________________________________________
Deleted: svn:executable
- *
Property changes on: trunk/rtmtools/jp.go.aist.rtm.toolscommon/src/jp/go/aist/rtm/toolscommon/validation/Validator.java
___________________________________________________________________
Deleted: svn:executable
- *
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon/text/description.txt
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon/text/description.txt 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon/text/description.txt 2011-04-28 03:04:05 UTC (rev 168)
@@ -244,6 +244,7 @@
Attribute rTCRTObjects : RTCRTObject<<0..*>>
Attribute ior : EString
Reference statusObserver : CorbaStatusObserver
+ Reference logObserver : CorbaLogObserver
Operation startR() : EInt
Operation stopR() : EInt
Operation activateR() : EInt
@@ -252,6 +253,7 @@
Operation finalizeR() : EInt
Operation exitR() : EInt
Operation getCorbaObjectInterface() : RTCRTObject
+ Operation supportedCorbaObserver() : EBoolean
Class CorbaPortSynchronizer -> CorbaWrapperObject, PortSynchronizer
Attribute rTCPortProfile : RTCPortProfile
@@ -282,11 +284,14 @@
Operation activate() : void
Operation deactivate() : void
Operation attachComponent(CorbaComponent) : EBoolean
- Operation detachComponent(CorbaComponent) : EBoolean
+ Operation detachComponent() : EBoolean
+ Operation finish() : EBoolean
Class CorbaStatusObserver -> CorbaObserver
Operation isTimeOut() : EBoolean
+ Class CorbaLogObserver -> CorbaObserver
+
Enum SystemDiagramKind
Literal ONLINE = 1
Literal OFFLINE = 2
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon.nl1/META-INF/MANIFEST.MF
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon.nl1/META-INF/MANIFEST.MF 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon.nl1/META-INF/MANIFEST.MF 2011-04-28 03:04:05 UTC (rev 168)
@@ -2,5 +2,5 @@
Bundle-ManifestVersion: 2
Bundle-Name: Nl1 Fragment
Bundle-SymbolicName: jp.go.aist.rtm.toolscommon.nl1
-Bundle-Version: 1.1.0.v20110411
+Bundle-Version: 1.1.0.v20110428
Fragment-Host: jp.go.aist.rtm.toolscommon;bundle-version="0.0.0"
Modified: trunk/rtmtools/jp.go.aist.rtm.toolscommon.nl1/src/jp/go/aist/rtm/toolscommon/nl/messages_ja.properties
===================================================================
--- trunk/rtmtools/jp.go.aist.rtm.toolscommon.nl1/src/jp/go/aist/rtm/toolscommon/nl/messages_ja.properties 2011-04-12 04:08:48 UTC (rev 167)
+++ trunk/rtmtools/jp.go.aist.rtm.toolscommon.nl1/src/jp/go/aist/rtm/toolscommon/nl/messages_ja.properties 2011-04-28 03:04:05 UTC (rev 168)
@@ -44,9 +44,9 @@
PortInterfaceProfilePropertySource.unknown=<UNKNOWN>
PortInterfaceProfilePropertySource.polarity.provided=PROVIDED
PortInterfaceProfilePropertySource.polarity.required=REQUIRED
-CorbaStatusObserverPropertySource.disp.interface_type=Interface Type
-CorbaStatusObserverPropertySource.disp.service=Service
-CorbaStatusObserverPropertySource.unknown=<UNKNOWN>
+CorbaObserverPropertySource.disp.interface_type=Interface Type
+CorbaObserverPropertySource.disp.service=Service
+CorbaObserverPropertySource.unknown=<UNKNOWN>
SystemDiagramPropertySource.disp.system_id=System ID
SystemDiagramPropertySource.disp.kind=Kind
SystemDiagramPropertySource.disp.create_date=Create Date
openrtm-commit メーリングリストの案内