phonebookengines/contactsmodel/cntplsql/inc/dbsqlconstants.h
changeset 0 e686773b3f54
child 24 0ba2181d7c28
equal deleted inserted replaced
-1:000000000000 0:e686773b3f54
       
     1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #include <cntdef.hrh>
       
    17 
       
    18 const TInt KInitialValue = -1;
       
    19 const TInt KNumOfTables = 4;
       
    20 const TInt KNumColInPrefTable = 6;
       
    21 const TInt KNumColInContactTable = 16;
       
    22 const TInt KNumColInGroupTable = 3;
       
    23 const TInt KNumColInCommTable = 5;
       
    24 
       
    25 // tables in the contact database 
       
    26 _LIT(KSqlContactTableName,"contact");
       
    27 _LIT(KSqlContactGroupTableName,"groups");
       
    28 _LIT(KSqlContactPrefTableName,"preferences");
       
    29 _LIT(KSqlContactCommAddrTableName,"comm_addr");
       
    30 
       
    31 enum TDatabaseTables
       
    32 	{
       
    33 	EContactPrefTableName,
       
    34 	EContactTableName,
       
    35 	EContactGroupTableName,
       
    36 	EContactCommAddressTableName
       
    37 	};
       
    38 
       
    39 // columns for contact table
       
    40 _LIT(KContactId, "contact_id");
       
    41 _LIT(KContactTemplateId, "template_id");
       
    42 _LIT(KContactTypeFlags, "type_flags");
       
    43 _LIT(KContactAccessCount, "access_count");
       
    44 _LIT(KContactCreationDate, "creation_date");
       
    45 _LIT(KContactLastModified, "last_modified");
       
    46 _LIT(KContactGuidString, "guid_string");
       
    47 _LIT(KContactFirstName, "first_name");
       
    48 _LIT(KContactLastName, "last_name");
       
    49 _LIT(KContactCompanyName, "company_name");
       
    50 _LIT(KContactFirstNamePrn, "firstname_prn");
       
    51 _LIT(KContactLastNamePrn, "lastname_prn");
       
    52 _LIT(KContactCompanyNamePrn, "companyname_prn");
       
    53 _LIT(KContactTextFieldHeader, "text_fields_header");
       
    54 _LIT(KContactBinaryFieldHeader, "binary_fields_header");
       
    55 _LIT(KContactTextFields, "text_fields");
       
    56 _LIT(KContactBinaryFields, "binary_fields");
       
    57 //end columns for contact table
       
    58 
       
    59 // parameters for contact table
       
    60 _LIT(KContactIdParam, ":contact_id");
       
    61 _LIT(KContactTemplateIdParam, ":template_id");
       
    62 _LIT(KContactTypeFlagsParam, ":type_flags");
       
    63 _LIT(KContactTypeParam, ":contact_type");
       
    64 _LIT(KAttributesAndHintParam, ":attr_and_hint");
       
    65 _LIT(KContactAccessCountParam, ":access_count");
       
    66 _LIT(KContactCreationDateParam, ":creation_date");
       
    67 _LIT(KContactLastModifiedParam, ":last_modified");
       
    68 _LIT(KContactGuidStringParam, ":guid_string");
       
    69 _LIT(KContactFirstNameParam, ":first_name");
       
    70 _LIT(KContactLastNameParam, ":last_name");
       
    71 _LIT(KContactCompanyNameParam, ":company_name");
       
    72 _LIT(KContactFirstNamePrnParam, ":firstname_prn");
       
    73 _LIT(KContactLastNamePrnParam, ":lastname_prn");
       
    74 _LIT(KContactCompanyNamePrnParam, ":companyname_prn");
       
    75 _LIT(KContactTextFieldHeaderParam, ":text_fields_header");
       
    76 _LIT(KContactBinaryFieldHeaderParam, ":binary_fields_header");
       
    77 _LIT(KContactTextFieldsParam, ":text_fields");
       
    78 _LIT(KContactBinaryFieldsParam, ":binary_fields");
       
    79 //end parameters for contact table
       
    80 
       
    81 // create statements
       
    82 _LIT(KContactCreateStmnt, "CREATE TABLE contact (contact_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, template_id INTEGER, type_flags INTEGER, access_count INTEGER, creation_date , last_modified , guid_string VARCHAR(255) NULL, first_name VARCHAR(255) NULL, last_name VARCHAR(255) NULL, company_name VARCHAR(255) NULL, firstname_prn VARCHAR(255) NULL, lastname_prn VARCHAR(255) NULL, companyname_prn VARCHAR(255) NULL, text_fields_header BLOB, binary_fields_header BLOB, text_fields TEXT, binary_fields BLOB); CREATE INDEX contact_guid_string_idx  ON contact (guid_string);");
       
    83 // end contact table
       
    84 
       
    85 // comm-address table
       
    86 // columns
       
    87 _LIT(KCommAddrId, "comm_addr_id");
       
    88 _LIT(KCommAddrType, "type");
       
    89 _LIT(KCommAddrValue, "value");
       
    90 _LIT(KCommAddrExtraValue, "extra_value");
       
    91 _LIT(KCommAddrContactId, "contact_id");
       
    92 // parameters
       
    93 _LIT(KCommAddrIdParam, ":comm_addr_id");
       
    94 _LIT(KCommAddrTypeParam, ":type");
       
    95 _LIT(KCommAddrValueParam, ":value");
       
    96 _LIT(KCommAddrExtraValueParam, ":extra_value");
       
    97 _LIT(KCommAddrContactIdParam, ":contact_id");
       
    98 // create statements
       
    99 _LIT(KCommAddrCreateStmnt, "CREATE TABLE comm_addr (comm_addr_id  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, type INTEGER NOT NULL, value CHAR(255) NOT NULL, extra_value CHAR(255), contact_id INTEGER NOT NULL, FOREIGN KEY (contact_id) REFERENCES contact(contact_id)); CREATE INDEX comm_addr_val_idx  ON comm_addr (value); CREATE INDEX comm_addr_contact_id_idx  ON comm_addr (contact_id);");
       
   100 // end comm_address table
       
   101 
       
   102 // groups table
       
   103 // columns
       
   104 _LIT(KGroupId, "group_id");
       
   105 _LIT(KGroupContactGroupId, "contact_group_id");
       
   106 _LIT(KGroupContactGroupMemberId, "contact_group_member_id");
       
   107 // parameters
       
   108 _LIT(KGroupIdParam, ":group_id");
       
   109 _LIT(KGroupContactGroupIdParam, ":contact_group_id");
       
   110 _LIT(KGroupContactGroupMemberIdParam, ":contact_group_member_id");
       
   111 // create statements
       
   112 _LIT(KGroupsCreateStmnt, "CREATE TABLE groups (group_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, contact_group_id INTEGER NOT NULL, contact_group_member_id INTEGER NOT NULL, FOREIGN KEY (contact_group_id) REFERENCES contact(contact_id), FOREIGN KEY (contact_group_member_id) REFERENCES contact(contact_id) ); CREATE INDEX contact_group_id_idx ON groups (contact_group_id); CREATE INDEX contact_group_member_id_idx ON groups (contact_group_member_id);");
       
   113 // end groups table
       
   114 
       
   115 // preferences table
       
   116 // columns
       
   117 _LIT(KPrefPrefId,"preference_id");
       
   118 _LIT(KPrefSchemaVersion,"data_schema_version");
       
   119 _LIT(KPrefDatabaseUid,"database_uid");
       
   120 _LIT(KPrefPrefCreationDate,"creation_date");
       
   121 _LIT(KPrefMachineId, "machine_id");
       
   122 _LIT(KPrefPreferredOrder, "preferred_sortorder");
       
   123 _LIT(KPrefferredTemplateId,"preferred_cardtemplate_id");
       
   124 
       
   125 // parameters
       
   126 _LIT(KPrefIdParam, ":preference_id");
       
   127 _LIT(KPrefSchemaVersionParam, ":data_schema_version");
       
   128 _LIT(KPrefDatabaseUidParam, ":database_uid");
       
   129 _LIT(KPrefCreationDateParam, ":creation_date");
       
   130 _LIT(KPrefMachineIdParam, ":machine_id");
       
   131 _LIT(KPrefPreferredOrderParam, ":preferred_sortorder");
       
   132 _LIT(KPrefferredTemplateIdParam,":preferred_cardtemplate_id");
       
   133 
       
   134 // create statements
       
   135 _LIT(KPreferencesCreateStmnt,  "CREATE TABLE preferences (preference_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, data_schema_version INTEGER NOT NULL, preferred_cardtemplate_id INTEGER, machine_id , creation_date , preferred_sortorder BLOB); ");
       
   136 // end preferences table
       
   137 
       
   138 
       
   139 // Condition strings for searching id
       
   140 _LIT(KSelectCondition_SearchForEqual,   "%S == :SeekId");
       
   141 
       
   142 // SQLITE_SEQUENCE table stuff for getting last row_id
       
   143 _LIT(KSelectLastIdSqlStmnt, "SELECT seq FROM SQLITE_SEQUENCE WHERE name = 'contact';");
       
   144 
       
   145 
       
   146 // SQLITE_SEQUENCE table stuff for getting last row_id
       
   147 _LIT(KSqliteSequenceTableName, "SQLITE_SEQUENCE");
       
   148 _LIT(KSqliteSequenceSeq, "seq");
       
   149 _LIT(KSqliteSequenceName, "name");
       
   150 
       
   151 _LIT(KSQLSelect, "SELECT ");
       
   152 _LIT(KFrom, "FROM ");
       
   153 
       
   154 _LIT(KSpace, " ");
       
   155 _LIT(KComma, ",");
       
   156 _LIT(KSelectTwoFields, "SELECT %S, %S FROM %S WHERE %S=%d");
       
   157 _LIT(KSelectTwoFieldsWithGreater, "SELECT %S, %S FROM %S WHERE %S>=%d");
       
   158 _LIT(KSelectFiveFields, "SELECT %S, %S, %S, %S, %S FROM %S");
       
   159 _LIT(KCountSelect, "SELECT count(*) FROM %S");
       
   160 _LIT(KCountTypeSelect, "SELECT count(*) FROM %S WHERE (%S>>%d)=%d AND ((%S>>%d)&%d)=0");
       
   161 _LIT(KOneTypeField, "SELECT %S FROM %S WHERE (%S>>%d)=%d");
       
   162 _LIT(KTwoTypeField, "SELECT %S, %S FROM %S WHERE (%S>>%d)=%d");
       
   163 _LIT(KJoinConditionClause, "%S=%S and %S=%d");
       
   164 _LIT(KConditionClause, "%S=%d");
       
   165 _LIT(KTypeConditionClause, "(%S>>%d)=%d");
       
   166 _LIT(KWhereStringEqualsStringFormatText, "%S = %S");
       
   167 _LIT(KSelectFlagsSqlStmntFormat, "SELECT type_flags FROM contact WHERE contact_id = %d");
       
   168 _LIT(KVar, ":var");
       
   169 _LIT(KIntValue, "%d");
       
   170 _LIT(KSelectCondition_SearchForContactId, "contact_id == :SeekId");
       
   171 
       
   172 
       
   173 // COUNT function
       
   174 _LIT(KCount, " COUNT(%S) ");
       
   175 
       
   176 // NULL
       
   177 _LIT(KNullText, "NULL");    //think this should be deleted
       
   178 
       
   179 // AND
       
   180 _LIT(KSqlAnd, " AND ");
       
   181 
       
   182 // OR
       
   183 _LIT(KSqlOr, " OR ");
       
   184 
       
   185 // COUNT
       
   186 _LIT(KSqlCount, "count(*)");
       
   187 
       
   188 const TInt  KFirstParam = 0;
       
   189 
       
   190 /* constants defined for type_flags in contact table */
       
   191 
       
   192 // definition for contact type flags
       
   193 
       
   194 //Bit flags in the byte of Contact Type
       
   195 enum TContactTypeFlags 
       
   196 	{
       
   197 	EContactTypeFlags_ContactCard,   
       
   198 	EContactTypeFlags_OwnCard,
       
   199 	EContactTypeFlags_ICCEntry,
       
   200 	EContactTypeFlags_Group,
       
   201 	EContactTypeFlags_Template,
       
   202 	EContactTypeFlags_CardTemplate,
       
   203 	EContactTypeFlags_UnknownType
       
   204 	};
       
   205 
       
   206 const TInt KContactTypeShiftBits = 24; //ContactType byte stored in highest(left most) byte in the type flags integer
       
   207 
       
   208 /* definition for contact attributes flags */
       
   209 enum TContactAttrsFlags 
       
   210 	{
       
   211 	EContactAttrsFlags_System  			= 1,
       
   212 	EContactAttrsFlags_Hidden  			= 2, // 1 << 1
       
   213 	EContactAttrsFlags_CompressedGUID 	= 4, // 1 << 2
       
   214 	EContactAttrsFlags_Deleted    		= 8, // 1 << 3
       
   215 	EContactAttrsFlags_Mask  		    = 0x00FF0000
       
   216 	};
       
   217 const TInt KContactAttrsShiftBits = 16; //Contact Attributes byte stored in second highest byte in the type flags integer
       
   218 
       
   219 /* definition for contact hint flags */ 
       
   220 const TInt KFastAccessFieldUids[] = 
       
   221 	{
       
   222 	KUidContactFieldGivenNameValue, 
       
   223 	KUidContactFieldFamilyNameValue,
       
   224 	KUidContactFieldCompanyNameValue,
       
   225 	KUidContactFieldGivenNamePronunciationValue,
       
   226 	KUidContactFieldFamilyNamePronunciationValue,
       
   227 	KUidContactFieldCompanyNamePronunciationValue
       
   228 	};
       
   229 	
       
   230 /* definition for contact hint flags */
       
   231 enum TContactTypeFlagsMasks 
       
   232 	{
       
   233 	EContactType_Mask 		= 0xFF000000,
       
   234 	EContactAttributes_Mask	= 0x00FF0000,
       
   235 	EContactHintFlags_Mask 	= 0x0000FFFF // Hint value put lowest 2 bytes of the type flags integer
       
   236 	};
       
   237 
       
   238 enum TContactTypeFlagsShitfs
       
   239 	{
       
   240 	EContactAttributes_Shift	= 16,
       
   241 	EContactType_Shift 			= 24	
       
   242 	};	
       
   243 
       
   244 enum TFastAccessField
       
   245 	{
       
   246 	EFirstFastAccessField = 0,
       
   247 	EGivenName = EFirstFastAccessField,
       
   248 	EFamilyName,
       
   249 	ECompanyName,
       
   250 	EGivenNamePrn,
       
   251 	EFamilyNamePrn,
       
   252 	ECompanyNamePrn,
       
   253 	ENumberOfFastAccessFields,
       
   254 	ENoSuchFastAccessField = -1
       
   255 	};
       
   256 
       
   257 const TInt KFirstIndex = 0;