001// Licensed under the MIT license. See LICENSE file in the project root for full license information.
002
003package de.bytefish.pgbulkinsert.pgsql.handlers;
004
005import java.io.DataOutputStream;
006import java.nio.ByteBuffer;
007import java.util.Arrays;
008import java.util.UUID;
009
010public class UUIDValueHandler extends BaseValueHandler<UUID> {
011
012    @Override
013    protected void internalHandle(DataOutputStream buffer, final UUID value) throws Exception {
014        buffer.writeInt(16);
015
016        ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
017        bb.putLong(value.getMostSignificantBits());
018        bb.putLong(value.getLeastSignificantBits());
019
020        buffer.writeInt(bb.getInt(0));
021        buffer.writeShort(bb.getShort(4));
022        buffer.writeShort(bb.getShort(6));
023
024        buffer.write(Arrays.copyOfRange(bb.array(), 8, 16));
025    }
026
027    @Override
028    public int getLength(UUID value) {
029        return 16;
030    }
031}