summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileDocumentProcessor.java
diff options
context:
space:
mode:
authoradrianocrestani <adrianocrestani@13f79535-47bb-0310-9956-ffa450edef68>2009-07-05 07:04:56 +0000
committeradrianocrestani <adrianocrestani@13f79535-47bb-0310-9956-ffa450edef68>2009-07-05 07:04:56 +0000
commit7d544d6b11dc6494170c293e6897ed6d72612d06 (patch)
tree18f24b6d896fcf0c8cfa5a6a041df082dd7672f3 /branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileDocumentProcessor.java
parentb4f758f88e8c97be870ba86080d7f0adb6dafb65 (diff)
applying patch tuscany_2552_phillipe_ramalho_07_04_2009.patch.txt from TUSCANY-2552
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@791203 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r--branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileDocumentProcessor.java88
1 files changed, 62 insertions, 26 deletions
diff --git a/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileDocumentProcessor.java b/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileDocumentProcessor.java
index 27eb52d659..138c9c42e9 100644
--- a/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileDocumentProcessor.java
+++ b/branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileDocumentProcessor.java
@@ -1,50 +1,86 @@
package org.apache.tuscany.sca.domain.search.impl;
-import java.io.File;
+import java.util.LinkedList;
import org.apache.lucene.document.Field;
import org.apache.tuscany.sca.domain.search.DocumentMap;
import org.apache.tuscany.sca.domain.search.DocumentProcessor;
-import org.apache.tuscany.sca.domain.search.DocumentProcessorsMap;
-public class FileDocumentProcessor implements DocumentProcessor {
+public class FileDocumentProcessor extends LinkedList<DocumentProcessor>
+ implements DocumentProcessor {
- public Document process(DocumentProcessorsMap processors,
+ private static final long serialVersionUID = 7843338343970738591L;
+
+ public Document process(DocumentProcessor parentProcessor,
DocumentMap documents, Object object, Document doc, String parent) {
- if (object instanceof File) {
- File file = (File) object;
- documents.get(file.getAbsoluteFile());
-
- if (file.isFile()) {
- doc.add(new Field(SearchFields.DIRECTORY_FIELD, file.getAbsolutePath(),
- Field.Store.YES, Field.Index.ANALYZED));
-
- parent += DomainPathAnalyzer.PATH_SEPARATOR + SearchFields.FILE_FIELD + DomainPathAnalyzer.TYPE_SEPARATOR + file.getName();
-
- File[] files = file.listFiles();
-
- for (File childFile : files) {
- Document fileDoc = processors.process(processors, documents, childFile, null, parent);
-
+ if (object instanceof FileContent) {
+ FileContent file = (FileContent) object;
+
+ if (!file.isLeaf()) {
+
+ if (doc == null) {
+ doc = documents.get(file.getPath());
+ }
+
+ doc.add(new Field(SearchFields.DIRECTORY_FIELD, file
+ .getPath(), Field.Store.YES,
+ Field.Index.ANALYZED));
+
+ parent += DomainPathAnalyzer.PATH_SEPARATOR
+ + SearchFields.FILE_FIELD
+ + DomainPathAnalyzer.TYPE_SEPARATOR + file.getPath()
+ + DomainPathAnalyzer.URI_SEPARATOR + file.getName();
+
+ FileContent[] files = file.getChildren();
+
+ for (FileContent childFile : files) {
+ Document fileDoc = parentProcessor.process(parentProcessor,
+ documents, childFile, null, parent);
+
fileDoc.add(new Field(SearchFields.PARENT_FIELD, parent,
Field.Store.YES, Field.Index.ANALYZED));
-
+
}
+ return doc;
+
+ } else {
+
+ for (DocumentProcessor processor : this) {
+ Document newDoc = processor.process(this, documents,
+ object, doc, parent);
+
+ if (newDoc != null) {
+ return newDoc;
+ }
+
+ }
+
}
-
- return doc;
}
-
- throw new IllegalArgumentException();
+
+ return doc;
}
public Object getDocumentKey(Object object) {
- // TODO Auto-generated method stub
- return null;
+
+ if (object instanceof FileContent) {
+ FileContent file = (FileContent) object;
+ String path = file.getPath();
+
+ if (path != null && path.length() == 0) {
+ return null;
+ }
+
+ return path;
+
+ }
+
+ throw new IllegalArgumentException();
+
}
}