View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *  http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.any23.extractor;
19  
20  import java.util.List;
21  
22  /**
23   * An interface to the enable a registry for extractors to be implemented by different implementors of this API.
24   * 
25   * @author Peter Ansell p_ansell@yahoo.com
26   */
27  public interface ExtractorRegistry {
28  
29      /**
30       * Registers an {@link ExtractorFactory}.
31       * 
32       * @param factory
33       *            an {@link ExtractorFactory} to register.
34       * 
35       * @throws IllegalArgumentException
36       *             if trying to register a {@link ExtractorFactory} that already exists in the registry.
37       */
38      void register(ExtractorFactory<?> factory);
39  
40      /**
41       * 
42       * Retrieves a {@link ExtractorFactory} given its name
43       * 
44       * @param name
45       *            The name of the desired factory
46       * 
47       * @return The {@link ExtractorFactory} associated to the provided name
48       * 
49       * @throws IllegalArgumentException
50       *             If there is not an {@link ExtractorFactory} associated to the provided name.
51       */
52      ExtractorFactory<?> getFactory(String name);
53  
54      /**
55       * @return An {@link ExtractorGroup} with all the registered {@link Extractor}.
56       */
57      ExtractorGroup getExtractorGroup();
58  
59      /**
60       * Returns an {@link ExtractorGroup} containing the {@link ExtractorFactory} mathing the names provided as input.
61       * 
62       * @param names
63       *            A {@link java.util.List} containing the names of the desired {@link ExtractorFactory}.
64       * 
65       * @return the extraction group.
66       */
67      ExtractorGroup getExtractorGroup(List<String> names);
68  
69      /**
70       * 
71       * @param name
72       *            The name of the {@link ExtractorFactory}
73       * 
74       * @return <code>true</code> if is there a {@link ExtractorFactory} associated to the provided name.
75       */
76      boolean isRegisteredName(String name);
77  
78      /**
79       * Returns the names of all registered extractors, sorted alphabetically.
80       * 
81       * @return an alphabetically sorted {@link java.util.List}
82       */
83      List<String> getAllNames();
84  
85      void unregister(String name);
86  
87  }