01: package org.apache.lucene.index;
02:
03: /**
04: * Licensed to the Apache Software Foundation (ASF) under one or more
05: * contributor license agreements. See the NOTICE file distributed with
06: * this work for additional information regarding copyright ownership.
07: * The ASF licenses this file to You under the Apache License, Version 2.0
08: * (the "License"); you may not use this file except in compliance with
09: * the License. You may obtain a copy of the License at
10: *
11: * http://www.apache.org/licenses/LICENSE-2.0
12: *
13: * Unless required by applicable law or agreed to in writing, software
14: * distributed under the License is distributed on an "AS IS" BASIS,
15: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16: * See the License for the specific language governing permissions and
17: * limitations under the License.
18: */
19:
20: import java.util.List;
21:
22: /**
23: * This {@link IndexDeletionPolicy} implementation that
24: * keeps only the most recent commit and immediately removes
25: * all prior commits after a new commit is done. This is
26: * the default deletion policy.
27: */
28:
29: public final class KeepOnlyLastCommitDeletionPolicy implements
30: IndexDeletionPolicy {
31:
32: /**
33: * Deletes all commits except the most recent one.
34: */
35: public void onInit(List commits) {
36: // Note that commits.size() should normally be 1:
37: onCommit(commits);
38: }
39:
40: /**
41: * Deletes all commits except the most recent one.
42: */
43: public void onCommit(List commits) {
44: // Note that commits.size() should normally be 2 (if not
45: // called by onInit above):
46: int size = commits.size();
47: for (int i = 0; i < size - 1; i++) {
48: ((IndexCommitPoint) commits.get(i)).delete();
49: }
50: }
51: }
|