function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Nageswara  reddyNageswara reddy 

Attempt to de-reference a null object in apex calss

HI all,

 

 I am using geocodes In my apex class to find  distance between  two places.  To find langitude and lattitude  of a place i am using XML parser,   Thex XML parser is not Happening in my code , could u pla tell me  Why it is not, Even though I am placing Googleape geocode in Remote settings.  My apex class is

 

Apex Class

 

public void filtering()
{
If(navilist.size()>0)
navilist.clear();
if(mapval.size()>0)
mapval.clear();
string address22='';
string address11=patient.E_Address1__c+'+'+patient.City__c+'+'+'+'+patient.states__c;
if(patient.zip__C!=null)
address11=patient.E_Address1__c+'+'+patient.City__c+'+'+'+'+patient.states__c+'+'+'+'+patient.zip__C;
if(pat.Type_of_Cancer__c!=null && pat.Gender__c!=null&&Lastname=='')
{
//cancer type and Gender

for(Navigator__c nv:[select fullname__c,zip_code__c,id,E_Navigator_Last_Name__c,name,E_Address_1__c,City__c,states__C,Type_of_Cancer__c from Navigator__c where Gender__c=:pat.Gender__c and Type_of_Cancer__c=:pat.Type_of_Cancer__c and Assigned_Patients__c<=2 and createdbyid=:userid and Been_Through_Orientation__c=:true])
{

wraperclass w=new wraperclass();
w.id=nv.id;
w.E_Address1=nv.E_Address_1__c;
w.City=nv.city__c;
//w.country=nv.County__c;
w.address=nv.name+';'+nv.E_Address_1__c+'+'+'+'+nv.city__c+'+'+nv.states__C+'+'+nv.Type_of_Cancer__c+';'+nv.E_Navigator_Last_Name__c;
address=w.address;
slist.add(address);
w.addr=nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C; 
w.cancertype=nv.Type_of_Cancer__c;
w.fname=nv.name;
w.lname=nv.E_Navigator_Last_Name__c;
if(nv.zip_code__C!=null)
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+'+'+nv.zip_code__c+'|';
else
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+'|';
navilist.add(w); 
mapval.put(nv.fullname__c,nv.id);
}

coordinates(address11,address22);
}
else if(pat.Type_of_Cancer__c!=null && pat.Gender__c==null&&Lastname=='')
{
//only for type of cancer
for(Navigator__c nv:[select fullname__c,id,zip_code__c,E_Navigator_Last_Name__c,name,E_Address_1__c,City__c,states__C,Type_of_Cancer__c from Navigator__c where Type_of_Cancer__c=:pat.Type_of_Cancer__c and Assigned_Patients__c<=2 and createdbyid=:userid and Been_Through_Orientation__c=:true])
{
wraperclass w=new wraperclass();
w.id=nv.id;
w.E_Address1=nv.E_Address_1__c;
w.City=nv.city__c;
//w.country=nv.County__c;
w.address=nv.name+';'+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+';'+nv.Type_of_Cancer__c+';'+nv.E_Navigator_Last_Name__c;
address=w.address;
slist.add(address);
w.addr=nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C; 
w.cancertype=nv.Type_of_Cancer__c;
w.fname=nv.name;
w.lname=nv.E_Navigator_Last_Name__c;
if(nv.zip_code__C!=null)
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+'+'+nv.zip_code__c+'|';
else
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+','+nv.states__C+'|';
navilist.add(w); 
mapval.put(nv.fullname__c,nv.id);
}

coordinates(address11,address22);
}
else if(pat.Type_of_Cancer__c!=null && pat.Gender__c==null &&Lastname!='')
{
//cancertype and lastname
for(Navigator__c nv:[select fullname__c,id,zip_code__c,E_Navigator_Last_Name__c,name,E_Address_1__c,City__c,states__C,Type_of_Cancer__c from Navigator__c where Last_name__C=:Lastname and Type_of_Cancer__c=:pat.Type_of_Cancer__c and Assigned_Patients__c<=2 and createdbyid=:userid and Been_Through_Orientation__c=:true])
{
wraperclass w=new wraperclass();
w.id=nv.id;
w.E_Address1=nv.E_Address_1__c;
w.City=nv.city__c;
//w.country=nv.County__c;
w.address=nv.name+';'+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+';'+nv.Type_of_Cancer__c+';'+nv.E_Navigator_Last_Name__c;
address=w.address;
slist.add(address);
w.addr=nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C; 
w.cancertype=nv.Type_of_Cancer__c;
w.fname=nv.name;
w.lname=nv.E_Navigator_Last_Name__c;
if(nv.zip_code__C!=null)
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+'+'+nv.zip_code__c+'|';
else
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+'|';
navilist.add(w); 
mapval.put(nv.fullname__c,nv.id);
}

coordinates(address11,address22);
}
else if(pat.Type_of_Cancer__c==null && pat.Gender__c==null &&Lastname!='')
{
//only lastname 
for(Navigator__c nv:[select fullname__c,id,zip_code__c,E_Navigator_Last_Name__c,name,E_Address_1__c,City__c,states__C,Type_of_Cancer__c from Navigator__c where Last_name__C=:Lastname and Assigned_Patients__c<=2 and createdbyid=:userid and Been_Through_Orientation__c=:true])
{
wraperclass w=new wraperclass();
w.id=nv.id;
w.E_Address1=nv.E_Address_1__c;
w.City=nv.city__c;
//w.country=nv.County__c;
w.address=nv.name+';'+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+';'+nv.Type_of_Cancer__c+';'+nv.E_Navigator_Last_Name__c;
address=w.address;
slist.add(address);
w.addr=nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C; 
w.cancertype=nv.Type_of_Cancer__c;
w.fname=nv.name;
w.lname=nv.E_Navigator_Last_Name__c;
if(nv.zip_code__C!=null)
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+'+'+nv.zip_code__c+'|';
else
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+','+nv.states__C+'|';
navilist.add(w); 
mapval.put(nv.fullname__c,nv.id);
}

coordinates(address11,address22);
}
else if(pat.Type_of_Cancer__c==null && pat.Gender__c!=null &&Lastname!='')
{
//lastname and gender
for(Navigator__c nv:[select fullname__c,id,zip_code__c,E_Navigator_Last_Name__c,name,E_Address_1__c,City__c,states__C,Type_of_Cancer__c from Navigator__c where Last_name__C=:Lastname and Gender__c=:pat.Gender__c and Assigned_Patients__c<=2 and createdbyid=:userid and Been_Through_Orientation__c=:true])
{
wraperclass w=new wraperclass();
w.id=nv.id;
w.E_Address1=nv.E_Address_1__c;
w.City=nv.city__c;
//w.country=nv.County__c;
w.address=nv.name+';'+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+';'+nv.Type_of_Cancer__c+';'+nv.E_Navigator_Last_Name__c;
address=w.address;
slist.add(address);
w.addr=nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C; 
w.cancertype=nv.Type_of_Cancer__c;
w.fname=nv.name;
w.lname=nv.E_Navigator_Last_Name__c;
if(nv.zip_code__C!=null)
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+','+nv.zip_code__c+'|';
else
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+'|';
navilist.add(w);
mapval.put(nv.fullname__c,nv.id); 
}coordinates(address11,address22);
}
else if(pat.Type_of_Cancer__c==null && pat.Gender__c!=null &&Lastname=='')
{
//only gender
for(Navigator__c nv:[select fullname__c,id,zip_code__c,E_Navigator_Last_Name__c,name,E_Address_1__c,City__c,states__C,Type_of_Cancer__c from Navigator__c where Gender__c=:pat.Gender__c and Assigned_Patients__c<=2 and createdbyid=:userid and Been_Through_Orientation__c=:true])
{
wraperclass w=new wraperclass();
w.id=nv.id;
w.E_Address1=nv.E_Address_1__c;
w.City=nv.city__c;
//w.country=nv.County__c;
w.address=nv.name+';'+nv.E_Address_1__c+','+nv.city__c+','+nv.states__C+';'+nv.Type_of_Cancer__c+';'+nv.E_Navigator_Last_Name__c;
address=w.address;
slist.add(address);
w.addr=nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C; 
w.cancertype=nv.Type_of_Cancer__c;
w.fname=nv.name;
w.lname=nv.E_Navigator_Last_Name__c;
if(nv.zip_code__C!=null)
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+'+'+nv.zip_code__c+'|';
else
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+'|';
navilist.add(w); 
mapval.put(nv.fullname__c,nv.id);
}
coordinates(address11,address22);
}
else if(pat.Type_of_Cancer__c!=null && pat.Gender__c!=null &&Lastname!='')
{
//gender and cancertype and lastname
for(Navigator__c nv:[select fullname__c,id,zip_code__c,E_Navigator_Last_Name__c,name,E_Address_1__c,City__c,states__C,Type_of_Cancer__c from Navigator__c where Last_name__C=:Lastname and Gender__c=:pat.Gender__c and Type_of_Cancer__c=:pat.Type_of_Cancer__c and Assigned_Patients__c<=2 and createdbyid=:userid and Been_Through_Orientation__c=:true])
{
wraperclass w=new wraperclass();
w.id=nv.id;
w.E_Address1=nv.E_Address_1__c;
w.City=nv.city__c;
//w.country=nv.County__c;
w.address=nv.name+';'+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+';'+nv.Type_of_Cancer__c+';'+nv.E_Navigator_Last_Name__c;
address=w.address;
slist.add(address);
w.addr=nv.E_Address_1__c+','+nv.city__c+','+nv.states__C; 
w.cancertype=nv.Type_of_Cancer__c;
w.fname=nv.name;
w.lname=nv.E_Navigator_Last_Name__c;
if(nv.zip_code__C!=null)
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+','+nv.zip_code__c+'|';
else
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+'|';
navilist.add(w); 
mapval.put(nv.fullname__c,nv.id);
}
coordinates(address11,address22);
}


}
map<string,id> mapval=new map<string,id>();
public void selectall()
{
If(navilist.size()>0)
navilist.clear();
string address22='';
for(Navigator__c nv:[select fullname__c,id,zip_code__c,name,E_Navigator_Last_Name__c ,E_Address_1__c,City__c,states__C,Type_of_Cancer__c from Navigator__c where Assigned_Patients__c<=2 and createdbyid=:userid and Been_Through_Orientation__c=:true])
{
wraperclass w=new wraperclass();
w.id=nv.id;
w.E_Address1=nv.E_Address_1__c;
w.City=nv.city__c;
//w.country=nv.County__c;
w.address=nv.name+';'+nv.E_Address_1__c+','+nv.city__c+','+nv.states__C+';'+nv.Type_of_Cancer__c+';'+nv.E_Navigator_Last_Name__c;
address=w.address;
slist.add(address);
w.addr=nv.E_Address_1__c+','+nv.city__c+','+nv.states__C; 
w.cancertype=nv.Type_of_Cancer__c;
w.fname=nv.name;
w.lname=nv.E_Navigator_Last_Name__c;
if(nv.zip_code__C!=null)
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+'+'+nv.zip_code__c+'|';
else
address22=address22+nv.E_Address_1__c+'+'+nv.city__c+'+'+nv.states__C+'|';
navilist.add(w); 
mapval.put(nv.fullname__c,nv.id);

}
string address11=patient.E_Address1__c+'+'+patient.City__c+'+'+patient.states__c; 
if(patient.zip__C!=null)
address11=patient.E_Address1__c+'+'+patient.City__c+'+'+patient.states__c+'+'+patient.zip__C;
coordinates(address11,address22);


}
public String valueOne{get; set;}
public String valuetwo{get; set;}
public string valuethree{get;set;}
public void finding()
{
valueOne =Apexpages.currentPage().getParameters().get('one');
valuetwo =Apexpages.currentPage().getParameters().get('two');
valuethree =Apexpages.currentPage().getParameters().get('three');
system.debug('hhhhhhhhhhhhhhhhhh'+valueone);
selection=false;

}

