You need to sign in to do that
Don't have an account?
venkateshyadav1243
bulk upload csv file using batch apex
Hi
Am uploading csv file in visualforce page and uploading through bacth apex,its working fine for insert and upadte below is my code.
I have to show error messgae before inserting/update into the system.
Example i have 1 percentage field(Gss percentage) if any record have less than 100 % i need to cancel the batch process and i have to display error message in visualforce page i.e (Some X record have less than 100% please correct and enter).
When i try to add visulforce messgae in batch apex its showing me error how can i display this error in visualforce page
please can any one give me some idea.
global class CustomIterableBatchForAccount implements Database.Batchable<String>,Database.Stateful{
public String CSVFile;
set<string> strset=new set<string>();
Map<string,id> offmap=new map<string,id>();
public List<GSS_Split__c> gsstoupload;
public List<GSS_Split__c> gsstoupdate;
public List<GSS_Split__c> gsssize;
public string errormsgs;
//Constructor to hold the uploaded CSV file
global CustomIterableBatchForAccount(String CSVFile){
this.CSVFile= CSVFile;
}
public void data()
{
}
//Start Method
global Iterable<String> start(Database.BatchableContext bc){
return new CustomIterable(CSVFile);
}
//execute method
global void execute(Database.BatchableContext bc,List<String> scope){
gsstoupload = new List<GSS_Split__c>();
gsstoupdate = new List<GSS_Split__c>();
gsstoupload.clear();
gsstoupdate.clear();
for(GSS_Split__c gss:[select name,Request_Number__c,Account_Index__c,Period_End_text__c,Period_Start_text__c,HQ__c,GRS_REPTYPE__c,GRS_PLATFORM__c,Territory__c,Region__c,WGSS_Perc__c,GSS_Perc__c,PeriodStart__c,Period_End__c,AX_login__c,Primary_AX__c from GSS_Split__c])
{
// gsssize.add(gss.name);
strset.add(gss.Request_Number__c);
offmap.put(gss.Request_Number__c,gss.id);
system.debug('All GSS ACCOUNT OBJECT RECORDS'+gss);
//system.debug('All GSS ACCOUNT OBJECT RECORDS SIZE IN CURRENT SYSTEM'+gsssize.size());
}
List<String> inputvalues;
try{
system.debug('**scope size**'+scope.size());
for (Integer i=0;i<scope.size();i++)
{
inputvalues = new List<String>();
//split the rows
inputvalues = scope[i].split(',');
if(strset.contains(inputvalues[0]))
{
GSS_Split__c a = new GSS_Split__c(id=offmap.get(inputvalues[0]));
//split the rows
// inputvalues = scope[i].split(',');
a.Request_Number__c=inputvalues[0];
a.Account_Index__c= inputvalues[1];
a.HQ__c= inputvalues[2];
a.GRS_REPTYPE__c= inputvalues[3];
a.GRS_PLATFORM__c= inputvalues[4];
a.Territory__c= inputvalues[5];
a.Region__c= inputvalues[6];
a.GSS_Perc__c= integer.valueof(inputvalues[7]);
a.WGSS_Perc__c=integer.valueof(inputvalues[8]);
a.Period_Start_text__c=inputvalues[9];
a.Period_End_text__c=inputvalues[10];
a.AX_login__c= inputvalues[11];
a.Primary_AX__c= inputvalues[12];
gsstoupdate.add(a);
}
else{
GSS_Split__c a = new GSS_Split__c(id=offmap.get(inputvalues[4]));
system.debug('gsss recordsssssss'+a);
a.Request_Number__c=inputvalues[0];
a.Account_Index__c= inputvalues[1];
a.HQ__c= inputvalues[2];
a.GRS_REPTYPE__c= inputvalues[3];
a.GRS_PLATFORM__c= inputvalues[4];
a.Territory__c= inputvalues[5];
a.Region__c= inputvalues[6];
a.GSS_Perc__c= integer.valueof(inputvalues[7]);
a.WGSS_Perc__c=integer.valueof(inputvalues[8]);
a.Period_Start_text__c=inputvalues[9];
a.Period_End_text__c=inputvalues[10];
a.AX_login__c= inputvalues[11];
a.Primary_AX__c= inputvalues[12];
gsstoupload.add(a);
}
}
try{
if(gsstoupdate.size()>0)
{
system.debug('######## gsstoupdate'+gsstoupdate);
update gsstoupdate;
}
if(gsstoupload.size()>0)
{
system.debug('######## gsstoupload'+gsstoupload);
Database.insert(gsstoupload,false);
}
}
catch (Exception e)
{
system.debug('Exception--->'+e+'%%%'+e.getmessage());
}
system.debug('@@@@@@@@@@@@@@@@@@@size'+gsstoupload.size());
}catch(Exception e){
system.debug('Exception--->'+e+'%%%'+e.getmessage());
}
}
global void finish(Database.BatchableContext bc)
{
}
}
Regards,
Venkatesh.
Am uploading csv file in visualforce page and uploading through bacth apex,its working fine for insert and upadte below is my code.
I have to show error messgae before inserting/update into the system.
Example i have 1 percentage field(Gss percentage) if any record have less than 100 % i need to cancel the batch process and i have to display error message in visualforce page i.e (Some X record have less than 100% please correct and enter).
When i try to add visulforce messgae in batch apex its showing me error how can i display this error in visualforce page
please can any one give me some idea.
global class CustomIterableBatchForAccount implements Database.Batchable<String>,Database.Stateful{
public String CSVFile;
set<string> strset=new set<string>();
Map<string,id> offmap=new map<string,id>();
public List<GSS_Split__c> gsstoupload;
public List<GSS_Split__c> gsstoupdate;
public List<GSS_Split__c> gsssize;
public string errormsgs;
//Constructor to hold the uploaded CSV file
global CustomIterableBatchForAccount(String CSVFile){
this.CSVFile= CSVFile;
}
public void data()
{
}
//Start Method
global Iterable<String> start(Database.BatchableContext bc){
return new CustomIterable(CSVFile);
}
//execute method
global void execute(Database.BatchableContext bc,List<String> scope){
gsstoupload = new List<GSS_Split__c>();
gsstoupdate = new List<GSS_Split__c>();
gsstoupload.clear();
gsstoupdate.clear();
for(GSS_Split__c gss:[select name,Request_Number__c,Account_Index__c,Period_End_text__c,Period_Start_text__c,HQ__c,GRS_REPTYPE__c,GRS_PLATFORM__c,Territory__c,Region__c,WGSS_Perc__c,GSS_Perc__c,PeriodStart__c,Period_End__c,AX_login__c,Primary_AX__c from GSS_Split__c])
{
// gsssize.add(gss.name);
strset.add(gss.Request_Number__c);
offmap.put(gss.Request_Number__c,gss.id);
system.debug('All GSS ACCOUNT OBJECT RECORDS'+gss);
//system.debug('All GSS ACCOUNT OBJECT RECORDS SIZE IN CURRENT SYSTEM'+gsssize.size());
}
List<String> inputvalues;
try{
system.debug('**scope size**'+scope.size());
for (Integer i=0;i<scope.size();i++)
{
inputvalues = new List<String>();
//split the rows
inputvalues = scope[i].split(',');
if(strset.contains(inputvalues[0]))
{
GSS_Split__c a = new GSS_Split__c(id=offmap.get(inputvalues[0]));
//split the rows
// inputvalues = scope[i].split(',');
a.Request_Number__c=inputvalues[0];
a.Account_Index__c= inputvalues[1];
a.HQ__c= inputvalues[2];
a.GRS_REPTYPE__c= inputvalues[3];
a.GRS_PLATFORM__c= inputvalues[4];
a.Territory__c= inputvalues[5];
a.Region__c= inputvalues[6];
a.GSS_Perc__c= integer.valueof(inputvalues[7]);
a.WGSS_Perc__c=integer.valueof(inputvalues[8]);
a.Period_Start_text__c=inputvalues[9];
a.Period_End_text__c=inputvalues[10];
a.AX_login__c= inputvalues[11];
a.Primary_AX__c= inputvalues[12];
gsstoupdate.add(a);
}
else{
GSS_Split__c a = new GSS_Split__c(id=offmap.get(inputvalues[4]));
system.debug('gsss recordsssssss'+a);
a.Request_Number__c=inputvalues[0];
a.Account_Index__c= inputvalues[1];
a.HQ__c= inputvalues[2];
a.GRS_REPTYPE__c= inputvalues[3];
a.GRS_PLATFORM__c= inputvalues[4];
a.Territory__c= inputvalues[5];
a.Region__c= inputvalues[6];
a.GSS_Perc__c= integer.valueof(inputvalues[7]);
a.WGSS_Perc__c=integer.valueof(inputvalues[8]);
a.Period_Start_text__c=inputvalues[9];
a.Period_End_text__c=inputvalues[10];
a.AX_login__c= inputvalues[11];
a.Primary_AX__c= inputvalues[12];
gsstoupload.add(a);
}
}
try{
if(gsstoupdate.size()>0)
{
system.debug('######## gsstoupdate'+gsstoupdate);
update gsstoupdate;
}
if(gsstoupload.size()>0)
{
system.debug('######## gsstoupload'+gsstoupload);
Database.insert(gsstoupload,false);
}
}
catch (Exception e)
{
system.debug('Exception--->'+e+'%%%'+e.getmessage());
}
system.debug('@@@@@@@@@@@@@@@@@@@size'+gsstoupload.size());
}catch(Exception e){
system.debug('Exception--->'+e+'%%%'+e.getmessage());
}
}
global void finish(Database.BatchableContext bc)
{
}
}
Regards,
Venkatesh.