Mercurial > hg > TripleStoreManager
diff src/de/mpiwg/itgroup/indexMeta2RDF/IndexMetaIterator.java @ 4:e93de4e99b52 default tip
indexMeta2rdf in dieses Projekt verschoben
author | dwinter |
---|---|
date | Thu, 21 Jun 2012 14:37:55 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/indexMeta2RDF/IndexMetaIterator.java Thu Jun 21 14:37:55 2012 +0200 @@ -0,0 +1,145 @@ +package de.mpiwg.itgroup.indexMeta2RDF; + + +/* + * 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.List; +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; + + +/** + * 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<String> { + + 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 String next() { + // TODO Auto-generated method stub + String nextFile = stack.pop(); + while(!nextFile.endsWith(".meta") && !stack.isEmpty()){ + System.out.println("CHECK_________"+nextFile); + + + if(!nextFile.endsWith("pageimg")){ //skip pageimg + + + File nf = new File(nextFile); + + + if(nf.isDirectory()){ + String[] ls = nf.list(); + if (ls==null){ + return null; + } + for (String f:ls){ + 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); + + if (nextFile!=null) + return nextFile; + + return null; + } + + + @Override + public void remove() { + // TODO Auto-generated method stub + + } + + + +} + + +