Skip to content

Commit 1adecb8

Browse files
mbasmanovastolstov
authored andcommitted
Add OGCGeometry::estimateMemorySize API (#157)
1 parent 3704c22 commit 1adecb8

30 files changed

+539
-38
lines changed

pom.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@
100100
<!-- dependency versions -->
101101
<jackson.version>2.6.5</jackson.version>
102102
<junit.version>4.12</junit.version>
103+
<jol.version>0.2</jol.version>
103104

104105
<!-- plugin versions -->
105106
<compiler.plugin.version>2.3.1</compiler.plugin.version>
@@ -120,6 +121,14 @@
120121
<version>${junit.version}</version>
121122
<scope>test</scope>
122123
</dependency>
124+
125+
<!-- Test dependencies -->
126+
<dependency>
127+
<groupId>org.openjdk.jol</groupId>
128+
<artifactId>jol-core</artifactId>
129+
<version>${jol.version}</version>
130+
<scope>test</scope>
131+
</dependency>
123132
</dependencies>
124133

125134
<build>

src/main/java/com/esri/core/geometry/AttributeStreamBase.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,13 @@ public AttributeStreamBase() {
4646
*/
4747
public abstract int virtualSize();
4848

49+
/**
50+
* Returns an estimate of this object size in bytes.
51+
*
52+
* @return Returns an estimate of this object size in bytes.
53+
*/
54+
public abstract long estimateMemorySize();
55+
4956
/**
5057
* Returns the Persistence type of the stream.
5158
*/

src/main/java/com/esri/core/geometry/AttributeStreamOfDbl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,14 @@
2626
package com.esri.core.geometry;
2727

2828
import com.esri.core.geometry.VertexDescription.Persistence;
29+
2930
import java.nio.ByteBuffer;
3031
import java.util.Arrays;
3132

33+
import static com.esri.core.geometry.SizeOf.SIZE_OF_ATTRIBUTE_STREAM_OF_DBL;
34+
import static com.esri.core.geometry.SizeOf.SIZE_OF_ATTRIBUTE_STREAM_OF_INT32;
35+
import static com.esri.core.geometry.SizeOf.sizeOfDoubleArray;
36+
3237
final class AttributeStreamOfDbl extends AttributeStreamBase {
3338

3439
private double[] m_buffer = null;
@@ -173,6 +178,12 @@ public int virtualSize() {
173178
return size();
174179
}
175180

181+
@Override
182+
public long estimateMemorySize()
183+
{
184+
return SIZE_OF_ATTRIBUTE_STREAM_OF_DBL + sizeOfDoubleArray(m_buffer.length);
185+
}
186+
176187
// @Override
177188
// public void addRange(AttributeStreamBase src, int srcStartIndex, int
178189
// count) {

src/main/java/com/esri/core/geometry/AttributeStreamOfFloat.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,13 @@
2626
package com.esri.core.geometry;
2727

2828
import com.esri.core.geometry.VertexDescription.Persistence;
29+
2930
import java.nio.ByteBuffer;
3031

31-
final class AttributeStreamOfFloat extends AttributeStreamBase {
32+
import static com.esri.core.geometry.SizeOf.SIZE_OF_ATTRIBUTE_STREAM_OF_FLOAT;
33+
import static com.esri.core.geometry.SizeOf.sizeOfFloatArray;
3234

35+
final class AttributeStreamOfFloat extends AttributeStreamBase {
3336
private float[] m_buffer = null;
3437
private int m_size;
3538

@@ -145,6 +148,12 @@ public int virtualSize() {
145148
return size();
146149
}
147150

151+
@Override
152+
public long estimateMemorySize()
153+
{
154+
return SIZE_OF_ATTRIBUTE_STREAM_OF_FLOAT + sizeOfFloatArray(m_buffer.length);
155+
}
156+
148157
@Override
149158
public int getPersistence() {
150159
return Persistence.enumFloat;

src/main/java/com/esri/core/geometry/AttributeStreamOfInt16.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,13 @@
2626
package com.esri.core.geometry;
2727

2828
import com.esri.core.geometry.VertexDescription.Persistence;
29+
2930
import java.nio.ByteBuffer;
3031

31-
final class AttributeStreamOfInt16 extends AttributeStreamBase {
32+
import static com.esri.core.geometry.SizeOf.SIZE_OF_ATTRIBUTE_STREAM_OF_INT16;
33+
import static com.esri.core.geometry.SizeOf.sizeOfShortArray;
3234

35+
final class AttributeStreamOfInt16 extends AttributeStreamBase {
3336
private short[] m_buffer = null;
3437
private int m_size;
3538

@@ -145,6 +148,12 @@ public int virtualSize() {
145148
return size();
146149
}
147150

151+
@Override
152+
public long estimateMemorySize()
153+
{
154+
return SIZE_OF_ATTRIBUTE_STREAM_OF_INT16 + sizeOfShortArray(m_buffer.length);
155+
}
156+
148157
@Override
149158
public int getPersistence() {
150159
return Persistence.enumInt16;

src/main/java/com/esri/core/geometry/AttributeStreamOfInt32.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,14 @@
2626
package com.esri.core.geometry;
2727

2828
import com.esri.core.geometry.VertexDescription.Persistence;
29+
2930
import java.nio.ByteBuffer;
3031
import java.util.Arrays;
3132

32-
final class AttributeStreamOfInt32 extends AttributeStreamBase {
33+
import static com.esri.core.geometry.SizeOf.SIZE_OF_ATTRIBUTE_STREAM_OF_INT32;
34+
import static com.esri.core.geometry.SizeOf.sizeOfIntArray;
3335

36+
final class AttributeStreamOfInt32 extends AttributeStreamBase {
3437
private int[] m_buffer = null;
3538
private int m_size;
3639

@@ -158,6 +161,12 @@ public int virtualSize() {
158161
return size();
159162
}
160163

164+
@Override
165+
public long estimateMemorySize()
166+
{
167+
return SIZE_OF_ATTRIBUTE_STREAM_OF_INT32 + sizeOfIntArray(m_buffer.length);
168+
}
169+
161170
@Override
162171
public int getPersistence() {
163172
return Persistence.enumInt32;

src/main/java/com/esri/core/geometry/AttributeStreamOfInt64.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,13 @@
2626
package com.esri.core.geometry;
2727

2828
import com.esri.core.geometry.VertexDescription.Persistence;
29+
2930
import java.nio.ByteBuffer;
3031

31-
final class AttributeStreamOfInt64 extends AttributeStreamBase {
32+
import static com.esri.core.geometry.SizeOf.SIZE_OF_ATTRIBUTE_STREAM_OF_INT64;
33+
import static com.esri.core.geometry.SizeOf.sizeOfLongArray;
3234

35+
final class AttributeStreamOfInt64 extends AttributeStreamBase {
3336
private long[] m_buffer = null;
3437
private int m_size;
3538

@@ -145,6 +148,12 @@ public int virtualSize() {
145148
return size();
146149
}
147150

151+
@Override
152+
public long estimateMemorySize()
153+
{
154+
return SIZE_OF_ATTRIBUTE_STREAM_OF_INT64 + sizeOfLongArray(m_buffer.length);
155+
}
156+
148157
@Override
149158
public int getPersistence() {
150159
return Persistence.enumInt64;

src/main/java/com/esri/core/geometry/AttributeStreamOfInt8.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,12 @@
2626
package com.esri.core.geometry;
2727

2828
import com.esri.core.geometry.VertexDescription.Persistence;
29+
2930
import java.nio.ByteBuffer;
3031

32+
import static com.esri.core.geometry.SizeOf.SIZE_OF_ATTRIBUTE_STREAM_OF_INT8;
33+
import static com.esri.core.geometry.SizeOf.sizeOfByteArray;
34+
3135
final class AttributeStreamOfInt8 extends AttributeStreamBase {
3236

3337
private byte[] m_buffer = null;
@@ -152,6 +156,12 @@ public int virtualSize() {
152156
return size();
153157
}
154158

159+
@Override
160+
public long estimateMemorySize()
161+
{
162+
return SIZE_OF_ATTRIBUTE_STREAM_OF_INT8 + sizeOfByteArray(m_buffer.length);
163+
}
164+
155165
@Override
156166
public int getPersistence() {
157167
return Persistence.enumInt8;

src/main/java/com/esri/core/geometry/Envelope.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@
2525

2626
package com.esri.core.geometry;
2727

28+
import com.esri.core.geometry.VertexDescription.Semantics;
29+
2830
import java.io.Serializable;
2931

30-
import com.esri.core.geometry.VertexDescription.Semantics;
32+
import static com.esri.core.geometry.SizeOf.SIZE_OF_ENVELOPE;
3133

3234
/**
3335
* An envelope is an axis-aligned rectangle.
@@ -445,6 +447,12 @@ public int getDimension() {
445447
return 2;
446448
}
447449

450+
@Override
451+
public long estimateMemorySize()
452+
{
453+
return SIZE_OF_ENVELOPE + m_envelope.estimateMemorySize() + estimateMemorySize(m_attributes);
454+
}
455+
448456
@Override
449457
public void queryEnvelope(Envelope env) {
450458
copyTo(env);

src/main/java/com/esri/core/geometry/Envelope2D.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@
2828
import java.io.ObjectStreamException;
2929
import java.io.Serializable;
3030

31+
import static com.esri.core.geometry.SizeOf.SIZE_OF_ENVELOPE2D;
32+
3133
/**
3234
* An axis parallel 2-dimensional rectangle.
3335
*/
3436
public final class Envelope2D implements Serializable {
3537
private static final long serialVersionUID = 1L;
36-
38+
3739
private final static int XLESSXMIN = 1;
3840
// private final int XGREATERXMAX = 2;
3941
private final static int YLESSYMIN = 4;
@@ -79,6 +81,11 @@ public Envelope2D(double _xmin, double _ymin, double _xmax, double _ymax) {
7981
public Envelope2D(Envelope2D other) {
8082
setCoords(other);
8183
}
84+
85+
public int estimateMemorySize()
86+
{
87+
return SIZE_OF_ENVELOPE2D;
88+
}
8289

8390
public void setCoords(double _x, double _y) {
8491
xmin = _x;

0 commit comments

Comments
 (0)