View Javadoc

1   /*******************************************************************************
2    * Copyright (c) 2015 LegSem.
3    * All rights reserved. This program and the accompanying materials
4    * are made available under the terms of the GNU Lesser Public License v2.1
5    * which accompanies this distribution, and is available at
6    * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
7    * 
8    * Contributors:
9    *     LegSem - initial API and implementation
10   ******************************************************************************/
11  package com.legstar.coxb.impl;
12  
13  import com.legstar.coxb.CobolElement;
14  import com.legstar.coxb.ICobolComplexBinding;
15  import com.legstar.coxb.ICobolNationalBinding;
16  import com.legstar.coxb.CobolElementVisitor;
17  import com.legstar.coxb.host.HostException;
18  import com.legstar.coxb.util.PictureUtil;
19  
20  /**
21   * This class implements the behavior of a national cobol element bound to
22   * a JAXB String property.
23   *
24   * @author Fady Moussallam
25   * 
26   */
27  public class CNationalBinding extends AbstractAlphaNumericBinding
28  implements ICobolNationalBinding {
29  
30      /**
31       * Constructor for a cobol element to java binding.
32       * 
33       * @param bindingName the identifier for this binding
34       * @param jaxbName the name of the bound java property
35       * @param jaxbType the type of the bound java property
36       * @param cobolAnnotations the cobol annotations for this element
37       * @param parentBinding a reference to the parent binding
38       */
39      public CNationalBinding(
40              final String bindingName,
41              final String jaxbName,
42              final Class < ? > jaxbType,
43              final CobolElement cobolAnnotations,
44              final ICobolComplexBinding parentBinding) {
45          super(bindingName, jaxbName, jaxbType, cobolAnnotations, parentBinding);
46      }
47  
48      /** {@inheritDoc} */
49      public void accept(final CobolElementVisitor cev)
50      throws HostException {
51          cev.visit(this);
52      }
53  
54      /** {@inheritDoc} */
55      public int calcByteLength() {
56          return calcNationalByteLength(getPicture());
57      }
58  
59      /**
60       * Calculates the host byte length for a PIC N(n).
61       * @param picture the picture clause
62       * @return the host byte length for a PIC N(n)
63       */
64      public static int calcNationalByteLength(final String picture) {
65          return 2 * PictureUtil.getSymbolsNumber('N', picture);
66      }
67  
68  }