From 7c13a8a53b596c21bbce3f75e588e5762fadf249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Tue, 18 Aug 2009 09:01:17 +0000 Subject: [PATCH] removed EDecimal and related classes --- .../query/collections/impl/MiniApi.java | 15 ---- .../query/collections/impl/MiniApiTest.java | 63 --------------- .../mysema/query/functions/MathFunctions.java | 7 +- .../mysema/query/types/AbstractVisitor.java | 14 +--- .../com/mysema/query/types/DeepVisitor.java | 26 ------- .../com/mysema/query/types/EmptyVisitor.java | 42 ---------- .../query/types/SinglePathExtractor.java | 30 -------- .../java/com/mysema/query/types/Visitor.java | 8 +- .../com/mysema/query/types/expr/EDecimal.java | 60 --------------- .../com/mysema/query/types/expr/ENumber.java | 77 ++++++++++++++----- .../query/types/operation/ODecimal.java | 68 ---------------- .../com/mysema/query/types/path/PDecimal.java | 76 ------------------ .../com/mysema/query/types/path/PEntity.java | 11 --- .../src/main/resources/codegen/macros.ftl | 8 -- 14 files changed, 61 insertions(+), 444 deletions(-) delete mode 100644 querydsl-collections/src/test/java/com/mysema/query/collections/impl/MiniApiTest.java delete mode 100644 querydsl-core/src/main/java/com/mysema/query/types/DeepVisitor.java delete mode 100644 querydsl-core/src/main/java/com/mysema/query/types/EmptyVisitor.java delete mode 100644 querydsl-core/src/main/java/com/mysema/query/types/SinglePathExtractor.java delete mode 100644 querydsl-core/src/main/java/com/mysema/query/types/expr/EDecimal.java delete mode 100644 querydsl-core/src/main/java/com/mysema/query/types/operation/ODecimal.java delete mode 100644 querydsl-core/src/main/java/com/mysema/query/types/path/PDecimal.java diff --git a/querydsl-collections/src/main/java/com/mysema/query/collections/impl/MiniApi.java b/querydsl-collections/src/main/java/com/mysema/query/collections/impl/MiniApi.java index ee055651c..1a466c47d 100644 --- a/querydsl-collections/src/main/java/com/mysema/query/collections/impl/MiniApi.java +++ b/querydsl-collections/src/main/java/com/mysema/query/collections/impl/MiniApi.java @@ -6,13 +6,9 @@ package com.mysema.query.collections.impl; import java.util.Arrays; -import java.util.List; import com.mysema.query.alias.Alias; import com.mysema.query.collections.ColQuery; -import com.mysema.query.types.OrderSpecifier; -import com.mysema.query.types.SinglePathExtractor; -import com.mysema.query.types.expr.EBoolean; import com.mysema.query.types.expr.Expr; /** @@ -35,15 +31,4 @@ public class MiniApi { return new ColQueryImpl().from(Alias.$(alias), col); } - @SuppressWarnings("unchecked") - public static List select(Iterable from, EBoolean where, OrderSpecifier... order) { - Expr path = (Expr) new SinglePathExtractor().handle(where).getPath(); - ColQuery query = new ColQueryImpl().from(path, from).where(where).orderBy(order); - return query.list((Expr) path); - } - - public static List reject(Iterable from, EBoolean where, OrderSpecifier... order) { - return select(from, where.not(), order); - } - } diff --git a/querydsl-collections/src/test/java/com/mysema/query/collections/impl/MiniApiTest.java b/querydsl-collections/src/test/java/com/mysema/query/collections/impl/MiniApiTest.java deleted file mode 100644 index ceb1e671a..000000000 --- a/querydsl-collections/src/test/java/com/mysema/query/collections/impl/MiniApiTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2009 Mysema Ltd. - * All rights reserved. - * - */ -package com.mysema.query.collections.impl; - -import static com.mysema.query.alias.Alias.$; -import static org.junit.Assert.assertEquals; - -import java.util.Arrays; - -import org.junit.Test; - -import com.mysema.query.collections.domain.Cat; - - -/** - * MiniApiTest provides - * - * @author tiwe - * @version $Id$ - */ -public class MiniApiTest extends AbstractQueryTest { - - @Test - public void testSimpleReject() { - // Iterable oneAndTwo = reject(myInts, greaterThan(2)); - Iterable oneAndTwo = MiniApi.reject(myInts, $(0).gt(2)); - - for (Integer i : oneAndTwo) - ints.add(i); - assertEquals(Arrays.asList(1, 2), ints); - } - - @Test - public void testSimpleSelect() { - // Iterable threeAndFour = select(myInts, greaterThan(2)); - Iterable threeAndFour = MiniApi.select(myInts, $(0).gt(2)); - - for (Integer i : threeAndFour){ - ints.add(i); - } - assertEquals(Arrays.asList(3, 4), ints); - } - - @Test - public void testMiniApiUsage() { - for (Cat c : MiniApi.select(cats, cat.name.eq("Kitty"))) { - System.out.println(c.getName()); - } - MiniApi.select(cats, cat.kittens.size().gt(0)).iterator(); - MiniApi.select(cats, cat.mate.isNotNull()).iterator(); - MiniApi.select(cats, cat.alive.and(cat.birthdate.isNotNull())).iterator(); - MiniApi.select(cats, cat.bodyWeight.lt(cat.weight)).iterator(); - MiniApi.select(cats, cat.color.isNull().or(cat.eyecolor.eq(cat.color))).iterator(); - MiniApi.select(cats, cat.bodyWeight.between(1, 2)).iterator(); - - // from where order - MiniApi.select(cats, cat.name.eq("Kitty"), cat.name.asc()).iterator(); - } - -} diff --git a/querydsl-core/src/main/java/com/mysema/query/functions/MathFunctions.java b/querydsl-core/src/main/java/com/mysema/query/functions/MathFunctions.java index 51e8e31cd..deb5940ef 100644 --- a/querydsl-core/src/main/java/com/mysema/query/functions/MathFunctions.java +++ b/querydsl-core/src/main/java/com/mysema/query/functions/MathFunctions.java @@ -5,7 +5,6 @@ */ package com.mysema.query.functions; -import com.mysema.query.types.expr.EDecimal; import com.mysema.query.types.expr.ENumber; import com.mysema.query.types.expr.Expr; import com.mysema.query.types.operation.ONumber; @@ -67,7 +66,7 @@ public final class MathFunctions { * use left.ceil() instead */ @Deprecated - public static ENumber ceil(EDecimal left) { + public static ENumber ceil(ENumber left) { return left.ceil(); } @@ -75,7 +74,7 @@ public final class MathFunctions { * use left.round() instead */ @Deprecated - public static ENumber round(EDecimal left) { + public static ENumber round(ENumber left) { return left.round(); } @@ -83,7 +82,7 @@ public final class MathFunctions { * use left.floor() instead */ @Deprecated - public static ENumber floor(EDecimal left) { + public static ENumber floor(ENumber left) { return left.floor(); } diff --git a/querydsl-core/src/main/java/com/mysema/query/types/AbstractVisitor.java b/querydsl-core/src/main/java/com/mysema/query/types/AbstractVisitor.java index 7e53a1ef9..4a8002eed 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/AbstractVisitor.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/AbstractVisitor.java @@ -14,7 +14,6 @@ import com.mysema.query.types.operation.OBoolean; import com.mysema.query.types.operation.OComparable; import com.mysema.query.types.operation.ODate; import com.mysema.query.types.operation.ODateTime; -import com.mysema.query.types.operation.ODecimal; import com.mysema.query.types.operation.ONumber; import com.mysema.query.types.operation.OSimple; import com.mysema.query.types.operation.OString; @@ -32,7 +31,6 @@ import com.mysema.query.types.path.PComponentList; import com.mysema.query.types.path.PComponentMap; import com.mysema.query.types.path.PDate; import com.mysema.query.types.path.PDateTime; -import com.mysema.query.types.path.PDecimal; import com.mysema.query.types.path.PEntity; import com.mysema.query.types.path.PEntityCollection; import com.mysema.query.types.path.PEntityList; @@ -106,11 +104,6 @@ public abstract class AbstractVisitor> visit((Operation) expr); } - @Override - protected void visit(ODecimal expr) { - visit((Operation) expr); - } - @Override protected void visit(OSimple expr) { visit((Operation) expr); @@ -205,12 +198,7 @@ public abstract class AbstractVisitor> protected void visit(PNumber expr) { visit((Path) expr); } - - @Override - protected void visit(PDecimal expr) { - visit((Path) expr); - } - + @Override protected void visit(PDate expr) { visit((Path) expr); diff --git a/querydsl-core/src/main/java/com/mysema/query/types/DeepVisitor.java b/querydsl-core/src/main/java/com/mysema/query/types/DeepVisitor.java deleted file mode 100644 index 416e32258..000000000 --- a/querydsl-core/src/main/java/com/mysema/query/types/DeepVisitor.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2009 Mysema Ltd. - * All rights reserved. - * - */ -package com.mysema.query.types; - -import com.mysema.query.types.expr.Expr; -import com.mysema.query.types.operation.Operation; - -/** - * DeepVisitor provides deep dispatching functionality - * - * @author tiwe - * @version $Id$ - */ -public abstract class DeepVisitor> extends EmptyVisitor { - - @Override - protected void visit(Operation o) { - for (Expr expr : o.getArgs()){ - handle(expr); - } - } - -} diff --git a/querydsl-core/src/main/java/com/mysema/query/types/EmptyVisitor.java b/querydsl-core/src/main/java/com/mysema/query/types/EmptyVisitor.java deleted file mode 100644 index 8f4d29037..000000000 --- a/querydsl-core/src/main/java/com/mysema/query/types/EmptyVisitor.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2009 Mysema Ltd. - * All rights reserved. - * - */ -package com.mysema.query.types; - -import com.mysema.query.types.custom.Custom; -import com.mysema.query.types.expr.EConstant; -import com.mysema.query.types.operation.Operation; -import com.mysema.query.types.path.Path; - -/** - * EmptyVisitor is an empty implementation of the Visitor class - * - * @author tiwe - * - */ -public class EmptyVisitor> extends AbstractVisitor{ - - - @Override - protected void visit(Custom expr) { - - } - - @Override - protected void visit(EConstant expr) { - - } - - @Override - protected void visit(Operation expr) { - - } - - @Override - protected void visit(Path expr) { - - } - -} diff --git a/querydsl-core/src/main/java/com/mysema/query/types/SinglePathExtractor.java b/querydsl-core/src/main/java/com/mysema/query/types/SinglePathExtractor.java deleted file mode 100644 index bcaf55036..000000000 --- a/querydsl-core/src/main/java/com/mysema/query/types/SinglePathExtractor.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2009 Mysema Ltd. - * All rights reserved. - * - */ -package com.mysema.query.types; - -import com.mysema.query.types.path.Path; - -/** - * SinglePathExtractor is a visitor implementation which returns the top level path - * from a single Expr instance - * - * @author tiwe - * @version $Id$ - */ -public class SinglePathExtractor extends DeepVisitor { - - private Path path; - - @Override - protected void visit(Path expr) { - path = expr.getRoot(); - } - - public Path getPath() { - return path; - } - -} diff --git a/querydsl-core/src/main/java/com/mysema/query/types/Visitor.java b/querydsl-core/src/main/java/com/mysema/query/types/Visitor.java index de1ef0506..032e30f3d 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/Visitor.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/Visitor.java @@ -26,7 +26,6 @@ import com.mysema.query.types.operation.OBoolean; import com.mysema.query.types.operation.OComparable; import com.mysema.query.types.operation.ODate; import com.mysema.query.types.operation.ODateTime; -import com.mysema.query.types.operation.ODecimal; import com.mysema.query.types.operation.ONumber; import com.mysema.query.types.operation.OSimple; import com.mysema.query.types.operation.OString; @@ -44,7 +43,6 @@ import com.mysema.query.types.path.PComponentList; import com.mysema.query.types.path.PComponentMap; import com.mysema.query.types.path.PDate; import com.mysema.query.types.path.PDateTime; -import com.mysema.query.types.path.PDecimal; import com.mysema.query.types.path.PEntity; import com.mysema.query.types.path.PEntityCollection; import com.mysema.query.types.path.PEntityList; @@ -118,7 +116,7 @@ public abstract class Visitor> { } return (T) this; } - + protected abstract void visit(CBoolean expr); protected abstract void visit(CComparable expr); @@ -143,8 +141,6 @@ public abstract class Visitor> { protected abstract void visit(ONumber expr); - protected abstract void visit(ODecimal expr); - protected abstract void visit(Operation expr); protected abstract void visit(OSimple expr); @@ -187,8 +183,6 @@ public abstract class Visitor> { protected abstract void visit(PNumber expr); - protected abstract void visit(PDecimal expr); - protected abstract void visit(PSimple expr); protected abstract void visit(PString expr); diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/EDecimal.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/EDecimal.java deleted file mode 100644 index 0bf0ef7dc..000000000 --- a/querydsl-core/src/main/java/com/mysema/query/types/expr/EDecimal.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2009 Mysema Ltd. - * All rights reserved. - * - */ -package com.mysema.query.types.expr; - -import com.mysema.query.types.operation.ONumber; -import com.mysema.query.types.operation.Ops.MathOps; - -/** - * EDecimal represents decimal expressions - * - * @author tiwe - * - * @param - */ -public abstract class EDecimal> extends ENumber { - - public EDecimal(Class type) { - super(type); - } - - private ENumber round, floor, ceil; - - /** - * @return round(this) - * @see java.lang.Math#round(double) - * @see java.lang.Math#round(float) - */ - public ENumber round() { - if (round == null){ - round = ONumber.create(getType(), MathOps.ROUND, this); - } - return round; - } - - /** - * @return floor(this) - * @see java.lang.Math#floor(double) - */ - public ENumber floor() { - if (floor == null){ - floor = ONumber.create(getType(), MathOps.FLOOR, this); - } - return floor; - } - - /** - * @return ceil(this) - * @see java.lang.Math#ceil(double) - */ - public ENumber ceil() { - if (ceil == null){ - ceil = ONumber.create(getType(), MathOps.CEIL, this); - } - return ceil; - } - -} diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/ENumber.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/ENumber.java index 544aa2357..e5fa02216 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/expr/ENumber.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/ENumber.java @@ -9,7 +9,6 @@ import java.math.BigDecimal; import java.math.BigInteger; import com.mysema.query.types.operation.OBoolean; -import com.mysema.query.types.operation.ODecimal; import com.mysema.query.types.operation.ONumber; import com.mysema.query.types.operation.Ops; import com.mysema.query.types.operation.Ops.MathOps; @@ -25,7 +24,7 @@ import com.mysema.query.types.operation.Ops.MathOps; */ public abstract class ENumber> extends EComparable { - private static EDecimal random; + private static ENumber random; /** * @return max(left, right) @@ -45,16 +44,18 @@ public abstract class ENumber> extends ECompara * Returns the random expression * @return random() */ - public static EDecimal random(){ + public static ENumber random(){ if (random == null){ - random = ODecimal.create(Double.class, MathOps.RANDOM); + random = ONumber.create(Double.class, MathOps.RANDOM); } return random; } private ENumber abs, sum, min, max; - private EDecimal avg, sqrt; + private ENumber avg, sqrt; + + private ENumber round, floor, ceil; public ENumber(Class type) { super(type); @@ -69,7 +70,7 @@ public abstract class ENumber> extends ECompara } return abs; } - + /** * @param right * @return this + right @@ -77,7 +78,7 @@ public abstract class ENumber> extends ECompara public ENumber add(D right) { return ONumber.create(getType(), Ops.ADD, this, EConstant.create(right)); } - + /** * @param right * @return this + right @@ -85,13 +86,13 @@ public abstract class ENumber> extends ECompara public ENumber add(Expr right) { return ONumber.create(getType(), Ops.ADD, this, right); } - + /** * @return avg(this) */ - public EDecimal avg(){ + public ENumber avg(){ if (avg == null){ - avg = ODecimal.create(Double.class, Ops.AggOps.AVG_AGG, this); + avg = ONumber.create(Double.class, Ops.AggOps.AVG_AGG, this); } return avg; } @@ -143,20 +144,30 @@ public abstract class ENumber> extends ECompara } /** - * @param right - * @return this / right + * @return ceil(this) + * @see java.lang.Math#ceil(double) */ - public EDecimal div(D right) { - return ODecimal.create(Double.class, Ops.DIV, this, EConstant.create(right)); + public ENumber ceil() { + if (ceil == null){ + ceil = ONumber.create(getType(), MathOps.CEIL, this); + } + return ceil; } - /** * @param right * @return this / right */ - public EDecimal div(Expr right) { - return ODecimal.create(Double.class, Ops.DIV, this, right); + public ENumber div(D right) { + return ONumber.create(Double.class, Ops.DIV, this, EConstant.create(right)); + } + + /** + * @param right + * @return this / right + */ + public ENumber div(Expr right) { + return ONumber.create(Double.class, Ops.DIV, this, right); } /** @@ -169,6 +180,7 @@ public abstract class ENumber> extends ECompara return castToNum(Double.class); } + /** * Get the float expression of this numeric expression * @@ -179,6 +191,17 @@ public abstract class ENumber> extends ECompara return castToNum(Float.class); } + /** + * @return floor(this) + * @see java.lang.Math#floor(double) + */ + public ENumber floor() { + if (floor == null){ + floor = ONumber.create(getType(), MathOps.FLOOR, this); + } + return floor; + } + /** * Create a this >= right expression * @@ -314,7 +337,7 @@ public abstract class ENumber> extends ECompara } return min; } - + /** * @param right * @return this * right @@ -322,7 +345,7 @@ public abstract class ENumber> extends ECompara public ENumber mult(D right) { return ONumber.create(getType(), Ops.MULT, this, EConstant.create(right)); } - + /** * @param right * @return this * right @@ -330,6 +353,18 @@ public abstract class ENumber> extends ECompara public ENumber mult(Expr right) { return ONumber.create(getType(), Ops.MULT, this, right); } + + /** + * @return round(this) + * @see java.lang.Math#round(double) + * @see java.lang.Math#round(float) + */ + public ENumber round() { + if (round == null){ + round = ONumber.create(getType(), MathOps.ROUND, this); + } + return round; + } /** * Get the short expression of this numeric expression @@ -345,9 +380,9 @@ public abstract class ENumber> extends ECompara * Returns the square root of this numeric expressions * @return sqrt(this) */ - public EDecimal sqrt(){ + public ENumber sqrt(){ if (sqrt == null){ - sqrt = ODecimal.create(Double.class, MathOps.SQRT, this); + sqrt = ONumber.create(Double.class, MathOps.SQRT, this); } return sqrt; } diff --git a/querydsl-core/src/main/java/com/mysema/query/types/operation/ODecimal.java b/querydsl-core/src/main/java/com/mysema/query/types/operation/ODecimal.java deleted file mode 100644 index 91a1c5544..000000000 --- a/querydsl-core/src/main/java/com/mysema/query/types/operation/ODecimal.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2009 Mysema Ltd. - * All rights reserved. - * - */ -package com.mysema.query.types.operation; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import com.mysema.query.types.expr.EDecimal; -import com.mysema.query.types.expr.Expr; - -/** - * ONumber represents numeric operations - * - * @author tiwe - * - * @param - * @param - */ -public class ODecimal> - extends EDecimal implements Operation { - - private final List> args; - - private final Operator op; - - ODecimal(Class type, Operator op, Expr... args) { - this(type, op, Arrays.asList(args)); - } - - ODecimal(Class type, Operator op, List> args) { - super(type); - this.op = op; - this.args = Collections.unmodifiableList(args); - } - - @Override - public List> getArgs() { - return args; - } - - @Override - public Expr getArg(int i) { - return args.get(i); - } - - @Override - public Operator getOperator() { - return op; - } - - /** - * Factory method - * - * @param - * @param - * @param type - * @param op - * @param args - * @return - */ - public static > EDecimal create(Class type, Operator op, Expr... args){ - return new ODecimal(type, op, args); - } -} \ No newline at end of file diff --git a/querydsl-core/src/main/java/com/mysema/query/types/path/PDecimal.java b/querydsl-core/src/main/java/com/mysema/query/types/path/PDecimal.java deleted file mode 100644 index 0e1f95245..000000000 --- a/querydsl-core/src/main/java/com/mysema/query/types/path/PDecimal.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2009 Mysema Ltd. - * All rights reserved. - * - */ -package com.mysema.query.types.path; - -import com.mysema.query.types.expr.EBoolean; -import com.mysema.query.types.expr.EDecimal; -import com.mysema.query.types.operation.OBoolean; -import com.mysema.query.types.operation.Ops; -import com.mysema.query.util.NotEmpty; - -/** - * PNumber represents numeric paths - * - * @author tiwe - * - * @param Java type - */ -public class PDecimal> extends EDecimal implements Path { - - private EBoolean isnull, isnotnull; - - private final PathMetadata metadata; - - private final Path root; - - public PDecimal(Class type, PathMetadata metadata) { - super(type); - this.metadata = metadata; - this.root = metadata.getRoot() != null ? metadata.getRoot() : this; - } - - public PDecimal(Class type, @NotEmpty String var) { - this(type, PathMetadata.forVariable(var)); - } - - @SuppressWarnings("unchecked") - @Override - public boolean equals(Object o) { - return o instanceof Path ? ((Path) o).getMetadata().equals(metadata) - : false; - } - - @Override - public PathMetadata getMetadata() { - return metadata; - } - - @Override - public Path getRoot() { - return root; - } - - @Override - public int hashCode() { - return metadata.hashCode(); - } - - @Override - public EBoolean isNotNull() { - if (isnotnull == null) { - isnotnull = new OBoolean(Ops.ISNOTNULL, this); - } - return isnotnull; - } - - @Override - public EBoolean isNull() { - if (isnull == null) { - isnull = new OBoolean(Ops.ISNULL, this); - } - return isnull; - } -} \ No newline at end of file diff --git a/querydsl-core/src/main/java/com/mysema/query/types/path/PEntity.java b/querydsl-core/src/main/java/com/mysema/query/types/path/PEntity.java index f302dbde6..3d0f38dba 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/path/PEntity.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/path/PEntity.java @@ -100,17 +100,6 @@ public class PEntity extends EEntity implements Path { Class type) { return new PDateTime(type, PathMetadata.forProperty(this, propertyName)); } - - /** - * @param - * @param property - * @param type - * @return - */ - protected > PDecimal _decimal( - @NotEmpty String property, Class type) { - return new PDecimal(type, PathMetadata.forProperty(this, property)); - } /** * Create an Entity subpath for the given property diff --git a/querydsl-core/src/main/resources/codegen/macros.ftl b/querydsl-core/src/main/resources/codegen/macros.ftl index 8c6d09a58..1228a0e94 100644 --- a/querydsl-core/src/main/resources/codegen/macros.ftl +++ b/querydsl-core/src/main/resources/codegen/macros.ftl @@ -28,9 +28,6 @@ <#list decl.numericFields as field> <@numericField field=field/> - <#list decl.decimalFields as field> - <@decimalField field=field/> - <#list decl.simpleMaps as field> <@simpleMap field=field/> @@ -139,11 +136,6 @@ /** ${field.docString} */ public final PNumber<${field.typeName}> ${field.name} = _number("${field.name}",${field.typeName}.class); - -<#macro decimalField field> - /** ${field.docString} */ - public final PDecimal<${field.typeName}> ${field.name} = _decimal("${field.name}",${field.typeName}.class); - <#macro simpleField field> /** ${field.docString} */