package de.persosim.simulator.cardobjects;
import java.util.Collection;
import de.persosim.simulator.platform.Iso7816;
import de.persosim.simulator.tlv.ConstructedTlvDataObject;
import de.persosim.simulator.tlv.PrimitiveTlvDataObject;
import de.persosim.simulator.tlv.TlvTag;
import de.persosim.simulator.utils.Utils;
/**
* Abstract super class for files. Contains the generic file identifier.
*
* @author mboonk
*
*/
public abstract class AbstractFile extends AbstractCardObject implements
CardFile {
protected FileIdentifier fileIdentifier;
/**
* Default Constructor for JAXB.
*
*/
public AbstractFile() {
}
/**
* Default Constructor.
*
* @param fileIdentifier
*/
public AbstractFile(FileIdentifier fileIdentifier) {
this.fileIdentifier = fileIdentifier;
}
@Override
public ConstructedTlvDataObject getFileControlParameterDataObject() {
ConstructedTlvDataObject result = new ConstructedTlvDataObject(new TlvTag(Iso7816.TAG_FILE_CONTROL_PARAMETERS_TEMPLATE));
//TODO MBK implement FCP template according to ISO7816-4 Table 12
result.addTlvDataObject(new PrimitiveTlvDataObject(new TlvTag(
(byte) 0x83), Utils.toUnsignedByteArray(fileIdentifier
.getFileIdentifier())));
return result;
}
@Override
public ConstructedTlvDataObject getFileManagementDataObject() {
//IMPL return FMD template as described in ISO7816-4 Table 12
ConstructedTlvDataObject result = new ConstructedTlvDataObject(new TlvTag(Iso7816.TAG_FILE_MANAGEMENT_DATA_TEMPLATE));
return result;
}
@Override
public Collection<CardObjectIdentifier> getAllIdentifiers() {
Collection<CardObjectIdentifier> result = super.getAllIdentifiers();
result.add(fileIdentifier);
return result;
}
@Override
public String toString() {
return "file with file identifier: " + fileIdentifier;
}
}