package org.molgenis.data.processor;
public class MissingValueProcessor extends AbstractCellProcessor
{
private static final long serialVersionUID = 1L;
private final String missingValue;
private final boolean emptyIsMissing;
public MissingValueProcessor(String missingValue, boolean emptyIsMissing)
{
super();
this.missingValue = missingValue;
this.emptyIsMissing = emptyIsMissing;
}
public MissingValueProcessor(boolean processHeader, boolean processData, String missingValue,
boolean emptyIsMissing)
{
super(processHeader, processData);
this.missingValue = missingValue;
this.emptyIsMissing = emptyIsMissing;
}
@Override
public String process(String value)
{
return value == null ? missingValue : (emptyIsMissing && value.isEmpty() ? missingValue : value);
}
@Override
public int hashCode()
{
final int prime = 31;
int result = super.hashCode();
result = prime * result + (emptyIsMissing ? 1231 : 1237);
result = prime * result + ((missingValue == null) ? 0 : missingValue.hashCode());
return result;
}
@Override
public boolean equals(Object obj)
{
if (this == obj) return true;
if (!super.equals(obj)) return false;
if (getClass() != obj.getClass()) return false;
MissingValueProcessor other = (MissingValueProcessor) obj;
if (emptyIsMissing != other.emptyIsMissing) return false;
if (missingValue == null)
{
if (other.missingValue != null) return false;
}
else if (!missingValue.equals(other.missingValue)) return false;
return true;
}
}