Package net.sf.jasperreports.components.barcode4j

Source Code of net.sf.jasperreports.components.barcode4j.AbstractBarcodeEvaluator

/*
* JasperReports - Free Java Reporting Library.
* Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved.
* http://www.jaspersoft.com
*
* Unless you have purchased a commercial license agreement from Jaspersoft,
* the following license terms apply:
*
* This program is part of JasperReports.
*
* JasperReports is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JasperReports is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.jasperreports.components.barcode4j;

import net.sf.jasperreports.engine.JRComponentElement;
import net.sf.jasperreports.engine.JRDefaultStyleProvider;
import net.sf.jasperreports.engine.JRStyle;

import org.krysalis.barcode4j.BaselineAlignment;
import org.krysalis.barcode4j.ChecksumMode;
import org.krysalis.barcode4j.HumanReadablePlacement;
import org.krysalis.barcode4j.impl.AbstractBarcodeBean;
import org.krysalis.barcode4j.impl.codabar.CodabarBean;
import org.krysalis.barcode4j.impl.code128.Code128Bean;
import org.krysalis.barcode4j.impl.code128.EAN128Bean;
import org.krysalis.barcode4j.impl.code39.Code39Bean;
import org.krysalis.barcode4j.impl.datamatrix.DataMatrixBean;
import org.krysalis.barcode4j.impl.datamatrix.SymbolShapeHint;
import org.krysalis.barcode4j.impl.fourstate.AbstractFourStateBean;
import org.krysalis.barcode4j.impl.fourstate.RoyalMailCBCBean;
import org.krysalis.barcode4j.impl.fourstate.USPSIntelligentMailBean;
import org.krysalis.barcode4j.impl.int2of5.Interleaved2Of5Bean;
import org.krysalis.barcode4j.impl.pdf417.PDF417Bean;
import org.krysalis.barcode4j.impl.postnet.POSTNETBean;
import org.krysalis.barcode4j.impl.upcean.EAN13Bean;
import org.krysalis.barcode4j.impl.upcean.EAN8Bean;
import org.krysalis.barcode4j.impl.upcean.UPCABean;
import org.krysalis.barcode4j.impl.upcean.UPCEBean;
import org.krysalis.barcode4j.tools.UnitConv;

/**
*
* @author Lucian Chirita (lucianc@users.sourceforge.net)
* @version $Id: AbstractBarcodeEvaluator.java 3032 2009-08-27 11:32:28Z teodord $
*/
public abstract class AbstractBarcodeEvaluator implements BarcodeVisitor
{
 
  protected final JRComponentElement componentElement;
  protected final BarcodeComponent barcodeComponent;
  protected final JRDefaultStyleProvider defaultStyleProvider;

  protected String message;
  protected AbstractBarcodeBean barcode;
 
  protected AbstractBarcodeEvaluator(JRComponentElement componentElement,
      JRDefaultStyleProvider defaultStyleProvider)
  {
    this.componentElement = componentElement;
    this.barcodeComponent = (BarcodeComponent) componentElement.getComponent();
    this.defaultStyleProvider = defaultStyleProvider;
  }

  public void evaluateBarcode()
  {
    BarcodeComponent barcodeComponent =
      (BarcodeComponent) componentElement.getComponent();
    barcodeComponent.receive(this);
  }
 
  public String getMessage()
  {
    return message;
  }
 
  public AbstractBarcodeBean getBarcode()
  {
    return barcode;
  }

