// Path: cryptocard/src/main/java/com/indarsoft/cryptocard/types/PinBlockFormatType.java
// public enum PinBlockFormatType {
// 
// 	//ISOFORMAT0(0), ISOFORMAT3(3), IBM3624(4) ;
// 	ISOFORMAT0(0), ISOFORMAT3(3);
//     @SuppressWarnings("unused")
// 	private int value;
// 
//     private PinBlockFormatType (int value) {
//             this.value = value;
//     }	
// }
// 
// Path: cryptocard/src/main/java/com/indarsoft/cryptocard/types/PinValidationType.java
// public enum PinValidationType {
// 	VISA_PVV(0), IBM_3624_OFFSET(1) ;
//     @SuppressWarnings("unused")
// 	private int value;
// 
//     private PinValidationType (int value) {
//             this.value = value;
//     }	
// }
// 
// Path: cryptocard/src/main/java/com/indarsoft/cryptocard/utl/CheckDigit.java
// public class CheckDigit {
// 
// 	public static boolean validate ( String panNUmber){
// 		
// 		LuhnCheckDigit   luhn = new LuhnCheckDigit();
// 		return luhn.isValid ( panNUmber ) ;	
// 		
// 	}
// 	
// 	public static String calculate ( String panNUmber){
// 		
// 		LuhnCheckDigit   luhn = new LuhnCheckDigit();
// 		String checkdigit;
// 		try {
// 			checkdigit = luhn.calculate(  panNUmber );
// 		} catch (CheckDigitException e) {
// 			checkdigit = "CheckDigit.calculate : "+ e.getMessage() ;
// 			System.out.println(checkdigit);
// 		}
// 		return checkdigit ;	
// 		
// 	}	
// 	
// }


import com.indarsoft.cryptocard.types.PinBlockFormatType;
import com.indarsoft.cryptocard.types.PinValidationType;
import com.indarsoft.cryptocard.utl.CheckDigit;

package com.indarsoft.cryptocard.card;


/**
 * Card
 * 
 * @author fjavier.porras@gmail.com
 * 
 */
public class Card {

	/**
	 * A valid pan number must have 12 to 19 decimal digits.
	 */
	private String panNumber;
	/**
	 * Expiration Date holds year and month when the card1 will be expired.
	 */
	private String expirationDate;
	/**
	 * Valid expiration date formats are "YYMM"-default and "MMYY"
	 */
	private String expirationDateFormat = "YYMM";
	private String serviceCode;

// Path: cryptocard/src/main/java/com/indarsoft/cryptocard/types/PinBlockFormatType.java
// public enum PinBlockFormatType {
// 
// 	//ISOFORMAT0(0), ISOFORMAT3(3), IBM3624(4) ;
// 	ISOFORMAT0(0), ISOFORMAT3(3);
//     @SuppressWarnings("unused")
// 	private int value;
// 
//     private PinBlockFormatType (int value) {
//             this.value = value;
//     }	
// }
// 
// Path: cryptocard/src/main/java/com/indarsoft/cryptocard/types/PinValidationType.java
// public enum PinValidationType {
// 	VISA_PVV(0), IBM_3624_OFFSET(1) ;
//     @SuppressWarnings("unused")
// 	private int value;
// 
//     private PinValidationType (int value) {
//             this.value = value;
//     }	
// }
// 
// Path: cryptocard/src/main/java/com/indarsoft/cryptocard/utl/CheckDigit.java
// public class CheckDigit {
// 
// 	public static boolean validate ( String panNUmber){
// 		
// 		LuhnCheckDigit   luhn = new LuhnCheckDigit();
// 		return luhn.isValid ( panNUmber ) ;	
// 		
// 	}
// 	
// 	public static String calculate ( String panNUmber){
// 		
// 		LuhnCheckDigit   luhn = new LuhnCheckDigit();
// 		String checkdigit;
// 		try {
// 			checkdigit = luhn.calculate(  panNUmber );
// 		} catch (CheckDigitException e) {
// 			checkdigit = "CheckDigit.calculate : "+ e.getMessage() ;
// 			System.out.println(checkdigit);
// 		}
// 		return checkdigit ;	
// 		
// 	}	
// 	
// }


// Path: cryptocard/src/main/java/com/indarsoft/cryptocard/card/Card.java
import com.indarsoft.cryptocard.types.PinBlockFormatType;
import com.indarsoft.cryptocard.types.PinValidationType;
import com.indarsoft.cryptocard.utl.CheckDigit;

package com.indarsoft.cryptocard.card;


/**
 * Card
 * 
 * @author fjavier.porras@gmail.com
 * 
 */
public class Card {

	/**
	 * A valid pan number must have 12 to 19 decimal digits.
	 */
	private String panNumber;
	/**
	 * Expiration Date holds year and month when the card1 will be expired.
	 */
	private String expirationDate;
	/**
	 * Valid expiration date formats are "YYMM"-default and "MMYY"
	 */
	private String expirationDateFormat = "YYMM";
	private String serviceCode;

	private PinBlockFormatType pinblockFormatType;
