001 /* 002 * mesopotamia @mesopotamia.version@ 003 * Multilingual parser and repository. 004 * Copyright (C) 2005 Hammurapi Group 005 * 006 * This program is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 2 of the License, or (at your option) any later version. 010 * 011 * This program is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public 017 * License along with this library; if not, write to the Free Software 018 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 019 * 020 * URL: http://http://www.hammurapi.biz 021 * e-Mail: support@hammurapi.biz 022 */ 023 package org.mesopotamia; 024 025 import java.io.File; 026 import java.util.ArrayList; 027 import java.util.Collection; 028 029 import org.w3c.dom.Node; 030 import org.w3c.dom.NodeList; 031 032 import biz.hammurapi.config.Component; 033 import biz.hammurapi.config.ConfigurationException; 034 import biz.hammurapi.config.Context; 035 import biz.hammurapi.config.DomConfigurable; 036 import biz.hammurapi.config.Wrapper; 037 import biz.hammurapi.xml.dom.AbstractDomObject; 038 import biz.hammurapi.xml.dom.DOMUtils; 039 040 041 public class FileSourceIteratorComponent implements Component, Wrapper, DomConfigurable { 042 private FileSourceIterator master; 043 private Collection<File> sources=new ArrayList<File>(); 044 045 public FileSourceIteratorComponent() { 046 super(); 047 } 048 049 public void start() throws ConfigurationException { 050 master=new FileSourceIterator(sources); 051 } 052 053 public void stop() throws ConfigurationException { 054 master=null; 055 sources.clear(); 056 } 057 058 public void setOwner(Object owner) { 059 // This component doesnt' care about the environment. 060 } 061 062 public Object getMaster() { 063 return master; 064 } 065 066 public void configure(Node configNode, Context context, ClassLoader classLoader) throws ConfigurationException { 067 try { 068 NodeList nl=DOMUtils.selectNodeList(configNode, "source"); 069 for (int i=0, l=nl.getLength(); i<l; ++i) { 070 sources.add(new File(AbstractDomObject.getElementText(nl.item(i)))); 071 } 072 } catch (Exception e) { 073 throw new ConfigurationException("Cannot configure "+this+": "+e, e); 074 } 075 076 } 077 078 }