2193 } |
2179 } |
2194 |
2180 |
2195 } |
2181 } |
2196 #endif |
2182 #endif |
2197 //SYMBIAN_NETWORKING_3GPPDEFAULTQOS |
2183 //SYMBIAN_NETWORKING_3GPPDEFAULTQOS |
2198 |
|
2199 void CCedDumper::ListGenericTablesL() |
|
2200 { |
|
2201 TUint32 KMaskForNames = 0x007FFFFF; |
|
2202 TUint32 KKeyForNames = KCDMaskShowFieldType | KCDMaskShowRecordId; |
|
2203 |
|
2204 |
|
2205 RArray<TUint32> tableIds; |
|
2206 iRepository->FindL(KKeyForNames, KMaskForNames, tableIds); |
|
2207 for(TInt i=0; i<tableIds.Count();i++) |
|
2208 { |
|
2209 if(tableIds[i] >= KCDInitialUDefRecordType && |
|
2210 tableIds[i] <= KCDLastUDefRecordType) |
|
2211 { |
|
2212 TBuf<KCDMaxFieldNameLength> name; |
|
2213 iRepository->Get(tableIds[i], name); |
|
2214 iGenericTableIds.Append(tableIds[i]); |
|
2215 iGenericTableNames.Append(name); |
|
2216 |
|
2217 RRecordInfoArray recordInfoArray; |
|
2218 |
|
2219 RArray<TUint32> fields; |
|
2220 TUint32 KMaskForFields = 0xFF80FFFF; |
|
2221 TUint32 tableId = tableIds[i]; |
|
2222 iRepository->FindL(tableIds[i], KMaskForFields, fields); |
|
2223 for(TInt j=0; j<fields.Count() - 1;j++) |
|
2224 //Do not care about the last one as it is a delimiter. |
|
2225 { |
|
2226 SGenericRecordTypeInfo ptr; |
|
2227 TPckg<SGenericRecordTypeInfo> package(ptr); |
|
2228 |
|
2229 iRepository->Get(fields[j], package); |
|
2230 |
|
2231 recordInfoArray.Append(ptr); |
|
2232 } |
|
2233 iGenericTableFields.Append(recordInfoArray); |
|
2234 fields.Close(); |
|
2235 } |
|
2236 |
|
2237 } |
|
2238 |
|
2239 tableIds.Close(); |
|
2240 } |
|
2241 |
|
2242 void CCedDumper::ConvertFieldTypeL(TInt aFieldType, TDes &aConvertedFieldType) |
|
2243 { |
|
2244 switch(aFieldType) |
|
2245 { |
|
2246 case EText: |
|
2247 aConvertedFieldType.Copy(_L("EText")); |
|
2248 break; |
|
2249 case EDesC8: |
|
2250 aConvertedFieldType.Copy(_L("EDesC8")); |
|
2251 break; |
|
2252 case EUint32: |
|
2253 aConvertedFieldType.Copy(_L("EUint32")); |
|
2254 break; |
|
2255 case EInt: |
|
2256 aConvertedFieldType.Copy(_L("EInt")); |
|
2257 break; |
|
2258 case EBool: |
|
2259 aConvertedFieldType.Copy(_L("EBool")); |
|
2260 break; |
|
2261 case EMedText: |
|
2262 aConvertedFieldType.Copy(_L("EMedText")); |
|
2263 break; |
|
2264 case ELongText: |
|
2265 aConvertedFieldType.Copy(_L("ELongText")); |
|
2266 break; |
|
2267 case ELink: |
|
2268 aConvertedFieldType.Copy(_L("ELink")); |
|
2269 break; |
|
2270 default: |
|
2271 User::Leave(KErrArgument); |
|
2272 } |
|
2273 |
|
2274 } |
|
2275 |
|
2276 void CCedDumper::ConvertFieldAttributeL(TInt aFieldAttribute, TDes &aConvertedFieldAttribute) |
|
2277 { |
|
2278 switch(aFieldAttribute) |
|
2279 { |
|
2280 case ENoAttrs: |
|
2281 aConvertedFieldAttribute.Copy(_L("ENoAttrs")); |
|
2282 break; |
|
2283 case ENotNull: |
|
2284 aConvertedFieldAttribute.Copy(_L("ENotNull")); |
|
2285 break; |
|
2286 default: |
|
2287 User::Leave(KErrArgument); |
|
2288 } |
|
2289 } |
|
2290 |
|
2291 void CCedDumper::DumpGenericTablesL() |
|
2292 { |
|
2293 |
|
2294 for(TInt i = 0; i< iGenericTableIds.Count(); i++) |
|
2295 { |
|
2296 TUint32 tableId = iGenericTableIds[i] & KCDMaskShowRecordType; |
|
2297 |
|
2298 CMDBRecordSet<CMDBGenericRecord>* recordSet = new (ELeave) CMDBRecordSet<CMDBGenericRecord>(tableId); |
|
2299 CleanupStack::PushL(recordSet); |
|
2300 |
|
2301 |
|
2302 iFileDumper->WriteTableHeader(iGenericTableNames[i]); |
|
2303 |
|
2304 //First print out table declaration |
|
2305 if(iGenericTableFields[i].Count()>0) |
|
2306 { |
|
2307 iFileDumper->WriteSectionHeader(-2); |
|
2308 _LIT(KFieldStructure, "FIELDSTRUCTURE"); |
|
2309 _LIT(KFormat, "%08x,%S,%S,%S"); |
|
2310 TPtrC ptrFieldStructure(KFieldStructure); |
|
2311 for(TInt f = 0; f< iGenericTableFields[i].Count(); f++) |
|
2312 { |
|
2313 // line will hold sth like 00120000,EText,ENotNull,SomeName |
|
2314 // its total length is: |
|
2315 // hex id : 8 chars |
|
2316 // type : max 9 chars |
|
2317 // attribute: max 8 chars |
|
2318 // |
|
2319 TBuf<KCDMaxFieldNameLength + 30> line; |
|
2320 // type: max 9 chars |
|
2321 TBuf<9> fieldType, fieldAttribute; |
|
2322 ConvertFieldTypeL(iGenericTableFields[i][f].iValType, fieldType); |
|
2323 ConvertFieldAttributeL(iGenericTableFields[i][f].iTypeAttr, fieldAttribute); |
|
2324 line.Format(KFormat, iGenericTableFields[i][f].iTypeId, &fieldType, &fieldAttribute ,&(iGenericTableFields[i][f].iTypeName)); |
|
2325 TPtrC ptrFieldLine(line); |
|
2326 iFileDumper->WriteColumnValue(ptrFieldStructure, ptrFieldLine); |
|
2327 } |
|
2328 iFileDumper->WriteSectionFooter(-2); |
|
2329 } |
|
2330 |
|
2331 TRAPD(err, recordSet->LoadL(*iDbSession)); |
|
2332 if(err!= KErrNotFound) |
|
2333 { |
|
2334 User::LeaveIfError(err); |
|
2335 } |
|
2336 |
|
2337 for(TInt j = 0; j<recordSet->iRecords.Count();j++) |
|
2338 { |
|
2339 iFileDumper->WriteSectionHeader(recordSet->iRecords[j]->RecordId()); |
|
2340 TInt noOfFields(0); |
|
2341 for(TInt k = 0; k < iGenericTableFields[i].Count(); k++) |
|
2342 { |
|
2343 SGenericRecordTypeInfo recordTypeInfo = iGenericTableFields[i][k]; |
|
2344 if(WriteFieldValueL(reinterpret_cast<CMDBGenericRecord*>(recordSet->iRecords[j]), iGenericTableFields[i][k].iTypeName)) |
|
2345 { |
|
2346 noOfFields++; |
|
2347 } |
|
2348 } |
|
2349 iFileDumper->WriteFieldCount(noOfFields); |
|
2350 iFileDumper->WriteSectionFooter(recordSet->iRecords[j]->RecordId()); |
|
2351 } |
|
2352 CleanupStack::PopAndDestroy(recordSet); |
|
2353 } |
|
2354 } |
|
2355 |
|
2356 TBool CCedDumper::WriteFieldValueL(CMDBGenericRecord* aRecord, const TDesC& aFieldName) |
|
2357 { |
|
2358 TInt valType; |
|
2359 TPtrC ptrFieldName(aFieldName); |
|
2360 TBuf<20> bufVal; |
|
2361 CMDBElement* element = aRecord->GetFieldByNameL(aFieldName, valType); |
|
2362 if(element->IsNull()) |
|
2363 { |
|
2364 return EFalse; |
|
2365 } |
|
2366 switch(valType) |
|
2367 { |
|
2368 case EText: |
|
2369 case EMedText: |
|
2370 case ELongText: |
|
2371 { |
|
2372 CMDBField<TDesC>* textField = static_cast<CMDBField<TDesC> *>(element); |
|
2373 TPtrC ptrTextField(*textField); |
|
2374 iFileDumper->WriteColumnValue(ptrFieldName, ptrTextField); |
|
2375 break; |
|
2376 } |
|
2377 case EDesC8: |
|
2378 { |
|
2379 CMDBField<TDesC8>* text8Field = static_cast<CMDBField<TDesC8> *>(element); |
|
2380 TPtrC8 ptrText8Field(*text8Field); |
|
2381 iFileDumper->WriteColumnValue(ptrFieldName, reinterpret_cast<TPtrC&>(ptrText8Field)); |
|
2382 break; |
|
2383 } |
|
2384 case EInt: |
|
2385 { |
|
2386 TInt intVal; |
|
2387 CMDBField<TInt>* intField = static_cast<CMDBField<TInt> *>(element); |
|
2388 intVal = *intField; |
|
2389 bufVal.Num(intVal); |
|
2390 TPtrC ptrIntField(bufVal.MidTPtr(0)); |
|
2391 iFileDumper->WriteColumnValue(ptrFieldName, ptrIntField); |
|
2392 break; |
|
2393 } |
|
2394 case EBool: |
|
2395 { |
|
2396 TBool boolVal; |
|
2397 CMDBField<TInt>* boolField = static_cast<CMDBField<TInt> *>(element); |
|
2398 boolVal = *boolField; |
|
2399 TPtrC ptrBoolField(boolVal?TRUE_VAL:FALSE_VAL); |
|
2400 iFileDumper->WriteColumnValue(ptrFieldName, ptrBoolField); |
|
2401 break; |
|
2402 } |
|
2403 case EUint32: |
|
2404 case ELink: |
|
2405 { |
|
2406 TInt int32Val; |
|
2407 CMDBField<TInt>* int32Field = static_cast<CMDBField<TInt> *>(element); |
|
2408 int32Val = *int32Field; |
|
2409 bufVal.Num(int32Val); |
|
2410 TPtrC ptrInt32Field(bufVal.MidTPtr(0)); |
|
2411 iFileDumper->WriteColumnValue(ptrFieldName, ptrInt32Field); |
|
2412 break; |
|
2413 } |
|
2414 default: |
|
2415 User::Leave(KErrArgument); |
|
2416 } |
|
2417 return ETrue; |
|
2418 } |
|