package com.l7tech.gateway.common.export;

import com.l7tech.policy.assertion.Assertion;
import com.l7tech.util.DeserializeSafe;
import com.l7tech.util.InvalidDocumentFormatException;
import java.io.Serializable;
import org.w3c.dom.Element;

@DeserializeSafe
public abstract class ExternalReferenceFactory<ER, F> implements Serializable, Comparable<ExternalReferenceFactory> {
   private Class modularAssertionClass;
   private Class externalReferenceClass;
   static final long serialVersionUID = 2499864453983374297L;

   protected ExternalReferenceFactory(Class var1, Class var2) {
      this.modularAssertionClass = var1;
      this.externalReferenceClass = var2;
   }

   public abstract ER createExternalReference(F var1, Assertion var2);

   public abstract ER parseFromElement(F var1, Element var2) throws InvalidDocumentFormatException;

   public abstract Object getResolveExternalReferenceWizardStepPanel(ER var1);

   public boolean matchByModularAssertion(Class var1) {
      return var1 != null && this.modularAssertionClass != null ? var1.getName().equals(this.modularAssertionClass.getName()) : false;
   }

   public boolean matchByExternalReference(String var1) {
      return var1 != null && this.externalReferenceClass != null ? var1.equals(this.externalReferenceClass.getName()) : false;
   }

   public int compareTo(ExternalReferenceFactory var1) {
      return this.modularAssertionClass != null && var1 != null && var1.modularAssertionClass != null
         ? this.modularAssertionClass.getName().compareToIgnoreCase(var1.modularAssertionClass.getName())
         : 0;
   }
}
