UserXmlPreferencesBaseDOSingleValueConverter.javaPaquete: org.projectforge.business.user
Clases: UserXmlPreferencesBaseDOSingleValueConverter
Extiende: BaseDao
Implementa: SingleValueConverter
Métodos (3): canConvert, toString, fromString
Importaciones: 5 paquetes
package org.projectforge.business.user;
import com.thoughtworks.xstream.converters.SingleValueConverter;
import org.apache.commons.lang3.StringUtils;
import org.projectforge.framework.persistence.api.BaseDO;
import org.projectforge.framework.persistence.api.BaseDao;
import org.springframework.context.ApplicationContext;
/**
* Convierte BaseDO desde y hacia cadenas (usando el id).
*
* @author Kai Reinhard (k.reinhard@micromata.de)
*/
public class UserXmlPreferencesBaseDOSingleValueConverter implements SingleValueConverter
{
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory
.getLogger(UserXmlPreferencesBaseDOSingleValueConverter.class);
private final Class<? extends BaseDao<?>> daoClass;
private final Class<? extends BaseDO<?>> doClass;
ApplicationContext applicationContext;
/**
* Serializa solo el id y deserializa cargando la instancia por id desde el dao.
*
* @param daoClass Clase del dao.
* @param doClass Clase del DO que se convertirá.
* @see BaseDao#findOrLoad(Long)
*/
public UserXmlPreferencesBaseDOSingleValueConverter(ApplicationContext applicationContext,
final Class<? extends BaseDao<?>> daoClass,
final Class<? extends BaseDO<?>> doClass)
{
this.applicationContext = applicationContext;
this.daoClass = daoClass;
this.doClass = doClass;
}
@SuppressWarnings("rawtypes")
@Override
public boolean canConvert(final Class type)
{
return doClass.isAssignableFrom(type);
}
@Override
public String toString(final Object obj)
{
if (obj == null) {
return null;
}
try {
return String.valueOf(((BaseDO<?>) obj).getId());
} catch (final Exception ex) {
log.warn(ex.getMessage(), ex);
return "";
}
}
@Override
public Object fromString(final String str)
{
if (StringUtils.isBlank(str)) {
return null;
}
final Long id = Long.parseLong(str);
final BaseDao<?> dao = applicationContext.getBean(daoClass);
if (dao == null) {
log.error("No se pudo obtener el dao '" + daoClass + "'. No está registrado en el Registro.");
return null;
} else {
return dao.findOrLoad(id);
}
}
}
868d6abb7 2025 -> 2026 63081666f Encabezados de archivos fuente: 2024-> 2025. 5f9bbfbd3 Corrección de errores tipográficos en el directorio projectforge-business 1b50060c3 BaseDao: renombrado: get -> find, save -> insert, getList -> select, load -> select 4c04cfd65 CAMBIO IMPORTANTE: Migración de ids enteros a ids Long (incluyendo fk's etc.)