ca3293342b5c40f8485a0abda5ddaf9ac6c7e9d1
[utils] / crawler / basic / src / main / java / org / wamblee / crawler / impl / ConfigurationImpl.java
1 /*
2  * Copyright 2005 the original author or authors.
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * 
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.wamblee.crawler.impl;
18
19 import java.util.List;
20
21 import org.wamblee.crawler.Configuration;
22 import org.wamblee.crawler.PageRequest;
23 import org.wamblee.crawler.PageType;
24
25 /**
26  * Implementation of the configuration for the crawler.
27  *
28  * @author Erik Brakkee
29  */
30 public class ConfigurationImpl implements Configuration {
31
32     private List<UrlConfig> _urlConfig;
33
34     private List<PageTypeConfig> _pageTypeConfig;
35
36     /**
37      * Constructs the configuration. 
38      * @param aUrlConfig List of URL configuration elements. 
39      * @param aPageTypeConfig List of page type configuration elements. 
40      */
41     public ConfigurationImpl(List<UrlConfig> aUrlConfig,
42             List<PageTypeConfig> aPageTypeConfig) {
43         _urlConfig = aUrlConfig;
44         _pageTypeConfig = aPageTypeConfig;
45     }
46
47     /*
48      * (non-Javadoc)
49      * 
50      * @see org.wamblee.crawler.Configuration#getRequest(java.lang.String)
51      */
52     public PageRequest getRequest(String aUrl) {
53
54         for (UrlConfig config : _urlConfig) {
55             PageRequest request = config.getRequest(aUrl);
56             if (request != null) {
57                 return request;
58             }
59         }
60         throw new RuntimeException("No configuration matched the URL '" + aUrl
61                 + "'");
62     }
63
64     /*
65      * (non-Javadoc)
66      * 
67      * @see org.wamblee.crawler.Configuration#getRequest(org.wamblee.crawler.PageType)
68      */
69     public PageRequest getRequest(PageType aType) {
70         for (PageTypeConfig config : _pageTypeConfig) {
71             PageRequest request = config.getRequest(aType.getType());
72             if (request != null) {
73                 return request;
74             }
75         }
76         throw new RuntimeException("No configuration matched type '" + aType
77                 + "'");
78     }
79 }