UserXmlPreferencesBaseDOSingleValueConverter.javaPaket: org.projectforge.business.user
Klassen: UserXmlPreferencesBaseDOSingleValueConverter
Erweitert: BaseDao
Implementiert: SingleValueConverter
Methoden (3): canConvert, toString, fromString
Importe: 5 Pakete
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;
/**
* Konvertiert BaseDO von und zu Zeichenketten (unter Verwendung der 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;
/**
* Marshallt nur die ID und unmarshallt durch Laden der Instanz anhand der ID aus dem DAO.
*
* @param daoClass Klasse des DAO.
* @param doClass Klasse des DO, das konvertiert wird.
* @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("DAO '" + daoClass + "' konnte nicht abgerufen werden. Es ist nicht in der Registry registriert.");
return null;
} else {
return dao.findOrLoad(id);
}
}
}
868d6abb7 2025 -> 2026 63081666f Quellcode-Dateiköpfe: 2024 -> 2025. 5f9bbfbd3 Korrigiere Tippfehler im Verzeichnis projectforge-business 1b50060c3 BaseDao: umbenannt: get -> find, save -> insert, getList -> select, load -> select 4c04cfd65 MAJOR-CHANGE! Migration von Integer-IDs zu Long-IDs (einschließlich Fremdschlüsseln usw.)