View Javadoc
1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    *  to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    *  with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.creadur.whisker.out.velocity;
20  
21  import org.apache.commons.lang3.StringUtils;
22  import org.apache.creadur.whisker.app.Configuration;
23  import org.apache.creadur.whisker.model.ByOrganisation;
24  import org.apache.creadur.whisker.model.Descriptor;
25  import org.apache.creadur.whisker.model.Resource;
26  import org.apache.creadur.whisker.model.WithLicense;
27  
28  /**
29   * Factors out rendering logic from template.
30   */
31  public class RenderingHelper {
32  
33      /**
34       * The work being rendered, not null
35       */
36      private final Descriptor work;
37  
38      /**
39       * Configuration for the rendering.
40       */
41      private final Configuration configuration;
42  
43      /**
44       * Constructs a helper for the given work and configuration.
45       * @param work not null
46       * @param configuration not null
47       */
48      public RenderingHelper(final Descriptor work, final Configuration configuration) {
49          super();
50          this.work = work;
51          this.configuration = configuration;
52      }
53  
54      /**
55       * Should resources with the given license by
56       * the given organisation be rendered?
57       * @param organisation not null
58       * @param license not null
59       * @return true when resources should be rendered,
60       * false otherwise
61       */
62      public boolean renderResources(final ByOrganisation organisation,
63              final WithLicense license) {
64          return isNot(
65                  primary(organisation)) ||
66                  isNot(primary(license)) ||
67                  license.hasCopyrightNotice();
68      }
69  
70      /**
71       * Is this license the primary license for the work?
72       * @param license not null
73       * @return true when this is the primary license
74       * for the work, false otherwise
75       */
76      private boolean primary(final WithLicense license) {
77          return work.isPrimary(license.getLicense());
78      }
79  
80      /**
81       * Is this the primary organisation?
82       * @param organisation true when this is the primary license,
83       * false otherwise
84       * @return
85       */
86      private boolean primary(final ByOrganisation organisation) {
87          return work.isPrimary(organisation);
88      }
89  
90      /**
91       * Negates claim.
92       * @param claim to be negated
93       * @return true when claim is false,
94       * false when true
95       */
96      public boolean isNot(boolean claim) {
97          return !claim;
98      }
99  
100     /**
101      * Renders the resource source URL
102      * based on configuration setting suitable
103      * for the license file.
104      * @param resource not null
105      * @return not null, possible empty string
106      */
107     public String sourceUrl(final Resource resource) {
108         final String result;
109         final String source = resource.getSource();
110         if (StringUtils.isBlank(source) || isNot(configuration.includeSourceURLsInLicense())) {
111             result = "";
112         } else {
113             result = " from " + source;
114         }
115         return result;
116     }
117 }