You need to sign in to do that
Don't have an account?

Change apex trigger so it does not block file types but makes them the only allowed
Hello, I build a trigger that blocks file types that are in my custom metadata (DataBlock). Now I would like to change the trigger so every type except the ones in my metadata are blocked. Could you tell me by my code sample how to change the apex trigger so it does not block these file types but allows them and blocks every else?
Greetings
Jonathan
trigger DataBlockContentVersion on ContentVersion(before insert) {
try {
Set<String> blockedTypes = new Set<String>();
for (DataBlock__mdt blockedType : [SELECT FileExtension__c FROM DataBlock__mdt WHERE FileExtension__c != null]) {
blockedTypes.add(blockedType?.FileExtension__c?.toUpperCase());
}
for (ContentVersion myDocument : Trigger.new) {
system.debug('PathOnClient '+myDocument.PathOnClient);
if (myDocument.PathOnClient != null) {
String[] parts = myDocument.PathOnClient.split('\\.'); /*Payal: Updated regex for splitting extension*/
system.debug('part '+parts);
if (parts.size() > 0) {
String ext = parts[parts.size() - 1];
if (blockedTypes.contains(ext.toUpperCase())) {
myDocument.addError('The datatype ' + ext + ' is not allowed');
}
}
}
}
} catch (Exception e) {
throw new StringException(e.getMessage() + ' - ' + e.getLineNumber() + '\r\n' + e.getStackTraceString());
}
}
Greetings
Jonathan
trigger DataBlockContentVersion on ContentVersion(before insert) {
try {
Set<String> blockedTypes = new Set<String>();
for (DataBlock__mdt blockedType : [SELECT FileExtension__c FROM DataBlock__mdt WHERE FileExtension__c != null]) {
blockedTypes.add(blockedType?.FileExtension__c?.toUpperCase());
}
for (ContentVersion myDocument : Trigger.new) {
system.debug('PathOnClient '+myDocument.PathOnClient);
if (myDocument.PathOnClient != null) {
String[] parts = myDocument.PathOnClient.split('\\.'); /*Payal: Updated regex for splitting extension*/
system.debug('part '+parts);
if (parts.size() > 0) {
String ext = parts[parts.size() - 1];
if (blockedTypes.contains(ext.toUpperCase())) {
myDocument.addError('The datatype ' + ext + ' is not allowed');
}
}
}
}
} catch (Exception e) {
throw new StringException(e.getMessage() + ' - ' + e.getLineNumber() + '\r\n' + e.getStackTraceString());
}
}
please try below code and this will block every other file type which is not in your metadata DataBlock__mdt please let me know if this answers your question and if so please can you mark this as best answer.