com.morpho.morphosmart.sdk
Class MorphoDatabase

java.lang.Object
  extended by com.morpho.morphosmart.sdk.MorphoDatabase
All Implemented Interfaces:
java.lang.Cloneable

public class MorphoDatabase
extends java.lang.Object
implements java.lang.Cloneable

Class performing operations on the embedded database This class performs operations related to the biometric device local database. As a database is always associated to a device, MorphoDatabase has to be instantiated with MorphoDevice.getDatabase.


Field Summary
protected  boolean cppMemOwn
           
static int MORPHO_FINGER_MAX
           
static int MORPHO_LEN_FIELD_MAX
           
static int MORPHO_NB_DATABASE_MAX
           
static int MORPHO_NB_FIELD_MAX
           
static int MORPHO_NB_RECORD_MIN
           
 
Constructor Summary
MorphoDatabase()
          Constructor
MorphoDatabase(MorphoDatabase database)
          Copy constructor
 
Method Summary
 int cancelLiveAcquisition()
          This function cancels the live acquisition.
 java.lang.Object clone()
           
 int dbCreate(int maxRecord, int maxNbFinger, TemplateType templateType)
          Deprecated. kept for compatibility with release 6.6.6.1_Android_3.3, replaced by dbCreate
 int dbCreate(int maxRecord, int maxNbFinger, TemplateType templateType, int dataBaseIndex)
          Deprecated. kept for compatibility with release 6.6.6.1_Android_3.3, replaced by dbCreate
 int dbCreate(int maxRecord, int maxNbFinger, TemplateType templateType, int dataBaseIndex, boolean encryptDB)
          This function creates a biometric database in flash memory.
 int dbDelete(MorphoTypeDeletion morphoTypeDeletion)
          This function erases all records in the local database or deletes the local database.
 int dbQueryFirst(int fieldIndex, java.lang.String dataToFind, MorphoUser morphoUser)
          This function retrieves the first user instance that matches a searched buffer in a specified field.
 int dbQueryNext(MorphoUser morphoUser)
          This function must be called after dbQueryFirst().
protected  void finalize()
          Destructor
 int getDbEncryptionStatus(java.lang.Integer encryptDB)
          This function returns the database status.
 int getField(int index, MorphoField morphoField)
          This function returns one-field characteristics.
 int getFormatPK(java.lang.Integer templateType)
           
 int getMaxDataBase(java.lang.Integer maxdataBase)
          This function retrieves Maximum number of database allowed by the configuration.
 int getMaxUser(java.lang.Integer maxUser)
          Deprecated. kept for compatibility with release 6.6.6.1_Android_3.3, replaced by getMaxUser
 int getMaxUser(java.lang.Integer maxUser, java.lang.Integer maxFinger)
          This function retrieves the Maximum number of records per database allowed by the configuration.
 long getMorphoDatabasePointerCPP()
          MORPHO USE ONLY
 int getNbField(java.lang.Long nbField)
          This function retrieves the number of additional user data fields in the database, excluding the mandatory UID field.
 int getNbFinger(java.lang.Integer nbFinger)
          This function returns the maximum number of templates per person in the database.
 int getNbFreeRecord(java.lang.Long nbFreeRecord)
          This function returns the number of free records in the local database.
 int getNbTotalRecord(java.lang.Long nbTotalRecord)
          This function returns the total number of records reserved in the local database.
 int getNbUsedRecord(java.lang.Long nbUsedRecord)
          This function returns the number of registered records in the local database.
 int getUser(java.lang.String userID, MorphoUser morphoUser)
          This function returns a user instance.
 int identify(int timeout, int far, Coder coder, int detectModeChoice, MatchingStrategy matchingStrategy, int callbackCmd, java.util.Observer callback, ResultMatching resultMatching, int nbFingersToMatch, MorphoUser morphoUser)
          This function identifies a live finger against the local database, and returns the associated user.
 int identify(int timeout, int far, Coder coder, int detectModeChoice, MatchingStrategy matchingStrategy, int callbackCmd, java.util.Observer callback, ResultMatching resultMatching, MorphoUser morphoUser)
          Deprecated. kept for compatibility with release 6.6.6.1_Android_3.3, replaced by identify
 int identifyMatch(int far, TemplateList templateList, MorphoUser morphoUser)
          Deprecated. kept for compatibility with release 6.6.6.1_Android_3.3, replaced by identifyMatch
 int identifyMatch(int far, TemplateList templateList, MorphoUser morphoUser, ResultMatching resultMatching)
          This function identifies one unique template against the local database.
 int putField(MorphoField morphoField, java.lang.Integer index)
          Add a field to the list.
 int readPublicFields(int[] fieldsIndex, MorphoUserList morphoUserList)
          This function retrieves a list of public fields from all database records.
 void setMorphoDatabasePointerCPP(long morphoDatabasePointerCPP)
          MORPHO USE ONLY
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cppMemOwn

