View Javadoc

1   /*
2    * Copyright (C) 2017-2019 Centre National d'Etudes Spatiales (CNES).
3    *
4    * This library is free software; you can redistribute it and/or
5    * modify it under the terms of the GNU Lesser General Public
6    * License as published by the Free Software Foundation; either
7    * version 3.0 of the License, or (at your option) any later version.
8    *
9    * This library is distributed in the hope that it will be useful,
10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   * Lesser General Public License for more details.
13   *
14   * You should have received a copy of the GNU Lesser General Public
15   * License along with this library; if not, write to the Free Software
16   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17   * MA 02110-1301  USA
18   */
19  package fr.cnes.doi.resource.citation;
20  
21  import fr.cnes.doi.application.DoiCrossCiteApplication;
22  import fr.cnes.doi.resource.AbstractResource;
23  import org.apache.logging.log4j.Logger;
24  import org.restlet.data.MediaType;
25  import org.restlet.ext.wadl.DocumentationInfo;
26  import org.restlet.ext.wadl.RepresentationInfo;
27  import org.restlet.resource.ResourceException;
28  
29  /**
30   * Base resource for CrossCite application.
31   *
32   * @author Jean-Christophe Malapert (jean-christophe.malapert@cnes.fr)
33   */
34  public class BaseCitationResource extends AbstractResource {
35  
36      /**
37       * Parameter providing the digital object identifier
38       * {@value #DOI_PARAMETER}.
39       */
40      public static final String DOI_PARAMETER = "doi";
41  
42      /**
43       * Language parameter to format the citation {@value #LANG_PARAMETER}.
44       */
45      public static final String LANG_PARAMETER = "lang";
46  
47      /**
48       * Style parameter to format the citation {@value #STYLE_PARAMETER}.
49       */
50      public static final String STYLE_PARAMETER = "style";
51  
52      /**
53       * Logger.
54       */
55      protected volatile Logger LOG;
56  
57      /**
58       * Cross cite application.
59       */
60      private volatile DoiCrossCiteApplication app;
61  
62      /**
63       * Init.
64       *
65       * @throws ResourceException - if a problem happens
66       */
67      @Override
68      protected void doInit() throws ResourceException {
69          super.doInit();
70          this.app = (DoiCrossCiteApplication) getApplication();
71          this.LOG = this.app.getLog();
72      }
73  
74      /**
75       * List representation.
76       *
77       * @param title Title of the representation
78       * @param media Media type of the response
79       * @param content Explanation of the representation
80       * @return the Wadl representation of this representation
81       */
82      protected RepresentationInfo listRepresentation(final String title,
83              final MediaType media,
84              final String content) {
85          final RepresentationInfo repInfo = new RepresentationInfo();
86          repInfo.setMediaType(media);
87          final DocumentationInfo docInfo = new DocumentationInfo();
88          docInfo.setTitle(title);
89          docInfo.setTextContent(content);
90          repInfo.setDocumentation(docInfo);
91          return repInfo;
92      }
93  
94      /**
95       * Returns CrossCiteApplication.
96       *
97       * @return the app
98       */
99      public DoiCrossCiteApplication getApp() {
100         return app;
101     }
102 }