Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions ComponentGenerator/FreeMarkerTemplates/ltFcDescriptions.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,19 @@ rankdir=LR
"yellowgreen"<#break>
<#default>"beige"</#switch></#macro>

<#assign fcTypeArguments = {
"F1": "F1 Description",
"NV": "New View Description" }>

<#macro argDescription fc>
<#if fc.ltDescription?? >
${fc.ltDescription!"FC defined yet"}
<#else>
${fcTypeArguments[fc.ltRecordType]!"Not defined yet"}
</#if>
</#macro>


graph [label="Logic Table Function Codes\n", labelloc=t, labeljust=center, fontname=Helvetica, fontsize=22];
labeljust=center; ranksep = "3 equally"

Expand All @@ -36,6 +49,7 @@ FCS [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TD ALIGN="LEFT" BGCOLOR="white">Category</TD>
<TD ALIGN="LEFT" BGCOLOR="white">Description</TD>
<TD ALIGN="LEFT" BGCOLOR="white">Record Type</TD>
<TD ALIGN="LEFT" BGCOLOR="white">Arguments</TD>
</TR>

<#list fcs.codes[0].fcdefs.codes as fc>
Expand All @@ -44,6 +58,7 @@ FCS [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TD ALIGN="LEFT" BGCOLOR=<@categorycolour fc.category/>>${fc.category}</TD>
<TD ALIGN="LEFT" BGCOLOR=<@categorycolour fc.category/>>${fc.description}</TD>
<TD ALIGN="LEFT" BGCOLOR=<@categorycolour fc.category/>>${fc.ltRecordType}</TD>
<TD ALIGN="LEFT" BGCOLOR=<@categorycolour fc.category/>><@argDescription fc/></TD>
</TR>
</#list>
</TABLE>>]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ codes:
lt_record_type: NAMEVALUE
category: Arithmetic
description: Add to an accumulator from another accumulator
lt_description: Result Accum + Accum
- function_code: ADDC
lt_record_type: NAMEVALUE
category: Arithmetic
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,13 @@
*/


import java.util.ArrayList;
import java.util.List;

public class FunctionCodeDefinition {

String function_code;
String ltRecordType;
String category;
String description;
List<FunctionCodeArg> args = new ArrayList<>();
String ltDescription;

public String getFunctionCode() {
return function_code;
Expand Down Expand Up @@ -61,12 +58,12 @@ public void setDescription(String description) {
this.description = description;
}

public List<FunctionCodeArg> getArgs() {
return args;
public String getLtDescription() {
return ltDescription;
}

public void setArgs(List<FunctionCodeArg> args) {
this.args = args;
public void setLtDescription(String ltDescription) {
this.ltDescription = ltDescription;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.genevaers.genevaio.ltfile;

public class AssignmentLtEntry extends LtRecordLogger {

private static final String name = "Assignment";

public AssignmentLtEntry() {
super();
}

@Override
public String getLogEntry(LTRecord ltr) {
LogicTableF2 ass = (LogicTableF2) ltr;
LogicTableArg arg1 = ass.getArg1();
LogicTableArg arg2 = ass.getArg2();
String descString = String.format(ASSIGNMENT, arg1.getLogfileId(), arg1.getLrId(), arg1.getFieldId(), arg1.getStartPosition(), arg1.getFieldLength(),
arg2.getStartPosition(), arg2.getFieldLength());
return getLeadin(ltr) + descString;
}

@Override
public String getDescription(LTRecord ltr) {
return name;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package org.genevaers.genevaio.ltfile;

import java.util.List;

public class ConstAssignmentLtEntry extends LtRecordLogger {

private static final String name = "ConstAssignment";
private static List<DescriptionKey> descParts;

public ConstAssignmentLtEntry() {
super();
}

@Override
public String getLogEntry(LTRecord ltr) {
LogicTableF1 ass = (LogicTableF1) ltr;
LogicTableArg arg = ass.getArg();
String descString = String.format(CONSTASSIGNMENT, arg.getValue().getPrintString(),
arg.getStartPosition(), arg.getFieldLength());
return getLeadin(ltr) + descString;
}

@Override
public String getDescription(LTRecord ltr) {
return name;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.genevaers.genevaio.ltfile;

public class ConstFieldComparator extends LtRecordLogger{

@Override
public String getLogEntry(LTRecord ltr) {
LogicTableF1 cf = (LogicTableF1) ltr;
return(String.format(COMPARISON, getLeadin(ltr), cf.getArg().getValue().getPrintString(), getCompareCode(cf.getCompareType()), getFullArg(cf.getArg()) , getGotos(ltr)));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package org.genevaers.genevaio.ltfile;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class DescriptionKey {
protected String name;
protected String descriptionKey;
private List<DescriptionKey> children = new ArrayList<>();
private int length;
private boolean referenced;
private boolean printed = false;
private String separator = " ";

DescriptionKey(String d, int l) {
descriptionKey = d;
length = l;
}

public String getDescriptionKey() {
if(printed) {
return "";
} else {
printed = true;
return descriptionKey + " " + (children.size() == 0 ? length : "");
}
}

// public void add(String name, DescriptionKey k) {
// this.name = name;
// DescriptionKey newKey = DescriptionKeysCache.add(name, k);
// if(newKey == null) {
// children.add(k);
// }
// }

public void addChild(DescriptionKey c) {
children.add(c);
}

public int getLength() {
int calclength = 0;
if(children.size() > 0) {
for (DescriptionKey descriptionKey : children) {
calclength += descriptionKey.getLength();
}
if(calclength > length) {
//error warn
}
}
return length == 0 ? calclength : length;
}

public void setLength(int length) {
this.length = length;
}


public Iterator<DescriptionKey> getIterator() {
return children.iterator();
}

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setReferenced(boolean referenced) {
this.referenced = referenced;
}

public boolean isReferenced() {
return referenced;
}

public String getFormatString() {
boolean addSeparator = false;
StringBuilder sb = new StringBuilder();
if(children.size() == 0) {
sb.append("%");
sb.append(length);
sb.append(descriptionKey.startsWith("Int") ? "d": "s");
} else {
Iterator<DescriptionKey> ci = children.iterator();
while (ci.hasNext()) {
if(addSeparator) {
sb.append(separator);
}
DescriptionKey c = ci.next();
sb.append(c.getFormatString());
addSeparator = true;
}
}
return sb.toString();
}

public String getLogString(LTRecord ltr) {
//how can we get the correct ltr fields?
return "";
}

public void setSeparator(String separator) {
this.separator = separator;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package org.genevaers.genevaio.ltfile;

import java.io.IOException;
import java.io.Writer;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

public class DescriptionKeysCache {
protected static Map<String, DescriptionKey> keysCache = new TreeMap<>();
protected static Map<Integer, DescriptionKey> levelCache = new TreeMap<>();

public static void writeKeyCacheText(Writer out) throws IOException {
Iterator<Entry<String, DescriptionKey>> di = keysCache.entrySet().iterator();
while (di.hasNext()) {
Entry<String, DescriptionKey> de = di.next();
out.write(String.format("%4s: %s\n\n", de.getKey(), de.getValue().getDescriptionKey() + length(de.getValue())));
}

out.write("\nKeys written\n");

}

private static String length(DescriptionKey key) {
return key.getLength() > 0 ? " " + Integer.toString(key.getLength()) : "";
}

public static DescriptionKey add(String name, DescriptionKey k) {
k.setName(name);
DescriptionKey existing = keysCache.putIfAbsent(name, k);
return existing != null ? existing : k;
}

public static DescriptionKey get(String name) {
return keysCache.get(name);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.genevaers.genevaio.ltfile;

import java.util.ArrayList;
import java.util.List;

public class DescriptionPart {
protected String descriptionKey;
protected List<DescriptionKey> keys = new ArrayList<>();

DescriptionPart(String d) {
descriptionKey = d;
}

public String getDescriptionKey() {
return descriptionKey;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package org.genevaers.genevaio.ltfile;

import java.util.HashMap;
import java.util.Map;

public class F1LtLogger extends LtRecordLogger{

private static ConstFieldComparator cfComp = new ConstFieldComparator();
private static FieldConstComparator fcComp = new FieldConstComparator();
private static Map<String, LtRecordLogger> fcMap;
static {
fcMap = new HashMap<>();
fcMap.put("JOIN", new JoinLtEntry());
fcMap.put("LKLR", new LklrLtEntry());
fcMap.put("LKS", new LksLtEntry());
fcMap.put("SFCE", cfComp);
fcMap.put("SFCL", cfComp);
fcMap.put("CFCE", cfComp);
fcMap.put("CFCL", cfComp);
fcMap.put("SFEC", fcComp);
fcMap.put("SFLC", fcComp);
fcMap.put("CFEC", fcComp);
fcMap.put("CFLC", fcComp);
fcMap.put("DTC", new ConstAssignmentLtEntry());
}

@Override
public String getLogEntry(LTRecord ltr) {
LtRecordLogger fcl = fcMap.get(ltr.getFunctionCode());
return fcl == null ? getF1Entry(ltr) : fcl.getLogEntry(ltr);
}

private String getF1Entry(LTRecord ltr) {
LogicTableF1 f1 = (LogicTableF1) ltr;
return (getLeadin(ltr) + "(" + ltr.getRecordType() + ") more details to come");
}

@Override
public String getDescription(LTRecord ltr) {
LtRecordLogger fcl = fcMap.get(ltr.getFunctionCode());
return fcl == null ? "Not sure what to say" : fcl.getDescription(ltr);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package org.genevaers.genevaio.ltfile;

import java.util.HashMap;
import java.util.Map;

public class F2LtLogger extends LtRecordLogger{

private static Map<String, LtRecordLogger> fcMap;

static {
fcMap = new HashMap<>();
fcMap.put("LKE", new LkeLtEntry());
fcMap.put("DTE", new AssignmentLtEntry());
}

@Override
public String getLogEntry(LTRecord ltr) {
LtRecordLogger fcl = fcMap.get(ltr.getFunctionCode());
return fcl == null ? getF2Entry(ltr) : fcl.getLogEntry(ltr);
}

private String getF2Entry(LTRecord ltr) {
LogicTableF2 f2 = (LogicTableF2) ltr;
return (getLeadin(ltr) + "(F2) more details to come" );
}

@Override
public String getDescription(LTRecord ltr) {
LtRecordLogger fcl = fcMap.get(ltr.getFunctionCode());
return fcl == null ? "Not sure what to say" : fcl.getDescription(ltr);
}
}
Loading