protected boolean cppMemOwn

MORPHO_NB_RECORD_MIN

public static final int MORPHO_NB_RECORD_MIN
See Also:
Constant Field Values

MORPHO_NB_FIELD_MAX

public static final int MORPHO_NB_FIELD_MAX
See Also:
Constant Field Values

MORPHO_FINGER_MAX

public static final int MORPHO_FINGER_MAX
See Also:
Constant Field Values

MORPHO_NB_DATABASE_MAX

public static final int MORPHO_NB_DATABASE_MAX
See Also:
Constant Field Values

MORPHO_LEN_FIELD_MAX

public static final int MORPHO_LEN_FIELD_MAX
See Also:
Constant Field Values
Constructor Detail

MorphoDatabase

public MorphoDatabase()
Constructor


MorphoDatabase

public MorphoDatabase(MorphoDatabase database)
Copy constructor

Method Detail

finalize

protected void finalize()
Destructor

Overrides:
finalize in class java.lang.Object

clone

public java.lang.Object clone()
Overrides:
clone in class java.lang.Object

getMorphoDatabasePointerCPP

public long getMorphoDatabasePointerCPP()
MORPHO USE ONLY


setMorphoDatabasePointerCPP

public void setMorphoDatabasePointerCPP(long morphoDatabasePointerCPP)
MORPHO USE ONLY


getUser

public int getUser(java.lang.String userID,
                   MorphoUser morphoUser)
This function returns a user instance.

Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted. - MORPHOERR_BADPARAMETER One or more input parameters are out of range.

putField

public int putField(MorphoField morphoField,
                    java.lang.Integer index)
Add a field to the list.

Parameters:
morphoField - Morpho Field
Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_MEMORY_PC Not enough memory on the PC. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted. - MORPHOERR_BADPARAMETER One or more input parameters are out of range.

getField

public int getField(int index,
                    MorphoField morphoField)
This function returns one-field characteristics.

Parameters:
Index - Field index to retrieve characteristics of. 0 is used for the UserID. First supplementary field index is 1.
Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An internal error occurred during the execution of the function. - MORPHOERR_BASE_NOT_FOUND The specified database doesn't exist. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_FIELD_NOT_FOUND Field not found. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted.

getDbEncryptionStatus

public int getDbEncryptionStatus(java.lang.Integer encryptDB)
This function returns the database status. It tells whether the database is encrypted or not.

Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An internal error occurred during the execution of the function. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted.

dbCreate

public int dbCreate(int maxRecord,
                    int maxNbFinger,
                    TemplateType templateType,
                    int dataBaseIndex,
                    boolean encryptDB)
This function creates a biometric database in flash memory. Before calling this method, the database internal structure has to be defined (see MorphoFieldDescriptor for more details). Once a database is created, its internal structure can not be modified.

