SocialHubDatumConverter.java

package io.uverify.backend.extension.validators.converter;

import com.bloxbean.cardano.client.common.cbor.CborSerializationUtil;
import com.bloxbean.cardano.client.exception.CborRuntimeException;
import com.bloxbean.cardano.client.plutus.annotation.BasePlutusDataConverter;
import com.bloxbean.cardano.client.plutus.spec.BytesPlutusData;
import com.bloxbean.cardano.client.plutus.spec.ConstrPlutusData;
import com.bloxbean.cardano.client.plutus.spec.ListPlutusData;
import com.bloxbean.cardano.client.util.HexUtil;
import io.uverify.backend.extension.validators.SocialHubDatum;
import java.lang.Exception;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;

/**
 * Auto generated code. DO NOT MODIFY
 */
public class SocialHubDatumConverter extends BasePlutusDataConverter {
  public ConstrPlutusData toPlutusData(SocialHubDatum obj) {
    ConstrPlutusData constr = initConstr(0);
    //Field owner
    Objects.requireNonNull(obj.getOwner(), "owner cannot be null");
    constr.getData().add(toPlutusData(obj.getOwner()));

    //Field batchId
    Objects.requireNonNull(obj.getBatchId(), "batchId cannot be null");
    constr.getData().add(toPlutusData(obj.getBatchId()));

    //Field picture
    Objects.requireNonNull(obj.getPicture(), "picture cannot be null");
    if(obj.getPicture().isEmpty()) {
      var pictureConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(pictureConstr);
    } else {
      var picture_$nested=toPlutusData(obj.getPicture().get());var pictureConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(picture_$nested)).build();
      constr.getData().add(pictureConstr);
    }

