Skip to content

Commit 4d43fc3

Browse files
authored
Merge pull request #485 from apache/remove_duplicate_code
Remove duplicate code
2 parents d2e0a46 + ee24ca4 commit 4d43fc3

20 files changed

Lines changed: 376 additions & 266 deletions

src/main/java/org/apache/datasketches/kll/KllDirectCompactItemsSketch.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ final class KllDirectCompactItemsSketch<T> extends KllItemsSketch<T> {
6565
levelsArr = memVal.levelsArr; //always converted to writable form.
6666
}
6767

68+
//End of constructors
69+
70+
@Override
71+
String getItemAsString(final int index) {
72+
if (isEmpty()) { return "Null"; }
73+
return serDe.toString(getTotalItemsArray()[index]);
74+
}
75+
6876
@Override
6977
public int getK() {
7078
return getMemoryK(mem);
@@ -83,6 +91,12 @@ public T getMaxItem() {
8391
return serDe.deserializeFromMemory(mem, offset, 2)[1];
8492
}
8593

94+
@Override
95+
String getMaxItemAsString() {
96+
if (isEmpty()) { return "Null"; }
97+
return serDe.toString(getMaxItem());
98+
}
99+
86100
@Override
87101
public T getMinItem() {
88102
if (sketchStructure == COMPACT_EMPTY || isEmpty()) {
@@ -96,6 +110,12 @@ public T getMinItem() {
96110
return serDe.deserializeFromMemory(mem, offset, 1)[0];
97111
}
98112

113+
@Override
114+
String getMinItemAsString() {
115+
if (isEmpty()) { return "Null"; }
116+
return serDe.toString(getMinItem());
117+
}
118+
99119
@Override
100120
public long getN() {
101121
if (sketchStructure == COMPACT_EMPTY) { return 0; }

src/main/java/org/apache/datasketches/kll/KllDirectDoublesSketch.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,13 @@ static KllDirectDoublesSketch newDirectUpdatableInstance(
116116
return new KllDirectDoublesSketch(UPDATABLE, wMem, memReqSvr, memVal);
117117
}
118118

119-
//END of Constructors
119+
//End of constructors
120+
121+
@Override
122+
String getItemAsString(final int index) {
123+
if (isEmpty()) { return "NaN"; }
124+
return Double.toString(getDoubleItemsArray()[index]);
125+
}
120126

121127
@Override
122128
public int getK() {
@@ -137,6 +143,12 @@ else if (sketchStructure == COMPACT_FULL) {
137143
return wmem.getDouble(offset);
138144
}
139145

146+
@Override
147+
String getMaxItemAsString() {
148+
if (isEmpty()) { return "NaN"; }
149+
return Double.toString(getMaxItem());
150+
}
151+
140152
@Override
141153
public double getMinItem() {
142154
int levelsArrBytes = 0;
@@ -151,6 +163,12 @@ else if (sketchStructure == COMPACT_FULL) {
151163
return wmem.getDouble(offset);
152164
}
153165

166+
@Override
167+
String getMinItemAsString() {
168+
if (isEmpty()) { return "NaN"; }
169+
return Double.toString(getMinItem());
170+
}
171+
154172
@Override
155173
public long getN() {
156174
if (sketchStructure == COMPACT_EMPTY) { return 0; }

src/main/java/org/apache/datasketches/kll/KllDirectFloatsSketch.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@ static KllDirectFloatsSketch newDirectUpdatableInstance(
118118

119119
//END of Constructors
120120

121+
@Override
122+
String getItemAsString(final int index) {
123+
if (isEmpty()) { return "NaN"; }
124+
return Float.toString(getFloatItemsArray()[index]);
125+
}
126+
121127
@Override
122128
public int getK() {
123129
return getMemoryK(wmem);
@@ -137,6 +143,12 @@ else if (sketchStructure == COMPACT_FULL) {
137143
return wmem.getFloat(offset);
138144
}
139145

146+
@Override
147+
String getMaxItemAsString() {
148+
if (isEmpty()) { return "NaN"; }
149+
return Float.toString(getMaxItem());
150+
}
151+
140152
@Override
141153
public float getMinItem() {
142154
int levelsArrBytes = 0;
@@ -151,6 +163,12 @@ else if (sketchStructure == COMPACT_FULL) {
151163
return wmem.getFloat(offset);
152164
}
153165

166+
@Override
167+
String getMinItemAsString() {
168+
if (isEmpty()) { return "NaN"; }
169+
return Float.toString(getMinItem());
170+
}
171+
154172
@Override
155173
public long getN() {
156174
if (sketchStructure == COMPACT_EMPTY) { return 0; }

src/main/java/org/apache/datasketches/kll/KllDoublesHelper.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -309,12 +309,16 @@ static void updateDouble(final KllDoublesSketch dblSk,
309309
dblSk.setMinItem(min(dblSk.getMinItem(), item));
310310
dblSk.setMaxItem(max(dblSk.getMaxItem(), item));
311311
}
312-
if (dblSk.levelsArr[0] == 0) { compressWhileUpdatingSketch(dblSk); }
313-
final int myLevelsArrAtZero = dblSk.levelsArr[0]; //LevelsArr could be expanded
312+
int level0space = dblSk.levelsArr[0];
313+
assert (level0space >= 0);
314+
if (level0space == 0) {
315+
compressWhileUpdatingSketch(dblSk);
316+
level0space = dblSk.levelsArr[0];
317+
assert (level0space > 0);
318+
}
314319
dblSk.incN();
315320
dblSk.setLevelZeroSorted(false);
316-
final int nextPos = myLevelsArrAtZero - 1;
317-
assert myLevelsArrAtZero >= 0;
321+
final int nextPos = level0space - 1;
318322
dblSk.setLevelsArrayAt(0, nextPos);
319323
dblSk.setDoubleItemsArrayAt(nextPos, item);
320324
}

src/main/java/org/apache/datasketches/kll/KllDoublesSketch.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,17 @@ public byte[] toByteArray() {
306306
return KllHelper.toByteArray(this, false);
307307
}
308308

309+
@Override
310+
public String toString(final boolean withSummary, final boolean withData) {
311+
KllSketch sketch = this;
312+
if (withData && sketchStructure != UPDATABLE) {
313+
final Memory mem = getWritableMemory();
314+
assert mem != null;
315+
sketch = KllDoublesSketch.heapify(getWritableMemory());
316+
}
317+
return KllHelper.toStringImpl(sketch, withSummary, withData, getSerDe());
318+
}
319+
309320
@Override
310321
public void update(final double item) {
311322
if (readOnly) { throw new SketchesArgumentException(TGT_IS_READ_ONLY_MSG); }

src/main/java/org/apache/datasketches/kll/KllFloatsHelper.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -309,12 +309,16 @@ static void updateFloat(final KllFloatsSketch fltSk,
309309
fltSk.setMinItem(min(fltSk.getMinItem(), item));
310310
fltSk.setMaxItem(max(fltSk.getMaxItem(), item));
311311
}
312-
if (fltSk.levelsArr[0] == 0) { compressWhileUpdatingSketch(fltSk); }
313-
final int myLevelsArrAtZero = fltSk.levelsArr[0]; //LevelsArr could be expanded
312+
int level0space = fltSk.levelsArr[0];
313+
assert level0space >= 0;
314+
if (level0space == 0) {
315+
compressWhileUpdatingSketch(fltSk);
316+
level0space = fltSk.levelsArr[0];
317+
assert (level0space > 0);
318+
}
314319
fltSk.incN();
315320
fltSk.setLevelZeroSorted(false);
316-
final int nextPos = myLevelsArrAtZero - 1;
317-
assert myLevelsArrAtZero >= 0;
321+
final int nextPos = level0space - 1;
318322
fltSk.setLevelsArrayAt(0, nextPos);
319323
fltSk.setFloatItemsArrayAt(nextPos, item);
320324
}

src/main/java/org/apache/datasketches/kll/KllFloatsSketch.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,17 @@ public byte[] toByteArray() {
306306
return KllHelper.toByteArray(this, false);
307307
}
308308

309+
@Override
310+
public String toString(final boolean withSummary, final boolean withData) {
311+
KllSketch sketch = this;
312+
if (withData && sketchStructure != UPDATABLE) {
313+
final Memory mem = getWritableMemory();
314+
assert mem != null;
315+
sketch = KllFloatsSketch.heapify(getWritableMemory());
316+
}
317+
return KllHelper.toStringImpl(sketch, withSummary, withData, getSerDe());
318+
}
319+
309320
@Override
310321
public void update(final float item) {
311322
if (readOnly) { throw new SketchesArgumentException(TGT_IS_READ_ONLY_MSG); }

src/main/java/org/apache/datasketches/kll/KllHeapDoublesSketch.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,14 @@ static KllHeapDoublesSketch heapifyImpl(final Memory srcMem) {
141141
return new KllHeapDoublesSketch(srcMem, memVal);
142142
}
143143

144+
//End of constructors
145+
146+
@Override
147+
String getItemAsString(final int index) {
148+
if (isEmpty()) { return "NaN"; }
149+
return Double.toString(doubleItems[index]);
150+
}
151+
144152
@Override
145153
public int getK() { return k; }
146154

@@ -150,12 +158,24 @@ public double getMaxItem() {
150158
return maxDoubleItem;
151159
}
152160

161+
@Override
162+
String getMaxItemAsString() {
163+
if (isEmpty()) { return "NaN"; }
164+
return Double.toString(maxDoubleItem);
165+
}
166+
153167
@Override
154168
public double getMinItem() {
155169
if (isEmpty()) { throw new SketchesArgumentException(EMPTY_MSG); }
156170
return minDoubleItem;
157171
}
158172

173+
@Override
174+
String getMinItemAsString() {
175+
if (isEmpty()) { return "NaN"; }
176+
return Double.toString(minDoubleItem);
177+
}
178+
159179
@Override
160180
public long getN() { return n; }
161181

src/main/java/org/apache/datasketches/kll/KllHeapFloatsSketch.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,14 @@ static KllHeapFloatsSketch heapifyImpl(final Memory srcMem) {
141141
return new KllHeapFloatsSketch(srcMem, memVal);
142142
}
143143

144+
//End of constructors
145+
146+
@Override
147+
String getItemAsString(final int index) {
148+
if (isEmpty()) { return "NaN"; }
149+
return Double.toString(floatItems[index]);
150+
}
151+
144152
@Override
145153
public int getK() { return k; }
146154

@@ -150,12 +158,24 @@ public float getMaxItem() {
150158
return maxFloatItem;
151159
}
152160

161+
@Override
162+
String getMaxItemAsString() {
163+
if (isEmpty()) { return "NaN"; }
164+
return Float.toString(maxFloatItem);
165+
}
166+
153167
@Override
154168
public float getMinItem() {
155169
if (isEmpty()) { throw new SketchesArgumentException(EMPTY_MSG); }
156170
return minFloatItem;
157171
}
158172

173+
@Override
174+
String getMinItemAsString() {
175+
if (isEmpty()) { return "NaN"; }
176+
return Float.toString(minFloatItem);
177+
}
178+
159179
@Override
160180
public long getN() { return n; }
161181

src/main/java/org/apache/datasketches/kll/KllHeapItemsSketch.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,14 @@ final class KllHeapItemsSketch<T> extends KllItemsSketch<T> {
117117
}
118118
}
119119

120+
//End of constructors
121+
122+
@Override
123+
String getItemAsString(final int index) {
124+
if (isEmpty()) { return "Null"; }
125+
return serDe.toString((T)(itemsArr[index]));
126+
}
127+
120128
@Override
121129
public int getK() {
122130
return k;
@@ -128,12 +136,24 @@ public T getMaxItem() {
128136
return maxItem;
129137
}
130138

139+
@Override
140+
String getMaxItemAsString() {
141+
if (isEmpty()) { return "Null"; }
142+
return serDe.toString(maxItem);
143+
}
144+
131145
@Override
132146
public T getMinItem() {
133147
if (isEmpty()) { throw new SketchesArgumentException(EMPTY_MSG); }
134148
return minItem;
135149
}
136150

151+
@Override
152+
String getMinItemAsString() {
153+
if (isEmpty()) { return "Null"; }
154+
return serDe.toString(minItem);
155+
}
156+
137157
@Override
138158
public long getN() {
139159
return n;

0 commit comments

Comments
 (0)