package com.l7tech.objectmodel;

import com.l7tech.util.Charsets;
import com.l7tech.util.HexUtils;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlTransient;
import java.util.HashMap;
import java.util.Map;

@XmlRootElement
public class ValueReferenceEntityHeader extends ExternalEntityHeader {
   private static final String OWNER_TYPE;
   static final long serialVersionUID = -748774863021201213L;
   private static final String[] d;

   public ValueReferenceEntityHeader() {
   }

   public ValueReferenceEntityHeader(ExternalEntityHeader var1, String var2) {
      super(HexUtils.encodeBase64(var2.getBytes(Charsets.UTF8)) + ":" + var1.getExternalId(), var1);
      String var10001 = this.getName();
      String[] var4 = d;
      this.setName(var10001 + var4[1] + var2);
      Map var3 = var1.getExtraProperties();
      if (var3 != null) {
         this.extraProperties = new HashMap<>(var3);
      }

      this.setProperty(d[2], var1.getType().name());
      this.type = EntityType.VALUE_REFERENCE;
   }

   @Override
   protected String computeMappingKey(String var1) {
      StringBuilder var2 = new StringBuilder();
      var2.append(this.getOwnerType());
      var2.append(':');
      var2.append(this.getOwnerId());
      var2.append(':');
      var2.append(this.getValueType());
      var2.append(':');
      var2.append(HexUtils.encodeBase64(HexUtils.getMd5Digest(HexUtils.encodeUtf8(var1))));
      return var2.toString();
   }

   public ValueReferenceEntityHeader(ExternalEntityHeader var1) {
      super(var1.getExternalId(), var1);
      this.setExtraProperties(new HashMap<>(var1.getExtraProperties()));
   }

   @XmlTransient
   public EntityType getOwnerType() {
      return EntityType.valueOf(this.getProperty(d[0]));
   }

   @XmlTransient
   public String getOwnerId() {
      return this.getExternalId().substring(this.getExternalId().indexOf(":") + 1);
   }

   @XmlTransient
   public String getPropertyName() {
      return HexUtils.decodeUtf8(HexUtils.decodeBase64(this.getExternalId().substring(0, this.getExternalId().indexOf(":"))));
   }

   @XmlTransient
   public ExternalEntityHeader getOwnerHeader() {
      return new ExternalEntityHeader(this.getOwnerId(), this.getOwnerType(), this.getStrId(), this.getName(), this.getDescription(), this.getVersion());
   }

   static {
      String[] var5 = new String[3];
      int var3 = 0;
      String var2 = "\u0001\u0012\u0017\u001fg\r\u0014\u001e\u0000\u0003N_Y\t\u0001\u0012\u0017\u001fg\r\u0014\u001e\u0000";
      int var4 = "\u0001\u0012\u0017\u001fg\r\u0014\u001e\u0000\u0003N_Y\t\u0001\u0012\u0017\u001fg\r\u0014\u001e\u0000".length();
      char var1 = '\t';
      int var0 = -1;

      while (true) {
         String var10002 = d(59, d(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            d = var5;
            OWNER_TYPE = d[2];
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

   private static char[] d(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 86);
      }

      return var10000;
   }

   private static String d(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 85;
            case 1 -> 94;
            case 2 -> 66;
            case 3 -> 65;
            case 4 -> 46;
            case 5 -> 98;
            default -> 86;
         });
      }

      return new String(var10001).intern();
   }
}
