io.nem.catapult.builders.MosaicDefinitionTransactionBuilder Maven / Gradle / Ivy
/**
*** Copyright (c) 2016-present,
*** Jaguar0625, gimre, BloodyRookie, Tech Bureau, Corp. All rights reserved.
***
*** This file is part of Catapult.
***
*** Catapult is free software: you can redistribute it and/or modify
*** it under the terms of the GNU Lesser General Public License as published by
*** the Free Software Foundation, either version 3 of the License, or
*** (at your option) any later version.
***
*** Catapult is distributed in the hope that it will be useful,
*** but WITHOUT ANY WARRANTY; without even the implied warranty of
*** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*** GNU Lesser General Public License for more details.
***
*** You should have received a copy of the GNU Lesser General Public License
*** along with Catapult. If not, see .
**/
package io.nem.symbol.catapult.builders;
import java.io.DataInputStream;
import java.util.EnumSet;
/** Binary layout for a non-embedded mosaic definition transaction. */
public final class MosaicDefinitionTransactionBuilder extends TransactionBuilder implements Serializer {
/** Mosaic definition transaction body. */
private final MosaicDefinitionTransactionBodyBuilder mosaicDefinitionTransactionBody;
/**
* Constructor - Creates an object from stream.
*
* @param stream Byte stream to use to serialize the object.
*/
protected MosaicDefinitionTransactionBuilder(final DataInputStream stream) {
super(stream);
this.mosaicDefinitionTransactionBody = MosaicDefinitionTransactionBodyBuilder.loadFromBinary(stream);
}
/**
* Constructor.
*
* @param signature Entity signature.
* @param signerPublicKey Entity signer's public key.
* @param version Entity version.
* @param network Entity network.
* @param type Entity type.
* @param fee Transaction fee.
* @param deadline Transaction deadline.
* @param id Mosaic identifier.
* @param duration Mosaic duration.
* @param nonce Mosaic nonce.
* @param flags Mosaic flags.
* @param divisibility Mosaic divisibility.
*/
protected MosaicDefinitionTransactionBuilder(final SignatureDto signature, final KeyDto signerPublicKey, final byte version, final NetworkTypeDto network, final EntityTypeDto type, final AmountDto fee, final TimestampDto deadline, final MosaicIdDto id, final BlockDurationDto duration, final MosaicNonceDto nonce, final EnumSet flags, final byte divisibility) {
super(signature, signerPublicKey, version, network, type, fee, deadline);
this.mosaicDefinitionTransactionBody = MosaicDefinitionTransactionBodyBuilder.create(id, duration, nonce, flags, divisibility);
}
/**
* Creates an instance of MosaicDefinitionTransactionBuilder.
*
* @param signature Entity signature.
* @param signerPublicKey Entity signer's public key.
* @param version Entity version.
* @param network Entity network.
* @param type Entity type.
* @param fee Transaction fee.
* @param deadline Transaction deadline.
* @param id Mosaic identifier.
* @param duration Mosaic duration.
* @param nonce Mosaic nonce.
* @param flags Mosaic flags.
* @param divisibility Mosaic divisibility.
* @return Instance of MosaicDefinitionTransactionBuilder.
*/
public static MosaicDefinitionTransactionBuilder create(final SignatureDto signature, final KeyDto signerPublicKey, final byte version, final NetworkTypeDto network, final EntityTypeDto type, final AmountDto fee, final TimestampDto deadline, final MosaicIdDto id, final BlockDurationDto duration, final MosaicNonceDto nonce, final EnumSet flags, final byte divisibility) {
return new MosaicDefinitionTransactionBuilder(signature, signerPublicKey, version, network, type, fee, deadline, id, duration, nonce, flags, divisibility);
}
/**
* Gets mosaic identifier.
*
* @return Mosaic identifier.
*/
public MosaicIdDto getId() {
return this.mosaicDefinitionTransactionBody.getId();
}
/**
* Gets mosaic duration.
*
* @return Mosaic duration.
*/
public BlockDurationDto getDuration() {
return this.mosaicDefinitionTransactionBody.getDuration();
}
/**
* Gets mosaic nonce.
*
* @return Mosaic nonce.
*/
public MosaicNonceDto getNonce() {
return this.mosaicDefinitionTransactionBody.getNonce();
}
/**
* Gets mosaic flags.
*
* @return Mosaic flags.
*/
public EnumSet getFlags() {
return this.mosaicDefinitionTransactionBody.getFlags();
}
/**
* Gets mosaic divisibility.
*
* @return Mosaic divisibility.
*/
public byte getDivisibility() {
return this.mosaicDefinitionTransactionBody.getDivisibility();
}
/**
* Gets the size of the object.
*
* @return Size in bytes.
*/
@Override
public int getSize() {
int size = super.getSize();
size += this.mosaicDefinitionTransactionBody.getSize();
return size;
}
/**
* Gets the body builder of the object.
*
* @return Body builder.
*/
@Override
public MosaicDefinitionTransactionBodyBuilder getBody() {
return this.mosaicDefinitionTransactionBody;
}
/**
* Creates an instance of MosaicDefinitionTransactionBuilder from a stream.
*
* @param stream Byte stream to use to serialize the object.
* @return Instance of MosaicDefinitionTransactionBuilder.
*/
public static MosaicDefinitionTransactionBuilder loadFromBinary(final DataInputStream stream) {
return new MosaicDefinitionTransactionBuilder(stream);
}
/**
* Serializes an object to bytes.
*
* @return Serialized bytes.
*/
public byte[] serialize() {
return GeneratorUtils.serialize(dataOutputStream -> {
final byte[] superBytes = super.serialize();
dataOutputStream.write(superBytes, 0, superBytes.length);
final byte[] mosaicDefinitionTransactionBodyBytes = this.mosaicDefinitionTransactionBody.serialize();
dataOutputStream.write(mosaicDefinitionTransactionBodyBytes, 0, mosaicDefinitionTransactionBodyBytes.length);
});
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy