View Javadoc
1   /*
2    * Copyright (c) 2002-2014, Mairie de Paris
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions
7    * are met:
8    *
9    *  1. Redistributions of source code must retain the above copyright notice
10   *     and the following disclaimer.
11   *
12   *  2. Redistributions in binary form must reproduce the above copyright notice
13   *     and the following disclaimer in the documentation and/or other materials
14   *     provided with the distribution.
15   *
16   *  3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
17   *     contributors may be used to endorse or promote products derived from
18   *     this software without specific prior written permission.
19   *
20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
24   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30   * POSSIBILITY OF SUCH DAMAGE.
31   *
32   * License 1.0
33   */
34  package fr.paris.lutece.plugins.genericattributes.modules.ocr.service;
35  
36  import java.util.Arrays;
37  import java.util.List;
38  
39  import org.apache.commons.fileupload.FileItem;
40  
41  import fr.paris.lutece.plugins.genericattributes.business.IOcrProvider;
42  import fr.paris.lutece.plugins.genericattributes.business.Response;
43  import fr.paris.lutece.plugins.genericattributes.modules.ocr.exceptions.CallOcrException;
44  import fr.paris.lutece.plugins.genericattributes.modules.ocr.utils.OcrProviderUtils;
45  import fr.paris.lutece.portal.service.util.AppPropertiesService;
46  import fr.paris.lutece.util.ReferenceItem;
47  import fr.paris.lutece.util.ReferenceList;
48  
49  /**
50   *
51   * OcrProvider : provides ocr RIB support for Generic Attributes
52   *
53   */
54  public class OcrRibProvider implements IOcrProvider
55  {
56      private static final long serialVersionUID = 6224042984367506762L;
57      private static final String PROPERTY_KEY = "genericattributes-ocr.RIB.key";
58      private static final String PROPERTY_DISPLAYED_NAME = "genericattributes-ocr.RIB.displayName";
59      private static final String PROPERTY_AUTHORIZED_ENTRY_TYPE = "genericattributes-ocr.RIB.authorizedEntryType";
60      private static final String PROPERTY_MAPPED_FIELDS = "genericattributes-ocr.RIB.mappedFields";
61  
62      /**
63       * {@inheritDoc}
64       */
65      @Override
66      public String getKey( )
67      {
68          return AppPropertiesService.getProperty( PROPERTY_KEY );
69      }
70  
71      /**
72       * {@inheritDoc}
73       */
74      @Override
75      public String getDisplayedName( )
76      {
77          return AppPropertiesService.getProperty( PROPERTY_DISPLAYED_NAME );
78      }
79  
80      /**
81       * {@inheritDoc}
82       */
83      @Override
84      public ReferenceItem toRefItem( )
85      {
86          ReferenceItem refItem = new ReferenceItem( );
87  
88          refItem.setCode( getKey( ) );
89          refItem.setName( getDisplayedName( ) );
90  
91          return refItem;
92      }
93  
94      /**
95       * {@inheritDoc}
96       */
97      @Override
98      public String toString( )
99      {
100         return "Ocr RIB Provider";
101     }
102 
103     /**
104      * {@inheritDoc}
105      */
106     @Override
107     public Object getParameter( int nKey )
108     {
109         // TODO Auto-generated method stub
110         return null;
111     }
112 
113     /**
114      * {@inheritDoc}
115      */
116     @Override
117     public ReferenceList getListField( )
118     {
119         ReferenceList refListField = new ReferenceList( );
120 
121         List<String> lstMappedField = Arrays.asList( AppPropertiesService.getProperty( PROPERTY_MAPPED_FIELDS ).split( "," ) );
122         int nIndex = 0;
123         while ( nIndex < lstMappedField.size( ) )
124         {
125             refListField.addItem( nIndex, lstMappedField.get( nIndex ) );
126             nIndex++;
127         }
128 
129         return refListField;
130     }
131 
132     /**
133      * {@inheritDoc}
134      */
135     @Override
136     public ReferenceItem getFieldById( int idField )
137     {
138         return getListField( ).get( idField );
139     }
140 
141     /**
142      * {@inheritDoc}
143      */
144     /*
145      * @Override public List<Integer> getAuthorizedEntryType() { String strAuthorizedEntryType = AppPropertiesService.getProperty(
146      * PROPERTY_AUTHORIZED_ENTRY_TYPE ); Pattern pattern = Pattern.compile("-"); return
147      * pattern.splitAsStream(strAuthorizedEntryType).map(Integer::valueOf).collect(Collectors.toList()); }
148      */
149 
150     @Override
151     public String getConfigHtmlCode( ReferenceList lisEntry, int nIdQuestion, String strResourceType )
152     {
153 
154         return OcrProviderUtils.builtTempalteConfiog( lisEntry, this, nIdQuestion, strResourceType ).getHtml( );
155     }
156 
157     /**
158      * {@inheritDoc}
159      * 
160      * @throws CallOcrException
161      */
162     @Override
163     public List<Response> process( FileItem fileUploaded, int nIdTargetEntry, String strResourceType ) throws CallOcrException
164     {
165         return OcrProviderUtils.process( fileUploaded, nIdTargetEntry, strResourceType, getKey( ), getListField( ) );
166     }
167 
168     @Override
169     public String getHtmlCode( int nIdTargetEntry, String strResourceType )
170     {
171 
172         return OcrProviderUtils.builtTempalteCode( nIdTargetEntry, strResourceType ).getHtml( );
173 
174     }
175 
176 }