  protected void setBaseAttributes(BarcodeComponent barcodeComponent)
  {
    JRStyle style = getElementStyle();
    if (style != null)
    {
      String fontName = style.getFontName();
      if (fontName != null)
      {
        barcode.setFontName(fontName);
      }
     
      Integer fontSize = style.getFontSize();
      if (fontSize != null)
      {
        double barFontSize = UnitConv.pt2mm(fontSize.intValue());
        barcode.setFontSize(barFontSize);
      }
    }
   
    Double moduleWidth = barcodeComponent.getModuleWidth();
    if (moduleWidth != null)
    {
      barcode.setModuleWidth(UnitConv.pt2mm(moduleWidth.doubleValue()));
    }
   
    String textPlacement = barcodeComponent.getTextPosition();
    if (textPlacement != null)
    {
      barcode.setMsgPosition(
          HumanReadablePlacement.byName(textPlacement));
    }
   
    Double quietZone = barcodeComponent.getQuietZone();
    if (quietZone != null)
    {
      barcode.doQuietZone(true);
      barcode.setQuietZone(UnitConv.pt2mm(quietZone.doubleValue()));
    }
   
    Double vQuietZone = barcodeComponent.getVerticalQuietZone();
    if (vQuietZone != null)
    {
      barcode.setVerticalQuietZone(UnitConv.pt2mm(vQuietZone.doubleValue()));
    }

    // FIXME DataMatrix?
    double barcodeHeight;
    if (BarcodeUtils.isVertical(barcodeComponent))
    {
      barcodeHeight = UnitConv.pt2mm(componentElement.getWidth());
    }
    else
    {
      barcodeHeight = UnitConv.pt2mm(componentElement.getHeight());
    }
    barcode.setHeight(barcodeHeight);
   
  }

  protected JRStyle getElementStyle()
  {
    JRStyle style = componentElement.getStyle();
    if (style == null)
    {
      style = defaultStyleProvider.getDefaultStyle();
    }
    return style;
  }
 
  public void visitCodabar(CodabarComponent codabar)
  {
    CodabarBean codabarBean = new CodabarBean();
    barcode = codabarBean;
    evaluateCodabar(codabar);
    setBaseAttributes(codabar);
    if (codabar.getWideFactor() != null)
    {
      codabarBean.setWideFactor(codabar.getWideFactor().doubleValue());
    }
  }

  protected abstract void evaluateCodabar(CodabarComponent codabar);

  public void visitCode128(Code128Component code128)
  {
    barcode = new Code128Bean();
    evaluateCode128(code128);
    setBaseAttributes(code128);
  }

  protected abstract void evaluateCode128(Code128Component code128);

  public void visitDataMatrix(DataMatrixComponent dataMatrix)
  {
    DataMatrixBean dataMatrixBean = new DataMatrixBean();
    barcode = dataMatrixBean;
    evaluateDataMatrix(dataMatrix);
    setBaseAttributes(dataMatrix);
    if (dataMatrix.getShape() != null)
    {
      dataMatrixBean.setShape(SymbolShapeHint.byName(dataMatrix.getShape()));
    }
  }

  protected abstract void evaluateDataMatrix(DataMatrixComponent dataMatrix);

  public void visitEANCode128(EAN128Component ean128)
  {
    EAN128Bean ean128Bean = new EAN128Bean();
    barcode = ean128Bean;
    evaluateEANCode128(ean128);
    setBaseAttributes(ean128);
    if (ean128.getChecksumMode() != null)
    {
      ean128Bean.setChecksumMode(ChecksumMode.byName(ean128.getChecksumMode()));
    }
  }

  protected abstract void evaluateEANCode128(EAN128Component ean128);

  public void visitCode39(Code39Component code39)
  {
    Code39Bean code39Bean = new Code39Bean();
    barcode = code39Bean;
    evaluateCode39(code39);
    setBaseAttributes(code39);
    if (code39.getChecksumMode() != null)
    {
      code39Bean.setChecksumMode(ChecksumMode.byName(code39.getChecksumMode()));
    }
    if (code39.isDisplayChecksum() != null)
    {
      code39Bean.setDisplayChecksum(code39.isDisplayChecksum().booleanValue());
    }
    if (code39.isDisplayStartStop() != null)
    {
      code39Bean.setDisplayStartStop(code39.isDisplayStartStop().booleanValue());
    }
    if (code39.isExtendedCharSetEnabled() != null)
    {
      code39Bean.setExtendedCharSetEnabled(code39.isExtendedCharSetEnabled().booleanValue());
    }
    if (code39.getIntercharGapWidth() != null)
    {
      code39Bean.setIntercharGapWidth(code39.getIntercharGapWidth().doubleValue());
    }
    if (code39.getWideFactor() != null)
    {
      code39Bean.setWideFactor(code39.getWideFactor().doubleValue());
    }
  }