    //Field name
    Objects.requireNonNull(obj.getName(), "name cannot be null");
    if(obj.getName().isEmpty()) {
      var nameConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(nameConstr);
    } else {
      var name_$nested=toPlutusData(obj.getName().get());var nameConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(name_$nested)).build();
      constr.getData().add(nameConstr);
    }

    //Field subtitle
    Objects.requireNonNull(obj.getSubtitle(), "subtitle cannot be null");
    if(obj.getSubtitle().isEmpty()) {
      var subtitleConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(subtitleConstr);
    } else {
      var subtitle_$nested=toPlutusData(obj.getSubtitle().get());var subtitleConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(subtitle_$nested)).build();
      constr.getData().add(subtitleConstr);
    }

    //Field x
    Objects.requireNonNull(obj.getX(), "x cannot be null");
    if(obj.getX().isEmpty()) {
      var xConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(xConstr);
    } else {
      var x_$nested=toPlutusData(obj.getX().get());var xConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(x_$nested)).build();
      constr.getData().add(xConstr);
    }

    //Field telegram
    Objects.requireNonNull(obj.getTelegram(), "telegram cannot be null");
    if(obj.getTelegram().isEmpty()) {
      var telegramConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(telegramConstr);
    } else {
      var telegram_$nested=toPlutusData(obj.getTelegram().get());var telegramConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(telegram_$nested)).build();
      constr.getData().add(telegramConstr);
    }

    //Field instagram
    Objects.requireNonNull(obj.getInstagram(), "instagram cannot be null");
    if(obj.getInstagram().isEmpty()) {
      var instagramConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(instagramConstr);
    } else {
      var instagram_$nested=toPlutusData(obj.getInstagram().get());var instagramConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(instagram_$nested)).build();
      constr.getData().add(instagramConstr);
    }

    //Field discord
    Objects.requireNonNull(obj.getDiscord(), "discord cannot be null");
    if(obj.getDiscord().isEmpty()) {
      var discordConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(discordConstr);
    } else {
      var discord_$nested=toPlutusData(obj.getDiscord().get());var discordConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(discord_$nested)).build();
      constr.getData().add(discordConstr);
    }

    //Field reddit
    Objects.requireNonNull(obj.getReddit(), "reddit cannot be null");
    if(obj.getReddit().isEmpty()) {
      var redditConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(redditConstr);
    } else {
      var reddit_$nested=toPlutusData(obj.getReddit().get());var redditConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(reddit_$nested)).build();
      constr.getData().add(redditConstr);
    }

    //Field youtube
    Objects.requireNonNull(obj.getYoutube(), "youtube cannot be null");
    if(obj.getYoutube().isEmpty()) {
      var youtubeConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(youtubeConstr);
    } else {
      var youtube_$nested=toPlutusData(obj.getYoutube().get());var youtubeConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(youtube_$nested)).build();
      constr.getData().add(youtubeConstr);
    }

    //Field linkedin
    Objects.requireNonNull(obj.getLinkedin(), "linkedin cannot be null");
    if(obj.getLinkedin().isEmpty()) {
      var linkedinConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(linkedinConstr);
    } else {
      var linkedin_$nested=toPlutusData(obj.getLinkedin().get());var linkedinConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(linkedin_$nested)).build();
      constr.getData().add(linkedinConstr);
    }

    //Field github
    Objects.requireNonNull(obj.getGithub(), "github cannot be null");
    if(obj.getGithub().isEmpty()) {
      var githubConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(githubConstr);
    } else {
      var github_$nested=toPlutusData(obj.getGithub().get());var githubConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(github_$nested)).build();
      constr.getData().add(githubConstr);
    }

    //Field website
    Objects.requireNonNull(obj.getWebsite(), "website cannot be null");
    if(obj.getWebsite().isEmpty()) {
      var websiteConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(websiteConstr);
    } else {
      var website_$nested=toPlutusData(obj.getWebsite().get());var websiteConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(website_$nested)).build();
      constr.getData().add(websiteConstr);
    }

    //Field adahandle
    Objects.requireNonNull(obj.getAdahandle(), "adahandle cannot be null");
    if(obj.getAdahandle().isEmpty()) {
      var adahandleConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(adahandleConstr);
    } else {
      var adahandle_$nested=toPlutusData(obj.getAdahandle().get());var adahandleConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(adahandle_$nested)).build();
      constr.getData().add(adahandleConstr);
    }

    //Field email
    Objects.requireNonNull(obj.getEmail(), "email cannot be null");
    if(obj.getEmail().isEmpty()) {
      var emailConstr = ConstrPlutusData.builder().alternative(1).data(ListPlutusData.of()).build();
      constr.getData().add(emailConstr);
    } else {
      var email_$nested=toPlutusData(obj.getEmail().get());var emailConstr = ConstrPlutusData.builder().alternative(0).data(ListPlutusData.of(email_$nested)).build();
      constr.getData().add(emailConstr);
    }

    return constr;
  }

  public SocialHubDatum fromPlutusData(ConstrPlutusData constr) {
    var obj = new SocialHubDatum();
    var data = constr.getData();

    //Field owner
    var owner = ((BytesPlutusData)data.getPlutusDataList().get(0)).getValue();
    obj.setOwner(owner);

    //Field batchId
    var batchId = ((BytesPlutusData)data.getPlutusDataList().get(1)).getValue();
    obj.setBatchId(batchId);

    //Field picture
    java.util.Optional<byte[]> picture = null;
    var pictureConstr = (ConstrPlutusData)data.getPlutusDataList().get(2);
    if(pictureConstr.getAlternative() == 1) {
      picture = Optional.empty();
    } else {
      var picturePlutusData = pictureConstr.getData().getPlutusDataList().get(0);
      var picture_$nested=plutusDataToBytes(picturePlutusData);;
      picture = Optional.ofNullable(picture_$nested);
    }

    obj.setPicture(picture);

    //Field name
    java.util.Optional<byte[]> name = null;
    var nameConstr = (ConstrPlutusData)data.getPlutusDataList().get(3);
    if(nameConstr.getAlternative() == 1) {
      name = Optional.empty();
    } else {
      var namePlutusData = nameConstr.getData().getPlutusDataList().get(0);
      var name_$nested=plutusDataToBytes(namePlutusData);;
      name = Optional.ofNullable(name_$nested);
    }

    obj.setName(name);

    //Field subtitle
    java.util.Optional<byte[]> subtitle = null;
    var subtitleConstr = (ConstrPlutusData)data.getPlutusDataList().get(4);
    if(subtitleConstr.getAlternative() == 1) {
      subtitle = Optional.empty();
    } else {
      var subtitlePlutusData = subtitleConstr.getData().getPlutusDataList().get(0);
      var subtitle_$nested=plutusDataToBytes(subtitlePlutusData);;
      subtitle = Optional.ofNullable(subtitle_$nested);
    }

    obj.setSubtitle(subtitle);

    //Field x
    java.util.Optional<byte[]> x = null;
    var xConstr = (ConstrPlutusData)data.getPlutusDataList().get(5);
    if(xConstr.getAlternative() == 1) {
      x = Optional.empty();
    } else {
      var xPlutusData = xConstr.getData().getPlutusDataList().get(0);
      var x_$nested=plutusDataToBytes(xPlutusData);;
      x = Optional.ofNullable(x_$nested);
    }

    obj.setX(x);

    //Field telegram
    java.util.Optional<byte[]> telegram = null;
    var telegramConstr = (ConstrPlutusData)data.getPlutusDataList().get(6);
    if(telegramConstr.getAlternative() == 1) {
      telegram = Optional.empty();
    } else {
      var telegramPlutusData = telegramConstr.getData().getPlutusDataList().get(0);
      var telegram_$nested=plutusDataToBytes(telegramPlutusData);;
      telegram = Optional.ofNullable(telegram_$nested);
    }

    obj.setTelegram(telegram);

    //Field instagram
    java.util.Optional<byte[]> instagram = null;
    var instagramConstr = (ConstrPlutusData)data.getPlutusDataList().get(7);
    if(instagramConstr.getAlternative() == 1) {
      instagram = Optional.empty();
    } else {
      var instagramPlutusData = instagramConstr.getData().getPlutusDataList().get(0);
      var instagram_$nested=plutusDataToBytes(instagramPlutusData);;
      instagram = Optional.ofNullable(instagram_$nested);
    }

    obj.setInstagram(instagram);

    //Field discord
    java.util.Optional<byte[]> discord = null;
    var discordConstr = (ConstrPlutusData)data.getPlutusDataList().get(8);
    if(discordConstr.getAlternative() == 1) {
      discord = Optional.empty();
    } else {
      var discordPlutusData = discordConstr.getData().getPlutusDataList().get(0);
      var discord_$nested=plutusDataToBytes(discordPlutusData);;
      discord = Optional.ofNullable(discord_$nested);
    }

    obj.setDiscord(discord);

    //Field reddit
    java.util.Optional<byte[]> reddit = null;
    var redditConstr = (ConstrPlutusData)data.getPlutusDataList().get(9);
    if(redditConstr.getAlternative() == 1) {
      reddit = Optional.empty();
    } else {
      var redditPlutusData = redditConstr.getData().getPlutusDataList().get(0);
      var reddit_$nested=plutusDataToBytes(redditPlutusData);;
      reddit = Optional.ofNullable(reddit_$nested);
    }

    obj.setReddit(reddit);

    //Field youtube
    java.util.Optional<byte[]> youtube = null;
    var youtubeConstr = (ConstrPlutusData)data.getPlutusDataList().get(10);
    if(youtubeConstr.getAlternative() == 1) {
      youtube = Optional.empty();
    } else {
      var youtubePlutusData = youtubeConstr.getData().getPlutusDataList().get(0);
      var youtube_$nested=plutusDataToBytes(youtubePlutusData);;
      youtube = Optional.ofNullable(youtube_$nested);
    }

    obj.setYoutube(youtube);

    //Field linkedin
    java.util.Optional<byte[]> linkedin = null;
    var linkedinConstr = (ConstrPlutusData)data.getPlutusDataList().get(11);
    if(linkedinConstr.getAlternative() == 1) {
      linkedin = Optional.empty();
    } else {
      var linkedinPlutusData = linkedinConstr.getData().getPlutusDataList().get(0);
      var linkedin_$nested=plutusDataToBytes(linkedinPlutusData);;
      linkedin = Optional.ofNullable(linkedin_$nested);
    }

    obj.setLinkedin(linkedin);

    //Field github
    java.util.Optional<byte[]> github = null;
    var githubConstr = (ConstrPlutusData)data.getPlutusDataList().get(12);
    if(githubConstr.getAlternative() == 1) {
      github = Optional.empty();
    } else {
      var githubPlutusData = githubConstr.getData().getPlutusDataList().get(0);
      var github_$nested=plutusDataToBytes(githubPlutusData);;
      github = Optional.ofNullable(github_$nested);
    }

    obj.setGithub(github);

    //Field website
    java.util.Optional<byte[]> website = null;
    var websiteConstr = (ConstrPlutusData)data.getPlutusDataList().get(13);
    if(websiteConstr.getAlternative() == 1) {
      website = Optional.empty();
    } else {
      var websitePlutusData = websiteConstr.getData().getPlutusDataList().get(0);
      var website_$nested=plutusDataToBytes(websitePlutusData);;
      website = Optional.ofNullable(website_$nested);
    }

    obj.setWebsite(website);

    //Field adahandle
    java.util.Optional<byte[]> adahandle = null;
    var adahandleConstr = (ConstrPlutusData)data.getPlutusDataList().get(14);
    if(adahandleConstr.getAlternative() == 1) {
      adahandle = Optional.empty();
    } else {
      var adahandlePlutusData = adahandleConstr.getData().getPlutusDataList().get(0);
      var adahandle_$nested=plutusDataToBytes(adahandlePlutusData);;
      adahandle = Optional.ofNullable(adahandle_$nested);
    }

    obj.setAdahandle(adahandle);

    //Field email
    java.util.Optional<byte[]> email = null;
    var emailConstr = (ConstrPlutusData)data.getPlutusDataList().get(15);
    if(emailConstr.getAlternative() == 1) {
      email = Optional.empty();
    } else {
      var emailPlutusData = emailConstr.getData().getPlutusDataList().get(0);
      var email_$nested=plutusDataToBytes(emailPlutusData);;
      email = Optional.ofNullable(email_$nested);
    }

    obj.setEmail(email);
    return obj;
  }

  public byte[] serialize(SocialHubDatum obj) {
    Objects.requireNonNull(obj);;
    try {
      var constr = toPlutusData(obj);
      return CborSerializationUtil.serialize(constr.serialize());
    } catch (Exception e) {
      throw new CborRuntimeException(e);
    }
  }

  public String serializeToHex(SocialHubDatum obj) {
    Objects.requireNonNull(obj);;
    var constr = toPlutusData(obj);
    return constr.serializeToHex();
  }

  public SocialHubDatum deserialize(byte[] bytes) {
    Objects.requireNonNull(bytes);;
    try {
      var di = CborSerializationUtil.deserialize(bytes);
      var constr = ConstrPlutusData.deserialize(di);
      return fromPlutusData(constr);
    } catch (Exception e) {
      throw new CborRuntimeException(e);
    }
  }

  public SocialHubDatum deserialize(String hex) {
    Objects.requireNonNull(hex);;
    var bytes = HexUtil.decodeHexString(hex);
    return deserialize(bytes);
  }
}