1 /*
2  * JasperReports - Free Java Reporting Library.
3  * Copyright (C) 2001 - 2019 TIBCO Software Inc. All rights reserved.
4  * http://www.jaspersoft.com
5  *
6  * Unless you have purchased a commercial license agreement from Jaspersoft,
7  * the following license terms apply:
8  *
9  * This program is part of JasperReports.
10  *
11  * JasperReports is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License as published by
13  * the Free Software Foundation, either version 3 of the License, or
14  * (at your option) any later version.
15  *
16  * JasperReports is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Lesser General Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
23  */

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 /**
35  * 
36  * @author Lucian Chirita (lucianc@users.sourceforge.net)
37  */

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