Convert 15 digit SFDC Id in 18 Digit
Visualforce Page Code :
Controller Code :
Visualforce Page Code :
<apex:page sidebar="false" controller="FileUploader" showHeader="false" contentType="{!ctype}"> <apex:form > <apex:sectionHeader title="Upload data from CSV file (15 Digit Id in csv)"/> <apex:pagemessages /> <apex:pageBlock > <center> <apex:inputFile value="{!contentFile}" filename="{!nameFile}" /> <apex:commandButton action="{!ReadFile}" value="Upload File" id="theButton" style="width:70px;"/> </center> <apex:pageblocktable value="{!convertedId1}" var="acc" rendered="{!NOT(ISNULL(uploadedAccounts))}"> <apex:column headerValue="15 Digit Id"> <apex:outputText value="{!acc.Digit15Id}"/> </apex:column> <apex:column headerValue="18 Digit Id"> <apex:outputText value="{!acc.Digit18Id}"/> </apex:column> <!-- <apex:column headerValue="Shipping Street"> <apex:outputField value="{!acc.ShippingStreet}"/> </apex:column> <apex:column headerValue="Shipping City"> <apex:outputField value="{!acc.ShippingCity}"/> </apex:column> <apex:column headerValue="Shipping State"> <apex:outputField value="{!acc.ShippingState}"/> </apex:column> <apex:column headerValue="Shipping Postal Code"> <apex:outputField value="{!acc.ShippingPostalCode}"/> </apex:column> <apex:column headerValue="Shipping Country"> <apex:outputField value="{!acc.ShippingCountry}"/> </apex:column>--> </apex:pageblocktable> </apex:pageBlock> </apex:form> </apex:page>
Controller Code :
public class FileUploader { public string ctype {get;set;} public List<wrapper15to18Id> convertedId1{get;set;} public class wrapper15to18Id { public String Digit15Id{get;set;} public String Digit18Id{get;set;} } public string nameFile{get;set;} public Blob contentFile{get;set;} String[] filelines = new String[]{}; public FileUploader2 () { convertedId1 = new List<wrapper15to18Id> (); }
public Pagereference ReadFile() { nameFile=contentFile.toString(); filelines = nameFile.split('\n'); for (Integer i=1;i<filelines.size();i++) { wrapper15to18Id ForconvertedId = new wrapper15to18Id (); String[] inputvalues = new String[]{}; inputvalues = filelines[i].split(','); ForconvertedId.Digit15Id = inputvalues[0]; convertedId1.add(ForconvertedId); } try { for(wrapper15to18Id idcon : convertedId1) { System.debug('***************'+idcon.Digit15Id); idcon.Digit18Id = getCinvertedId(idcon.Digit15Id.trim()); } ctype = 'application/vnd.ms-excel'; } catch (Exception e) { ApexPages.Message errormsg = new ApexPages.Message(ApexPages.severity.ERROR,'An error has occured. Please check the template or try again later'); ApexPages.addMessage(errormsg); } return null; } // public String sids {get;set;}//= '001O0000004AKBd' ; public String ConvertedId {get;set;} string suffix = ''; Integer flags; public List<wrapper15to18Id> getuploadedAccounts() { return convertedId1; } public string getCinvertedId(String sids) { string suffix = ''; for (Integer i = 0; i < 3; i++) { flags = 0; for (integer j = 0; j < 5; j++) { string c = sids.substring(i * 5 + j,i * 5 + j + 1); //Only add to flags if c is an uppercase letter: if (c.toUpperCase().equals(c) && c >= 'A' && c <= 'Z') { flags = flags + (1 << j); } } if (flags <= 25) { suffix = suffix + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.substring(flags,flags+1); } else { suffix = suffix + '012345'.substring(flags-25,flags-24); } } //18 Digit Id with checksum //System.debug(' ::::::: ' + sids + suffix) ; ConvertedId = sids + suffix; return ConvertedId ; } }
No comments:
Post a Comment