1 /***********************************************************************
2  * Copyright (c) 2013-2024 Commonwealth Computer Research, Inc.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Apache License, Version 2.0
5  * which accompanies this distribution and is available at
6  * http://www.opensource.org/licenses/apache2.0.php.
7  ***********************************************************************/
8 
9 package org.locationtech.geomesa.index
10 
11 import org.geotools.api.feature.simple.{SimpleFeature, SimpleFeatureType}
12 import org.geotools.api.filter.Filter
13 import org.geotools.util.factory.Hints
14 import org.locationtech.geomesa.curve.TimePeriod.TimePeriod
15 import org.locationtech.geomesa.index.stats.GeoMesaStats.{GeoMesaStatWriter, StatUpdater}
16 import org.locationtech.geomesa.utils.stats._
17 
18 package object stats {
19 
20   /**
21     * Marker trait for classes with stats
22     */
23   trait HasGeoMesaStats {
24     def stats: GeoMesaStats
25   }
26 
27   /**
28     * Stats implementation that will always return None
29     */
30   object NoopStats extends GeoMesaStats {
31 
32     override val writer: GeoMesaStatWriter = NoopStatWriter
33 
34     override def getCount(sft: SimpleFeatureType, filter: Filter, exact: Boolean, queryHints: Hints): Option[Long] = None
35 
36     override def getMinMax[T](
37         sft: SimpleFeatureType,
38         attribute: String,
39         filter: Filter,
40         exact: Boolean): Option[MinMax[T]] = None
41 
42     override def getEnumeration[T](
43         sft: SimpleFeatureType,
44         attribute: String,
45         filter: Filter,
46         exact: Boolean): Option[EnumerationStat[T]] = None
47 
48     override def getFrequency[T](
49         sft: SimpleFeatureType,
50         attribute: String,
51         precision: Int,
52         filter: Filter,
53         exact: Boolean): Option[Frequency[T]] = None
54 
55     override def getTopK[T](
56         sft: SimpleFeatureType,
57         attribute: String,
58         filter: Filter,
59         exact: Boolean): Option[TopK[T]] = None
60 
61     override def getHistogram[T](
62         sft: SimpleFeatureType,
63         attribute: String,
64         bins: Int,
65         min: T,
66         max: T,
67         filter: Filter,
68         exact: Boolean): Option[Histogram[T]] = None
69 
70     override def getZ3Histogram(
71         sft: SimpleFeatureType,
72         geom: String,
73         dtg: String,
74         period: TimePeriod,
75         bins: Int,
76         filter: Filter,
77         exact: Boolean): Option[Z3Histogram] = None
78 
79     override def getStat[T <: Stat](
80         sft: SimpleFeatureType,
81         query: String,
82         filter: Filter,
83         exact: Boolean): Option[T] = None
84 
85     override def close(): Unit = {}
86   }
87 
88   object NoopStatWriter extends GeoMesaStatWriter {
89     override def analyze(sft: SimpleFeatureType): Seq[Stat] = Seq.empty
90     override def updater(sft: SimpleFeatureType): StatUpdater = NoopStatUpdater
91     override def clear(sft: SimpleFeatureType): Unit = {}
92     override def rename(sft: SimpleFeatureType, previous: SimpleFeatureType): Unit = {}
93   }
94 
95   object NoopStatUpdater extends StatUpdater {
96     override def add(sf: SimpleFeature): Unit = {}
97     override def remove(sf: SimpleFeature): Unit = {}
98     override def flush(): Unit = {}
99     override def close(): Unit = {}
100   }
101 }
Line Stmt Id Pos Tree Symbol Tests Code
32 43530 1148 - 1162 Select org.locationtech.geomesa.index.stats.NoopStatWriter `package`.this.NoopStatWriter
34 43531 1281 - 1285 Select scala.None scala.None
40 43532 1446 - 1450 Select scala.None scala.None
46 43533 1625 - 1629 Select scala.None scala.None
53 43534 1820 - 1824 Select scala.None scala.None
59 43535 1981 - 1985 Select scala.None scala.None
68 43536 2203 - 2207 Select scala.None scala.None
77 43537 2435 - 2439 Select scala.None scala.None
83 43538 2594 - 2598 Select scala.None scala.None
85 43539 2633 - 2635 Literal <nosymbol> ()
89 43540 2755 - 2764 TypeApply scala.collection.generic.GenericCompanion.empty scala.collection.Seq.empty[Nothing]
90 43541 2829 - 2844 Select org.locationtech.geomesa.index.stats.NoopStatUpdater `package`.this.NoopStatUpdater
91 43542 2900 - 2902 Literal <nosymbol> ()
92 43543 2988 - 2990 Literal <nosymbol> ()
96 43544 3091 - 3093 Literal <nosymbol> ()
97 43545 3145 - 3147 Literal <nosymbol> ()
98 43546 3181 - 3183 Literal <nosymbol> ()
99 43547 3217 - 3219 Literal <nosymbol> ()