/**
*
*/
package ecologylab.bigsemantics.metadata.scalar;
import ecologylab.bigsemantics.metadata.MetadataFieldDescriptor;
import ecologylab.bigsemantics.metadata.semantics_pseudo_scalar;
import ecologylab.bigsemantics.model.text.ITermVector;
import ecologylab.bigsemantics.model.text.TermVector;
import ecologylab.serialization.annotations.simpl_inherit;
/**
* @author andruid
*
*/
@simpl_inherit
@semantics_pseudo_scalar
public class MetadataString extends MetadataScalarBase<String>
{
TermVector termVector = null;
public MetadataString()
{
}
public MetadataString(String value)
{
super(value);
}
/**
* Initialize the TermVector in addition to setting the value.
*/
@Override
public void setValue(String value)
{
if ((value != null) && (value.length() > 0))
{
this.value = value;
if (termVector != null)
{
termVector.reset(value);
}
else
{
termVector = new TermVector(value);
}
}
else
{
this.value = value; // set to "" or null
if (termVector != null)
{
termVector.reset("");
}
}
}
@Override
public ITermVector termVector()
{
if (termVector == null)
termVector = new TermVector(value); //Value may be non-null at this point.
return termVector;
}
/**
* Check if a string is not null and not equal to {@code MetadataFieldAccessor.NULL}
* @param valueString - string to check
* @return True if not null and not equal to MetadataFieldAccessor.NULL, false otherwise.
*/
public static boolean isNotNullValue(String valueString)
{
return (valueString != null && !valueString.equals(MetadataFieldDescriptor.NULL) );
}
public static boolean isNotNullAndEmptyValue(String valueString)
{
return isNotNullValue(valueString) && !"".equals(valueString.trim());
}
@Override
public void recycle()
{
if (termVector != null)
{
termVector.recycle();
termVector = null;
}
}
/**
* String scalar fields, by type, should contribute to the CompositeTermVector.
* This can, of course, be overridden in a meta_metadata field description.
*/
@Override
public boolean ignoreInTermVector()
{
return false;
}
}