MoneyLongConverter.java
package sk.iway.iwcm.ebanking;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.mappings.converters.Converter;
import org.eclipse.persistence.sessions.Session;
/**
* MoneyLongConverter.java
*
* JPA converter for long/int to {@link Money} conversion.
* Note that this class is meant to work for tables containing
* no currency column, and implicitly assumes EUR currency.
*
* If your table oughts to work with multiple currencies, use
* get / set methods instead
*
*@Title webjet7
*@Company Interway s.r.o. (www.interway.sk)
*@Copyright Interway s.r.o. (c) 2001-2010
*@author $Author: marosurbanec $
*@version $Revision: 1.3 $
*@created Date: 4.11.2010 14:51:41
*@modified $Date: 2004/08/16 06:26:11 $
*/
public class MoneyLongConverter implements Converter
{
private static final long serialVersionUID = -6883909823262721416L;
@Override
public Object convertDataValueToObjectValue(Object databaseObject, Session session)
{
if(databaseObject == null)
return Money.NOTHING;
if(databaseObject instanceof Number){
Number amount = (Number)databaseObject;
return Money.fromEuroCents(amount.longValue());
}
if (databaseObject instanceof String){
return stringToMoney((String)databaseObject);
}
return Money.NOTHING;
}
private Money stringToMoney(String databaseObject)
{
try{
long howMuch = Long.parseLong(databaseObject);
return Money.fromEuroCents(howMuch);
}catch (Exception e) {
return Money.NOTHING;
}
}
@Override
public Object convertObjectValueToDataValue(Object object, Session session)
{
if (object == null)
return null;
return ((Money)object).getAmount();
}
@Override
public void initialize(DatabaseMapping arg0, Session session){}
@Override
public boolean isMutable()
{
return false;
}
}