package org.ebayopensource.turmeric.tools.codegen.fastserformat.protobuf.tag;
/**
* Internal representation of a proto field meant for tagging
*/
public class ProtoMessageTag
{
private final String typeName;
private final String elementName;
private final String elementType;
private boolean isRepeating;
private boolean isRequired;
private boolean isSystemType;
public ProtoMessageTag(String typeName, String elementName, String elementType)
{
super();
this.typeName = typeName;
this.elementName = elementName;
this.elementType = elementType;
}
public boolean isSystemType()
{
return isSystemType;
}
public void setSystemType(boolean isSystemType)
{
this.isSystemType = isSystemType;
}
public String getElementName()
{
return elementName;
}
public String getTypeName()
{
return typeName;
}
public String getElementType()
{
return elementType;
}
public String getKey()
{
String key;
if(elementName==null)
{
key = typeName + "/" + elementType;
}
else
{
key = typeName + "/" + elementName + "/" + elementType;
}
return key;
}
public boolean isRepeating()
{
return isRepeating;
}
public void setRepeating(boolean isRepeating)
{
this.isRepeating = isRepeating;
}
public boolean isRequired()
{
return isRequired;
}
public void setRequired(boolean isRequired)
{
this.isRequired = isRequired;
}
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + ((elementName == null) ? 0 : elementName.hashCode());
result = prime * result + ((elementType == null) ? 0 : elementType.hashCode());
result = prime * result + (isRepeating ? 1231 : 1237);
result = prime * result + (isRequired ? 1231 : 1237);
result = prime * result + ((typeName == null) ? 0 : typeName.hashCode());
return result;
}
@Override
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ProtoMessageTag other = (ProtoMessageTag) obj;
if (elementName == null)
{
if (other.elementName != null)
return false;
}
else if (!elementName.equals(other.elementName))
return false;
if (elementType == null)
{
if (other.elementType != null)
return false;
}
else if (!elementType.equals(other.elementType))
return false;
if (isRepeating != other.isRepeating)
return false;
if (isRequired != other.isRequired)
return false;
if (typeName == null)
{
if (other.typeName != null)
return false;
}
else if (!typeName.equals(other.typeName))
return false;
return true;
}
@Override
public String toString()
{
return "ProtoMessageTag [typeName=" + typeName + ", elementName=" + elementName + ", elementType="
+ elementType + ", isRepeating=" + isRepeating + ", isRequired=" + isRequired + "]";
}
}