I have two objects 'Job Document History' and 'Job Position Transactional'. JPT is the master and JDH is child. In JDh i have field version. It should be unique for each relationship with JPT. I wrote trigger on JDH and trying to validate the duplicate values. Here the problem is Map is Case Sensitive. I want But i am
getting NullPointerException
when i am trying to enter opposite letters(like if 'A' already there but i given 'a').
Below is the my code:
trigger DuplicateVersion on Job_Document_History__c (before insert, before update) {
Map<String, Job_Document_History__c> versionMap = new Map<String, Job_Document_History__c>();
Set<string> jobPositionTran = new Set<string>();
for (Job_Document_History__c jobDocHis : System.Trigger.new) {
if ((jobDocHis.Version__c != null) && (System.Trigger.isInsert || (jobDocHis.Version__c != System.Trigger.oldMap.get(jobDocHis.Id).Version__c)))
{
jobPositionTran.add(jobDocHis.Job_Position_Transactional__c);
if (versionMap.containsKey(jobDocHis.Version__c)) {
jobDocHis.Version__c.addError('Another new document history has the same version Name.');
} else {
versionMap.put(jobDocHis.Version__c.toUpperCase(), jobDocHis);
}
}
}
for (Job_Document_History__c jobDocHis : [SELECT Version__c FROM Job_Document_History__c WHERE Job_Position_Transactional__c IN :jobPositionTran and Version__c IN :versionMap.KeySet()]) {
Job_Document_History__c newjobDocHis = versionMap.get(jobDocHis.Version__c.toUpperCase());
newjobDocHis.Version__c.addError('This version is already exists.');
}
}
versionMap.containsKey(jobDocHis.Version__c.toLowerCase()))
orversionMap.put(jobDocHis.Version__c.toLowerCase(), jobDocHis);