public list<wraperclass> getnavilist()
{
return navilist;

// public static boolean isApexTest = false;
public string Coordinates(string add1 ,string add2)
{

// finding Lang and lattitude for Aaddress1
System.debug('@@@@@@@@@@@@@@@@@'+add1);
System.debug('@@@@@@@@@@@@@@@@@@@'+add2);


string url='http://maps.googleapis.com/maps/api/geocode/xml?address=add1&sensor=true';
System.debug('************************'+url);
Http h = new Http();
HttpRequest req = new HttpRequest();
req.setHeader('Content-type', 'application/x-www-form-urlencoded');
req.setHeader('Content-length', '0');
req.setEndpoint(url);
req.setMethod('POST');
HttpResponse res= h.send(req);
string responseBody = res.getBody().replace('\n','');
system.debug('++++++++++++++++++++++'+responseBody);
dom.Document doc= res.getBodyDocument();
//getting Root Element
dom.XmlNode rootElement = doc.getRootElement();
system.debug('+++++++++++++++'+ rootElement ); 
dom.XMLNode resultElement= rootElement.getChildElement('result',null);
system.debug('&&&&&&&&&&&&&&&&&&&&&&&&&&'+resultElement );
dom.XMLNode geometryElement =resultElement.getChildElement('geometry',null);
system.debug('$$$$$$$$$$$$$$$$$$$$$$$$$$'+geometryElement );
dom.XMLNode locationElement = geometryElement.getChildElement( 'location',null);
system.debug('@@@@@@@@@@@@@@@@@@@@@@@@@@@@'+ locationElement );
String lat =locationElement.getChildElement('lat', null).getText();
string lng = locationElement.getChildElement('lng', null).getText();
System.debug('%%%%%%%%%%%%%%%%%%%%%%'+lat);
System.debug('#####################'+lng);
double dlat= double.valueof(lat);
double dlng= double.valueof(lng);
System.debug('----------------------'+dlat);
System.debug('----------------------'+dlng);

//finding Lang and lattitude for Aaddress2
string url1='http://maps.googleapis.com/maps/api/geocode/xml?address=add2&sensor=true';
System.debug('************************'+url1);

Http h1 = new Http();
HttpRequest req1 = new HttpRequest();
req1.setHeader('Content-type', 'application/x-www-form-urlencoded');
req1.setHeader('Content-length', '0');
req1.setEndpoint(url1);
req1.setMethod('POST');
HttpResponse res1 = h.send(req1);
string responseBody1 = res1.getBody().replace('\n','');
system.debug('++++++++++++++++++++++'+responseBody);
dom.Document doc1= res1.getBodyDocument();
dom.XmlNode rootElement1 = doc1.getRootElement();
system.debug('+++++++++++++++'+ rootElement1 );
dom.XMLNode resultElement1= rootElement1.getChildElement('result',null);
system.debug('&&&&&&&&&&&&&&&&&&&&&&&&&&'+resultElement1 );
dom.XMLNode geometryElement1 =resultElement1.getChildElement('geometry',null);
system.debug('$$$$$$$$$$$$$$$$$$$$$$$$$$'+geometryElement1 );
dom.XMLNode locationElement1 = geometryElement1.getChildElement( 'location',null);
system.debug('@@@@@@@@@@@@@@@@@@@@@@@@@@@@'+ locationElement1 );
String lat1 =locationElement1.getChildElement('lat', null).getText();
string lng1= locationElement1.getChildElement('lng', null).getText();
System.debug('%%%%%%%%%%%%%%%%%%%%%%'+lat1);
System.debug('#####################'+lng1);
double dlat1= double.valueof(lat1);
double dlng1= double.valueof(lng1);
System.debug('----------------------'+dlat1);
System.debug('----------------------'+dlng1);

//finding distance between Two locations using long and lattitude of Two palces
String retvalue;
double dLat1InRad = dlat* (3.14 / 180.0);
double dLong1InRad = dlng* (3.14 / 180.0);
double dLat2InRad = dlat1 * (3.14 / 180.0);
double dLong2InRad = dlng1 * (3.14 / 180.0);
double dLongitude = dLong2InRad - dLong1InRad;
system.debug('&&&&&&&&&&&&&&&&'+dLongitude);
double dLatitude = dLat2InRad - dLat1InRad;
double a = Math.Sin(dLatitude / 2.0)*Math.Sin(dLatitude / 2.0) + 
Math.Cos(dLat1InRad) * Math.Cos(dLat2InRad) * 
Math.Sin(dLongitude / 2.0)*Math.Sin(dLongitude / 2.0);
System.debug('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'+a);
double c = 2.0 * Math.Asin(Math.Sqrt(a));

Double kEarthRadiusMiles = 3956.0;
// Double kEarthRadiusKms = 6376.5;
retvalue = String.valueof( kEarthRadiusMiles * c);
//system.debug('^^^^^^^^^^^^^^^^^^^^^^^^^^'+dDistance);
system.debug('*********'+retvalue);
navclass w=new navclass();
//w.distanceval=1;
if(retvalue.substring(retvalue.length()-2,retvalue.length())=='mi'||retvalue.substring(retvalue.length()-2,retvalue.length())=='ft')
{
/* sample=string.valueof(retvalue);

retValue=retValue.replace(',','');
integer value=integer.valueof(retValue.substring(0,retValue.length()-3)); 
w.distanceval=value*0.62; */
w.distanceval= retValue;
integer i=0;
w.address=navilist.get(i).addr;
w.cancertype=navilist.get(i).cancertype;
w.firstname=navilist.get(i).fname;
w.lastname=navilist.get(i).lname;
w.id=navilist.get(i).id;
wlist.add(w);
system.debug('+++++++'+retvalue);
i++;
}




// }
// reader.next();

//}
string sample=string.valueof(wlist);
system.debug('************'+wlist);
return null;
}
list<navclass> wlist=new list<navclass>();
public list<navclass> getwlist()
{
return wlist;
}
public void selectedone()
{
integer i=0;
for(navclass n:wlist)
{
if(n.isSelected==true)
{
Navigator__c nv=[select id,E_Navigator_Last_Name__c from Navigator__c where id=:n.id];
patient.Assigned_Navigator__c=nv.id;
patient.Navigator_Last_Name__c=nv.E_Navigator_Last_Name__c;
patient.Distance__c=string.valueof(n.distanceval);
break;
}

i++;

}
wlist.remove(i);

}
public class navclass
{
public string timeval{set;get;}
public string distanceval{set;get;}
public string address{set;get;}
public string lastName{set;get;}
public string firstname{set;get;}
public string cancertype{set;get;}
public id id{set;get;}
public boolean isSelected{set;get;}
}


}