Package tenapull.data.entity.template
Class StringHashLookupPojo<POJO extends StringHashLookupPojo<POJO>>
java.lang.Object
tenapull.data.entity.template.StringHashLookupPojo<POJO>
- Type Parameters:
POJO
- the type implementing StringHashLookupPojo
- All Implemented Interfaces:
java.lang.Comparable<POJO>
,DbPojo
,HashLookupPojo<POJO>
,StringLookupPojo<POJO>
- Direct Known Subclasses:
Cpe
,OperatingSystem
,PluginDescription
,PluginScriptCopyright
,PluginSolution
,PluginSynopsis
,Remediation
,ScanTargets
@MappedSuperclass public abstract class StringHashLookupPojo<POJO extends StringHashLookupPojo<POJO>> extends java.lang.Object implements HashLookupPojo<POJO>, StringLookupPojo<POJO>
Abstract super class of all StringHashLookups. This is used for lookup tables
that may have a string longer than 255 characters. Because longtext fields cannot
be indexed by MySQL, we instead use a SHA-512 hash to index it with a 'unique'
constraint.
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
FIELD_NAME
The name of the field containing the lookup string -
Constructor Summary
Constructors Constructor Description StringHashLookupPojo()
-
Method Summary
Modifier and Type Method Description boolean
_isHashCalculated()
Shortcut for the StringHashLookupDao to determine what approach to most efficiently use to find a matching value for this lookup.boolean
_match(POJO o)
Determine if this pojo represents the same DB record as another POJO of the same type.void
_prepare()
Prepares this entity for saving/inserting into the DBvoid
_set(POJO other)
Synchronize the values of two matching POJOs which represent the same DB recordboolean
equals(java.lang.Object o)
Returns true if and only if the compared object is of the same class and they share the same lookup valueHash
get_hash()
Generates the SHA-512 hash of the lookup value if it does not exist, or returns the already-existing hash if it does.int
getId()
Get the surrogate primary key id for the lookupjava.lang.String
getValue()
Get the string lookup value this record representsint
hashCode()
Creates a java hashCode for use in a HashMap or HashSetvoid
set_hash(Hash hash)
Sets the hash of the lookup after doing an immutability check.void
setId(int id)
Set the surrogate primary key id for the lookupvoid
setValue(java.lang.String value)
Sets the string lookup value this record represents, after doing an immutability checkcom.fasterxml.jackson.databind.JsonNode
toJsonNode()
Converts this lookup entity into a JSON TextNodejava.lang.String
toJsonString()
Converts this lookup entity's value into a JSON-escaped Stringjava.lang.String
toString()
-
Field Details
-
FIELD_NAME
public static final java.lang.String FIELD_NAMEThe name of the field containing the lookup string- See Also:
- Constant Field Values
-
-
Constructor Details
-
StringHashLookupPojo
public StringHashLookupPojo()
-
-
Method Details
-
getId
public int getId()Get the surrogate primary key id for the lookup -
setId
public void setId(int id)Set the surrogate primary key id for the lookup -
getValue
public java.lang.String getValue()Get the string lookup value this record represents- Specified by:
getValue
in interfaceStringLookupPojo<POJO extends StringHashLookupPojo<POJO>>
- Returns:
- the string lookup value
-
setValue
public void setValue(java.lang.String value) throws java.lang.IllegalStateExceptionSets the string lookup value this record represents, after doing an immutability check- Specified by:
setValue
in interfaceStringLookupPojo<POJO extends StringHashLookupPojo<POJO>>
- Parameters:
value
- the string lookup value to set- Throws:
java.lang.IllegalStateException
- if the _hash field has already been set and the value being set does not match a pre-existing value. These record are meant to be immutable in the DB once created, and the hash should always accurately reflect the hash of the string value
-
toJsonNode
public com.fasterxml.jackson.databind.JsonNode toJsonNode()Converts this lookup entity into a JSON TextNode- Specified by:
toJsonNode
in interfaceDbPojo
- Returns:
- a JSON TextNode representing the string value of this entity
-
toJsonString
public java.lang.String toJsonString() throws com.fasterxml.jackson.core.JsonProcessingExceptionConverts this lookup entity's value into a JSON-escaped String- Specified by:
toJsonString
in interfaceDbPojo
- Returns:
- the lookup string value as a JSON-escaped String
- Throws:
com.fasterxml.jackson.core.JsonProcessingException
-
toString
public java.lang.String toString()- Overrides:
toString
in classjava.lang.Object
- Returns:
- the lookup value of this entity
-
equals
public boolean equals(java.lang.Object o)Returns true if and only if the compared object is of the same class and they share the same lookup value- Overrides:
equals
in classjava.lang.Object
- Parameters:
o
-- Returns:
-
_prepare
public void _prepare()Prepares this entity for saving/inserting into the DB -
hashCode
public int hashCode()Creates a java hashCode for use in a HashMap or HashSet- Overrides:
hashCode
in classjava.lang.Object
- Returns:
-
get_hash
Generates the SHA-512 hash of the lookup value if it does not exist, or returns the already-existing hash if it does.- Specified by:
get_hash
in interfaceHashLookupPojo<POJO extends StringHashLookupPojo<POJO>>
- Returns:
-
set_hash
Sets the hash of the lookup after doing an immutability check.- Specified by:
set_hash
in interfaceHashLookupPojo<POJO extends StringHashLookupPojo<POJO>>
- Parameters:
hash
-- Throws:
java.lang.IllegalStateException
- if the _hash field has already been set and the hash being set does not match the pre-existing hash. These record are meant to be immutable in the DB once created, and the hash should always accurately reflect the hash of the string value
-
_isHashCalculated
public boolean _isHashCalculated()Description copied from interface:HashLookupPojo
Shortcut for the StringHashLookupDao to determine what approach to most efficiently use to find a matching value for this lookup. If the hash is already calculated, it is most efficient to use the hash. If it is not, it may be more efficient to use the _match method- Specified by:
_isHashCalculated
in interfaceHashLookupPojo<POJO extends StringHashLookupPojo<POJO>>
- Returns:
- true if the hash has already been calculated, false if not
-
_set
Description copied from interface:HashLookupPojo
Synchronize the values of two matching POJOs which represent the same DB record- Specified by:
_set
in interfaceHashLookupPojo<POJO extends StringHashLookupPojo<POJO>>
- Parameters:
other
- the other pojo representing the same DB record, which the values should be taken from
-
_match
Description copied from interface:HashLookupPojo
Determine if this pojo represents the same DB record as another POJO of the same type. Note that this is NOT the same as the equals() method (though it may be in certain cases). Equals may be used to determine if two pojos of the same type contain all of the same values, regardless of whether they represent the same DB record (depending on implementation) while _match determines only if they represent the same DB record even if some of the values may not be equivalent. In many cases the two methods may be the same, but their purpose is different.- Specified by:
_match
in interfaceHashLookupPojo<POJO extends StringHashLookupPojo<POJO>>
- Parameters:
o
- other pojo to match- Returns:
- true if the two pojos represent the same DB record, false if not
-