package com.l7tech.objectmodel.imp;

import com.l7tech.objectmodel.NameableEntity;
import com.l7tech.security.rbac.RbacAttribute;
import jakarta.persistence.Column;
import jakarta.persistence.MappedSuperclass;
import jakarta.persistence.Version;
import jakarta.xml.bind.annotation.XmlElement;
import javax.validation.constraints.NotNull;

@MappedSuperclass
public abstract class NamedEntityImp extends PersistentEntityImp implements NameableEntity {
   protected String _name;
   static final long serialVersionUID = 2697050516429533946L;

   public NamedEntityImp() {
   }

   protected NamedEntityImp(NamedEntityImp var1) {
      super(var1);
      this.setName(var1.getName());
   }

   @Version
   @Column(name = "version")
   @Override
   public int getVersion() {
      return super.getVersion();
   }

   @RbacAttribute
   @NotNull
   @Column(name = "name", nullable = false, length = 128)
   @XmlElement(namespace = "http://ns.l7tech.com/secureSpan/1.0/core")
   @Override
   public String getName() {
      return this._name;
   }

   @Override
   public void setName(String var1) {
      this.checkLocked();
      this._name = var1;
   }

   @Override
   public boolean equals(Object var1) {
      if (this == var1) {
         return true;
      }

      if (var1 == null || this.getClass() != var1.getClass()) {
         return false;
      }

      if (!super.equals(var1)) {
         return false;
      }

      NamedEntityImp var2 = (NamedEntityImp)var1;
      return this._name != null ? this._name.equals(var2._name) : var2._name == null;
   }

   @Override
   public int hashCode() {
      int var1 = super.hashCode();
      return 31 * var1 + (this._name != null ? this._name.hashCode() : 0);
   }
}