  protected abstract void evaluateCode39(Code39Component code39);

  protected abstract void evaluateInterleaved2Of5(Interleaved2Of5Component interleaved2Of5);

  public void visitInterleaved2Of5(Interleaved2Of5Component interleaved2Of5)
  {
    Interleaved2Of5Bean interleaved2Of5Bean = new Interleaved2Of5Bean();
    barcode = interleaved2Of5Bean;
    evaluateInterleaved2Of5(interleaved2Of5);
    setBaseAttributes(interleaved2Of5);
    if (interleaved2Of5.getChecksumMode() != null)
    {
      interleaved2Of5Bean.setChecksumMode(ChecksumMode.byName(interleaved2Of5.getChecksumMode()));
    }
    if (interleaved2Of5.isDisplayChecksum() != null)
    {
      interleaved2Of5Bean.setDisplayChecksum(interleaved2Of5.isDisplayChecksum().booleanValue());
    }
    if (interleaved2Of5.getWideFactor() != null)
    {
      interleaved2Of5Bean.setWideFactor(interleaved2Of5.getWideFactor().doubleValue());
    }
  }

  public void visitUPCA(UPCAComponent upcA)
  {
    UPCABean upcABean = new UPCABean();
    barcode = upcABean;
    evaluateUPCA(upcA);
    setBaseAttributes(upcA);
    if (upcA.getChecksumMode() != null)
    {
      upcABean.setChecksumMode(ChecksumMode.byName(upcA.getChecksumMode()));
    }
  }

  protected abstract void evaluateUPCA(UPCAComponent upcA);

  public void visitUPCE(UPCEComponent upcE)
  {
    UPCEBean upcEBean = new UPCEBean();
    barcode = upcEBean;
    evaluateUPCE(upcE);
    setBaseAttributes(upcE);
    if (upcE.getChecksumMode() != null)
    {
      upcEBean.setChecksumMode(ChecksumMode.byName(upcE.getChecksumMode()));
    }
  }

  protected abstract void evaluateUPCE(UPCEComponent upcE);

  public void visitEAN13(EAN13Component ean13)
  {
    EAN13Bean ean13Bean = new EAN13Bean();
    barcode = ean13Bean;
    evaluateEAN13(ean13);
    setBaseAttributes(ean13);
    if (ean13.getChecksumMode() != null)
    {
      ean13Bean.setChecksumMode(ChecksumMode.byName(ean13.getChecksumMode()));
    }
  }

  protected abstract void evaluateEAN13(EAN13Component ean13);

  public void visitEAN8(EAN8Component ean8)
  {
    EAN8Bean ean8Bean = new EAN8Bean();
    barcode = ean8Bean;
    evaluateEAN8(ean8);
    setBaseAttributes(ean8);
    if (ean8.getChecksumMode() != null)
    {
      ean8Bean.setChecksumMode(ChecksumMode.byName(ean8.getChecksumMode()));
    }
  }

  protected abstract void evaluateEAN8(EAN8Component ean8);

  public void visitRoyalMailCustomer(
      RoyalMailCustomerComponent royalMailCustomer)
  {
    RoyalMailCBCBean mailBean = new RoyalMailCBCBean();
    barcode = mailBean;
    evaluateRoyalMailCustomer(royalMailCustomer);
    setBaseAttributes(royalMailCustomer);
    setFourStateAttributes(royalMailCustomer, mailBean);
  }