Parameters:
maxRecord - Number of records reserved in the database (i.e. maximum number of persons enrolled).
maxNbFinger - Maximum number of fingerprints which can be stored in each record of the database (1, 2, 10 or 20). At record generation, the terminal allows the Host System to save less fingerprints per user than specified in the Create Database command (i.e. 1 in case of 2 fingerprints maximum per record). - In case of MorphoSmart™ FINGER VP, the maximum number of fingerprints per record cannot be more than two.
templateType - The only allowed values are MORPHO_PK_COMP and MORPHO_PK_COMP_NORM.
dataBaseIndex - Database index
encryptDB - - false : unencrypted database - true : encrypted database
Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An internal error occurred during the execution of the function. - MORPHOERR_BASE_ALREADY_EXISTS This database already exists. - MORPHOERR_NO_SPACE_LEFT The database can not be created because there is not enough memory left. - MORPHOERR_BADPARAMETER - Wrong number of fingers. - MORPHOERR_OUT_OF_FIELD The number of additional fields is greater than MORPHO_NB_FIELD_MAX. - MORPHOERR_FIELD_INVALID Additional field name length is greater than MORPHO_FIELD_NAME_LEN. - MORPHOERR_MEMORY_PC Not enough memory on the PC. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted. - MORPHOERR_INVALID_PK_FORMAT Incorrect value for templateType.

dbCreate

public int dbCreate(int maxRecord,
                    int maxNbFinger,
                    TemplateType templateType,
                    int dataBaseIndex)
Deprecated. kept for compatibility with release 6.6.6.1_Android_3.3, replaced by dbCreate


dbCreate

public int dbCreate(int maxRecord,
                    int maxNbFinger,
                    TemplateType templateType)
Deprecated. kept for compatibility with release 6.6.6.1_Android_3.3, replaced by dbCreate


readPublicFields

public int readPublicFields(int[] fieldsIndex,
                            MorphoUserList morphoUserList)
This function retrieves a list of public fields from all database records. Private fields can not be retrieved.

Parameters:
fieldsIndex - integer array that represents fields that must be retrieved. 0 is reserved for the UserID (unique identifier) field.
Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An internal error occurred during the execution of the function. - MORPHOERR_BASE_NOT_FOUND There is no Database corresponding to the Identifier specified in the Request. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_FIELD_INVALID One or more desired fields are not found. - MORPHOERR_USER_NOT_FOUND User does not exist. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted. - MORPHOERR_BADPARAMETER One or more input parameters are out of range.

dbDelete

public int dbDelete(MorphoTypeDeletion morphoTypeDeletion)
This function erases all records in the local database or deletes the local database.

Parameters:
morphoTypeDeletion - MorphoTypeDeletion - MORPHO_ERASE_BASE: This option erases all records in a local database without deleting the database. - MORPHO_DESTROY_BASE: This option deletes the local database.
Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An internal error occurred during the execution of the function. - MORPHOERR_BASE_NOT_FOUND The specified database doesn't exist. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted.

identify

public int identify(int timeout,
                    int far,
                    Coder coder,
                    int detectModeChoice,
                    MatchingStrategy matchingStrategy,
                    int callbackCmd,
                    java.util.Observer callback,
                    ResultMatching resultMatching,
                    int nbFingersToMatch,
                    MorphoUser morphoUser)
This function identifies a live finger against the local database, and returns the associated user.

