UserDetailsConverter.java
package sk.iway.iwcm.users;
import java.util.Collection;
import java.util.Locale;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.mappings.converters.Converter;
import org.eclipse.persistence.sessions.Session;
import net.sourceforge.stripes.validation.TypeConverter;
import net.sourceforge.stripes.validation.ValidationError;
import sk.iway.iwcm.Tools;
/**
* Automaticky konvertuje UserDetails (aj Identity) na int a spat JPA,
* zaroven je to TypeConverter pre Stripes :P
*
* @author mbocko
*
*/
public class UserDetailsConverter implements Converter, TypeConverter<UserDetails>
{
private static final long serialVersionUID = 1L;
@Override
public UserDetails convertDataValueToObjectValue(Object value, Session arg1)
{
if (value instanceof Number)
{
int id = ((Number) value).intValue();
if (id == -1 || id==0) return null;
//v magma_calendar su neschvalene zaznamy zapisane v DB s -user_id hodnotou
if (id < -1) {
id = -id;
}
UserDetails user = UsersDB.getUserCached(id);
if (user!=null)
{
return user;
}
}
return null;
}
@Override
public Integer convertObjectValueToDataValue(Object object, Session arg1)
{
if (object instanceof UserDetails)
{
UserDetails user = (UserDetails)object;
return Integer.valueOf(user.getUserId());
}
return null;
}
@Override
public UserDetails convert(String value, Class<? extends UserDetails> paramClass, Collection<ValidationError> paramCollection)
{
int id = Tools.getIntValue(value, 0);
if (id>0)
{
UserDetails user = UsersDB.getUserCached(id);
if (user!=null)
{
return user;
}
}
return null;
}
@Override
public void setLocale(Locale paramLocale)
{
}
@Override
public void initialize(DatabaseMapping arg0, Session arg1)
{
}
@Override
public boolean isMutable()
{
return false;
}
}