  protected void setFourStateAttributes(
      FourStateBarcodeComponent barcodeComponent,
      AbstractFourStateBean barcodeBean)
  {
    if (barcodeComponent.getChecksumMode() != null)
    {
      barcodeBean.setChecksumMode(
          ChecksumMode.byName(barcodeComponent.getChecksumMode()));
    }
   
    if (barcodeComponent.getAscenderHeight() != null)
    {
      barcodeBean.setAscenderHeight(
          UnitConv.pt2mm(barcodeComponent.getAscenderHeight().doubleValue()));
    }
   
    if (barcodeComponent.getIntercharGapWidth() != null)
    {
      barcodeBean.setIntercharGapWidth(
          UnitConv.pt2mm(barcodeComponent.getIntercharGapWidth().doubleValue()));
    }
   
    if (barcodeComponent.getTrackHeight() != null)
    {
      barcodeBean.setTrackHeight(
          UnitConv.pt2mm(barcodeComponent.getTrackHeight().doubleValue()));
    }
  }

  protected abstract void evaluateRoyalMailCustomer(
      RoyalMailCustomerComponent royalMailCustomer);

  public void visitUSPSIntelligentMail(
      USPSIntelligentMailComponent intelligentMail)
  {
    USPSIntelligentMailBean mailBean = new USPSIntelligentMailBean();
    barcode = mailBean;
    evaluateUSPSIntelligentMail(intelligentMail);
    setBaseAttributes(intelligentMail);
    setFourStateAttributes(intelligentMail, mailBean);
  }

  protected abstract void evaluateUSPSIntelligentMail(
      USPSIntelligentMailComponent intelligentMail);

  public void visitPostnet(POSTNETComponent postnet)
  {
    POSTNETBean postnetBean = new POSTNETBean();
    barcode = postnetBean;
    evaluatePOSTNET(postnet);
    setBaseAttributes(postnet);
   
    if (postnet.getShortBarHeight() != null)
    {
      postnetBean.setShortBarHeight(
          UnitConv.pt2mm(postnet.getShortBarHeight().doubleValue()));
    }
   
    if (postnet.getBaselinePosition() != null)
    {
      postnetBean.setBaselinePosition(
          BaselineAlignment.byName(postnet.getBaselinePosition()));
    }
   
    if (postnet.getChecksumMode() != null)
    {
      postnetBean.setChecksumMode(
          ChecksumMode.byName(postnet.getChecksumMode()));
    }
   
    if (postnet.getDisplayChecksum() != null)
    {
      postnetBean.setDisplayChecksum(
          postnet.getDisplayChecksum().booleanValue());
    }
   
    if (postnet.getIntercharGapWidth() != null)
    {
      postnetBean.setIntercharGapWidth(
          UnitConv.pt2mm(postnet.getIntercharGapWidth().doubleValue()));
    }
  }

  protected abstract void evaluatePOSTNET(
      POSTNETComponent intelligentMail);

  public void visitPDF417(PDF417Component pdf417)
  {
    PDF417Bean pdf417Bean = new PDF417Bean();
    barcode = pdf417Bean;
    evaluatePDF417(pdf417);
    setBaseAttributes(pdf417);
   
    if (pdf417.getMinColumns() != null)
    {
      pdf417Bean.setMinCols(pdf417.getMinColumns().intValue());
    }
    if (pdf417.getMaxColumns() != null)
    {
      pdf417Bean.setMaxCols(pdf417.getMaxColumns().intValue());
    }
    if (pdf417.getMinRows() != null)
    {
      pdf417Bean.setMinRows(pdf417.getMinRows().intValue());
    }
    if (pdf417.getMaxRows() != null)
    {
      pdf417Bean.setMaxRows(pdf417.getMaxRows().intValue());
    }
    if (pdf417.getWidthToHeightRatio() != null)
    {
      pdf417Bean.setWidthToHeightRatio(
          pdf417.getWidthToHeightRatio().doubleValue());
    }
    if (pdf417.getErrorCorrectionLevel() != null)
    {
      pdf417Bean.setErrorCorrectionLevel(
          pdf417.getErrorCorrectionLevel().intValue());
    }
  }

  protected abstract void evaluatePDF417(PDF417Component pdf417);

}
TOP

Related Classes of net.sf.jasperreports.components.barcode4j.AbstractBarcodeEvaluator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.