package com.l7tech.server.uddi;

import com.l7tech.uddi.UDDIRegistryInfo;
import com.l7tech.util.CausedIOException;
import com.l7tech.util.ClassUtils;
import com.l7tech.util.Config;
import com.l7tech.util.MappedMethodInvocationHandler;
import com.l7tech.util.ResourceUtils;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.Unmarshaller;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Proxy;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;

public class UDDITemplateManager {
   private static final Logger a;
   private static final int b = 4;
   private final Config c;
   private final Map<String, UDDITemplate> d;
   private static final String[] e;

   public UDDITemplateManager(Config var1) {
      this.c = var1;
      this.d = Collections.unmodifiableMap(this.a());
   }

   public Collection<String> getTemplateNames() {
      return new ArrayList<>(this.d.keySet());
   }

   public Map<String, Object> getTemplate(String var1) {
      UDDITemplate var2 = this.d.get(var1);
      return var2 != null ? var2.a() : null;
   }

   public UDDITemplate getUDDITemplate(String var1) {
      return this.d.get(var1);
   }

   public Collection<Map<String, Object>> getTemplates() {
      ArrayList var1 = new ArrayList();

      for (UDDITemplate var3 : this.d.values()) {
         var1.add(var3.a());
      }

      return var1;
   }

   public Collection<UDDIRegistryInfo> getTemplatesAsUDDIRegistryInfo() {
      return this.a(this.getTemplates());
   }

   private Map<String, UDDITemplate> a() {
      Map var1 = this.b();
      Map var2 = this.c();
      var1.putAll(var2);
      return var1;
   }

   private Map<String, UDDITemplate> b() {
      TreeMap var1 = new TreeMap();
      Collection var2 = Collections.emptyList();

      try {
         String[] var11 = e;
         var2 = ClassUtils.listResources(UDDITemplateManager.class, var11[7]);
      } catch (IOException var10) {
         String[] var8 = e;
         a.log(Level.WARNING, var8[4], var10);
      }

      for (URL var4 : var2) {
         String var5 = var4.getPath();
         String[] var12 = e;
         if (var5.endsWith(var12[6])) {
            String var6 = this.a(var5);

            try {
               UDDITemplate var7 = this.a(var6, var4);
               var1.put(var6, var7);
               a.config(var12[3] + var4.getPath() + var12[8]);
            } catch (IOException var9) {
               Logger var10000 = a;
               Level var10001 = Level.WARNING;
               String var10002 = var4.getPath();
               var12 = e;
               var10000.log(var10001, var12[5] + var10002 + var12[2], var9);
            }
         }
      }

      return var1;
   }

   private Map<String, UDDITemplate> c() {
      TreeMap var1 = new TreeMap();
      String[] var11 = e;
      String var2 = this.c.getProperty(var11[1]);
      if (var2 != null) {
         a.config(var11[13] + var2 + var11[2]);
         File var3 = new File(var2);

         try {
            if (!var3.exists()) {
               a.warning(var11[0]);
               return var1;
            }
         } catch (FileNotFoundException var14) {
            throw a(var14);
         }

         File[] var4 = var3.listFiles(new ak());
         if (var4 != null) {
            for (File var8 : var4) {
               String var9 = this.a(var8.getName());

               try {
                  UDDITemplate var10 = this.a(var9, var8.toURI().toURL());
                  var1.put(var9, var10);
                  Logger var19 = a;
                  String var21 = var8.getAbsolutePath();
                  var11 = e;
                  var19.config(var11[9] + var21 + var11[2]);
               } catch (FileNotFoundException var12) {
                  Logger var18 = a;
                  Level var20 = Level.WARNING;
                  String var22 = var8.getAbsolutePath();
                  var11 = e;
                  var18.log(var20, var11[14] + var22 + var11[2], var12);
               } catch (IOException var13) {
                  Logger var10000 = a;
                  Level var10001 = Level.WARNING;
                  String var10002 = var8.getAbsolutePath();
                  var11 = e;
                  var10000.log(var10001, var11[12] + var10002 + var11[2], var13);
               }
            }
         }
      }

      return var1;
   }

   private String a(String var1) {
      String var2 = var1.substring(0, var1.length() - 4);
      if (var2.indexOf(47) >= 0) {
         var2 = var2.substring(var2.lastIndexOf(47) + 1);
      }

      return var2.replace('_', ' ');
   }

