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.app;
20  
21  import java.util.Collection;
22  
23  import org.apache.creadur.whisker.app.analysis.LicenseAnalyst;
24  import org.apache.creadur.whisker.model.Descriptor;
25  import org.apache.creadur.whisker.scan.Directory;
26  
27  /**
28   * A pluggable template.
29   */
30  public abstract class AbstractEngine {
31  
32      /**
33       * Writes templates to help create meta-data.
34       * @param withBase from this base, not null
35       * @param writerFactory not null
36       * @param configuration not null
37       * @return this
38       * @throws Exception when creation fails
39       */
40      public abstract AbstractEngine skeleton(
41              Collection<Directory> withBase,
42              ResultWriterFactory writerFactory, Configuration configuration) throws Exception;
43  
44      /**
45       * Reports validations.
46       * @param analyst not null
47       * @param writerFactory not null
48       * @param configuration not null
49       * @return not null
50       * @throws Exception when report creation fails
51       */
52      public abstract AbstractEngine validate(LicenseAnalyst analyst,
53              ResultWriterFactory writerFactory, Configuration configuration) throws Exception;
54  
55      /**
56       * Writes a report describing the directories present.
57       * @param directories not null
58       * @param writerFactory not null
59       * @param configuration not null
60       * @return this
61       * @throws Exception when report creation fails
62       */
63      public abstract AbstractEngine report(
64              final Collection<Directory> directories,
65              ResultWriterFactory writerFactory, Configuration configuration) throws Exception;
66  
67      /**
68       * Writes legal documents.
69       * @param work not null
70       * @param writerFactory not null
71       * @param configuration not null
72       * @return this
73       * @throws Exception when report creation fails
74       */
75      public abstract AbstractEngine generate(final Descriptor work,
76              ResultWriterFactory writerFactory, Configuration configuration) throws Exception;
77  
78  }