annotate src/de/mpiwg/itgroup/eSciDoc/foxridge/IndexMetaIterator.java @ 10:ad5c0748bd08

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