@Override public void aggregate(ByteArray value) { if (byteArray == null) { byteArray = value; } else { if (!byteArray.equals(value)) { if (!warned) { logger.warn("Extended column must be unique given same host column"); warned = true; } } } }
@Override public ByteArray aggregate(ByteArray value1, ByteArray value2) { if (value1 == null) { return value2; } else if (value2 == null) { return value1; } else if (!value1.equals(value2)) { if (!warned) { logger.warn("Extended column must be unique given same host column"); warned = true; } } return value1; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; GTRecord o = (GTRecord) obj; if (this.info != o.info) return false; for (int i = 0; i < info.colAll.trueBitCount(); i++) { int c = info.colAll.trueBitAt(i); if (!this.cols[c].equals(o.cols[c])) { return false; } } return true; }
@Test public void testOverflow() { String text = StringUtils.repeat("h", 21); ExtendedColumnSerializer serializer = new ExtendedColumnSerializer(DataType.getType("extendedcolumn(20)")); MeasureIngester<ByteArray> ingester = measureType.newIngester(); ByteArray array = ingester.valueOf(new String[] { null, text }, null, null); ByteBuffer buffer = ByteBuffer.allocate(serializer.maxLength()); serializer.serialize(array, buffer); buffer.flip(); ByteArray des = serializer.deserialize(buffer); Assert.assertTrue(new ByteArray(StringUtils.repeat("h", 20).getBytes(StandardCharsets.UTF_8)).equals(des)); } }
@Test public void testNormal() { String text = StringUtils.repeat("h", 20); ExtendedColumnSerializer serializer = new ExtendedColumnSerializer(DataType.getType("extendedcolumn(20)")); MeasureIngester<ByteArray> ingester = measureType.newIngester(); ByteArray array = ingester.valueOf(new String[] { null, text }, null, null); ByteBuffer buffer = ByteBuffer.allocate(serializer.maxLength()); serializer.serialize(array, buffer); buffer.flip(); ByteArray des = serializer.deserialize(buffer); Assert.assertTrue(new ByteArray(text.getBytes(StandardCharsets.UTF_8)).equals(des)); }
@Test public void testSerDesNull() { ExtendedColumnSerializer serializer = new ExtendedColumnSerializer(DataType.getType("extendedcolumn(20)")); MeasureIngester<ByteArray> ingester = measureType.newIngester(); ByteArray array = ingester.valueOf(new String[] { null, null }, null, null); Assert.assertTrue(new ByteArray().equals(array)); ByteBuffer buffer = ByteBuffer.allocate(serializer.maxLength()); serializer.serialize(array, buffer); buffer.flip(); int length = serializer.peekLength(buffer); Assert.assertTrue(length == 1); ByteArray des = serializer.deserialize(buffer); Assert.assertTrue(new ByteArray().equals(des)); }
@Override public void aggregate(ByteArray value) { if (byteArray == null) { byteArray = value; } else { if (!byteArray.equals(value)) { if (!warned) { logger.warn("Extended column must be unique given same host column"); warned = true; } } } }
@Override public ByteArray aggregate(ByteArray value1, ByteArray value2) { if (value1 == null) { return value2; } else if (value2 == null) { return value1; } else if (!value1.equals(value2)) { if (!warned) { logger.warn("Extended column must be unique given same host column"); warned = true; } } return value1; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; GTRecord o = (GTRecord) obj; if (this.info != o.info) return false; for (int i = 0; i < info.colAll.trueBitCount(); i++) { int c = info.colAll.trueBitAt(i); if (!this.cols[c].equals(o.cols[c])) { return false; } } return true; }