LCOV - code coverage report
Current view: top level - src/database/adapter - generic_adapter.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 22 31 71.0 %
Date: 2020-12-04 18:41:24 Functions: 0 0 -

          Line data    Source code
       1             : import 'dart:convert';
       2             : 
       3             : import 'package:pal/src/database/entity/pageable.dart';
       4             : 
       5             : /// GenericEntityAdapter interface
       6             : ///
       7             : /// parse a string to an entity
       8             : /// convert an object to a JSON string format
       9             : abstract class GenericEntityAdapter<T> {
      10             : 
      11           4 :   String toJson(T model) => json.encode(model);
      12             : 
      13           2 :   T parse(String value) {
      14           2 :     Map<String, dynamic> map = json.decode(value);
      15             :     try {
      16           2 :       return parseMap(map);
      17             :     } catch (e) {
      18           0 :       print('${T}Adapter ERROR WHILE parse JSON $e  ');
      19           0 :       throw Exception('ERROR WHILE parse JSON $e');
      20             :     }
      21             :   }
      22             : 
      23           3 :   List<T> parseArray(String value) {
      24           3 :     List<dynamic> lst = json.decode(value);
      25           3 :     return parseDynamicArray(lst);
      26             :   }
      27             : 
      28           3 :   List<T> parseDynamicArray(List<dynamic> lst) {
      29           3 :     List<T> result = List();
      30          12 :     lst.forEach((key) => result.add(parseMap(key)));
      31             :     return result;
      32             :   }
      33             : 
      34           2 :   Pageable<T> parsePage(String value) {
      35           2 :     Map page = json.decode(value);
      36             :     try {
      37           2 :       Pageable<T> result = Pageable(
      38           4 :         offset: page['pageable']['offset'],
      39           4 :         pageNumber: page['pageable']['pageNumber'],
      40           2 :         first: page['first'],
      41           2 :         last: page['last'],
      42           2 :         numberOfElements: page['numberOfElements'],
      43           2 :         totalPages: page['totalPages'],
      44           2 :         totalElements: page['totalElements'],
      45           4 :         pageSize: page['pageable']['pageSize']);
      46           8 :       result.entities = this.parseArray(json.encode(page['content']));
      47             :       return result;
      48             :     } catch (err) {
      49           0 :       throw "Error while parsing data " + err;
      50             :     }
      51             :   }
      52             : 
      53           0 :   Map<String, dynamic> decode(String value) {
      54           0 :     return json.decode(value);
      55             :   }
      56             : 
      57           0 :   String encode(Object object) {
      58           0 :     return json.encode(object);
      59             :   }
      60             : 
      61             :   T parseMap(Map<String, dynamic> map);
      62             : 
      63           0 :   static checkKey(Map<String, dynamic> map, String key) {
      64           0 :     return map.containsKey(key) && map[key] != null && map[key] != '';
      65             :   }
      66             : }

Generated by: LCOV version 1.14