137 lines
2.7 KiB
Java
137 lines
2.7 KiB
Java
package eu.dnetlib.pace.model;
|
|
|
|
import java.net.MalformedURLException;
|
|
import java.net.URL;
|
|
import java.util.Collections;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
|
|
import eu.dnetlib.pace.config.Type;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
/**
|
|
* The Class FieldValueImpl.
|
|
*/
|
|
public class FieldValueImpl extends AbstractField implements FieldValue {
|
|
|
|
/** The value. */
|
|
private Object value = null;
|
|
|
|
/**
|
|
* Instantiates a new field value impl.
|
|
*/
|
|
public FieldValueImpl() {}
|
|
|
|
/**
|
|
* Instantiates a new field value impl.
|
|
*
|
|
* @param type
|
|
* the type
|
|
* @param name
|
|
* the name
|
|
* @param value
|
|
* the value
|
|
*/
|
|
public FieldValueImpl(final Type type, final String name, final Object value) {
|
|
super(type, name);
|
|
this.value = value;
|
|
}
|
|
|
|
/*
|
|
* (non-Javadoc)
|
|
*
|
|
* @see eu.dnetlib.pace.model.Field#isEmpty()
|
|
*/
|
|
@Override
|
|
public boolean isEmpty() {
|
|
if (value == null) return false;
|
|
|
|
switch (type) {
|
|
case String:
|
|
case JSON:
|
|
return value.toString().isEmpty();
|
|
case List:
|
|
try {
|
|
List<?> list = (List<?>) value;
|
|
return list.isEmpty() || ((FieldValueImpl) list.get(0)).isEmpty();
|
|
} catch (Exception e) {
|
|
throw new RuntimeException(value.toString());
|
|
}
|
|
case URL:
|
|
String str = value.toString();
|
|
return StringUtils.isBlank(str) || !isValidURL(str);
|
|
case DoubleArray:
|
|
return doubleArrayValue().length==0;
|
|
default:
|
|
return true;
|
|
}
|
|
}
|
|
|
|
private boolean isValidURL(final String s) {
|
|
try {
|
|
new URL(s);
|
|
return true;
|
|
} catch (MalformedURLException e) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/*
|
|
* (non-Javadoc)
|
|
*
|
|
* @see eu.dnetlib.pace.model.FieldValue#getValue()
|
|
*/
|
|
@Override
|
|
public Object getValue() {
|
|
return value;
|
|
}
|
|
|
|
/*
|
|
* (non-Javadoc)
|
|
*
|
|
* @see eu.dnetlib.pace.model.FieldValue#setValue(java.lang.Object)
|
|
*/
|
|
@Override
|
|
public void setValue(final Object value) {
|
|
this.value = value;
|
|
}
|
|
|
|
/*
|
|
* (non-Javadoc)
|
|
*
|
|
* @see eu.dnetlib.pace.model.Field#stringValue()
|
|
*/
|
|
@Override
|
|
// @SuppressWarnings("unchecked")
|
|
public String stringValue() {
|
|
return String.valueOf(getValue());
|
|
// switch (getType()) {
|
|
//
|
|
// case Int:
|
|
// return String.valueOf(getValue());
|
|
// case List:
|
|
// return Joiner.on(" ").join((List<String>) getValue());
|
|
// case String:
|
|
// return (String) getValue();
|
|
// default:
|
|
// throw new IllegalArgumentException("Unknown type: " + getType().toString());
|
|
// }
|
|
}
|
|
|
|
public double[] doubleArrayValue() {
|
|
return (double[])getValue();
|
|
}
|
|
|
|
/*
|
|
* (non-Javadoc)
|
|
*
|
|
* @see java.lang.Iterable#iterator()
|
|
*/
|
|
@Override
|
|
@SuppressWarnings("unchecked")
|
|
public Iterator<Field> iterator() {
|
|
return Collections.singleton((Field) this).iterator();
|
|
}
|
|
|
|
}
|