Parameters:
far - This parameter specifies how tight the matching threshold is. Morpho recommends MORPHO_FAR_5 (see paragraph FalseAcceptanceRate).
coder - Contains the biometric coder to use (MORPHO_MSO_V9_CODER or MORPHO_MSO_V9_JUV_CODER ). Morpho recommends using MORPHO_MSO_V9_CODER.
detectModeChoice - Value among of the following: - MORPHO_VERIF_DETECT_MODE : more permissive mode than default; MorphoSmart™ detects more easily finger presence, but might issue lower quality templates. - MORPHO_ENROLL_DETECT_MODE : strongest detection mode (default mode). - MORPHO_WAKEUP_LED_OFF : (only available on MorphoSmart™ MSO FFD) leds are turned off while waiting for a finger (impedance wakeup). - MORPHO_FORCE_FINGER_ON_TOP_DETECT_MODE : (not available on MorphoSmart™ CBM-V) force the finger to cover the top of the capture area to increase quality. - MORPHO_WAKEUP_LED_ON : (only available on MorphoSmart™ FINGER VP) leds are turned on while waiting for a finger.
matchingStrategy - Value among of the following: - MORPHO_STANDARD_MATCHING_STRATEGY: default strategy. - MORPHO_ADVANCED_MATCHING_STRATEGY: less FRR, but more processing time (not available on MorphoSmart™ FINGER VP).
callbackCmd - Binary mask with CallbackMask elements. This mask describes the asynchronous status events that will trig the callback function. 0 if you do not want any asynchronous status to be received. For example MORPHO_CALLBACK_COMMAND_CMD | MORPHO_CALLBACK_IMAGE_CMD means we want to receive the command status (move finger up...) and low-resolution images.
callback -
Returns:
- MORPHO_OK The matching was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An internal error occurred during the execution of the function. - MORPHOERR_BADPARAMETER The matching threshold value or timeout value are out of the range. - MORPHOERR_TIMEOUT The finger detection timeout has expired. - MORPHOERR_BASE_NOT_FOUND The specified database doesn't exist. - MORPHOERR_NO_HIT The function returned a No Hit. - MORPHOERR_CMDE_ABORTED Command is canceled. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted. - MORPHOERR_FFD False Finger Detected. - MORPHOERR_MOIST_FINGER The finger can be too moist or the scanner is wet. - MORPHOERR_FVP_FINGER_MISPLACED_OR_WITHDRAWN Finger was misplaced or has been withdrawn from sensor during acquisition (MorphoSmart™ FINGER VP only). - MORPHOERR_FFD_FINGER_MISPLACED Finger was misplaced during acquisition (MorphoSmart™ MSO FFD only).

identify

public int identify(int timeout,
                    int far,
                    Coder coder,
                    int detectModeChoice,
                    MatchingStrategy matchingStrategy,
                    int callbackCmd,
                    java.util.Observer callback,
                    ResultMatching resultMatching,
                    MorphoUser morphoUser)
Deprecated. kept for compatibility with release 6.6.6.1_Android_3.3, replaced by identify


identifyMatch

public int identifyMatch(int far,
                         TemplateList templateList,
                         MorphoUser morphoUser,
                         ResultMatching resultMatching)
This function identifies one unique template against the local database. This function is successful if one of the searched templates matches a reference template in the local database. The maximum number of search template is 1.

Parameters:
far - This parameter specifies how tight the matching threshold is. Morpho recommends MORPHO_FAR_5 (see paragraph FalseAcceptanceRate.MORPHO_FAR_5).
templateList - Candidate TemplateList. This list must include one unique template. The template format should be MORPHO_PK_COMP. The other template formats (MORPHO_PK_COMP_NORM, MORPHO_PK_MAT, MORPHO_PK_MAT_NORM, MORPHO_PK_ANSI_378, MORPHO_PK_MINEX_A, MORPHO_PK_ISO_FMR, MORPHO_PK_ISO_FMC_NS, MORPHO_PK_ISO_FMC_CS or MORPHO_PK_PKLITE (only available on MorphoSmart™ CBM-E3)) are also supported but Morpho recommends using them only for compatibility with existing systems or specific usage. Only secure MorphoSmart™ accept the X984 biometric token and verify the integrity.
Returns:
- MORPHO_OK The matching was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An internal error occurred during the execution of the function. - MORPHOERR_BADPARAMETER The matching threshold value or timeout value are out of range. - MORPHOERR_INVALID_TEMPLATE The reference minutiae are not valid (corrupted minutiae). - MORPHOERR_BASE_NOT_FOUND The specified database doesn't exist. - MORPHOERR_NO_HIT The function returned a No Hit. - MORPHOERR_MEMORY_PC Not enough memory on the PC. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_LICENSE_MISSING A required license is missing (MorphoSmart™ FINGER VP only). - MORPHOERR_INVALID_PK_FORMAT Invalid template format - MORPHOERR_CORRUPTED_CLASS Class has been corrupted.

identifyMatch

public int identifyMatch(int far,
                         TemplateList templateList,
                         MorphoUser morphoUser)
Deprecated. kept for compatibility with release 6.6.6.1_Android_3.3, replaced by identifyMatch


cancelLiveAcquisition

public int cancelLiveAcquisition()
This function cancels the live acquisition.

Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted. - MORPHOERR_BASE_NOT_FOUND The specified database doesn't exist.

