From 46ae1cab83bdef60dd8a85cc78ad95a499e9f9d2 Mon Sep 17 00:00:00 2001 From: Usman Shahid Date: Thu, 24 Oct 2019 16:39:11 +0500 Subject: [PATCH] Added support for deleting metadata; Allow blank values --- .vs/CustomMetadataLoader/v15/.suo | Bin 0 -> 7680 bytes .../CustomMetadataUploadController.cls | 27 +++++++++++++++ custom_md_loader/classes/MetadataUtil.cls | 32 +++++++++++++++--- .../pages/CustomMetadataRecordUploader.page | 9 +++++ 4 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 .vs/CustomMetadataLoader/v15/.suo diff --git a/.vs/CustomMetadataLoader/v15/.suo b/.vs/CustomMetadataLoader/v15/.suo new file mode 100644 index 0000000000000000000000000000000000000000..8a0b3d11a2fa6b18d8b428c64cd314672aef9d95 GIT binary patch literal 7680 zcmeHMNlz3(6n>+k;;tyJF=)^j7Xk?}fLp+UU;@E7EFSPMFax3kLwdmF=GnxvCl4lS zj0Y3{f%*sVqA{NI;?*Bu1i!Dkim4f)z#JYz4z*EHGG)a`St0W1K*^G zF3MV&ovW1f)_4s4HRgGT$R_kTHaj;r$KkbT=&sTV(!ek9%KclV|5F3kB#XZ(sgZV> zz}=DibmhQQEfobmALK(5FM`YsGRNMzAoG`c&Pv8#%Kfh>qu94cf4;o&@MCN<=DpRE zufpQ8a!anj`bN-emwRPaDSTZmYhq#bUyUV@z7!dJ;!a8i95|9jOTZVBXlXsq>sA{9 ze+w4-q!;XwX`p0e4Dz#$TF7yXI9|YdocQa|XI`cr%1l?U_uy*sy3rliU@qXc@ZAQq zjcAo<^j9|Wy;VP(?^f?CTLW#d_^jNPaag;9dr-TF87Mjg`(q7A+n^@gQUB|1ygs3) z^a3{r+%DL94xW&Zo5}~LWLSAd&VMPP{j=_*od(6P!d%)miGEKnci?+T_+bb5$ly6A zCNiYK$&_3MSIm!TbR7zg#_V9Q)6B zLZ4m^{5Z67M;fFN>z5+fpTZ?Jsnnd}FLvkU=`&E`j63{ zc@~d?--ewZM*OAyXW?-Z;H693gP-3UzNmjCxW1Tizq>7eY5(UrgmIw0N&=*ngEvSW^eZH?<|#D24B4S$aT9W`HeM{T10 zg^ho#mwDbI*^+g`?^%Vqk*E$nN?V*ze$WBjq^c4NcLMma16YSP9n}Ab%X*zeTQH40 znZCK(=Rc0I)?&TKoNwlM-EFvzA%*Zfud-H*q8? zqtt&~wH6s%Q2h_$G%}6)gK=*hQ80}jPYV2HEID5%vThoT$iQOvpK*vSD&@adoG`ev z!&VYm3yR*`ZQW+J2BCa1{N`fFKHJJuG7ex<`)!^3;5q4v;MgS3-K&m zrADDWDljBnpJ6o}ooc1{7qFbv;4Dr}HsEx@s~<&RxnQ|;TjylmvCj{#pS$$pNb~vc J1uy@=!*62U@Av=! literal 0 HcmV?d00001 diff --git a/custom_md_loader/classes/CustomMetadataUploadController.cls b/custom_md_loader/classes/CustomMetadataUploadController.cls index 44c2351..4bf3e8c 100644 --- a/custom_md_loader/classes/CustomMetadataUploadController.cls +++ b/custom_md_loader/classes/CustomMetadataUploadController.cls @@ -44,6 +44,33 @@ public class CustomMetadataUploadController { } } } + + public PageReference deleteCustomMetaData() { + ApexPages.getMessages().clear(); + showRecordsTable = false; + deleteCustomMetadtaRecords(); + // TODO: Add Success Message / Display Errors + return null; + } + + private void deleteCustomMetadtaRecords() { + if(selectedType == 'Select type') { + ApexPages.Message errorMessage = new ApexPages.Message(ApexPages.severity.ERROR, 'Please choose a valid custom metadata type.'); + ApexPages.addMessage(errorMessage); + return; + } + + String query = 'SELECT DeveloperName FROM ' + selectedType; + + List customRecords = Database.query(query); + List recordsToDelete = new List(); + + for (sObject record : customRecords) { + recordsToDelete.add(selectedType + '.' + record.get('DeveloperName')); + } + + MetadataUtil.deleteMetadata('CustomMetadata', recordsToDelete); + } public PageReference upsertCustomMetadata() { ApexPages.getMessages().clear(); diff --git a/custom_md_loader/classes/MetadataUtil.cls b/custom_md_loader/classes/MetadataUtil.cls index a1e6650..19c9082 100644 --- a/custom_md_loader/classes/MetadataUtil.cls +++ b/custom_md_loader/classes/MetadataUtil.cls @@ -87,10 +87,6 @@ public class MetadataUtil { List fieldValueList = new List(); for (String singleRowFieldValues :singleRowOfValues) { - if (String.isBlank(singleRowFieldValues)) { - continue; - } - fieldValueList.addAll(singleRowFieldValues.split(';')); } for(String fieldName : fieldNameSet) { @@ -152,6 +148,34 @@ public class MetadataUtil { customMetadata.values = customMetadataValues; return customMetadata; } + + public static void deleteMetadata(String type_x,String[] fullNames) { + List results = getPort().deleteMetadata(type_x, fullNames); + if (results!=null) { + for (MetadataService.DeleteResult deleteResult : results) { + if (deleteResult==null || deleteResult.success) { + continue; + } + // Construct error message and throw an exception + if (deleteResult.errors!=null) { + List messages = new List(); + messages.add((deleteResult.errors.size()==1 ? 'Error ' : 'Errors ') + 'occured processing component ' + deleteResult.fullName + '.'); + for(MetadataService.Error error : deleteResult.errors){ + messages.add(error.message + ' (' + error.statusCode + ').' + ( error.fields!=null && error.fields.size()>0 ? ' Fields ' + String.join(error.fields, ',') + '.' : '' ) ); + } + if(messages.size()>0){ + ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.Error, String.join(messages, ' '))); + System.debug(LoggingLevel.ERROR, String.join(messages, '')); + return; + } + } + if(!deleteResult.success){ + ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.Error, 'Request failed with no specified error.')); + return; + } + } + } + } private static void upsertMetadataAndValidate(MetadataService.Metadata[] records) { diff --git a/custom_md_loader/pages/CustomMetadataRecordUploader.page b/custom_md_loader/pages/CustomMetadataRecordUploader.page index d22a11b..7da6003 100644 --- a/custom_md_loader/pages/CustomMetadataRecordUploader.page +++ b/custom_md_loader/pages/CustomMetadataRecordUploader.page @@ -22,6 +22,15 @@ + +
+ + + + +
+
+