01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: *
17: */
18: package org.apache.lenya.cms.lucene;
19:
20: import org.apache.lenya.cms.publication.Area;
21: import org.apache.lenya.cms.publication.Document;
22: import org.apache.lenya.cms.publication.DocumentFactory;
23: import org.apache.lenya.cms.publication.Publication;
24: import org.apache.lenya.cms.publication.URLInformation;
25: import org.apache.lenya.cms.usecase.AbstractUsecase;
26:
27: /**
28: * Index all documents of the current publication in the current area.
29: */
30: public class IndexSite extends AbstractUsecase {
31:
32: public void doExecute() throws Exception {
33: String url = getSourceURL();
34: URLInformation info = new URLInformation(url);
35: String pubId = info.getPublicationId();
36:
37: DocumentFactory factory = getDocumentFactory();
38: Publication pub = factory.getPublication(pubId);
39: Area area = pub.getArea(info.getArea());
40:
41: Document[] docs = area.getDocuments();
42:
43: IndexUpdater updater = null;
44: try {
45: updater = (IndexUpdater) this .manager
46: .lookup(IndexUpdater.ROLE);
47: for (int i = 0; i < docs.length; i++) {
48: try {
49: updater.index(getSession(), docs[i]
50: .getResourceType(), pubId, area.getName(),
51: docs[i].getUUID(), docs[i].getLanguage());
52: } catch (Exception e) {
53: String message = "Error indexing document ["
54: + docs[i].getPath() + ":"
55: + docs[i].getLanguage() + "], UUID="
56: + docs[i].getUUID();
57: addErrorMessage(e
58: + ", see logfiles for more information.");
59: getLogger().error(message, e);
60: }
61: }
62: } finally {
63: if (updater != null) {
64: this.manager.release(updater);
65: }
66: }
67: }
68: }
|