package net.techreadiness.ui.util;
import java.util.Map;
import javax.inject.Inject;
import net.techreadiness.persistence.dao.GenericDAO;
import net.techreadiness.util.EntityUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.util.StrutsTypeConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class BaseEntityTypeConverter extends StrutsTypeConverter {
private final Logger log = LoggerFactory.getLogger(BaseEntityTypeConverter.class);
@Inject
GenericDAO genericDao;
@SuppressWarnings("unchecked")
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
if (values.length == 1 && StringUtils.isNotBlank(values[0])) {
String value = values[0];
if (value.equals("NEW")) {
try {
return toClass.newInstance();
} catch (Exception e) {
log.warn("Could not convert class: {}", toClass.getName(), e);
return null;
}
}
return genericDao.find(toClass, Long.valueOf(values[0]));
}
return null;
}
@Override
public String convertToString(Map context, Object o) {
Object id = EntityUtils.getId(o);
if (id == null) {
return "NEW";
}
return id.toString();
}
}