All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.dianping.cat.status.model.entity.Extension Maven / Gradle / Ivy

package com.dianping.cat.status.model.entity;

import static com.dianping.cat.status.model.Constants.ATTR_ID;
import static com.dianping.cat.status.model.Constants.ENTITY_EXTENSION;

import java.util.LinkedHashMap;
import java.util.Map;

import com.dianping.cat.status.model.BaseEntity;
import com.dianping.cat.status.model.IVisitor;

public class Extension extends BaseEntity {
   private String m_id;

   private String m_description;

   private Map m_details = new LinkedHashMap();

   private Map m_dynamicAttributes = new LinkedHashMap();

   public Extension() {
   }

   public Extension(String id) {
      m_id = id;
   }

   @Override
   public void accept(IVisitor visitor) {
      visitor.visitExtension(this);
   }

   public Extension addExtensionDetail(ExtensionDetail extensionDetail) {
      m_details.put(extensionDetail.getId(), extensionDetail);
      return this;
   }

   @Override
   public boolean equals(Object obj) {
      if (obj instanceof Extension) {
         Extension _o = (Extension) obj;

         if (!equals(getId(), _o.getId())) {
            return false;
         }

         return true;
      }

      return false;
   }

   public ExtensionDetail findExtensionDetail(String id) {
      return m_details.get(id);
   }

   public ExtensionDetail findOrCreateExtensionDetail(String id) {
      ExtensionDetail extensionDetail = m_details.get(id);

      if (extensionDetail == null) {
         synchronized (m_details) {
            extensionDetail = m_details.get(id);

            if (extensionDetail == null) {
               extensionDetail = new ExtensionDetail(id);
               m_details.put(id, extensionDetail);
            }
         }
      }

      return extensionDetail;
   }

   public String getDynamicAttribute(String name) {
      return m_dynamicAttributes.get(name);
   }

   public Map getDynamicAttributes() {
      return m_dynamicAttributes;
   }

   public String getDescription() {
      return m_description;
   }

   public Map getDetails() {
      return m_details;
   }

   public String getId() {
      return m_id;
   }

   @Override
   public int hashCode() {
      int hash = 0;

      hash = hash * 31 + (m_id == null ? 0 : m_id.hashCode());

      return hash;
   }

   @Override
   public void mergeAttributes(Extension other) {
      assertAttributeEquals(other, ENTITY_EXTENSION, ATTR_ID, m_id, other.getId());

      for (Map.Entry e : other.getDynamicAttributes().entrySet()) {
         m_dynamicAttributes.put(e.getKey(), e.getValue());
      }

   }

   public ExtensionDetail removeExtensionDetail(String id) {
      return m_details.remove(id);
   }

   public void setDynamicAttribute(String name, String value) {
      m_dynamicAttributes.put(name, value);
   }

   public Extension setDescription(String description) {
      m_description = description;
      return this;
   }

   public Extension setId(String id) {
      m_id = id;
      return this;
   }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy