package net.stsmedia.financemanager.web.editors;
import java.beans.PropertyEditorSupport;
import net.stsmedia.financemanager.domain.Person;
import net.stsmedia.financemanager.service.PersonService;
import org.springframework.beans.SimpleTypeConverter;
/**
* A editor which allows the translation between {@link String} and
* {@link Person}.
*
*
* @author Stefan Schmidt
* @since 0.1
*
*/
public class PersonEditor extends PropertyEditorSupport {
private PersonService personService;
public PersonEditor(PersonService personService) {
super();
this.personService = personService;
}
SimpleTypeConverter typeConverter = new SimpleTypeConverter();
public String getAsText() {
Object obj = getValue();
if (obj == null) {
return null;
}
return (String) typeConverter.convertIfNecessary(((Person) obj).getId(), String.class);
}
public void setAsText(String text) {
if (text == null || text.length() == 0) {
setValue(null);
return;
}
Long identifier = (Long) typeConverter.convertIfNecessary(text, Long.class);
if (identifier == null) {
setValue(null);
return;
}
setValue(personService.find(identifier));
}
}