UserXmlPreferencesBaseDOSingleValueConverter.javaPaquetage : org.projectforge.business.user
Classes : UserXmlPreferencesBaseDOSingleValueConverter
Étend : BaseDao
Implémente : SingleValueConverter
Méthodes (3) : canConvert, toString, fromString
Importations : 5 paquetages
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;
/**
* Convertit BaseDO depuis et vers des chaînes de caractères (en utilisant l'identifiant).
*
* @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;
/**
* Ne marshale que l'identifiant et dé marshale en chargeant l'instance par identifiant depuis le dao.
*
* @param daoClass Classe du dao.
* @param doClass Classe du DO qui sera converti.
* @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("Impossible d'obtenir le dao '" + daoClass + "'. Il n'est pas enregistré dans le registre.");
return null;
} else {
return dao.findOrLoad(id);
}
}
}
868d6abb7 2025 -> 2026 63081666f En-têtes des fichiers source : 2024 -> 2025. 5f9bbfbd3 Correction de fautes de frappe dans le répertoire projectforge-business 1b50060c3 BaseDao : renommé : get -> find, save -> insert, getList -> select, load -> select 4c04cfd65 CHANGEMENT-MAJEUR ! Migration des identifiants integer vers Long (y compris les clés étrangères, etc.)