Mercurial > hg > eSciDocImport
view src/de/mpiwg/itgroup/eSciDoc/foxridge/IndexMetaIterator.java @ 8:a844f6948dd8
?nderungen im Walker
tools f?r pubman
author | dwinter |
---|---|
date | Mon, 14 May 2012 09:58:45 +0200 |
parents | 6b0267cb40ed |
children | b6cf6462d709 |
line wrap: on
line source
package de.mpiwg.itgroup.eSciDoc.foxridge; /* * Copyright 2000-2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; import java.util.Stack; import java.util.Vector; import org.apache.log4j.Logger; import org.jdom.Document; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import de.mpiwg.itgroup.eSciDoc.echoObjects.ECHOObject; import de.mpiwg.itgroup.eSciDoc.echoObjects.ECHORessource; /** * An iterator which iterates through the contents of a java directory. The * iterator should be created with the directory at the root of the Java * namespace. * */ public class IndexMetaIterator implements Iterator<ECHOObject> { private File rootFolder; private File currentFolder; private Stack<String> stack; private ArrayList<String>filter; //Array of paths which shouldn'T be indexed public IndexMetaIterator(File rootFolder) throws IOException{ filter = new ArrayList<String>(); filter.add("/mpiwg/online/permanent/SudanRockArt"); // TODO: make this configurable this.rootFolder=rootFolder; this.currentFolder=rootFolder; this.stack = new Stack<String>(); for (String f:rootFolder.list()){ String fn = rootFolder.getCanonicalPath()+"/"+f; if (!filter.contains(fn)){ if (!f.equals("")){ // FIXME some filesystems (sshfs?) gives empty filenames if the path contains special characters. stack.push(fn);} else { Logger.getLogger("notAddedFilesLogger").info("Folder -" +fn+" contains files with charakters I cannot read!" ); } } } } @Override public boolean hasNext() { // TODO Auto-generated method stub return !stack.isEmpty(); } @Override public ECHOObject next() { // TODO Auto-generated method stub String nextFile = stack.pop(); while(!nextFile.endsWith(".meta") && !stack.isEmpty()){ System.out.println("CHECK_________"+nextFile); if(!nextFile.equals("pageimg")){ //skip pageimg File nf = new File(nextFile); if(nf.isDirectory()){ for (String f:nf.list()){ String fn; try { if (!f.startsWith(".")){ fn = nf.getCanonicalPath()+"/"+f; if (!filter.contains(fn)){ if (!f.equals("")) {// FIXME some filesystems (sshfs?) gives empty filenames if the path contains special characters. stack.push(fn);} else { Logger.getLogger("notAddedFilesLogger").info("Folder -" +fn+" contains files with characters I cannot read!" ); } } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } nextFile = stack.pop(); } if (!nextFile.endsWith(".meta")) //der letzte Eintrag muss noch gretrennt getestet werden. nextFile = null; System.out.println("FOUND:"+nextFile); try { if (nextFile!=null) return createECHOObject(new File(nextFile)); } catch (JDOMException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } private ECHOObject createECHOObject(File nextFile) throws Exception { //Document doc = new SAXBuilder().build(nextFile); try{ FoxridgeRessource er = new FoxridgeRessource(nextFile.getParentFile().getName(),nextFile.getParentFile().getAbsolutePath(),null); er.metaData = er.correctML(nextFile.getAbsolutePath()); //er.pid=er.getPid(); //TODO: not needed any more? er.echoUrl=er.metaData; //TODO find a better solution, what to present here, z.b. texttool-tag auswerten. return er; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); throw new Exception(); } } @Override public void remove() { // TODO Auto-generated method stub } }