Merge branch 'hotfix/3.12.3' into develop
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / search / MassIndexerProgressMonitorWrapper.java
1 // $Id$
2 /**
3 * Copyright (C) 2015 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10 package eu.etaxonomy.cdm.api.service.search;
11
12 import org.hibernate.search.batchindexing.MassIndexerProgressMonitor;
13 import org.hibernate.search.batchindexing.impl.SimpleIndexingProgressMonitor;
14
15 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
16
17 /**
18 * @author a.kohlbecker
19 * @date Dec 7, 2015
20 *
21 */
22 public class MassIndexerProgressMonitorWrapper implements MassIndexerProgressMonitor {
23
24 MassIndexerProgressMonitor massIndexerMonitor ;
25 private final IProgressMonitor monitor;
26 private final int batchSize;
27 private long tickCount = 0;
28
29 public IProgressMonitor monitor() {
30 return monitor;
31 }
32 /**
33 * @param monitor
34 */
35 public MassIndexerProgressMonitorWrapper(IProgressMonitor monitor, int batchSize) {
36 this.monitor = monitor;
37 this.batchSize = batchSize;
38 this.massIndexerMonitor = new SimpleIndexingProgressMonitor(batchSize);
39 }
40
41 /**
42 * {@inheritDoc}
43 */
44 @Override
45 public void documentsAdded(long increment) {
46 // all current implementations always pass 1l as parameter
47 massIndexerMonitor.documentsAdded(increment);
48 updatePerBatchMonitor((int)increment);
49
50 }
51 /**
52 * @param increment
53 *
54 */
55 private void updatePerBatchMonitor(int increment) {
56 tickCount += increment;
57 if(tickCount % (batchSize * 2) == 0) {
58 // one batch worked
59 monitor.worked(1);
60 }
61 }
62
63 /**
64 * {@inheritDoc}
65 */
66 @Override
67 public void documentsBuilt(int number) {
68 // unused as of implementing this
69 massIndexerMonitor.documentsBuilt(number);
70 updatePerBatchMonitor(number);
71 }
72
73 /**
74 * {@inheritDoc}
75 */
76 @Override
77 public void entitiesLoaded(int size) {
78 massIndexerMonitor.entitiesLoaded(size);
79
80 }
81
82 /**
83 * {@inheritDoc}
84 */
85 @Override
86 public void addToTotalCount(long count) {
87 massIndexerMonitor.addToTotalCount(count);
88 }
89
90 /**
91 * {@inheritDoc}
92 */
93 @Override
94 public void indexingCompleted() {
95 massIndexerMonitor.indexingCompleted();
96 monitor.done();
97 }
98
99 }