Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorepaen2014-08-01 12:52:52 +0000
committerepaen2014-08-13 14:06:25 +0000
commit094e6bda125ce1382af71008cd62f21aecdb85e4 (patch)
tree490fdddb409773da1d34a8121b7d1443e79dbe26
parentbeb389b4d41051b623bf7d0d554bce2b21dd102d (diff)
downloadorg.eclipse.etrice-094e6bda125ce1382af71008cd62f21aecdb85e4.tar.gz
org.eclipse.etrice-094e6bda125ce1382af71008cd62f21aecdb85e4.tar.xz
org.eclipse.etrice-094e6bda125ce1382af71008cd62f21aecdb85e4.zip
[gen.doc] refactored documentation generator to produce tex fragments,
modified usage/output of includeGraphics, fixed content and layout of ProtocolClass/Port message tables, other content tweaks Change-Id: I9a7e7d00c63ae03771861a6875416487ffae8e15
-rw-r--r--plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/gen/DocGen.xtend294
-rw-r--r--plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/DocGen.java1154
2 files changed, 851 insertions, 597 deletions
diff --git a/plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/gen/DocGen.xtend b/plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/gen/DocGen.xtend
index 5ea017f89..0751d87e9 100644
--- a/plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/gen/DocGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.doc/src/org/eclipse/etrice/generator/doc/gen/DocGen.xtend
@@ -36,6 +36,7 @@ import static extension org.eclipse.etrice.core.room.util.RoomHelpers.*
import static extension org.eclipse.etrice.generator.base.CodegenHelpers.*
import org.eclipse.etrice.core.room.EnumerationType
import org.eclipse.etrice.core.room.Port
+import org.eclipse.etrice.core.room.RoomClass
@Singleton
class DocGen {
@@ -44,20 +45,46 @@ class DocGen {
@Inject extension RoomExtensions roomExt
@Inject ILogger logger
+ final val IMGDIR_DEFAULT = "./images"
+ final val IMGWIDTH_DEFAULT = "1.0\\textwidth"
+
+ static class DocGenContext {
+ val Root root
+ val RoomModel model
+
+ new(Root r, RoomModel m) {
+ root = r
+ model = m
+ }
+
+ }
+
def doGenerate(Root root) {
for (model: root.models) {
+ val ctx = new DocGenContext(root,model)
var path = model.docGenerationTargetPath
var file = model.name+".tex"
logger.logInfo("generating LaTeX documentation: '"+file+"' in '"+path+"'")
fileAccess.setOutputPath(path)
- fileAccess.generateFile(file, root.generateModelDoc(model))
+ // Save documentation fragments for RoomModel children
+ model.systems.forEach[generateDoc(ctx).saveAs(docFragmentName)]
+ model.subSystemClasses.forEach[generateDoc(ctx).saveAs(docFragmentName)]
+ model.protocolClasses.forEach[generateDoc(ctx).saveAs(docFragmentName)]
+ model.enumerationTypes.forEach[generateDoc(ctx).saveAs(docFragmentName)]
+ model.dataClasses.forEach[generateDoc(ctx).saveAs(docFragmentName)]
+ model.actorClasses.forEach[generateDoc(ctx).saveAs(docFragmentName)]
+ // Save top-level documentation for RoomModel
+ generateModelDoc(ctx).saveAs(file)
}
}
- def private generateModelDoc(Root root, RoomModel model) {'''
+ def private generateModelDoc(DocGenContext ctx) {
+ var model = ctx.model
+ '''
\documentclass[titlepage]{article}
+ \usepackage{import}
\usepackage{graphicx}
- \IfFileExists{../doc/userinputs.tex}{\input{../doc/userinputs.tex}}{} %hook for conditional user-specific inputs, includes, macros, ...
+ \IfFileExists{../doc/userinputs.tex}{\subimport{../doc/}{userinputs.tex}}{} %hook for conditional user-specific inputs, includes, macros, ...
\usepackage[a4paper,text={160mm,255mm},centering,headsep=5mm,footskip=10mm]{geometry}
\usepackage{nonfloat}
\parindent 0pt
@@ -124,72 +151,83 @@ class DocGen {
\newpage
\section{Model Description}
«model.docu.generateDocText»
- \section{Logical System Description}
- «root.generateAllLogicalSystemDocs(model)»
- \section{Subsystem Description}
- «root.generateAllSubSysClassDocs(model)»
- \section{Protocol Class Description}
- «root.generateAllProtocolClassDocs(model)»
- \section{Enumeration Description}
- «root.generateAllEnumerationDocs(model)»
- \section{Data Class Description}
- «root.generateAllDataClassDocs(model)»
- \section{Actor Class Description}
- «root.generateAllActorClassDocs(model)»
+
+ «IF !model.systems.empty»
+ \section{Logical System Classes}
+ «FOR s : model.systems»
+ «s.generateImport»
+ «ENDFOR»
+ \newpage
+ «ENDIF»
+
+ «IF !model.subSystemClasses.empty»
+ \section{Subsystem Classes}
+ «FOR s : model.subSystemClasses»
+ «s.generateImport»
+ «ENDFOR»
+ \newpage
+ «ENDIF»
+
+ «IF !model.protocolClasses.empty»
+ \section{Protocol Classes}
+ «FOR c : model.protocolClasses»
+ «c.generateImport»
+ «ENDFOR»
+ \newpage
+ «ENDIF»
+
+ «IF !model.enumerationTypes.empty»
+ \section{Enumeration Types}
+ «FOR e : model.enumerationTypes»
+ «e.generateImport»
+ «ENDFOR»
+ \newpage
+ «ENDIF»
+
+ «IF !model.dataClasses.empty»
+ \section{Data Classes}
+ «FOR c : model.dataClasses»
+ «c.generateImport»
+ «ENDFOR»
+ \newpage
+ «ENDIF»
+
+ «IF !model.actorClasses.empty»
+ \section{Actor Classes}
+ «FOR c : model.actorClasses»
+ «c.generateImport»
+ «ENDFOR»
+ «ENDIF»
\end{document}
'''
}
- def private generateAllLogicalSystemDocs(Root root, RoomModel model){'''
- «FOR sys : model.systems»
- «root.generateLogicalSystemDoc(model, sys)»
- «ENDFOR»
- '''
- }
-
- def private generateLogicalSystemDoc(Root root, RoomModel model, LogicalSystem system) {
- var filenamei = model.docGenerationTargetPath + "images\\" + system.name.escapedString + "_instanceTree.jpg"
- filenamei = filenamei.replaceAll("\\\\","/");
- var latexFilenamei = filenamei.replaceAll("/","//")
+ def private dispatch generateDoc(LogicalSystem system, DocGenContext ctx) {
+ val filename = system.name + "_instanceTree.jpg"
'''
\level{2}{«system.name.escapedString»}
«system.docu.generateDocText»
\level{3}{Instance Tree}
- «IF fileExists(filenamei).equals("true")»
- «includeGraphics(latexFilenamei,"0.5",system.name + " Instance Tree")»
+ «IF ctx.model.fileExists(filename.imagePath).equals("true")»
+ «includeGraphics(filename.imagePath,IMGWIDTH_DEFAULT,system.name + " Instance Tree")»
«ENDIF»
'''
}
- def private generateAllSubSysClassDocs(Root root, RoomModel model){'''
- «FOR ssc : model.subSystemClasses»
- «root.generateSubSysClassDoc(model, ssc)»
- «ENDFOR»
- '''
- }
-
- def private generateSubSysClassDoc(Root root, RoomModel model, SubSystemClass ssc) {
- var filename = model.docGenerationTargetPath + "images\\" + ssc.name.escapedString + "_structure.jpg"
- filename = filename.replaceAll("\\\\","/");
- var latexFilename = filename.replaceAll("/","//")
+ def private dispatch generateDoc(SubSystemClass ssc, DocGenContext ctx) {
+ val filename = ssc.name.escapedString + "_structure.jpg"
'''
\level{2}{«ssc.name.escapedString»}
«ssc.docu.generateDocText»
\level{3}{Structure}
- «IF fileExists(filename).equals("true")»
- «includeGraphics(latexFilename,"0.4",ssc.name + " Structure")»
+ «IF ctx.model.fileExists(filename.imagePath).equals("true")»
+ «includeGraphics(filename.imagePath,IMGWIDTH_DEFAULT,ssc.name + " Structure")»
«ENDIF»
'''
}
- def private generateAllEnumerationDocs(Root root, RoomModel model){'''
- «FOR et : model.enumerationTypes»
- «root.generateEnumerationDoc(et)»
- «ENDFOR»
- '''}
-
- def private generateEnumerationDoc(Root root, EnumerationType dc) {
+ def private dispatch generateDoc(EnumerationType dc, DocGenContext ctx) {
'''
\level{2} {«dc.name.escapedString»}
«dc.docu.generateDocText»
@@ -211,13 +249,7 @@ class DocGen {
'''
}
- def private generateAllDataClassDocs(Root root, RoomModel model){'''
- «FOR dc : model.dataClasses»
- «root.generateDataClassDoc(dc)»
- «ENDFOR»
- '''}
-
- def private generateDataClassDoc(Root root, DataClass dc) {'''
+ def private dispatch generateDoc(DataClass dc, DocGenContext ctx) {'''
\level{2} {«dc.name.escapedString»}
«dc.docu.generateDocText»
\level{3}{Attributes}
@@ -227,43 +259,39 @@ class DocGen {
«dc.operations.generateOperationsDoc»
'''
}
-
- def private generateAllProtocolClassDocs(Root root, RoomModel model) {'''
- «FOR pc : model.protocolClasses»
- «root.generateProtocolClassDoc(pc)»
- «ENDFOR»
- '''
- }
- def private dispatch generateProtocolClassDoc(Root root, ProtocolClass pc) {'''
+ def private dispatch generateDoc(ProtocolClass pc, DocGenContext ctx) {'''
\level{2} {«pc.name.escapedString»}
«pc.docu.generateDocText»
- \level{3}{Incoming Messages}
-
- \begin{tabular}[ht]{|l|l|l|}
- \hline
- Message & Data & Description\\
- «FOR ims : pc.allIncomingMessages»
+ «IF !pc.allIncomingMessages.empty»
+ \level{3}{Incoming Messages}
+
+ \begin{tabular}[ht]{|l|l|l|p{8cm}|}
\hline
- «ims.name.escapedString» & «IF ims.data != null» «ims.data.name.escapedString» «ENDIF» & «ims.docu.generateDocText»\\
- «ENDFOR»
- \hline
- \end{tabular}
-
- \level{3}{Outgoing Messages}
- \begin{tabular}[ht]{|l|l|l|}
- \hline
- Message & Data & Description\\
- «FOR oms : pc.allOutgoingMessages»
+ Message & Data & Type & Description\\
+ «FOR ims : pc.allIncomingMessages»
+ \hline
+ «ims.name.escapedString» & «IF ims.data != null» «ims.data.name.escapedString» «ENDIF» & «IF ims.data != null» «ims.data.refType.type.name.escapedString» «ENDIF» & «ims.docu.generateDocText»\\
+ «ENDFOR»
\hline
- «oms.name.escapedString» & «IF oms.data != null» «oms.data.name.escapedString» «ENDIF» & «oms.docu.generateDocText»\\
- «ENDFOR»
- \hline
- \end{tabular}
+ \end{tabular}
+ «ENDIF»
+ «IF !pc.allOutgoingMessages.empty»
+ \level{3}{Outgoing Messages}
+ \begin{tabular}[ht]{|l|l|l|p{8cm}|}
+ \hline
+ Message & Data & Type & Description\\
+ «FOR oms : pc.allOutgoingMessages»
+ \hline
+ «oms.name.escapedString» & «IF oms.data != null» «oms.data.name.escapedString» «ENDIF» & «IF oms.data != null» «oms.data.refType.type.name.escapedString» «ENDIF» & «oms.docu.generateDocText»\\
+ «ENDFOR»
+ \hline
+ \end{tabular}
+ «ENDIF»
'''
}
- def private dispatch generateProtocolClassDoc(Root root, CompoundProtocolClass pc) {'''
+ def private dispatch generateDoc(CompoundProtocolClass pc, DocGenContext ctx) {'''
\level{2} {«pc.name.escapedString»}
«pc.docu.generateDocText»
\level{3}{Sub Protocols}
@@ -280,24 +308,19 @@ class DocGen {
'''
}
- def private generateAllActorClassDocs(Root root, RoomModel model) {'''
- «FOR ac : model.actorClasses»
- «root.generateActorClassDoc(model,ac)»
- «ENDFOR»
- '''
- }
-
- def private generateActorClassDoc(Root root, RoomModel model, ActorClass ac) {
- var filename = model.docGenerationTargetPath + "images\\" + ac.name + "_structure.jpg"
- filename = filename.replaceAll("\\\\","/");
- var latexFilename = filename.replaceAll("/","//")
+ def dispatch private generateDoc(ActorClass ac, DocGenContext ctx) {
+ val filename = ac.name + "_structure.jpg"
'''
\level{2}{«ac.name.escapedString»}
«ac.docu.generateDocText»
- \level{3}{Structure}
- «IF fileExists(filename).equals("true")»
- «includeGraphics(latexFilename,"0.4",ac.name + " Structure")»
+ «IF ctx.model.fileExists(filename.imagePath).equals("true") && (!ac.allInterfaceItems.empty || !ac.actorRefs.empty)»
+ \level{3}{Structure}
+ «ac.structureDocu.generateDocText»
+ «includeGraphics(filename.imagePath,IMGWIDTH_DEFAULT,ac.name + " Structure")»
+ «ELSEIF ac.structureDocu != null»
+ \level{3}{Structure}
+ «ac.structureDocu.generateDocText»
«ENDIF»
«IF !ac.allPorts.empty»
@@ -305,9 +328,17 @@ class DocGen {
«generatePortDoc(ac)»
«ENDIF»
- «IF ac.hasNonEmptyStateMachine»
- \level{3}{Statemachine}
- «generateFsmDoc(model, ac)»
+ «IF ac.isBehaviorAnnotationPresent("BehaviorManual")»
+ \level{3}{Behavior}
+ «ac.behaviorDocu.generateDocText»
+ The behavior for ActorClass «ac.name» is implemented manually.
+ «ELSEIF ac.hasNonEmptyStateMachine»
+ \level{3}{Behavior}
+ «ac.behaviorDocu.generateDocText»
+ «generateFsmDoc(ctx.model, ac)»
+ «ELSEIF ac.behaviorDocu != null»
+ \level{3}{Behavior}
+ «ac.behaviorDocu.generateDocText»
«ENDIF»
«IF !ac.attributes.empty»
@@ -323,14 +354,11 @@ class DocGen {
}
def private generateFsmDoc(RoomModel model, ActorClass ac){
- var filename = model.docGenerationTargetPath + "images\\" + ac.name + "_behavior.jpg"
- filename = filename.replaceAll("\\\\","/");
- var latexFilename = filename.replaceAll("/","//")
-
+ val filename = ac.name + "_behavior.jpg"
'''
\level{4}{Top Level}
- «IF fileExists(filename).equals("true")»
- «includeGraphics(latexFilename,"0.4",ac.name + " Top State")»
+ «IF model.fileExists(filename.imagePath).equals("true")»
+ «includeGraphics(filename.imagePath,IMGWIDTH_DEFAULT,ac.name + " Top State")»
«ENDIF»
\begin{par}
@@ -385,7 +413,7 @@ class DocGen {
def private String generatePortDoc(ActorClass ac) {
'''
- \begin{tabular}[ht]{|l|l|l|l|l|l|}
+ \begin{tabular}[ht]{|l|l|l|l|l|p{5cm}|}
\hline
\textbf{Name} & \textbf{Protocol} & \textbf{Type} & \textbf{Kind} & \textbf{Multiplicity} & \textbf{Description}\\
«FOR at : ac.allPorts»
@@ -398,15 +426,13 @@ class DocGen {
}
def private String generateStateDoc(RoomModel model, ActorClass ac, State state){
- var filename = model.docGenerationTargetPath + "images\\" + ac.name + "_" + state.genStatePathName + "_behavior.jpg"
- filename = filename.replaceAll("\\\\","/");
- var latexFilename = filename.replaceAll("/","//");
+ val filename = ac.name + "_" + state.genStatePathName + "_behavior.jpg"
logger.logInfo("Gen Filename: " + filename);
'''
\level{4}{Subgraph «state.genStatePathName.replaceAll("_","\\\\_")»}
- «IF fileExists(filename).equals("true")»
- «includeGraphics(latexFilename,"0.4",ac.name + "_" + state.genStatePathName)»
+ «IF model.fileExists(filename.imagePath).equals("true")»
+ «includeGraphics(filename.imagePath,IMGWIDTH_DEFAULT,ac.name + "_" + state.genStatePathName)»
«ENDIF»
\begin{par}
@@ -440,7 +466,7 @@ class DocGen {
def private generateAttributesDoc(List<Attribute> attributes) {
'''
«IF !attributes.empty»
- \begin{tabular}[ht]{|l|l|l|}
+ \begin{tabular}[ht]{|l|l|p{8cm}|}
\hline
\textbf{Name} & \textbf{Type} & \textbf{Description}\\
«FOR at : attributes»
@@ -483,17 +509,17 @@ class DocGen {
«IF doc!=null»
% begin text from user Documentation
«FOR line: doc.lines»
- «line»
+ «line.escapedString»
«ENDFOR»
% end text from user Documentation
«ENDIF»
'''
}
- def private fileExists(String f){
- val file = new File(f);
+ def private fileExists(RoomModel model, String f){
+ val absPath = model.docGenerationTargetPath + f
+ val file = new File(absPath);
val exist = file.exists();
-
if (exist == true) {
// File or directory exists
logger.logInfo("File found ! " + f);
@@ -504,18 +530,40 @@ class DocGen {
return "false"
}
}
-
- def private includeGraphics(String filename, String scale, String caption){
+
+ def private includeGraphics(String filename, String width, String caption){
var latexCaption = caption.replaceAll("_","\\\\_");
'''
- \begin{center}
- \includegraphics[scale=«scale»]{«filename»}
+ {
+ \centering{}
+ \includegraphics[width=«width»]{«filename»}
\figcaption{«latexCaption»}
- \end{center}
+ }
'''
}
def private escapedString(String text) {
text.replace("_","\\_")
}
+
+ def private getImagePath(String filename) {
+ var filenamei = IMGDIR_DEFAULT + "/" + filename
+ filenamei = filenamei.replaceAll("\\\\","/")
+ return filenamei
+ }
+
+ def private saveAs(CharSequence content, String filename) {
+ fileAccess.generateFile(filename, content)
+ }
+
+ def private docFragmentName(RoomClass rc) {
+ rc.name + ".tex"
+ }
+
+ def private generateImport(RoomClass rc)
+ '''«rc.docFragmentName.generateImport»'''
+
+ def private generateImport(String name)
+ '''\subimport*{./}{«name»}
+ '''
} \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/DocGen.java b/plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/DocGen.java
index 6a2b21fe0..5147f0a83 100644
--- a/plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/DocGen.java
+++ b/plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/DocGen.java
@@ -21,6 +21,7 @@ import org.eclipse.etrice.core.common.base.Documentation;
import org.eclipse.etrice.core.genmodel.base.ILogger;
import org.eclipse.etrice.core.genmodel.etricegen.Root;
import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.ActorRef;
import org.eclipse.etrice.core.room.Attribute;
import org.eclipse.etrice.core.room.ChoicePoint;
import org.eclipse.etrice.core.room.CompoundProtocolClass;
@@ -29,12 +30,14 @@ import org.eclipse.etrice.core.room.DataType;
import org.eclipse.etrice.core.room.EnumLiteral;
import org.eclipse.etrice.core.room.EnumerationType;
import org.eclipse.etrice.core.room.GeneralProtocolClass;
+import org.eclipse.etrice.core.room.InterfaceItem;
import org.eclipse.etrice.core.room.LogicalSystem;
import org.eclipse.etrice.core.room.Message;
import org.eclipse.etrice.core.room.Port;
import org.eclipse.etrice.core.room.PrimitiveType;
import org.eclipse.etrice.core.room.ProtocolClass;
import org.eclipse.etrice.core.room.RefableType;
+import org.eclipse.etrice.core.room.RoomClass;
import org.eclipse.etrice.core.room.RoomModel;
import org.eclipse.etrice.core.room.StandardOperation;
import org.eclipse.etrice.core.room.State;
@@ -48,10 +51,23 @@ import org.eclipse.etrice.generator.generic.RoomExtensions;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
@Singleton
@SuppressWarnings("all")
public class DocGen {
+ public static class DocGenContext {
+ private final Root root;
+
+ private final RoomModel model;
+
+ public DocGenContext(final Root r, final RoomModel m) {
+ this.root = r;
+ this.model = m;
+ }
+ }
+
@Inject
@Extension
private JavaIoFileSystemAccess fileAccess;
@@ -63,262 +79,396 @@ public class DocGen {
@Inject
private ILogger logger;
+ private final String IMGDIR_DEFAULT = "./images";
+
+ private final String IMGWIDTH_DEFAULT = "1.0\\textwidth";
+
public void doGenerate(final Root root) {
EList<RoomModel> _models = root.getModels();
for (final RoomModel model : _models) {
{
+ final DocGen.DocGenContext ctx = new DocGen.DocGenContext(root, model);
String path = this.roomExt.getDocGenerationTargetPath(model);
String _name = model.getName();
String file = (_name + ".tex");
this.logger.logInfo((((("generating LaTeX documentation: \'" + file) + "\' in \'") + path) + "\'"));
this.fileAccess.setOutputPath(path);
- CharSequence _generateModelDoc = this.generateModelDoc(root, model);
- this.fileAccess.generateFile(file, _generateModelDoc);
+ EList<LogicalSystem> _systems = model.getSystems();
+ final Procedure1<LogicalSystem> _function = new Procedure1<LogicalSystem>() {
+ public void apply(final LogicalSystem it) {
+ CharSequence _generateDoc = DocGen.this.generateDoc(it, ctx);
+ String _docFragmentName = DocGen.this.docFragmentName(it);
+ DocGen.this.saveAs(_generateDoc, _docFragmentName);
+ }
+ };
+ IterableExtensions.<LogicalSystem>forEach(_systems, _function);
+ EList<SubSystemClass> _subSystemClasses = model.getSubSystemClasses();
+ final Procedure1<SubSystemClass> _function_1 = new Procedure1<SubSystemClass>() {
+ public void apply(final SubSystemClass it) {
+ CharSequence _generateDoc = DocGen.this.generateDoc(it, ctx);
+ String _docFragmentName = DocGen.this.docFragmentName(it);
+ DocGen.this.saveAs(_generateDoc, _docFragmentName);
+ }
+ };
+ IterableExtensions.<SubSystemClass>forEach(_subSystemClasses, _function_1);
+ EList<GeneralProtocolClass> _protocolClasses = model.getProtocolClasses();
+ final Procedure1<GeneralProtocolClass> _function_2 = new Procedure1<GeneralProtocolClass>() {
+ public void apply(final GeneralProtocolClass it) {
+ CharSequence _generateDoc = DocGen.this.generateDoc(it, ctx);
+ String _docFragmentName = DocGen.this.docFragmentName(it);
+ DocGen.this.saveAs(_generateDoc, _docFragmentName);
+ }
+ };
+ IterableExtensions.<GeneralProtocolClass>forEach(_protocolClasses, _function_2);
+ EList<EnumerationType> _enumerationTypes = model.getEnumerationTypes();
+ final Procedure1<EnumerationType> _function_3 = new Procedure1<EnumerationType>() {
+ public void apply(final EnumerationType it) {
+ CharSequence _generateDoc = DocGen.this.generateDoc(it, ctx);
+ String _docFragmentName = DocGen.this.docFragmentName(it);
+ DocGen.this.saveAs(_generateDoc, _docFragmentName);
+ }
+ };
+ IterableExtensions.<EnumerationType>forEach(_enumerationTypes, _function_3);
+ EList<DataClass> _dataClasses = model.getDataClasses();
+ final Procedure1<DataClass> _function_4 = new Procedure1<DataClass>() {
+ public void apply(final DataClass it) {
+ CharSequence _generateDoc = DocGen.this.generateDoc(it, ctx);
+ String _docFragmentName = DocGen.this.docFragmentName(it);
+ DocGen.this.saveAs(_generateDoc, _docFragmentName);
+ }
+ };
+ IterableExtensions.<DataClass>forEach(_dataClasses, _function_4);
+ EList<ActorClass> _actorClasses = model.getActorClasses();
+ final Procedure1<ActorClass> _function_5 = new Procedure1<ActorClass>() {
+ public void apply(final ActorClass it) {
+ CharSequence _generateDoc = DocGen.this.generateDoc(it, ctx);
+ String _docFragmentName = DocGen.this.docFragmentName(it);
+ DocGen.this.saveAs(_generateDoc, _docFragmentName);
+ }
+ };
+ IterableExtensions.<ActorClass>forEach(_actorClasses, _function_5);
+ CharSequence _generateModelDoc = this.generateModelDoc(ctx);
+ this.saveAs(_generateModelDoc, file);
}
}
}
- private CharSequence generateModelDoc(final Root root, final RoomModel model) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("\\documentclass[titlepage]{article}");
- _builder.newLine();
- _builder.append("\\usepackage{graphicx}");
- _builder.newLine();
- _builder.append("\\IfFileExists{../doc/userinputs.tex}{\\input{../doc/userinputs.tex}}{} %hook for conditional user-specific inputs, includes, macros, ... ");
- _builder.newLine();
- _builder.append("\\usepackage[a4paper,text={160mm,255mm},centering,headsep=5mm,footskip=10mm]{geometry}");
- _builder.newLine();
- _builder.append("\\usepackage{nonfloat}");
- _builder.newLine();
- _builder.append("\\parindent 0pt");
- _builder.newLine();
- _builder.append("\\makeatletter");
- _builder.newLine();
- _builder.append("\\newcommand\\level[1]{%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\ifcase#1\\relax\\expandafter\\chapter\\or");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\expandafter\\section\\or");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\expandafter\\subsection\\or");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\expandafter\\subsubsection\\else");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\def\\next{\\@level{#1}}\\expandafter\\next");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\fi}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\\newcommand{\\@level}[1]{%");
- _builder.newLine();
- _builder.append("\\@startsection{level#1}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{#1}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{\\z@}%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{-3.25ex\\@plus -1ex \\@minus -.2ex}%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{1.5ex \\@plus .2ex}%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{\\normalfont\\normalsize\\bfseries}}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\\newdimen\\@leveldim");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\newdimen\\@dotsdim");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{\\normalfont\\normalsize");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\sbox\\z@{0}\\global\\@leveldim=\\wd\\z@");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\sbox\\z@{.}\\global\\@dotsdim=\\wd\\z@");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("} ");
- _builder.newLine();
- _builder.append("\\newcounter{level4}[subsubsection]");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\@namedef{thelevel4}{\\thesubsubsection.\\arabic{level4}}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\@namedef{level4mark}#1{}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\def\\l@section{\\@dottedtocline{1}{0pt}{\\dimexpr\\@leveldim*4+\\@dotsdim*1+6pt\\relax}}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\def\\l@subsection{\\@dottedtocline{2}{0pt}{\\dimexpr\\@leveldim*5+\\@dotsdim*2+6pt\\relax}}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\def\\l@subsubsection{\\@dottedtocline{3}{0pt}{\\dimexpr\\@leveldim*6+\\@dotsdim*3+6pt\\relax}}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\@namedef{l@level4}{\\@dottedtocline{4}{0pt}{\\dimexpr\\@leveldim*7+\\@dotsdim*4+6pt\\relax}}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\\count@=4");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\def\\@ncp#1{\\number\\numexpr\\count@+#1\\relax}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\loop\\ifnum\\count@<100");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\begingroup\\edef\\x{\\endgroup");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\noexpand\\newcounter{level\\@ncp{1}}[level\\number\\count@]");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\noexpand\\@namedef{thelevel\\@ncp{1}}{%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\noexpand\\@nameuse{thelevel\\@ncp{0}}.\\noexpand\\arabic{level\\@ncp{0}}}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\noexpand\\@namedef{level\\@ncp{1}mark}####1{}%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\noexpand\\@namedef{l@level\\@ncp{1}}%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{\\noexpand\\@dottedtocline{\\@ncp{1}}{0pt}{\\the\\dimexpr\\@leveldim*\\@ncp{5}+\\@dotsdim*\\@ncp{0}\\relax}}}%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\x");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\advance\\count@\\@ne");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\repeat");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\makeatother");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\setcounter{secnumdepth}{100}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\setcounter{tocdepth}{100}");
- _builder.newLine();
- _builder.newLine();
- _builder.newLine();
- _builder.append("\\title{");
- String _name = model.getName();
- String _escapedString = this.escapedString(_name);
- _builder.append(_escapedString, "");
- _builder.append(" Model Documentation}");
- _builder.newLineIfNotEmpty();
- _builder.append("\\date{\\today}");
- _builder.newLine();
- _builder.append("\\author{generated by eTrice}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\\begin{document}");
- _builder.newLine();
- _builder.append("\\pagestyle{plain}");
- _builder.newLine();
- _builder.append("\\maketitle");
- _builder.newLine();
- _builder.append("\\tableofcontents");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\\newpage");
- _builder.newLine();
- _builder.append("\\listoffigures");
- _builder.newLine();
- _builder.append("\\newpage");
- _builder.newLine();
- _builder.append("\\section{Model Description}");
- _builder.newLine();
- Documentation _docu = model.getDocu();
- CharSequence _generateDocText = this.generateDocText(_docu);
- _builder.append(_generateDocText, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\section{Logical System Description}");
- _builder.newLine();
- CharSequence _generateAllLogicalSystemDocs = this.generateAllLogicalSystemDocs(root, model);
- _builder.append(_generateAllLogicalSystemDocs, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\section{Subsystem Description}");
- _builder.newLine();
- CharSequence _generateAllSubSysClassDocs = this.generateAllSubSysClassDocs(root, model);
- _builder.append(_generateAllSubSysClassDocs, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\section{Protocol Class Description}");
- _builder.newLine();
- CharSequence _generateAllProtocolClassDocs = this.generateAllProtocolClassDocs(root, model);
- _builder.append(_generateAllProtocolClassDocs, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\section{Enumeration Description}");
- _builder.newLine();
- CharSequence _generateAllEnumerationDocs = this.generateAllEnumerationDocs(root, model);
- _builder.append(_generateAllEnumerationDocs, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\section{Data Class Description}");
- _builder.newLine();
- CharSequence _generateAllDataClassDocs = this.generateAllDataClassDocs(root, model);
- _builder.append(_generateAllDataClassDocs, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\section{Actor Class Description}");
- _builder.newLine();
- CharSequence _generateAllActorClassDocs = this.generateAllActorClassDocs(root, model);
- _builder.append(_generateAllActorClassDocs, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\end{document}");
- _builder.newLine();
- return _builder;
- }
-
- private CharSequence generateAllLogicalSystemDocs(final Root root, final RoomModel model) {
- StringConcatenation _builder = new StringConcatenation();
+ private CharSequence generateModelDoc(final DocGen.DocGenContext ctx) {
+ CharSequence _xblockexpression = null;
{
- EList<LogicalSystem> _systems = model.getSystems();
- for(final LogicalSystem sys : _systems) {
- CharSequence _generateLogicalSystemDoc = this.generateLogicalSystemDoc(root, model, sys);
- _builder.append(_generateLogicalSystemDoc, "");
- _builder.newLineIfNotEmpty();
+ RoomModel model = ctx.model;
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("\\documentclass[titlepage]{article}");
+ _builder.newLine();
+ _builder.append("\\usepackage{import}");
+ _builder.newLine();
+ _builder.append("\\usepackage{graphicx}");
+ _builder.newLine();
+ _builder.append("\\IfFileExists{../doc/userinputs.tex}{\\subimport{../doc/}{userinputs.tex}}{} %hook for conditional user-specific inputs, includes, macros, ... ");
+ _builder.newLine();
+ _builder.append("\\usepackage[a4paper,text={160mm,255mm},centering,headsep=5mm,footskip=10mm]{geometry}");
+ _builder.newLine();
+ _builder.append("\\usepackage{nonfloat}");
+ _builder.newLine();
+ _builder.append("\\parindent 0pt");
+ _builder.newLine();
+ _builder.append("\\makeatletter");
+ _builder.newLine();
+ _builder.append("\\newcommand\\level[1]{%");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\ifcase#1\\relax\\expandafter\\chapter\\or");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\expandafter\\section\\or");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\expandafter\\subsection\\or");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\expandafter\\subsubsection\\else");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\def\\next{\\@level{#1}}\\expandafter\\next");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\fi}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\\newcommand{\\@level}[1]{%");
+ _builder.newLine();
+ _builder.append("\\@startsection{level#1}");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("{#1}");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("{\\z@}%");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("{-3.25ex\\@plus -1ex \\@minus -.2ex}%");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("{1.5ex \\@plus .2ex}%");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("{\\normalfont\\normalsize\\bfseries}}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\\newdimen\\@leveldim");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\newdimen\\@dotsdim");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("{\\normalfont\\normalsize");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\sbox\\z@{0}\\global\\@leveldim=\\wd\\z@");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\sbox\\z@{.}\\global\\@dotsdim=\\wd\\z@");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("} ");
+ _builder.newLine();
+ _builder.append("\\newcounter{level4}[subsubsection]");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\@namedef{thelevel4}{\\thesubsubsection.\\arabic{level4}}");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\@namedef{level4mark}#1{}");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\def\\l@section{\\@dottedtocline{1}{0pt}{\\dimexpr\\@leveldim*4+\\@dotsdim*1+6pt\\relax}}");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\def\\l@subsection{\\@dottedtocline{2}{0pt}{\\dimexpr\\@leveldim*5+\\@dotsdim*2+6pt\\relax}}");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\def\\l@subsubsection{\\@dottedtocline{3}{0pt}{\\dimexpr\\@leveldim*6+\\@dotsdim*3+6pt\\relax}}");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\@namedef{l@level4}{\\@dottedtocline{4}{0pt}{\\dimexpr\\@leveldim*7+\\@dotsdim*4+6pt\\relax}}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\\count@=4");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\def\\@ncp#1{\\number\\numexpr\\count@+#1\\relax}");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\loop\\ifnum\\count@<100");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\begingroup\\edef\\x{\\endgroup");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\noexpand\\newcounter{level\\@ncp{1}}[level\\number\\count@]");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\noexpand\\@namedef{thelevel\\@ncp{1}}{%");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\noexpand\\@nameuse{thelevel\\@ncp{0}}.\\noexpand\\arabic{level\\@ncp{0}}}");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\noexpand\\@namedef{level\\@ncp{1}mark}####1{}%");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\noexpand\\@namedef{l@level\\@ncp{1}}%");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("{\\noexpand\\@dottedtocline{\\@ncp{1}}{0pt}{\\the\\dimexpr\\@leveldim*\\@ncp{5}+\\@dotsdim*\\@ncp{0}\\relax}}}%");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\x");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\advance\\count@\\@ne");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\repeat");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\makeatother");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\setcounter{secnumdepth}{100}");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("\\setcounter{tocdepth}{100}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\\title{");
+ String _name = model.getName();
+ String _escapedString = this.escapedString(_name);
+ _builder.append(_escapedString, "");
+ _builder.append(" Model Documentation}");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\\date{\\today}");
+ _builder.newLine();
+ _builder.append("\\author{generated by eTrice}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\\begin{document}");
+ _builder.newLine();
+ _builder.append("\\pagestyle{plain}");
+ _builder.newLine();
+ _builder.append("\\maketitle");
+ _builder.newLine();
+ _builder.append("\\tableofcontents");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\\newpage");
+ _builder.newLine();
+ _builder.append("\\listoffigures");
+ _builder.newLine();
+ _builder.append("\\newpage");
+ _builder.newLine();
+ _builder.append("\\section{Model Description}");
+ _builder.newLine();
+ Documentation _docu = model.getDocu();
+ CharSequence _generateDocText = this.generateDocText(_docu);
+ _builder.append(_generateDocText, "");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ {
+ EList<LogicalSystem> _systems = model.getSystems();
+ boolean _isEmpty = _systems.isEmpty();
+ boolean _not = (!_isEmpty);
+ if (_not) {
+ _builder.append("\\section{Logical System Classes}");
+ _builder.newLine();
+ {
+ EList<LogicalSystem> _systems_1 = model.getSystems();
+ for(final LogicalSystem s : _systems_1) {
+ CharSequence _generateImport = this.generateImport(s);
+ _builder.append(_generateImport, "");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\\newpage");
+ _builder.newLine();
+ }
+ }
+ _builder.newLine();
+ {
+ EList<SubSystemClass> _subSystemClasses = model.getSubSystemClasses();
+ boolean _isEmpty_1 = _subSystemClasses.isEmpty();
+ boolean _not_1 = (!_isEmpty_1);
+ if (_not_1) {
+ _builder.append("\\section{Subsystem Classes}");
+ _builder.newLine();
+ {
+ EList<SubSystemClass> _subSystemClasses_1 = model.getSubSystemClasses();
+ for(final SubSystemClass s_1 : _subSystemClasses_1) {
+ CharSequence _generateImport_1 = this.generateImport(s_1);
+ _builder.append(_generateImport_1, "");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\\newpage");
+ _builder.newLine();
+ }
}
+ _builder.newLine();
+ {
+ EList<GeneralProtocolClass> _protocolClasses = model.getProtocolClasses();
+ boolean _isEmpty_2 = _protocolClasses.isEmpty();
+ boolean _not_2 = (!_isEmpty_2);
+ if (_not_2) {
+ _builder.append("\\section{Protocol Classes}");
+ _builder.newLine();
+ {
+ EList<GeneralProtocolClass> _protocolClasses_1 = model.getProtocolClasses();
+ for(final GeneralProtocolClass c : _protocolClasses_1) {
+ CharSequence _generateImport_2 = this.generateImport(c);
+ _builder.append(_generateImport_2, "");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\\newpage");
+ _builder.newLine();
+ }
+ }
+ _builder.newLine();
+ {
+ EList<EnumerationType> _enumerationTypes = model.getEnumerationTypes();
+ boolean _isEmpty_3 = _enumerationTypes.isEmpty();
+ boolean _not_3 = (!_isEmpty_3);
+ if (_not_3) {
+ _builder.append("\\section{Enumeration Types}");
+ _builder.newLine();
+ {
+ EList<EnumerationType> _enumerationTypes_1 = model.getEnumerationTypes();
+ for(final EnumerationType e : _enumerationTypes_1) {
+ CharSequence _generateImport_3 = this.generateImport(e);
+ _builder.append(_generateImport_3, "");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\\newpage");
+ _builder.newLine();
+ }
+ }
+ _builder.newLine();
+ {
+ EList<DataClass> _dataClasses = model.getDataClasses();
+ boolean _isEmpty_4 = _dataClasses.isEmpty();
+ boolean _not_4 = (!_isEmpty_4);
+ if (_not_4) {
+ _builder.append("\\section{Data Classes}");
+ _builder.newLine();
+ {
+ EList<DataClass> _dataClasses_1 = model.getDataClasses();
+ for(final DataClass c_1 : _dataClasses_1) {
+ CharSequence _generateImport_4 = this.generateImport(c_1);
+ _builder.append(_generateImport_4, "");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\\newpage");
+ _builder.newLine();
+ }
+ }
+ _builder.newLine();
+ {
+ EList<ActorClass> _actorClasses = model.getActorClasses();
+ boolean _isEmpty_5 = _actorClasses.isEmpty();
+ boolean _not_5 = (!_isEmpty_5);
+ if (_not_5) {
+ _builder.append("\\section{Actor Classes}");
+ _builder.newLine();
+ {
+ EList<ActorClass> _actorClasses_1 = model.getActorClasses();
+ for(final ActorClass c_2 : _actorClasses_1) {
+ CharSequence _generateImport_5 = this.generateImport(c_2);
+ _builder.append(_generateImport_5, "");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ _builder.append("\\end{document}");
+ _builder.newLine();
+ _xblockexpression = _builder;
}
- return _builder;
+ return _xblockexpression;
}
- private CharSequence generateLogicalSystemDoc(final Root root, final RoomModel model, final LogicalSystem system) {
+ private CharSequence _generateDoc(final LogicalSystem system, final DocGen.DocGenContext ctx) {
CharSequence _xblockexpression = null;
{
- String _docGenerationTargetPath = this.roomExt.getDocGenerationTargetPath(model);
- String _plus = (_docGenerationTargetPath + "images\\");
String _name = system.getName();
- String _escapedString = this.escapedString(_name);
- String _plus_1 = (_plus + _escapedString);
- String filenamei = (_plus_1 + "_instanceTree.jpg");
- String _replaceAll = filenamei.replaceAll("\\\\", "/");
- filenamei = _replaceAll;
- String latexFilenamei = filenamei.replaceAll("/", "//");
+ final String filename = (_name + "_instanceTree.jpg");
StringConcatenation _builder = new StringConcatenation();
_builder.append("\\level{2}{");
String _name_1 = system.getName();
- String _escapedString_1 = this.escapedString(_name_1);
- _builder.append(_escapedString_1, "");
+ String _escapedString = this.escapedString(_name_1);
+ _builder.append(_escapedString, "");
_builder.append("}");
_builder.newLineIfNotEmpty();
Documentation _docu = system.getDocu();
@@ -328,12 +478,14 @@ public class DocGen {
_builder.append("\\level{3}{Instance Tree}");
_builder.newLine();
{
- String _fileExists = this.fileExists(filenamei);
+ String _imagePath = this.getImagePath(filename);
+ String _fileExists = this.fileExists(ctx.model, _imagePath);
boolean _equals = _fileExists.equals("true");
if (_equals) {
+ String _imagePath_1 = this.getImagePath(filename);
String _name_2 = system.getName();
- String _plus_2 = (_name_2 + " Instance Tree");
- CharSequence _includeGraphics = this.includeGraphics(latexFilenamei, "0.5", _plus_2);
+ String _plus = (_name_2 + " Instance Tree");
+ CharSequence _includeGraphics = this.includeGraphics(_imagePath_1, this.IMGWIDTH_DEFAULT, _plus);
_builder.append(_includeGraphics, "");
_builder.newLineIfNotEmpty();
}
@@ -343,31 +495,12 @@ public class DocGen {
return _xblockexpression;
}
- private CharSequence generateAllSubSysClassDocs(final Root root, final RoomModel model) {
- StringConcatenation _builder = new StringConcatenation();
- {
- EList<SubSystemClass> _subSystemClasses = model.getSubSystemClasses();
- for(final SubSystemClass ssc : _subSystemClasses) {
- CharSequence _generateSubSysClassDoc = this.generateSubSysClassDoc(root, model, ssc);
- _builder.append(_generateSubSysClassDoc, "");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- private CharSequence generateSubSysClassDoc(final Root root, final RoomModel model, final SubSystemClass ssc) {
+ private CharSequence _generateDoc(final SubSystemClass ssc, final DocGen.DocGenContext ctx) {
CharSequence _xblockexpression = null;
{
- String _docGenerationTargetPath = this.roomExt.getDocGenerationTargetPath(model);
- String _plus = (_docGenerationTargetPath + "images\\");
String _name = ssc.getName();
String _escapedString = this.escapedString(_name);
- String _plus_1 = (_plus + _escapedString);
- String filename = (_plus_1 + "_structure.jpg");
- String _replaceAll = filename.replaceAll("\\\\", "/");
- filename = _replaceAll;
- String latexFilename = filename.replaceAll("/", "//");
+ final String filename = (_escapedString + "_structure.jpg");
StringConcatenation _builder = new StringConcatenation();
_builder.append("\\level{2}{");
String _name_1 = ssc.getName();
@@ -382,12 +515,14 @@ public class DocGen {
_builder.append("\\level{3}{Structure}");
_builder.newLine();
{
- String _fileExists = this.fileExists(filename);
+ String _imagePath = this.getImagePath(filename);
+ String _fileExists = this.fileExists(ctx.model, _imagePath);
boolean _equals = _fileExists.equals("true");
if (_equals) {
+ String _imagePath_1 = this.getImagePath(filename);
String _name_2 = ssc.getName();
- String _plus_2 = (_name_2 + " Structure");
- CharSequence _includeGraphics = this.includeGraphics(latexFilename, "0.4", _plus_2);
+ String _plus = (_name_2 + " Structure");
+ CharSequence _includeGraphics = this.includeGraphics(_imagePath_1, this.IMGWIDTH_DEFAULT, _plus);
_builder.append(_includeGraphics, "");
_builder.newLineIfNotEmpty();
}
@@ -397,20 +532,7 @@ public class DocGen {
return _xblockexpression;
}
- private CharSequence generateAllEnumerationDocs(final Root root, final RoomModel model) {
- StringConcatenation _builder = new StringConcatenation();
- {
- EList<EnumerationType> _enumerationTypes = model.getEnumerationTypes();
- for(final EnumerationType et : _enumerationTypes) {
- CharSequence _generateEnumerationDoc = this.generateEnumerationDoc(root, et);
- _builder.append(_generateEnumerationDoc, "");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- private CharSequence generateEnumerationDoc(final Root root, final EnumerationType dc) {
+ private CharSequence _generateDoc(final EnumerationType dc, final DocGen.DocGenContext ctx) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("\\level{2} {");
String _name = dc.getName();
@@ -476,20 +598,7 @@ public class DocGen {
return _builder;
}
- private CharSequence generateAllDataClassDocs(final Root root, final RoomModel model) {
- StringConcatenation _builder = new StringConcatenation();
- {
- EList<DataClass> _dataClasses = model.getDataClasses();
- for(final DataClass dc : _dataClasses) {
- CharSequence _generateDataClassDoc = this.generateDataClassDoc(root, dc);
- _builder.append(_generateDataClassDoc, "");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- private CharSequence generateDataClassDoc(final Root root, final DataClass dc) {
+ private CharSequence _generateDoc(final DataClass dc, final DocGen.DocGenContext ctx) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("\\level{2} {");
String _name = dc.getName();
@@ -517,138 +626,149 @@ public class DocGen {
return _builder;
}
- private CharSequence generateAllProtocolClassDocs(final Root root, final RoomModel model) {
+ private CharSequence _generateDoc(final ProtocolClass pc, final DocGen.DocGenContext ctx) {
StringConcatenation _builder = new StringConcatenation();
- {
- EList<GeneralProtocolClass> _protocolClasses = model.getProtocolClasses();
- for(final GeneralProtocolClass pc : _protocolClasses) {
- CharSequence _generateProtocolClassDoc = this.generateProtocolClassDoc(root, pc);
- _builder.append(_generateProtocolClassDoc, "");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- private CharSequence _generateProtocolClassDoc(final Root root, final ProtocolClass pc) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("\t");
_builder.append("\\level{2} {");
String _name = pc.getName();
String _escapedString = this.escapedString(_name);
- _builder.append(_escapedString, "\t");
+ _builder.append(_escapedString, "");
_builder.append("}");
_builder.newLineIfNotEmpty();
- _builder.append("\t");
Documentation _docu = pc.getDocu();
CharSequence _generateDocText = this.generateDocText(_docu);
- _builder.append(_generateDocText, "\t");
+ _builder.append(_generateDocText, "");
_builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\\level{3}{Incoming Messages}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\begin{tabular}[ht]{|l|l|l|}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("Message & Data & Description\\\\");
- _builder.newLine();
{
List<Message> _allIncomingMessages = RoomHelpers.getAllIncomingMessages(pc);
- for(final Message ims : _allIncomingMessages) {
- _builder.append("\t");
+ boolean _isEmpty = _allIncomingMessages.isEmpty();
+ boolean _not = (!_isEmpty);
+ if (_not) {
+ _builder.append("\\level{3}{Incoming Messages}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\\begin{tabular}[ht]{|l|l|l|p{8cm}|}");
+ _builder.newLine();
_builder.append("\\hline");
_builder.newLine();
- _builder.append("\t");
- String _name_1 = ims.getName();
- String _escapedString_1 = this.escapedString(_name_1);
- _builder.append(_escapedString_1, "\t");
- _builder.append(" & ");
+ _builder.append("Message & Data & Type & Description\\\\");
+ _builder.newLine();
{
- VarDecl _data = ims.getData();
- boolean _notEquals = (!Objects.equal(_data, null));
- if (_notEquals) {
- _builder.append(" ");
- VarDecl _data_1 = ims.getData();
- String _name_2 = _data_1.getName();
- String _escapedString_2 = this.escapedString(_name_2);
- _builder.append(_escapedString_2, "\t");
- _builder.append(" ");
+ List<Message> _allIncomingMessages_1 = RoomHelpers.getAllIncomingMessages(pc);
+ for(final Message ims : _allIncomingMessages_1) {
+ _builder.append("\\hline");
+ _builder.newLine();
+ String _name_1 = ims.getName();
+ String _escapedString_1 = this.escapedString(_name_1);
+ _builder.append(_escapedString_1, "");
+ _builder.append(" & ");
+ {
+ VarDecl _data = ims.getData();
+ boolean _notEquals = (!Objects.equal(_data, null));
+ if (_notEquals) {
+ _builder.append(" ");
+ VarDecl _data_1 = ims.getData();
+ String _name_2 = _data_1.getName();
+ String _escapedString_2 = this.escapedString(_name_2);
+ _builder.append(_escapedString_2, "");
+ _builder.append(" ");
+ }
+ }
+ _builder.append(" & ");
+ {
+ VarDecl _data_2 = ims.getData();
+ boolean _notEquals_1 = (!Objects.equal(_data_2, null));
+ if (_notEquals_1) {
+ _builder.append(" ");
+ VarDecl _data_3 = ims.getData();
+ RefableType _refType = _data_3.getRefType();
+ DataType _type = _refType.getType();
+ String _name_3 = _type.getName();
+ String _escapedString_3 = this.escapedString(_name_3);
+ _builder.append(_escapedString_3, "");
+ _builder.append(" ");
+ }
+ }
+ _builder.append(" & ");
+ Documentation _docu_1 = ims.getDocu();
+ CharSequence _generateDocText_1 = this.generateDocText(_docu_1);
+ _builder.append(_generateDocText_1, "");
+ _builder.append("\\\\");
+ _builder.newLineIfNotEmpty();
}
}
- _builder.append(" & ");
- Documentation _docu_1 = ims.getDocu();
- CharSequence _generateDocText_1 = this.generateDocText(_docu_1);
- _builder.append(_generateDocText_1, "\t");
- _builder.append("\\\\");
- _builder.newLineIfNotEmpty();
+ _builder.append("\\hline");
+ _builder.newLine();
+ _builder.append("\\end{tabular}");
+ _builder.newLine();
}
}
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\end{tabular}");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\level{3}{Outgoing Messages}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\begin{tabular}[ht]{|l|l|l|}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("Message & Data & Description\\\\");
- _builder.newLine();
{
List<Message> _allOutgoingMessages = RoomHelpers.getAllOutgoingMessages(pc);
- for(final Message oms : _allOutgoingMessages) {
- _builder.append("\t");
+ boolean _isEmpty_1 = _allOutgoingMessages.isEmpty();
+ boolean _not_1 = (!_isEmpty_1);
+ if (_not_1) {
+ _builder.append("\\level{3}{Outgoing Messages}");
+ _builder.newLine();
+ _builder.append("\\begin{tabular}[ht]{|l|l|l|p{8cm}|}");
+ _builder.newLine();
_builder.append("\\hline");
_builder.newLine();
- _builder.append("\t");
- String _name_3 = oms.getName();
- String _escapedString_3 = this.escapedString(_name_3);
- _builder.append(_escapedString_3, "\t");
- _builder.append(" & ");
+ _builder.append("Message & Data & Type & Description\\\\");
+ _builder.newLine();
{
- VarDecl _data_2 = oms.getData();
- boolean _notEquals_1 = (!Objects.equal(_data_2, null));
- if (_notEquals_1) {
- _builder.append(" ");
- VarDecl _data_3 = oms.getData();
- String _name_4 = _data_3.getName();
+ List<Message> _allOutgoingMessages_1 = RoomHelpers.getAllOutgoingMessages(pc);
+ for(final Message oms : _allOutgoingMessages_1) {
+ _builder.append("\\hline");
+ _builder.newLine();
+ String _name_4 = oms.getName();
String _escapedString_4 = this.escapedString(_name_4);
- _builder.append(_escapedString_4, "\t");
- _builder.append(" ");
+ _builder.append(_escapedString_4, "");
+ _builder.append(" & ");
+ {
+ VarDecl _data_4 = oms.getData();
+ boolean _notEquals_2 = (!Objects.equal(_data_4, null));
+ if (_notEquals_2) {
+ _builder.append(" ");
+ VarDecl _data_5 = oms.getData();
+ String _name_5 = _data_5.getName();
+ String _escapedString_5 = this.escapedString(_name_5);
+ _builder.append(_escapedString_5, "");
+ _builder.append(" ");
+ }
+ }
+ _builder.append(" & ");
+ {
+ VarDecl _data_6 = oms.getData();
+ boolean _notEquals_3 = (!Objects.equal(_data_6, null));
+ if (_notEquals_3) {
+ _builder.append(" ");
+ VarDecl _data_7 = oms.getData();
+ RefableType _refType_1 = _data_7.getRefType();
+ DataType _type_1 = _refType_1.getType();
+ String _name_6 = _type_1.getName();
+ String _escapedString_6 = this.escapedString(_name_6);
+ _builder.append(_escapedString_6, "");
+ _builder.append(" ");
+ }
+ }
+ _builder.append(" & ");
+ Documentation _docu_2 = oms.getDocu();
+ CharSequence _generateDocText_2 = this.generateDocText(_docu_2);
+ _builder.append(_generateDocText_2, "");
+ _builder.append("\\\\");
+ _builder.newLineIfNotEmpty();
}
}
- _builder.append(" & ");
- Documentation _docu_2 = oms.getDocu();
- CharSequence _generateDocText_2 = this.generateDocText(_docu_2);
- _builder.append(_generateDocText_2, "\t");
- _builder.append("\\\\");
- _builder.newLineIfNotEmpty();
+ _builder.append("\\hline");
+ _builder.newLine();
+ _builder.append("\\end{tabular}");
+ _builder.newLine();
}
}
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\end{tabular}\t\t\t");
- _builder.newLine();
return _builder;
}
- private CharSequence _generateProtocolClassDoc(final Root root, final CompoundProtocolClass pc) {
+ private CharSequence _generateDoc(final CompoundProtocolClass pc, final DocGen.DocGenContext ctx) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("\\level{2} {");
String _name = pc.getName();
@@ -693,30 +813,11 @@ public class DocGen {
return _builder;
}
- private CharSequence generateAllActorClassDocs(final Root root, final RoomModel model) {
- StringConcatenation _builder = new StringConcatenation();
- {
- EList<ActorClass> _actorClasses = model.getActorClasses();
- for(final ActorClass ac : _actorClasses) {
- CharSequence _generateActorClassDoc = this.generateActorClassDoc(root, model, ac);
- _builder.append(_generateActorClassDoc, "");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- private CharSequence generateActorClassDoc(final Root root, final RoomModel model, final ActorClass ac) {
+ private CharSequence _generateDoc(final ActorClass ac, final DocGen.DocGenContext ctx) {
CharSequence _xblockexpression = null;
{
- String _docGenerationTargetPath = this.roomExt.getDocGenerationTargetPath(model);
- String _plus = (_docGenerationTargetPath + "images\\");
String _name = ac.getName();
- String _plus_1 = (_plus + _name);
- String filename = (_plus_1 + "_structure.jpg");
- String _replaceAll = filename.replaceAll("\\\\", "/");
- filename = _replaceAll;
- String latexFilename = filename.replaceAll("/", "//");
+ final String filename = (_name + "_structure.jpg");
StringConcatenation _builder = new StringConcatenation();
_builder.append("\\level{2}{");
String _name_1 = ac.getName();
@@ -728,26 +829,61 @@ public class DocGen {
CharSequence _generateDocText = this.generateDocText(_docu);
_builder.append(_generateDocText, "");
_builder.newLineIfNotEmpty();
- _builder.append("\\level{3}{Structure}");
- _builder.newLine();
_builder.newLine();
{
- String _fileExists = this.fileExists(filename);
+ boolean _and = false;
+ String _imagePath = this.getImagePath(filename);
+ String _fileExists = this.fileExists(ctx.model, _imagePath);
boolean _equals = _fileExists.equals("true");
- if (_equals) {
+ if (!_equals) {
+ _and = false;
+ } else {
+ boolean _or = false;
+ List<InterfaceItem> _allInterfaceItems = RoomHelpers.getAllInterfaceItems(ac);
+ boolean _isEmpty = _allInterfaceItems.isEmpty();
+ boolean _not = (!_isEmpty);
+ if (_not) {
+ _or = true;
+ } else {
+ EList<ActorRef> _actorRefs = ac.getActorRefs();
+ boolean _isEmpty_1 = _actorRefs.isEmpty();
+ boolean _not_1 = (!_isEmpty_1);
+ _or = _not_1;
+ }
+ _and = _or;
+ }
+ if (_and) {
+ _builder.append("\\level{3}{Structure}");
+ _builder.newLine();
+ Documentation _structureDocu = ac.getStructureDocu();
+ CharSequence _generateDocText_1 = this.generateDocText(_structureDocu);
+ _builder.append(_generateDocText_1, "");
+ _builder.newLineIfNotEmpty();
+ String _imagePath_1 = this.getImagePath(filename);
String _name_2 = ac.getName();
- String _plus_2 = (_name_2 + " Structure");
- CharSequence _includeGraphics = this.includeGraphics(latexFilename, "0.4", _plus_2);
+ String _plus = (_name_2 + " Structure");
+ CharSequence _includeGraphics = this.includeGraphics(_imagePath_1, this.IMGWIDTH_DEFAULT, _plus);
_builder.append(_includeGraphics, "");
_builder.newLineIfNotEmpty();
+ } else {
+ Documentation _structureDocu_1 = ac.getStructureDocu();
+ boolean _notEquals = (!Objects.equal(_structureDocu_1, null));
+ if (_notEquals) {
+ _builder.append("\\level{3}{Structure}");
+ _builder.newLine();
+ Documentation _structureDocu_2 = ac.getStructureDocu();
+ CharSequence _generateDocText_2 = this.generateDocText(_structureDocu_2);
+ _builder.append(_generateDocText_2, "");
+ _builder.newLineIfNotEmpty();
+ }
}
}
_builder.newLine();
{
List<Port> _allPorts = RoomHelpers.getAllPorts(ac);
- boolean _isEmpty = _allPorts.isEmpty();
- boolean _not = (!_isEmpty);
- if (_not) {
+ boolean _isEmpty_2 = _allPorts.isEmpty();
+ boolean _not_2 = (!_isEmpty_2);
+ if (_not_2) {
_builder.append("\\level{3}{Ports}");
_builder.newLine();
String _generatePortDoc = this.generatePortDoc(ac);
@@ -757,21 +893,51 @@ public class DocGen {
}
_builder.newLine();
{
- boolean _hasNonEmptyStateMachine = RoomHelpers.hasNonEmptyStateMachine(ac);
- if (_hasNonEmptyStateMachine) {
- _builder.append("\\level{3}{Statemachine}");
+ boolean _isBehaviorAnnotationPresent = RoomHelpers.isBehaviorAnnotationPresent(ac, "BehaviorManual");
+ if (_isBehaviorAnnotationPresent) {
+ _builder.append("\\level{3}{Behavior}");
_builder.newLine();
- CharSequence _generateFsmDoc = this.generateFsmDoc(model, ac);
- _builder.append(_generateFsmDoc, "");
+ Documentation _behaviorDocu = ac.getBehaviorDocu();
+ CharSequence _generateDocText_3 = this.generateDocText(_behaviorDocu);
+ _builder.append(_generateDocText_3, "");
+ _builder.newLineIfNotEmpty();
+ _builder.append("The behavior for ActorClass ");
+ String _name_3 = ac.getName();
+ _builder.append(_name_3, "");
+ _builder.append(" is implemented manually.");
_builder.newLineIfNotEmpty();
+ } else {
+ boolean _hasNonEmptyStateMachine = RoomHelpers.hasNonEmptyStateMachine(ac);
+ if (_hasNonEmptyStateMachine) {
+ _builder.append("\\level{3}{Behavior}");
+ _builder.newLine();
+ Documentation _behaviorDocu_1 = ac.getBehaviorDocu();
+ CharSequence _generateDocText_4 = this.generateDocText(_behaviorDocu_1);
+ _builder.append(_generateDocText_4, "");
+ _builder.newLineIfNotEmpty();
+ CharSequence _generateFsmDoc = this.generateFsmDoc(ctx.model, ac);
+ _builder.append(_generateFsmDoc, "");
+ _builder.newLineIfNotEmpty();
+ } else {
+ Documentation _behaviorDocu_2 = ac.getBehaviorDocu();
+ boolean _notEquals_1 = (!Objects.equal(_behaviorDocu_2, null));
+ if (_notEquals_1) {
+ _builder.append("\\level{3}{Behavior}");
+ _builder.newLine();
+ Documentation _behaviorDocu_3 = ac.getBehaviorDocu();
+ CharSequence _generateDocText_5 = this.generateDocText(_behaviorDocu_3);
+ _builder.append(_generateDocText_5, "");
+ _builder.newLineIfNotEmpty();
+ }
+ }
}
}
_builder.newLine();
{
EList<Attribute> _attributes = ac.getAttributes();
- boolean _isEmpty_1 = _attributes.isEmpty();
- boolean _not_1 = (!_isEmpty_1);
- if (_not_1) {
+ boolean _isEmpty_3 = _attributes.isEmpty();
+ boolean _not_3 = (!_isEmpty_3);
+ if (_not_3) {
_builder.append("\\level{3}{Attributes}");
_builder.newLine();
EList<Attribute> _attributes_1 = ac.getAttributes();
@@ -783,9 +949,9 @@ public class DocGen {
_builder.newLine();
{
EList<StandardOperation> _operations = ac.getOperations();
- boolean _isEmpty_2 = _operations.isEmpty();
- boolean _not_2 = (!_isEmpty_2);
- if (_not_2) {
+ boolean _isEmpty_4 = _operations.isEmpty();
+ boolean _not_4 = (!_isEmpty_4);
+ if (_not_4) {
_builder.append("\\level{3}{Operations}");
_builder.newLine();
EList<StandardOperation> _operations_1 = ac.getOperations();
@@ -802,24 +968,20 @@ public class DocGen {
private CharSequence generateFsmDoc(final RoomModel model, final ActorClass ac) {
CharSequence _xblockexpression = null;
{
- String _docGenerationTargetPath = this.roomExt.getDocGenerationTargetPath(model);
- String _plus = (_docGenerationTargetPath + "images\\");
String _name = ac.getName();
- String _plus_1 = (_plus + _name);
- String filename = (_plus_1 + "_behavior.jpg");
- String _replaceAll = filename.replaceAll("\\\\", "/");
- filename = _replaceAll;
- String latexFilename = filename.replaceAll("/", "//");
+ final String filename = (_name + "_behavior.jpg");
StringConcatenation _builder = new StringConcatenation();
_builder.append("\\level{4}{Top Level}");
_builder.newLine();
{
- String _fileExists = this.fileExists(filename);
+ String _imagePath = this.getImagePath(filename);
+ String _fileExists = this.fileExists(model, _imagePath);
boolean _equals = _fileExists.equals("true");
if (_equals) {
+ String _imagePath_1 = this.getImagePath(filename);
String _name_1 = ac.getName();
- String _plus_2 = (_name_1 + " Top State");
- CharSequence _includeGraphics = this.includeGraphics(latexFilename, "0.4", _plus_2);
+ String _plus = (_name_1 + " Top State");
+ CharSequence _includeGraphics = this.includeGraphics(_imagePath_1, this.IMGWIDTH_DEFAULT, _plus);
_builder.append(_includeGraphics, "");
_builder.newLineIfNotEmpty();
}
@@ -837,8 +999,8 @@ public class DocGen {
if (_notEquals) {
_builder.append("\\textbf{State description} \\textit{");
String _genStatePathName = CodegenHelpers.getGenStatePathName(s);
- String _replaceAll_1 = _genStatePathName.replaceAll("_", "\\\\_");
- _builder.append(_replaceAll_1, "");
+ String _replaceAll = _genStatePathName.replaceAll("_", "\\\\_");
+ _builder.append(_replaceAll, "");
_builder.append("}:");
_builder.newLineIfNotEmpty();
_builder.append("\\newline");
@@ -954,7 +1116,7 @@ public class DocGen {
private String generatePortDoc(final ActorClass ac) {
StringConcatenation _builder = new StringConcatenation();
- _builder.append("\\begin{tabular}[ht]{|l|l|l|l|l|l|}");
+ _builder.append("\\begin{tabular}[ht]{|l|l|l|l|l|p{5cm}|}");
_builder.newLine();
_builder.append("\\hline");
_builder.newLine();
@@ -1000,34 +1162,30 @@ public class DocGen {
private String generateStateDoc(final RoomModel model, final ActorClass ac, final State state) {
String _xblockexpression = null;
{
- String _docGenerationTargetPath = this.roomExt.getDocGenerationTargetPath(model);
- String _plus = (_docGenerationTargetPath + "images\\");
String _name = ac.getName();
- String _plus_1 = (_plus + _name);
- String _plus_2 = (_plus_1 + "_");
+ String _plus = (_name + "_");
String _genStatePathName = CodegenHelpers.getGenStatePathName(state);
- String _plus_3 = (_plus_2 + _genStatePathName);
- String filename = (_plus_3 + "_behavior.jpg");
- String _replaceAll = filename.replaceAll("\\\\", "/");
- filename = _replaceAll;
- String latexFilename = filename.replaceAll("/", "//");
+ String _plus_1 = (_plus + _genStatePathName);
+ final String filename = (_plus_1 + "_behavior.jpg");
this.logger.logInfo(("Gen Filename: " + filename));
StringConcatenation _builder = new StringConcatenation();
_builder.append("\\level{4}{Subgraph ");
String _genStatePathName_1 = CodegenHelpers.getGenStatePathName(state);
- String _replaceAll_1 = _genStatePathName_1.replaceAll("_", "\\\\_");
- _builder.append(_replaceAll_1, "");
+ String _replaceAll = _genStatePathName_1.replaceAll("_", "\\\\_");
+ _builder.append(_replaceAll, "");
_builder.append("}");
_builder.newLineIfNotEmpty();
{
- String _fileExists = this.fileExists(filename);
+ String _imagePath = this.getImagePath(filename);
+ String _fileExists = this.fileExists(model, _imagePath);
boolean _equals = _fileExists.equals("true");
if (_equals) {
+ String _imagePath_1 = this.getImagePath(filename);
String _name_1 = ac.getName();
- String _plus_4 = (_name_1 + "_");
+ String _plus_2 = (_name_1 + "_");
String _genStatePathName_2 = CodegenHelpers.getGenStatePathName(state);
- String _plus_5 = (_plus_4 + _genStatePathName_2);
- CharSequence _includeGraphics = this.includeGraphics(latexFilename, "0.4", _plus_5);
+ String _plus_3 = (_plus_2 + _genStatePathName_2);
+ CharSequence _includeGraphics = this.includeGraphics(_imagePath_1, this.IMGWIDTH_DEFAULT, _plus_3);
_builder.append(_includeGraphics, "");
_builder.newLineIfNotEmpty();
}
@@ -1045,8 +1203,8 @@ public class DocGen {
if (_notEquals) {
_builder.append("\\textbf{State description} \\textit{");
String _genStatePathName_3 = CodegenHelpers.getGenStatePathName(s);
- String _replaceAll_2 = _genStatePathName_3.replaceAll("_", "\\\\_");
- _builder.append(_replaceAll_2, "");
+ String _replaceAll_1 = _genStatePathName_3.replaceAll("_", "\\\\_");
+ _builder.append(_replaceAll_1, "");
_builder.append("}:");
_builder.newLineIfNotEmpty();
_builder.append("\\newline");
@@ -1118,7 +1276,7 @@ public class DocGen {
boolean _isEmpty = attributes.isEmpty();
boolean _not = (!_isEmpty);
if (_not) {
- _builder.append("\\begin{tabular}[ht]{|l|l|l|}");
+ _builder.append("\\begin{tabular}[ht]{|l|l|p{8cm}|}");
_builder.newLine();
_builder.append("\\hline");
_builder.newLine();
@@ -1270,7 +1428,8 @@ public class DocGen {
{
EList<String> _lines = doc.getLines();
for(final String line : _lines) {
- _builder.append(line, "");
+ String _escapedString = this.escapedString(line);
+ _builder.append(_escapedString, "");
_builder.newLineIfNotEmpty();
}
}
@@ -1281,8 +1440,10 @@ public class DocGen {
return _builder;
}
- private String fileExists(final String f) {
- final File file = new File(f);
+ private String fileExists(final RoomModel model, final String f) {
+ String _docGenerationTargetPath = this.roomExt.getDocGenerationTargetPath(model);
+ final String absPath = (_docGenerationTargetPath + f);
+ final File file = new File(absPath);
final boolean exist = file.exists();
if ((exist == true)) {
this.logger.logInfo(("File found ! " + f));
@@ -1293,15 +1454,17 @@ public class DocGen {
}
}
- private CharSequence includeGraphics(final String filename, final String scale, final String caption) {
+ private CharSequence includeGraphics(final String filename, final String width, final String caption) {
CharSequence _xblockexpression = null;
{
String latexCaption = caption.replaceAll("_", "\\\\_");
StringConcatenation _builder = new StringConcatenation();
- _builder.append("\\begin{center}");
+ _builder.append("{");
+ _builder.newLine();
+ _builder.append("\\centering{}");
_builder.newLine();
- _builder.append("\\includegraphics[scale=");
- _builder.append(scale, "");
+ _builder.append("\\includegraphics[width=");
+ _builder.append(width, "");
_builder.append("]{");
_builder.append(filename, "");
_builder.append("}");
@@ -1310,7 +1473,7 @@ public class DocGen {
_builder.append(latexCaption, "");
_builder.append("}");
_builder.newLineIfNotEmpty();
- _builder.append("\\end{center}");
+ _builder.append("}");
_builder.newLine();
_xblockexpression = _builder;
}
@@ -1321,14 +1484,57 @@ public class DocGen {
return text.replace("_", "\\_");
}
- private CharSequence generateProtocolClassDoc(final Root root, final GeneralProtocolClass pc) {
- if (pc instanceof CompoundProtocolClass) {
- return _generateProtocolClassDoc(root, (CompoundProtocolClass)pc);
- } else if (pc instanceof ProtocolClass) {
- return _generateProtocolClassDoc(root, (ProtocolClass)pc);
+ private String getImagePath(final String filename) {
+ String filenamei = ((this.IMGDIR_DEFAULT + "/") + filename);
+ String _replaceAll = filenamei.replaceAll("\\\\", "/");
+ filenamei = _replaceAll;
+ return filenamei;
+ }
+
+ private void saveAs(final CharSequence content, final String filename) {
+ this.fileAccess.generateFile(filename, content);
+ }
+
+ private String docFragmentName(final RoomClass rc) {
+ String _name = rc.getName();
+ return (_name + ".tex");
+ }
+
+ private CharSequence generateImport(final RoomClass rc) {
+ StringConcatenation _builder = new StringConcatenation();
+ String _docFragmentName = this.docFragmentName(rc);
+ CharSequence _generateImport = this.generateImport(_docFragmentName);
+ _builder.append(_generateImport, "");
+ return _builder;
+ }
+
+ private CharSequence generateImport(final String name) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("\\subimport*{./}{");
+ _builder.append(name, "");
+ _builder.append("}");
+ _builder.newLineIfNotEmpty();
+ return _builder;
+ }
+
+ private CharSequence generateDoc(final RoomClass ac, final DocGen.DocGenContext ctx) {
+ if (ac instanceof ActorClass) {
+ return _generateDoc((ActorClass)ac, ctx);
+ } else if (ac instanceof DataClass) {
+ return _generateDoc((DataClass)ac, ctx);
+ } else if (ac instanceof SubSystemClass) {
+ return _generateDoc((SubSystemClass)ac, ctx);
+ } else if (ac instanceof CompoundProtocolClass) {
+ return _generateDoc((CompoundProtocolClass)ac, ctx);
+ } else if (ac instanceof EnumerationType) {
+ return _generateDoc((EnumerationType)ac, ctx);
+ } else if (ac instanceof LogicalSystem) {
+ return _generateDoc((LogicalSystem)ac, ctx);
+ } else if (ac instanceof ProtocolClass) {
+ return _generateDoc((ProtocolClass)ac, ctx);
} else {
throw new IllegalArgumentException("Unhandled parameter types: " +
- Arrays.<Object>asList(root, pc).toString());
+ Arrays.<Object>asList(ac, ctx).toString());
}
}
}

Back to the top