FileDocCategorySizeDatePackage
PurseImpl.javaAPI DocJava Card1550Wed Mar 22 21:07:24 GMT 2006com.sun.javacard.samples.RMIDemo

PurseImpl.java

/*
 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

package com.sun.javacard.samples.RMIDemo;

import javacard.framework.UserException;
import javacard.framework.Util;
import javacard.framework.service.CardRemoteObject;
import java.rmi.RemoteException;
/**
 *
 */
public class PurseImpl extends CardRemoteObject implements Purse {
    
    private short balance = 0;
    private byte[] number;
    
    
    public PurseImpl() {
        super();                     // export it
        number = new byte[5];
    }
    
    public void setAccountNumber(byte[] number) throws RemoteException, UserException {
        if(number.length != 5) UserException.throwIt(BAD_ARGUMENT);
        Util.arrayCopy(number, (short)0, this.number, (short)0, (short)5);
    }
    
    public void credit(short m) throws RemoteException, UserException {
        
        if(m<=0) UserException.throwIt(BAD_ARGUMENT);
        
        if((short)(balance+m) > MAX_AMOUNT) UserException.throwIt(OVERFLOW);
        
        balance +=m;

    }
    
    public void debit(short m) throws RemoteException, UserException {
        
        if(m<=0) UserException.throwIt(BAD_ARGUMENT);
        
        if((short)(balance-m) < 0) UserException.throwIt(UNDERFLOW);
        
        balance -=m;
    }
    
    public byte[] getAccountNumber() throws RemoteException {
        return number;
    }
    
    public short getBalance() throws RemoteException {
        return balance;
    }
    
}