/*
* Commons eID Project.
* Copyright (C) 2008-2013 FedICT.
* Copyright (C) 2015 e-Contract.be BVBA.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version
* 3.0 as published by the Free Software Foundation.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, see
* http://www.gnu.org/licenses/.
*/
package be.fedict.commons.eid.consumer;
import java.io.Serializable;
import java.util.GregorianCalendar;
import be.fedict.commons.eid.consumer.tlv.ChipNumberDataConvertor;
import be.fedict.commons.eid.consumer.tlv.ConvertData;
import be.fedict.commons.eid.consumer.tlv.DateOfBirthDataConvertor;
import be.fedict.commons.eid.consumer.tlv.DocumentTypeConvertor;
import be.fedict.commons.eid.consumer.tlv.GenderDataConvertor;
import be.fedict.commons.eid.consumer.tlv.OriginalData;
import be.fedict.commons.eid.consumer.tlv.SpecialOrganisationConvertor;
import be.fedict.commons.eid.consumer.tlv.SpecialStatusConvertor;
import be.fedict.commons.eid.consumer.tlv.TlvField;
import be.fedict.commons.eid.consumer.tlv.ValidityDateDataConvertor;
/**
* Holds all fields within the eID identity file. The annotations are used by
* the TLV parser to parse the identity file as stored in the eID card to an
* object of this class.
*
* @author Frank Cornelis
* @see Address
* @see TlvField
* @see ConvertData
*
*/
public class Identity implements Serializable {
/*
* We implement serializable to allow this class to be used in distributed
* containers as defined in the Servlet v2.4 specification.
*/
private static final long serialVersionUID = 1L;
@TlvField(1)
public String cardNumber;
@TlvField(2)
@ConvertData(ChipNumberDataConvertor.class)
public String chipNumber;
@TlvField(3)
@ConvertData(ValidityDateDataConvertor.class)
public GregorianCalendar cardValidityDateBegin;
@TlvField(4)
@ConvertData(ValidityDateDataConvertor.class)
public GregorianCalendar cardValidityDateEnd;
@TlvField(5)
public String cardDeliveryMunicipality;
@TlvField(6)
public String nationalNumber;
@TlvField(7)
public String name;
@TlvField(8)
public String firstName;
@TlvField(9)
public String middleName;
@TlvField(10)
public String nationality;
@TlvField(11)
public String placeOfBirth;
@TlvField(12)
@ConvertData(DateOfBirthDataConvertor.class)
public GregorianCalendar dateOfBirth;
@TlvField(13)
@ConvertData(GenderDataConvertor.class)
public Gender gender;
/**
* Optional Noble Condition.
*/
@TlvField(14)
public String nobleCondition;
@TlvField(15)
@ConvertData(DocumentTypeConvertor.class)
public DocumentType documentType;
@TlvField(16)
@ConvertData(SpecialStatusConvertor.class)
public SpecialStatus specialStatus;
@TlvField(17)
public byte[] photoDigest;
@TlvField(18)
public String duplicate;
@TlvField(19)
@ConvertData(SpecialOrganisationConvertor.class)
public SpecialOrganisation specialOrganisation;
@TlvField(20)
public boolean memberOfFamily;
@TlvField(21)
public String dateAndCountryOfProtection;
@OriginalData
public byte[] data;
/*
* We're also providing getters and a toString to make this class more
* useful within web frameworks like JBoss Seam.
*/
public String getCardNumber() {
return this.cardNumber;
}
public String getChipNumber() {
return this.chipNumber;
}
public GregorianCalendar getCardValidityDateBegin() {
return this.cardValidityDateBegin;
}
public GregorianCalendar getCardValidityDateEnd() {
return this.cardValidityDateEnd;
}
public String getCardDeliveryMunicipality() {
return this.cardDeliveryMunicipality;
}
public String getNationalNumber() {
return this.nationalNumber;
}
public String getName() {
return this.name;
}
public String getFirstName() {
return this.firstName;
}
public String getMiddleName() {
return this.middleName;
}
public String getNationality() {
return this.nationality;
}
public String getPlaceOfBirth() {
return this.placeOfBirth;
}
public GregorianCalendar getDateOfBirth() {
return this.dateOfBirth;
}
public Gender getGender() {
return this.gender;
}
public String getNobleCondition() {
return this.nobleCondition;
}
public DocumentType getDocumentType() {
return this.documentType;
}
public byte[] getPhotoDigest() {
return this.photoDigest;
}
public SpecialStatus getSpecialStatus() {
return this.specialStatus;
}
public String getDuplicate() {
return this.duplicate;
}
public boolean isMemberOfFamily() {
return this.memberOfFamily;
}
public SpecialOrganisation getSpecialOrganisation() {
return this.specialOrganisation;
}
public String getDateAndCountryOfProtection() {
return this.dateAndCountryOfProtection;
}
public byte[] getData() {
return this.data;
}
@Override
public String toString() {
return "[" + this.name + " " + this.firstName + "]";
}
}