dbQueryFirst

public int dbQueryFirst(int fieldIndex,
                        java.lang.String dataToFind,
                        MorphoUser morphoUser)
This function retrieves the first user instance that matches a searched buffer in a specified field. Private fields can not be retrieved. If multiple instances are present, the first one is retrieved. This method is successful if one user field exactly matches the searched pattern (same size, same content).

Parameters:
fieldIndex - The search is performed with this field index (0 means UserID, 1 means first supplementary field ...).
dataToFind - Pattern to search.
Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An internal error occurred during the execution of the function. - MORPHOERR_BASE_NOT_FOUND There is no Database corresponding to the Identifier specified in the Request. - MORPHOERR_MEMORY_PC Not enough memory on the PC. - MORPHOERR_USER_NOT_FOUND No record contains the searched data. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted

dbQueryNext

public int dbQueryNext(MorphoUser morphoUser)
This function must be called after dbQueryFirst(). This function retrieves the next user instance that matches the searched buffer. This method is successful if one user field exactly matches the searched pattern (same size, same content).

Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An internal error occurred during the execution of the function. - MORPHOERR_BASE_NOT_FOUND There is no Database corresponding to the Identifier specified in the Request. - MORPHOERR_BADPARAMETER dbQueryFirst has not previously been called. - MORPHOERR_MEMORY_PC Not enough memory on the PC. - MORPHOERR_USER_NOT_FOUND No record contains the searched data. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_NOCALLTO_DBQUERRYFIRST You have to call dbQueryFirst to initialize the query - MORPHOERR_CORRUPTED_CLASS Class has been corrupted.

getFormatPK

public int getFormatPK(java.lang.Integer templateType)
Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted.

getMaxDataBase

public int getMaxDataBase(java.lang.Integer maxdataBase)
This function retrieves Maximum number of database allowed by the configuration.

Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted. - MORPHOERR_BADPARAMETER One or more input parameters are out of range.

getMaxUser

public int getMaxUser(java.lang.Integer maxUser,
                      java.lang.Integer maxFinger)
This function retrieves the Maximum number of records per database allowed by the configuration.

Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted. - MORPHOERR_BADPARAMETER One or more input parameters are out of range.

getMaxUser

public int getMaxUser(java.lang.Integer maxUser)
Deprecated. kept for compatibility with release 6.6.6.1_Android_3.3, replaced by getMaxUser


getNbField

public int getNbField(java.lang.Long nbField)
This function retrieves the number of additional user data fields in the database, excluding the mandatory UID field.

Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An internal error occurred during the execution of the function. - MORPHOERR_BASE_NOT_FOUND The specified database doesn't exist. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted.

getNbFinger

public int getNbFinger(java.lang.Integer nbFinger)
This function returns the maximum number of templates per person in the database.

Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An internal error occurred during the execution of the function. - MORPHOERR_BASE_NOT_FOUND The specified database doesn't exist. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted.

getNbFreeRecord

public int getNbFreeRecord(java.lang.Long nbFreeRecord)
This function returns the number of free records in the local database.

Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An internal error occurred during the execution of the function. - MORPHOERR_BASE_NOT_FOUND The specified database doesn't exist. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted.

getNbTotalRecord

public int getNbTotalRecord(java.lang.Long nbTotalRecord)
This function returns the total number of records reserved in the local database.

Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An internal error occurred during the execution of the function. - MORPHOERR_BASE_NOT_FOUND The specified database doesn't exist. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted.

getNbUsedRecord

public int getNbUsedRecord(java.lang.Long nbUsedRecord)
This function returns the number of registered records in the local database.

Returns:
- MORPHO_OK The execution of the function was successful. - MORPHOERR_NO_ASSOCIATED_DEVICE Database is created without getDatabase. - MORPHOERR_INTERNAL An error occurred during the execution of the function. - MORPHOERR_BASE_NOT_FOUND The specified database doesn't exist. - MORPHOERR_PROTOCOLE Communication protocol error. - MORPHOERR_CORRUPTED_CLASS Class has been corrupted.