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 : }