Hi Max,
Can you please look at my code and tell me where am going wrong?
Connect.java:
package health;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import com.google.gdata.client.Query;
import com.google.gdata.client.health.HealthService;
import com.google.gdata.data.Entry;
import com.google.gdata.data.Feed;
import com.google.gdata.data.TextContent;
import com.google.gdata.data.health.ProfileEntry;
import com.google.gdata.data.health.ProfileFeed;
import com.google.gdata.data.health.RegisterFeed;
import com.google.gdata.util.ServiceException;
public class Connect{
@SuppressWarnings("unused")
private static int idNum = 0;
@SuppressWarnings("unused")
private static final String PREFIX = "WPI Neuro";
private static final String VERSION = "alpha";
private List<String> profileIds = null;
@SuppressWarnings("unused")
private RegisterFeed feed;
private HealthService service1;
private Calendar dateOfBirth = null;
private static final String CCR_URL =
"https://www.google.com/health/feeds/profile/ui/";
private static final String FEED_BASE_PATH =
"http://www.google.com/health/feeds/";
private static final String PROFILE_FEED_PATH = FEED_BASE_PATH + "profile/";
private static final String REGISTER_FEED_PATH = FEED_BASE_PATH +
"register/";
private static final String PROFILE_LIST_URL_PATH = PROFILE_FEED_PATH +
"list";
/**
* Creates a new instance with a given user name and password
*
* @param user username
* @param pass password
*/
public Connect(String username, String password)
throws MalformedURLException, IOException, ServiceException
{
//Of the form [company-id]-[app-name]-[app-version]
String appName = "WPI-Total Neuro Placement-" + VERSION;
service1 = new HealthService(appName);
service1.setUserCredentials(username, password);
refeed();
}
/**
* Refreshes notices
*/
private void refeed() throws IOException, ServiceException,
MalformedURLException
{
if (profileIds == null) {
profileIds = new ArrayList<String>();
Feed profileListFeed = service1.getFeed(
new URL(PROFILE_LIST_URL_PATH), Feed.class);
for (Entry profileListEntry : profileListFeed.getEntries()) {
profileIds.add(
((TextContent) profileListEntry.getContent()).
getContent().getPlainText());
//System.out.println(((TextContent) profileListEntry.getContent()).
// getContent().getPlainText());
}
}
feed = service1.getFeed(
new URL(REGISTER_FEED_PATH + "ui/" + profileIds.get(0)),
RegisterFeed.class);
dateOfBirth = refreshDob();
}
private Calendar refreshDob() {
Query query;
ProfileFeed result;
try {
query = new Query(new URL(CCR_URL + profileIds.get(0)));
query.addCustomParameter(new Query.CustomParameter("digest", "true"));
result = service1.getFeed(query, ProfileFeed.class);
} catch (MalformedURLException e) {
return null;
} catch (ServiceException e) {
return null;
} catch (IOException e) {
return null;
}
List<ProfileEntry> entries = result.getEntries();
// We used the digest=true parameter, so there should only
// be a single Atom entry that contains all of the CCR data in profile.
for (ProfileEntry entry : entries)
{
/*
* Look for the hierarchy:
* <Actors>...<Person>...<DateOfBirth>...<ExactDateTime>
* It contains the time of birth in the format CCYY-MM-DDThh:mm:ssZ
*/
int read = 0;
String profile = entry.getContinuityOfCareRecord().getXmlBlob().getBlob();
read = profile.indexOf("<Actors>", read);
if(read == -1)
{
break;
}
read = profile.indexOf("<Actor>", read);
if(read == -1)
{
break;
}
read = profile.indexOf("<Person>", read);
if(read == -1)
{
break;
}
read = profile.indexOf("<DateOfBirth>", read);
if(read == -1)
{
break;
}
read = profile.indexOf("<ExactDateTime>", read);
if(read == -1)
{
break;
}
read += "<ExactDateTime>".length();
String date = profile.substring(read, read + 10); //Date datum
int day, month, year;
year = Integer.parseInt(date.substring(0,4));
month = Integer.parseInt(date.substring(5,7));
day = Integer.parseInt(date.substring(8,10));
Calendar birth = new GregorianCalendar(year, month, day);
return birth;
}
return null;
}
/**
* Returns the date of birth of the holder of the profile
* @return the date of birth to the day or null if it could not be retrieved
*/
public Calendar getDoB()
{
return dateOfBirth;
}
}
Regards and Wishes,
Rajashree
--
You received this message because you are subscribed to the Google Groups
"Google Health Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/googlehealthdevelopers?hl=en.