1
24 package net.sf.jasperreports.components.barbecue;
25
26 import net.sf.jasperreports.engine.JRExpression;
27 import net.sf.jasperreports.engine.JRExpressionCollector;
28 import net.sf.jasperreports.engine.base.JRBaseObjectFactory;
29 import net.sf.jasperreports.engine.component.Component;
30 import net.sf.jasperreports.engine.component.ComponentCompiler;
31 import net.sf.jasperreports.engine.design.JRVerifier;
32 import net.sf.jasperreports.engine.type.EvaluationTimeEnum;
33
34
38 public class BarbecueCompiler implements ComponentCompiler
39 {
40
41 @Override
42 public void collectExpressions(Component component, JRExpressionCollector collector)
43 {
44 BarbecueComponent barcode = (BarbecueComponent) component;
45 collector.addExpression(barcode.getCodeExpression());
46 collector.addExpression(barcode.getApplicationIdentifierExpression());
47 }
48
49 @Override
50 public Component toCompiledComponent(Component component,
51 JRBaseObjectFactory baseFactory)
52 {
53 BarbecueComponent barcode = (BarbecueComponent) component;
54 return new StandardBarbecueComponent(barcode, baseFactory);
55 }
56
57 @Override
58 public void verify(Component component, JRVerifier verifier)
59 {
60 BarbecueComponent barcode = (BarbecueComponent) component;
61
62 String type = barcode.getType();
63 if (type == null)
64 {
65 verifier.addBrokenRule("No barcode type set", barcode);
66 }
67
68 JRExpression codeExpression = barcode.getCodeExpression();
69 if (codeExpression == null)
70 {
71 verifier.addBrokenRule("Barcode expression is null", barcode);
72 }
73
74 EvaluationTimeEnum evaluationTime = barcode.getEvaluationTimeValue();
75 if (evaluationTime == EvaluationTimeEnum.AUTO)
76 {
77 verifier.addBrokenRule("Auto evaluation time is not supported for barcodes", barcode);
78 }
79 else if (evaluationTime == EvaluationTimeEnum.GROUP)
80 {
81 String evaluationGroup = barcode.getEvaluationGroup();
82 if (evaluationGroup == null || evaluationGroup.length() == 0)
83 {
84 verifier.addBrokenRule("No evaluation group set for barcode", barcode);
85 }
86 else if (!verifier.getReportDesign().getGroupsMap().containsKey(evaluationGroup))
87 {
88 verifier.addBrokenRule("Barcode evaluation group \""
89 + evaluationGroup + " not found", barcode);
90 }
91 }
92 }
93
94 }
95