annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
1 package de.mpiwg.itgroup.indexMeta2RDF;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
2
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
3
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
4 /*
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
5 * Copyright 2000-2004 The Apache Software Foundation
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
6 *
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
7 * Licensed under the Apache License, Version 2.0 (the "License");
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
8 * you may not use this file except in compliance with the License.
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
9 * You may obtain a copy of the License at
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
10 *
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
11 * http://www.apache.org/licenses/LICENSE-2.0
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
12 *
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
13 * Unless required by applicable law or agreed to in writing, software
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
14 * distributed under the License is distributed on an "AS IS" BASIS,
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
16 * See the License for the specific language governing permissions and
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
17 * limitations under the License.
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
18 *
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
19 */
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
20
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
21 import java.io.File;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
22 import java.io.FileInputStream;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
23 import java.io.IOException;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
24 import java.util.ArrayList;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
25 import java.util.Enumeration;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
26 import java.util.Iterator;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
27 import java.util.List;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
28 import java.util.Stack;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
29 import java.util.Vector;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
30
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
31
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
32
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
33 import org.apache.log4j.Logger;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
34 import org.jdom.Document;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
35 import org.jdom.JDOMException;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
36 import org.jdom.input.SAXBuilder;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
37
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
38
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
39 /**
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
40 * An iterator which iterates through the contents of a java directory. The
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
41 * iterator should be created with the directory at the root of the Java
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
42 * namespace.
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
43 *
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
44 */
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
45 public class IndexMetaIterator implements Iterator<String> {
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
46
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
47 private File rootFolder;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
48 private File currentFolder;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
49 private Stack<String> stack;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
50 private ArrayList<String>filter; //Array of paths which shouldn'T be indexed
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
51
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
52 public IndexMetaIterator(File rootFolder) throws IOException{
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
53
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
54 filter = new ArrayList<String>();
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
55 filter.add("/mpiwg/online/permanent/SudanRockArt"); // TODO: make this configurable
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
56
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
57 this.rootFolder=rootFolder;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
58 this.currentFolder=rootFolder;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
59 this.stack = new Stack<String>();
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
60
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
61 for (String f:rootFolder.list()){
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
62 String fn = rootFolder.getCanonicalPath()+"/"+f;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
63 if (!filter.contains(fn)){
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
64 if (!f.equals("")){ // FIXME some filesystems (sshfs?) gives empty filenames if the path contains special characters.
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
65 stack.push(fn);}
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
66 else {
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
67 Logger.getLogger("notAddedFilesLogger").info("Folder -" +fn+" contains files with charakters I cannot read!" );
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
68 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
69 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
70 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
71 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
72 @Override
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
73 public boolean hasNext() {
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
74 // TODO Auto-generated method stub
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
75 return !stack.isEmpty();
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
76 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
77
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
78 @Override
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
79 public String next() {
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
80 // TODO Auto-generated method stub
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
81 String nextFile = stack.pop();
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
82 while(!nextFile.endsWith(".meta") && !stack.isEmpty()){
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
83 System.out.println("CHECK_________"+nextFile);
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
84
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
85
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
86 if(!nextFile.endsWith("pageimg")){ //skip pageimg
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
87
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
88
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
89 File nf = new File(nextFile);
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
90
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
91
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
92 if(nf.isDirectory()){
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
93 String[] ls = nf.list();
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
94 if (ls==null){
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
95 return null;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
96 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
97 for (String f:ls){
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
98 String fn;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
99 try {
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
100 if (!f.startsWith(".")){
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
101 fn = nf.getCanonicalPath()+"/"+f;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
102 if (!filter.contains(fn)){
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
103 if (!f.equals("")) {// FIXME some filesystems (sshfs?) gives empty filenames if the path contains special characters.
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
104 stack.push(fn);}
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
105 else {
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
106 Logger.getLogger("notAddedFilesLogger").info("Folder -" +fn+" contains files with characters I cannot read!" );
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
107 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
108
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
109 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
110 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
111 } catch (IOException e) {
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
112 // TODO Auto-generated catch block
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
113 e.printStackTrace();
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
114 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
115
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
116 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
117 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
118 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
119
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
120 nextFile = stack.pop();
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
121
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
122 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
123 if (!nextFile.endsWith(".meta")) //der letzte Eintrag muss noch gretrennt getestet werden.
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
124 nextFile = null;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
125 System.out.println("FOUND:"+nextFile);
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
126
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
127 if (nextFile!=null)
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
128 return nextFile;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
129
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
130 return null;
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
131 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
132
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
133
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
134 @Override
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
135 public void remove() {
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
136 // TODO Auto-generated method stub
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
137
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
138 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
139
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
140
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
141
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
142 }
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
143
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
144
e93de4e99b52 indexMeta2rdf in dieses Projekt verschoben
dwinter
parents:
diff changeset
145