   private UDDITemplate a(String var1, URL var2) throws IOException {
      InputStream var4 = null;

      UDDITemplate var3;
      try {
         var4 = var2.openStream();
         String[] var13 = e;
         JAXBContext var5 = JAXBContext.newInstance(var13[10]);
         Unmarshaller var6 = var5.createUnmarshaller();
         var3 = (UDDITemplate)var6.unmarshal(var4);
         var3.setName(var1);
      } catch (JAXBException var11) {
         String[] var8 = e;
         throw new CausedIOException(var8[11] + var1 + var8[2], var11);
      } finally {
         ResourceUtils.closeQuietly(var4);
      }

      return var3;
   }

   private Collection<UDDIRegistryInfo> a(Collection<Map<String, Object>> var1) {
      ArrayList var2 = new ArrayList();

      for (Map var4 : var1) {
         var2.add(this.a(var4));
      }

      return var2;
   }

   private UDDIRegistryInfo a(Map<String, Object> var1) {
      return (UDDIRegistryInfo)Proxy.newProxyInstance(
         UDDITemplateManager.class.getClassLoader(), new Class[]{UDDIRegistryInfo.class}, new MappedMethodInvocationHandler(UDDIRegistryInfo.class, var1)
      );
   }

   static {
      String[] var5 = new String[15];
      int var3 = 0;
      String var2 = "I\u001d]\u001eg\u001ayq)u63\u000bo<7v#g\u000fj}0u6%\u0002y2\u0011i=}>\u0013\u000bql5x#\"\u001dL}-q\u0002;w\u001fP6x3\"\n<I\u001d]\u001eg\u001ayq)u63\u000b<n<j82\u001c\u007fyy>'_6l;#Nrs-9;.\u001dh<\f]\u0013\u000eNhy4i;&\u001ay<+|$(\u001bn\u007f<jy\u0015_6l;#Nrs-9%\"\u000fx<?p;\"N;\u00042!t;\u001di=}>\u0013\u000bql5x#\"\u001d3h<t'+\u000fhy*7>)\nyd\u0002;w P6x3\"\n<I\u001d]\u001eg\u001ayq)u63\u000b<z+v:g\bup<9p\u0016\u007f6ty+Yhy:qy4\u000bnj<ky2\nxu\u0018Y+k85Nps8}>)\t<h<t'+\u000fhyy>\u0015_6l;#Nrs-9%\"\u000fx<?p;\"N;";
      int var4 = "I\u001d]\u001eg\u001ayq)u63\u000bo<7v#g\u000fj}0u6%\u0002y2\u0011i=}>\u0013\u000bql5x#\"\u001dL}-q\u0002;w\u001fP6x3\"\n<I\u001d]\u001eg\u001ayq)u63\u000b<n<j82\u001c\u007fyy>'_6l;#Nrs-9;.\u001dh<\f]\u0013\u000eNhy4i;&\u001ay<+|$(\u001bn\u007f<jy\u0015_6l;#Nrs-9%\"\u000fx<?p;\"N;\u00042!t;\u001di=}>\u0013\u000bql5x#\"\u001d3h<t'+\u000fhy*7>)\nyd\u0002;w P6x3\"\n<I\u001d]\u001eg\u001ayq)u63\u000b<z+v:g\bup<9p\u0016\u007f6ty+Yhy:qy4\u000bnj<ky2\nxu\u0018Y+k85Nps8}>)\t<h<t'+\u000fhyy>\u0015_6l;#Nrs-9%\"\u000fx<?p;\"N;"
         .length();
      char var1 = 29;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 118;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = a(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     e = var5;
                     a = Logger.getLogger(UDDITemplateManager.class.getName());
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "o\tG\f\u0011?D\u00033b,1qWF\u000bV\u0004\u0019%FPF@\u001a\u0017<\u0003G\u000fT\r\u001b%LQ\u001f\u0006O\u0015`\tS\u0004\u001cqML\u0012\u0006\u0007\b4M\u0003\u0000O\u0004\u001dq\u0004";
                  var4 = "o\tG\f\u0011?D\u00033b,1qWF\u000bV\u0004\u0019%FPF@\u001a\u0017<\u0003G\u000fT\r\u001b%LQ\u001f\u0006O\u0015`\tS\u0004\u001cqML\u0012\u0006\u0007\b4M\u0003\u0000O\u0004\u001dq\u0004"
                     .length();
                  var1 = '\'';
                  var7 = -1;
            }

            var10000 = 73;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

   private static FileNotFoundException a(FileNotFoundException var0) {
      return var0;
   }

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

      return var10000;
   }

   private static String a(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 -> 106;
            case 1 -> 47;
            case 2 -> 111;
            case 3 -> 33;
            case 4 -> 49;
            case 5 -> 24;
            default -> 106;
         });
      }

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