UserXmlPreferencesBaseDOSingleValueConverter.javaPackage: org.projectforge.business.user
Classes: UserXmlPreferencesBaseDOSingleValueConverter
Extends: BaseDao
Implements: SingleValueConverter
Methods (3): canConvert, toString, fromString
Imports: 5 packages
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;
/**
* Converts BaseDO from and to strings (using the 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;
/**
* Marshals only the id and unmarshals by loading the instance by id from the dao.
*
* @param daoClass Class of the dao.
* @param doClass Class of the DO which will be converted.
* @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("Could not get dao '" + daoClass + "'. It's not registered in the Registry.");
return null;
} else {
return dao.findOrLoad(id);
}
}
}
868d6abb7 2025 -> 2026 63081666f Source file headers: 2024-> 2025. 5f9bbfbd3 Fix typos in projectforge-business directory 1b50060c3 BaseDao: renamed: get -> find, save -> insert, getList -> select, load -> select 4c04cfd65 MAJOR-CHANGE! Migration of integer id's to Long id's (including fk's etc.)