166 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| 
 | |
| import 'package:flutter/material.dart';
 | |
| import 'package:oc_front/core/services/enum_service.dart';
 | |
| import 'package:oc_front/models/abstract.dart';
 | |
| import 'package:oc_front/models/resources/resources.dart';
 | |
| 
 | |
| class StorageItem extends AbstractItem<StoragePricing, StoragePartnership, StorageInstance, StorageItem> {
 | |
|   StorageItem({
 | |
|     this.acronym,
 | |
|     this.typeEnum,
 | |
|   }): super();  
 | |
| 
 | |
|  @override String get topic => "storage";
 | |
|   // special attributes
 | |
|   String? acronym;
 | |
|   int? typeEnum;
 | |
| 
 | |
|   @override deserialize(dynamic data) {
 | |
|     try { data = data as Map<String, dynamic>;
 | |
|     } catch (e) { return StorageItem(); }   
 | |
|     var w = StorageItem(
 | |
|       acronym: data.containsKey("acronym") && data["acronym"] != null ? data["acronym"] : null,
 | |
|       typeEnum: data.containsKey("storage_type") && data["storage_type"] != null ? EnumService.get("storage/type", data["storage_type"]) : null,
 | |
|     );
 | |
|     w.mapFromJSON(data, StorageInstance());
 | |
|     if (w.logo != null) { // get image dimensions
 | |
|       var image = Image.network(w.logo!);
 | |
|       image.image
 | |
|         .resolve(const ImageConfiguration())
 | |
|         .addListener(
 | |
|             ImageStreamListener(
 | |
|                 (ImageInfo info, bool _) {
 | |
|                   w.width = info.image.width.toDouble();
 | |
|                   w.height = info.image.height.toDouble();
 | |
|                 }));
 | |
|     }
 | |
|     return w;
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Map<String, dynamic> infos() {
 | |
|     return {
 | |
|       "acronym": acronym,
 | |
|       "storage_type": EnumService.enums["storage/type"] != null 
 | |
|         && EnumService.enums["storage/type"]!["$typeEnum"] != null ? 
 | |
|         EnumService.enums["storage/type"]!["$typeEnum"] : typeEnum,
 | |
|     };
 | |
|   }
 | |
| 
 | |
|   @override Map<String, dynamic> serialize() {
 | |
|     var obj = infos();
 | |
|     obj.addAll(toJSON());
 | |
|     return obj;
 | |
|   }
 | |
| }
 | |
| 
 | |
| class StorageInstance extends AbstractInstance<StoragePricing, StoragePartnership> {
 | |
|   String? source;
 | |
|   bool local = false;
 | |
|   String? securityLevel;
 | |
|   int? storageSizeEnum;
 | |
|   int? size;
 | |
|   bool encryption = false;
 | |
|   String? redundancy;
 | |
|   String? throughput;
 | |
| 
 | |
|   StorageInstance({
 | |
|     this.source,
 | |
|     this.local = false,
 | |
|     this.securityLevel,
 | |
|     this.storageSizeEnum,
 | |
|     this.size,
 | |
|     this.encryption = false,
 | |
|     this.redundancy,
 | |
|     this.throughput,
 | |
|   }): super();
 | |
| 
 | |
|   @override
 | |
|   StorageInstance deserialize(json) {
 | |
|     try { json = json as Map<String, dynamic>;
 | |
|     } catch (e) { return StorageInstance(); }
 | |
|     var w = StorageInstance(
 | |
|       source: json.containsKey("source") && json["source"] != null ? json["source"] : null,
 | |
|       local: json.containsKey("local") && json["local"] != null ? json["local"] : false,
 | |
|       securityLevel: json.containsKey("security_level") && json["security_level"] != null ? json["security_level"] : null,
 | |
|       storageSizeEnum: json.containsKey("size_type") ? EnumService.get("storage/size", json["size_type"]) : null,
 | |
|       size: json.containsKey("size") && json["size"] != null ? json["size"] : null,
 | |
|       encryption: json.containsKey("encryption") && json["encryption"] != null ? json["encryption"] : false,
 | |
|       redundancy: json.containsKey("redundancy") && json["redundancy"] != null ? json["redundancy"] : null,
 | |
|       throughput: json.containsKey("throughput") && json["throughput"] != null ? json["throughput"] : null,
 | |
|     );
 | |
|     w.mapFromJSON(json, StoragePartnership());
 | |
|     return w;
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Map<String, dynamic> infos() {
 | |
|     return {
 | |
|       "local": local,
 | |
|       "security_level": securityLevel,
 | |
|       "size_type": EnumService.enums["storage/size"] != null 
 | |
|       && EnumService.enums["storage/size"]!["$storageSizeEnum"] != null ? 
 | |
|       EnumService.enums["storage/size"]!["$storageSizeEnum"] : storageSizeEnum,
 | |
|       "size": size,
 | |
|       "encryption": encryption,
 | |
|       "redundancy": redundancy,
 | |
|       "throughput": throughput,
 | |
|       "inputs": toListJson(inputs),
 | |
|       "outputs": toListJson(outputs),
 | |
|     };
 | |
|   } 
 | |
| 
 | |
| 
 | |
|   @override
 | |
|   Map<String, dynamic> serialize() {
 | |
|     var obj = infos();
 | |
|     obj["source"] = source;
 | |
|     obj["size_type"] = storageSizeEnum;
 | |
|     obj.addAll(toJSON());
 | |
|     return obj;
 | |
|   }
 | |
| }
 | |
| 
 | |
| class StoragePartnership extends AbstractPartnerShip<StoragePricing> {
 | |
|   double? maxSizeGBAllowed;
 | |
|   bool onlyEncryptedAllowed = false;
 | |
| 
 | |
|   StoragePartnership({
 | |
|     this.maxSizeGBAllowed,
 | |
|     this.onlyEncryptedAllowed = false,
 | |
|   }): super();
 | |
| 
 | |
|   @override
 | |
|   StoragePartnership deserialize(json) {
 | |
|     try { json = json as Map<String, dynamic>;
 | |
|     } catch (e) { return StoragePartnership(); }
 | |
|     var w = StoragePartnership(
 | |
|       maxSizeGBAllowed: json.containsKey("allowed_gb") && json["allowed_gb"] != null ? json["allowed_gb"] : null,
 | |
|       onlyEncryptedAllowed: json.containsKey("personal_data_allowed") && json["personal_data_allowed"] != null ? json["personal_data_allowed"] : false,
 | |
|     );
 | |
|     w.mapFromJSON(json, StoragePricing());
 | |
|     return w;
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Map<String, dynamic> serialize() {
 | |
|     Map<String, dynamic> obj = {
 | |
|       "allowed_gb": maxSizeGBAllowed,
 | |
|       "personal_data_allowed": onlyEncryptedAllowed,
 | |
|     };
 | |
|     obj.addAll(toJSON());
 | |
|     return obj;
 | |
|   }
 | |
| }
 | |
| 
 | |
| class StoragePricing extends AbstractPricing {
 | |
|   @override StoragePricing deserialize(json) {
 | |
|     var w = StoragePricing();
 | |
|     w.mapFromJSON(json);
 | |
|     return w;
 | |
|   }
 | |
|   @override
 | |
|   Map<String, dynamic> serialize() {
 | |
|     return toJSON();
 | |
|   }
 | |
| } |