~ubuntu-branches/ubuntu/trusty/pylucene/trusty

« back to all changes in this revision

Viewing changes to lucene-java-3.5.0/lucene/src/java/org/apache/lucene/index/TermsHashPerThread.java

  • Committer: Package Import Robot
  • Author(s): Dmitry Nezhevenko
  • Date: 2012-04-23 16:43:55 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20120423164355-grqtepnwtecdjfk2
Tags: 3.5.0-1
* New maintainer (closes: 670179)
* New upstream release
* Switch to dpkg-source 3.0 (quilt) format
* Switch to machine-readable debian/copyright
* Bump debian/compat to 8, drop debian/pycompat
* Switch from cdbs to dh
* Add watch file
* Build for all supported versions of python2 (closes: 581198, 632240)
* Rename binary package to python-lucene (closes: 581197)
* Add -dbg package

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.apache.lucene.index;
 
2
 
 
3
/**
 
4
 * Licensed to the Apache Software Foundation (ASF) under one or more
 
5
 * contributor license agreements.  See the NOTICE file distributed with
 
6
 * this work for additional information regarding copyright ownership.
 
7
 * The ASF licenses this file to You under the Apache License, Version 2.0
 
8
 * (the "License"); you may not use this file except in compliance with
 
9
 * 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.io.IOException;
 
21
 
 
22
final class TermsHashPerThread extends InvertedDocConsumerPerThread {
 
23
 
 
24
  final TermsHash termsHash;
 
25
  final TermsHashConsumerPerThread consumer;
 
26
  final TermsHashPerThread nextPerThread;
 
27
 
 
28
  final CharBlockPool charPool;
 
29
  final IntBlockPool intPool;
 
30
  final ByteBlockPool bytePool;
 
31
  final boolean primary;
 
32
  final DocumentsWriter.DocState docState;
 
33
 
 
34
  public TermsHashPerThread(DocInverterPerThread docInverterPerThread, final TermsHash termsHash, final TermsHash nextTermsHash, final TermsHashPerThread primaryPerThread) {
 
35
    docState = docInverterPerThread.docState;
 
36
 
 
37
    this.termsHash = termsHash;
 
38
    this.consumer = termsHash.consumer.addThread(this);
 
39
 
 
40
    if (nextTermsHash != null) {
 
41
      // We are primary
 
42
      charPool = new CharBlockPool(termsHash.docWriter);
 
43
      primary = true;
 
44
    } else {
 
45
      charPool = primaryPerThread.charPool;
 
46
      primary = false;
 
47
    }
 
48
 
 
49
    intPool = new IntBlockPool(termsHash.docWriter);
 
50
    bytePool = new ByteBlockPool(termsHash.docWriter.byteBlockAllocator);
 
51
 
 
52
    if (nextTermsHash != null)
 
53
      nextPerThread = nextTermsHash.addThread(docInverterPerThread, this);
 
54
    else
 
55
      nextPerThread = null;
 
56
  }
 
57
 
 
58
  @Override
 
59
  InvertedDocConsumerPerField addField(DocInverterPerField docInverterPerField, final FieldInfo fieldInfo) {
 
60
    return new TermsHashPerField(docInverterPerField, this, nextPerThread, fieldInfo);
 
61
  }
 
62
 
 
63
  @Override
 
64
  synchronized public void abort() {
 
65
    reset(true);
 
66
    try {
 
67
      consumer.abort();
 
68
    } finally {
 
69
      if (nextPerThread != null) {
 
70
        nextPerThread.abort();
 
71
      }
 
72
    }
 
73
  }
 
74
 
 
75
  @Override
 
76
  public void startDocument() throws IOException {
 
77
    consumer.startDocument();
 
78
    if (nextPerThread != null)
 
79
      nextPerThread.consumer.startDocument();
 
80
  }
 
81
 
 
82
  @Override
 
83
  public DocumentsWriter.DocWriter finishDocument() throws IOException {
 
84
    final DocumentsWriter.DocWriter doc = consumer.finishDocument();
 
85
 
 
86
    final DocumentsWriter.DocWriter doc2;
 
87
    if (nextPerThread != null)
 
88
      doc2 = nextPerThread.consumer.finishDocument();
 
89
    else
 
90
      doc2 = null;
 
91
    if (doc == null)
 
92
      return doc2;
 
93
    else {
 
94
      doc.setNext(doc2);
 
95
      return doc;
 
96
    }
 
97
  }
 
98
 
 
99
  // Clear all state
 
100
  void reset(boolean recyclePostings) {
 
101
    intPool.reset();
 
102
    bytePool.reset();
 
103
 
 
104
    if (primary)
 
105
      charPool.reset();
 
106
  }
 
107
}