The new interface

LF‑ET generates an interface with the following adjustments from the decision tables:
-
The interface now is stateless and generic, i.e. the type is an additional parameter in all methods
-
Method names for enums are more descriptive
-
no longer isEnum or doEnum
-
but e.g. isPurchaseOrderValue
-
-
The names of enum values are derived from symbols
-
no longer $001, $002, $003, …
-
but e.g. $LESS2000, $20007500, …
-
-
An additional Trace code that is called AFTER each rule execution
// *** WARNING: DO NOT MODIFY *** This is a generated Java source code!
//
// Generated by LF-ET 2.4.1 (260219a), https://www.lohrfink.de/lfet
// From decision table
// "/src/main/resources/lfet/demo/InvoiceTotal.lfet"
// 24.02.2026 15:42
//
// Prolog Standard ---->
// profile LFET.Java.Prolog.Standard.Interface.ini not found
// used LF-ET 2.4.1 (260219a) build in default
package lfet.demo;
import javax.annotation.processing.Generated;
@Generated("LF-ET")
interface InvoiceTotal_iFace<T>
{
// Prolog Standard <----
/**
* <b>C01: Purchase order value</b><br>
* <br>
* The enum generation has been triggered in project.ini by:<br>
* - <b>ide.java.interface.enum.1</b>: symbol=Interval; include.tags.title=purchase order; exclude.tags.title=discount<br>
* - <b>ide.Java.Interface.Enum.default.Values</b>: method.name=enum.name; enum.value.name=symbol, uppercase, prefix$
*/
boolean isPurchaseOrderValue(InvoiceTotal_iFace.PurchaseOrderValue arg0, T model);
/**
* <b>C02: Discount</b><br>
* <br>
* <b>C02/01: >0 - discount given</b>
*/
boolean isDiscount_Greater0(T model);
/**
* <b>C03: Discount type</b><br>
* <br>
* <b>C03/01: % - percentage discount on the purchase order value</b>
*/
boolean isDiscountType_PercentageDiscountOnThePurchaseOrderValue(T model);
/**
* <b>C04: Discount < Purchase order value</b><br>
* <br>
* <b>C04/01: Y - Yes</b>
*/
boolean isDiscountLessPurchaseOrderValue(T model);
/**
* <b>A01: Apply discount</b>
*/
void doApplyDiscount(T model);
/**
* <b>A02: Calculate shipping costs</b>
*/
void doCalculateShippingCosts(T model);
/**
* <b>A03: Invoice total</b><br>
* <br>
* <b>A03/01: upd - Invoice total must be updated</b>
*/
void doInvoiceTotal_Upd(T model);
/**
* <b>A03: Invoice total</b><br>
* <br>
* <b>A03/02: pov - Purchase order value can be taken over as invoice total</b>
*/
void doInvoiceTotal_Pov(T model);
void doTrace(java.lang.String dtName, java.lang.String version, int rules, int rule, T model);
void doTraceAfterRule(java.lang.String dtName, java.lang.String version, int rules, int rule, T model);
/**
* <b>C01: Purchase order value</b><br>
* <br>
* The enum generation has been triggered in project.ini by:<br>
* - <b>ide.java.interface.enum.1</b>: symbol=Interval; include.tags.title=purchase order; exclude.tags.title=discount<br>
* - <b>ide.Java.Interface.Enum.default.Values</b>: method.name=enum.name; enum.value.name=symbol, uppercase, prefix$
*/
enum PurchaseOrderValue
{
/**
* <b>C01: Purchase order value</b><br>
* <br>
* <b>C01/01: < 20.00 - low</b>
*/
$LESS2000("< 20.00", Double.NEGATIVE_INFINITY, 19.99),
/**
* <b>C01: Purchase order value</b><br>
* <br>
* <b>C01/02: 20.00 - 75.00 - normal</b>
*/
$20007500("20.00 - 75.00", 20.0, 75.0);
private final String symbol;
private final double symbolMin;
private final double symbolMax;
PurchaseOrderValue(String symbol, double symbolMin, double symbolMax)
{
this.symbol = symbol;
this.symbolMin = symbolMin;
this.symbolMax = symbolMax;
}
public String getSymbol()
{
return symbol;
}
public double getSymbolMin()
{
return symbolMin;
}
public double getSymbolMax()
{
return symbolMax;
}
public boolean isInSymbolInterval(double d)
{
return d >= symbolMin && d <= symbolMax;
}
public boolean isInSymbolInterval(int i)
{
return i >= symbolMin && i <= symbolMax;
}
}
// Epilog Standard ---->
// profile LFET.Java.Epilog.Standard.Interface.ini not found
// used LF-ET 2.4.1 (260219a) build in default
}
// Epilog Standard <----
// End of generated Java source code
// Generated by LF-ET 2.4.1 (260219a), https://www.lohrfink.de/lfet