The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
package 
    Net::FileMaker::Error::EN::XML;

use strict;
use warnings;

=head1 NAME

Net::FileMaker::Error::EN::XML - Error strings for FileMaker Server XML interface in English.

=head1 INFO

The error codes supported by this module were plucked from the FileMaker documentation on XML/XSLT, and appear valid for FileMaker Server 10.

=head1 SEE ALSO

L<Net::FileMaker::Error>

=cut

my $error_codes = {
    
    '-1'    => 'Unknown error', 
    0   => 'No error',
    1   => "User canceled action ",
    2   => "Memory error ",
    3   => "Command is unavailable (for example, wrong operating system, wrong mode, etc.)",    
    4   => "Command is unknown",
    5   => "Command is invalid (for example, a Set Field script step does not have a calculation specified)",
    6   => "File is read-only",
    7   => "Running out of memory",
    8   => "Empty result",
    9   => "Insufficient privileges",
    10  => "Requested data is missing",
    11  => "Name is not valid",
    12  => "Name already exists",
    13  => "File or object is in use",
    14  => "Out of range",
    15  => "Can’t divide by zero",
    16  => "Operation failed, request retry (for example, a user query)",
    17  => "Attempt to convert foreign character set to UTF-16 failed",
    18  => "Client must provide account information to proceed",
    19  => "String contains characters other than A-Z, a-z, 0-9 (ASCII)",
    20  => "Command or operation cancelled by triggered script",
    100 => "File is missing",
    101 => "Record is missing",
    102 => "Field is missing",
    103 => "Relationship is missing",
    104 => "Script is missing",
    105 => "Layout is missing",
    106 => "Table is missing",
    107 => "Index is missing",
    108 => "Value list is missing",
    109 => "Privilege set is missing",
    110 => "Related tables are missing",
    111 => "Field repetition is invalid",
    112 => "Window is missing",
    113 => "Function is missing",
    114 => "File reference is missing",
    115 => "The menu set is missing",
    116 => "The layout object is missing",
    117 => "The data source is missing",
    130 => "Files are damaged or missing and must be reinstalled",
    131 => "Language pack files are missing (such as template files)",
    200 => "Record access is denied",
    201 => "Field cannot be modified",
    202 => "Field access is denied",
    203 => "No records in file to print, or password doesn’t allow print access",
    204 => "No access to field(s) in sort order",
    205 => "User does not have access privileges to create new records; import will overwrite existing data",
    206 => "User does not have password change privileges, or file is not modifiable",
    207 => "User does not have sufficient privileges to change database schema, or file is not modifiable",
    208 => "Password does not contain enough characters",
    209 => "New password must be different from existing one",
    210 => "User account is inactive",
    211 => "Password has expired",
    212 => "Invalid user account and/or password. Please try again",
    213 => "User account and/or password does not exist",
    214 => "Too many login attempts",
    215 => "Administrator privileges cannot be duplicated",
    216 => "Guest account cannot be duplicated",
    217 => "User does not have sufficient privileges to modify administrator account",
    300 => "File is locked or in use",
    301 => "Record is in use by another user",
    302 => "Table is in use by another user",
    303 => "Database schema is in use by another user",
    304 => "Layout is in use by another user",
    306 => "Record modification ID does not match",
    400 => "Find criteria are empty",
    401 => "No records match the request",
    402 => "Selected field is not a match field for a lookup",
    403 => "Exceeding maximum record limit for trial version of FileMaker Pro",
    404 => "Sort order is invalid",
    405 => "Number of records specified exceeds number of records that can be omitted",
    406 => "Replace/Reserialize criteria are invalid",
    407 => "One or both match fields are missing (invalid relationship)",
    408 => "Specified field has inappropriate data type for this operation",
    409 => "Import order is invalid",
    410 => "Export order is invalid",
    412 => "Wrong version of FileMaker Pro used to recover file",
    413 => "Specified field has inappropriate field type",
    414 => "Layout cannot display the result",
    415 => "One or more required related records are not available",
    416 => "A primary key is required from the data source table",
    417 => "The database is not a supported data source",
    500 => "Date value does not meet validation entry options",
    501 => "Time value does not meet validation entry options",
    502 => "Number value does not meet validation entry options",
    503 => "Value in field is not within the range specified in validation entry options",
    504 => "Value in field is not unique as required in validation entry options",
    505 => "Value in field is not an existing value in the database file as required in validation entry options",
    506 => "Value in field is not listed on the value list specified in validation entry option",
    507 => "Value in field failed calculation test of validation entry option",
    508 => "Invalid value entered in Find mode",
    509 => "Field requires a valid value",
    510 => "Related value is empty or unavailable",
    511 => "Value in field exceeds maximum number of allowed characters",
    512 => "The record was already modified by another user",
    513 => "To create a record, the record has to have a value in at least one field",
    600 => "Print error has occurred",
    601 => "Combined header and footer exceed one page",
    602 => "Body doesn’t fit on a page for current column setup",
    603 => "Print connection lost",
    700 => "File is of the wrong file type for import",
    706 => "EPSF file has no preview image",
    707 => "Graphic translator cannot be found",
    708 => "Can’t import the file or need color monitor support to import file",
    709 => "QuickTime movie import failed",
    710 => "Unable to update QuickTime file reference because the database file is read-only",
    711 => "Import translator cannot be found",
    714 => "Password privileges do not allow the operation",
    715 => "Specified Excel worksheet or named range is missing",
    716 => "A SQL query using DELETE, INSERT, or UPDATE is not allowed for ODBC import",
    717 => "There is not enough XML/XSL information to proceed with the import or export",
    718 => "Error in parsing XML file (from Xerces)",
    719 => "Error in transforming XML using XSL (from Xalan)",
    720 => "Error when exporting; intended format does not support repeating fields",
    721 => "Unknown error occurred in the parser or the transformer",
    722 => "Cannot import data into a file that has no fields",
    723 => "You do not have permission to add records to or modify records in the target table",
    724 => "You do not have permission to add records to the target table",
    725 => "You do not have permission to modify records in the target table",
    726 => "There are more records in the import file than in the target table. Not all records were imported",
    727 => "There are more records in the target table than in the import file. Not all records were updated",
    729 => "Errors occurred during import. Records could not be imported",
    730 => "Unsupported Excel version. Convert file to Excel 7.0 (Excel 95), 97, 2000, XP, or 2007 format and try again.",
    731 => "The file you are importing from contains no data",
    732 => "This file cannot be inserted because it contains other files",
    733 => "A table cannot be imported into itself",
    734 => "This file type cannot be displayed as a picture",
    735 => "This file type cannot be displayed as a picture. It will be inserted and displayed as a file",
    736 => "There is too much data to be exported to this format. It will be truncated",
    800 => "Unable to create file on disk",
    801 => "Unable to create temporary file on System disk",
    802 => "Unable to open file. This error can be caused by one or more of the following: invalid database name, the file is closed in FileMaker Server or invalid permission",
    803 => "File is single user or host cannot be found",
    804 => "File cannot be opened as read-only in its current state",
    805 => "File is damaged; use Recover command",
    806 => "File cannot be opened with this version of FileMaker Pro",
    807 => "File is not a FileMaker Pro file or is severely damaged",
    808 => "Cannot open file because access privileges are damaged",
    809 => "Disk/volume is full",
    810 => "Disk/volume is locked",
    811 => "Temporary file cannot be opened as FileMaker Pro file",
    813 => "Record Synchronization error on network",
    814 => "File(s) cannot be opened because maximum number is open",
    815 => "Couldn’t open lookup file",
    816 => "Unable to convert file",
    817 => "Unable to open file because it does not belong to this solution",
    819 => "Cannot save a local copy of a remote file",
    820 => "File is in the process of being closed",
    821 => "Host forced a disconnect",
    822 => "FMI files not found; reinstall missing files",
    823 => "Cannot set file to single-user, guests are connected",
    824 => "File is damaged or not a FileMaker file",
    900 => "General spelling engine error",
    901 => "Main spelling dictionary not installed",
    902 => "Could not launch the Help system",
    903 => "Command cannot be used in a shared file",
    904 => "Command can only be used in a file hosted under FileMaker Server",
    905 => "No active field selected; command can only be used if there is an active field",
    906 => "The current file is not shared; command can be used only if the file is shared",
    920 => "Can’t initialize the spelling engine",
    921 => "User dictionary cannot be loaded for editing",
    922 => "User dictionary cannot be found",
    923 => "User dictionary is read-only",
    951 => "An unexpected error occurred",
    954 => "Unsupported XML grammar",
    955 => "No database name",
    956 => "Maximum number of database sessions exceeded",
    957 => "Conflicting commands",
    958 => "Parameter missing in query",
    1200    => "Generic calculation error",
    1201    => "Too few parameters in the function",
    1202    => "Too many parameters in the function",
    1203    => "Unexpected end of calculation",
    1204    => "Number, text constant, field name or '(' expected",
    1205    => "Comment is not terminated with '*/'",
    1206    => "Text constant must end with a quotation mark",
    1207    => "Unbalanced parenthesis",
    1208    => "Operator missing, function not found or '(' not expected",
    1209    => "Name (such as field name or layout name) is missing",
    1210    => "Plug-in function has already been registered",
    1211    => "List usage is not allowed in this function",
    1212    => "An operator (for example, +, -, *) is expected here",
    1213    => "This variable has already been defined in the Let function",
    1214    => "AVERAGE, COUNT, EXTEND, GETREPETITION, MAX, MIN, NPV, STDEV, SUM and GETSUMMARY: expression found where a field alone is needed",
    1215    => "This parameter is an invalid Get function parameter",
    1216    => "Only Summary fields allowed as first argument in GETSUMMARY",
    1217    => "Break field is invalid",
    1218    => "Cannot evaluate the number",
    1219    => "A field cannot be used in its own formula",
    1220    => "Field type must be normal or calculated",
    1221    => "Data type must be number, date, time, or timestamp",
    1222    => "Calculation cannot be stored",
    1223    => "The function referred to is not yet implemented",
    1224    => "The function referred to does not exist",
    1225    => "The function referred to is not supported in this context",
    1400    => "ODBC client driver initialization failed; make sure the ODBC client drivers are properly installed.",
    1401    => "Failed to allocate environment (ODBC)",
    1402    => "Failed to free environment (ODBC)",
    1403    => "Failed to disconnect (ODBC)",
    1404    => "Failed to allocate connection (ODBC)",
    1405    => "Failed to free connection (ODBC)",
    1406    => "Failed check for SQL API (ODBC)",
    1407    => "Failed to allocate statement (ODBC)",
    1408    => "Extended error (ODBC)",
    1409    => "Extended error (ODBC)",
    1410    => "Extended error (ODBC)",
    1411    => "Extended error (ODBC)",
    1412    => "Extended error (ODBC)",
    1413    => "Extended error (ODBC)",
    1450    => "Action requires PHP privilege extension",
    1451    => "Action requires that current file be remote",
    1501    => "SMTP authentication failed",
    1502    => "Connection refused by SMTP server",
    1503    => "Error with SSL",
    1504    => "SMTP server requires the connection to be encrypted",
    1505    => "Specified authentication is not supported by SMTP server",
    1506    => "Email message(s) could not be sent successfully",
    1507    => "Unable to log in to the SMTP server"
    
};

sub new
{
    my $class = shift;
    $class = ref($class) || $class;

    my $self = { };
    return bless $self, $class;
}

sub get_string
{
    my ($self, $error_code) = @_;
    return $error_codes->{$error_code};
}

1; # End of Net::FileMaker::Error::EN::XML