blob: dfc9136a9f8c4bfc68c34ec9b3f43a51ff7b80cd [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_262) on Wed Mar 10 21:50:12 GMT 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>AbstractOutputGenerator (Eclipse MOSAIC Parent 21.0 API)</title>
<meta name="date" content="2021-03-10">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="AbstractOutputGenerator (Eclipse MOSAIC Parent 21.0 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/AbstractOutputGenerator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../org/eclipse/mosaic/fed/output/ambassador/ConfigHelper.html" title="class in org.eclipse.mosaic.fed.output.ambassador"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/eclipse/mosaic/fed/output/ambassador/AbstractOutputGenerator.html" target="_top">Frames</a></li>
<li><a href="AbstractOutputGenerator.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.eclipse.mosaic.fed.output.ambassador</div>
<h2 title="Class AbstractOutputGenerator" class="title">Class AbstractOutputGenerator</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.eclipse.mosaic.fed.output.ambassador.AbstractOutputGenerator</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../../../org/eclipse/mosaic/fed/output/generator/file/FileOutput.html" title="class in org.eclipse.mosaic.fed.output.generator.file">FileOutput</a>, <a href="../../../../../../org/eclipse/mosaic/fed/output/generator/websocket/WebsocketVisualizer.html" title="class in org.eclipse.mosaic.fed.output.generator.websocket">WebsocketVisualizer</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">AbstractOutputGenerator</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">This class needs to be implemented to add a output generator or visualizer to the<a href="../../../../../../org/eclipse/mosaic/fed/output/ambassador/OutputAmbassador.html" title="class in org.eclipse.mosaic.fed.output.ambassador"><code>OutputAmbassador</code></a>.
The <a href="../../../../../../org/eclipse/mosaic/fed/output/ambassador/AbstractOutputGenerator.html" title="class in org.eclipse.mosaic.fed.output.ambassador"><code>AbstractOutputGenerator</code></a> holds a registry which redirects subclasses of <a href="../../../../../../org/eclipse/mosaic/rti/api/Interaction.html" title="class in org.eclipse.mosaic.rti.api"><code>Interaction</code></a>
to a registered consumer method by its type id (i.e. <a href="../../../../../../org/eclipse/mosaic/rti/api/Interaction.html#getTypeId--"><code>Interaction.getTypeId()</code></a>. All
interactions which can not be redirected to such method, due to missing registration, is passed
to <a href="../../../../../../org/eclipse/mosaic/fed/output/ambassador/AbstractOutputGenerator.html#handleUnregisteredInteraction-org.eclipse.mosaic.rti.api.Interaction-"><code>handleUnregisteredInteraction(Interaction)</code></a>.
<br/><br/>
Each output generator can register specific methods, which are called whenever an interaction with a suitable
type id is passed to this output generator. This can be achieved, by adding new methods with exactly one
parameter to the sub class implementation, and annotate this method with @<a href="../../../../../../org/eclipse/mosaic/fed/output/ambassador/Handle.html" title="annotation in org.eclipse.mosaic.fed.output.ambassador"><code>Handle</code></a>:
<pre>
&#64;Handle
public void handleVehicleUpdates(VehicleUpdates interaction) {
...
}
</pre>
This works for all subclasses of message, which have a public static member TYPE_ID. If this
member is not present (e.g. for custom messages), the annotation can be extended accordingly:
<pre>
&#64;Handle("MyInteraction")
public void handleMyInteraction(MyInteraction interaction) {
...
}
</pre>
As a third method, the <a href="../../../../../../org/eclipse/mosaic/fed/output/ambassador/AbstractOutputGenerator.html#registerInteractionForOutputGeneration-java.lang.String-java.util.function.Consumer-"><code>registerInteractionForOutputGeneration(String, java.util.function.Consumer)</code></a> method can be used in the constructor.
<pre>
MyOutputGenerator() {
super();
registerInteractionForOutputGeneration("MyInteraction", this::handleMyInteraction);
}
public void handleMyInteraction(MyInteraction interaction) {
...
}
</pre></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static org.slf4j.Logger</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/mosaic/fed/output/ambassador/AbstractOutputGenerator.html#log">log</a></span></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/mosaic/fed/output/ambassador/AbstractOutputGenerator.html#AbstractOutputGenerator--">AbstractOutputGenerator</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/mosaic/fed/output/ambassador/AbstractOutputGenerator.html#finish--">finish</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/mosaic/fed/output/ambassador/AbstractOutputGenerator.html#handleInteraction-org.eclipse.mosaic.rti.api.Interaction-">handleInteraction</a></span>(<a href="../../../../../../org/eclipse/mosaic/rti/api/Interaction.html" title="class in org.eclipse.mosaic.rti.api">Interaction</a>&nbsp;interaction)</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/mosaic/fed/output/ambassador/AbstractOutputGenerator.html#handleUnregisteredInteraction-org.eclipse.mosaic.rti.api.Interaction-">handleUnregisteredInteraction</a></span>(<a href="../../../../../../org/eclipse/mosaic/rti/api/Interaction.html" title="class in org.eclipse.mosaic.rti.api">Interaction</a>&nbsp;interaction)</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected &lt;M extends <a href="../../../../../../org/eclipse/mosaic/rti/api/Interaction.html" title="class in org.eclipse.mosaic.rti.api">Interaction</a>&gt;<br>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/mosaic/fed/output/ambassador/AbstractOutputGenerator.html#registerInteractionForOutputGeneration-java.lang.String-java.util.function.Consumer-">registerInteractionForOutputGeneration</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;type,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Consumer.html?is-external=true" title="class or interface in java.util.function">Consumer</a>&lt;M&gt;&nbsp;handleMethod)</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="log">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>log</h4>
<pre>protected static final&nbsp;org.slf4j.Logger log</pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="AbstractOutputGenerator--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AbstractOutputGenerator</h4>
<pre>protected&nbsp;AbstractOutputGenerator()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="registerInteractionForOutputGeneration-java.lang.String-java.util.function.Consumer-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerInteractionForOutputGeneration</h4>
<pre>protected&nbsp;&lt;M extends <a href="../../../../../../org/eclipse/mosaic/rti/api/Interaction.html" title="class in org.eclipse.mosaic.rti.api">Interaction</a>&gt;&nbsp;void&nbsp;registerInteractionForOutputGeneration(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;type,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Consumer.html?is-external=true" title="class or interface in java.util.function">Consumer</a>&lt;M&gt;&nbsp;handleMethod)</pre>
</li>
</ul>
<a name="handleInteraction-org.eclipse.mosaic.rti.api.Interaction-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handleInteraction</h4>
<pre>public final&nbsp;void&nbsp;handleInteraction(<a href="../../../../../../org/eclipse/mosaic/rti/api/Interaction.html" title="class in org.eclipse.mosaic.rti.api">Interaction</a>&nbsp;interaction)</pre>
</li>
</ul>
<a name="handleUnregisteredInteraction-org.eclipse.mosaic.rti.api.Interaction-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handleUnregisteredInteraction</h4>
<pre>public&nbsp;void&nbsp;handleUnregisteredInteraction(<a href="../../../../../../org/eclipse/mosaic/rti/api/Interaction.html" title="class in org.eclipse.mosaic.rti.api">Interaction</a>&nbsp;interaction)</pre>
</li>
</ul>
<a name="finish--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>finish</h4>
<pre>public&nbsp;void&nbsp;finish()</pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/AbstractOutputGenerator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../org/eclipse/mosaic/fed/output/ambassador/ConfigHelper.html" title="class in org.eclipse.mosaic.fed.output.ambassador"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/eclipse/mosaic/fed/output/ambassador/AbstractOutputGenerator.html" target="_top">Frames</a></li>
<li><a href="AbstractOutputGenerator.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2020&#x2013;2021 <a href="https://www.fokus.fraunhofer.de/">Fraunhofer FOKUS</a>. All rights reserved.</small></p>
</body>
</html>