diff options
author | adrianocrestani <adrianocrestani@13f79535-47bb-0310-9956-ffa450edef68> | 2009-07-05 07:04:56 +0000 |
---|---|---|
committer | adrianocrestani <adrianocrestani@13f79535-47bb-0310-9956-ffa450edef68> | 2009-07-05 07:04:56 +0000 |
commit | 7d544d6b11dc6494170c293e6897ed6d72612d06 (patch) | |
tree | 18f24b6d896fcf0c8cfa5a6a041df082dd7672f3 /branches/sca-java-1.x/modules/domain-search/src/main/java/org/apache/tuscany/sca/domain/search/impl/FileDocumentProcessor.java | |
parent | b4f758f88e8c97be870ba86080d7f0adb6dafb65 (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.java | 88 |
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(); + } } |