package example; import java.util.*; import java.util.logging.*; import javax.jws.*; import javax.xml.bind.*; import example.data.*; @WebService(endpointInterface="example.FlickrAPI") public class FlickrImpl implements FlickrAPI { private static final Logger log = Logger.getLogger(FlickrImpl.class.getName()); private HashMap<String,FlickrUser> _emailToUserMap = new HashMap<String,FlickrUser>(); private HashMap<String,FlickrUser> _usernameToUserMap = new HashMap<String,FlickrUser>(); private HashMap<String,FlickrPerson> _infoMap = new HashMap<String,FlickrPerson>(); private HashMap<String,FlickrGroups> _groupsMap = new HashMap<String,FlickrGroups>(); private HashMap<String,ArrayList<FlickrPhotos.Photo>> _photoMap = new HashMap<String,ArrayList<FlickrPhotos.Photo>>(); public FlickrImpl() { FlickrUser user1 = new FlickrUser(); user1.nsid = "12345678901@N01"; user1.username = "resin-caucho"; _emailToUserMap.put("resin@caucho.com", user1); _usernameToUserMap.put("resin-caucho", user1); FlickrPerson person1 = new FlickrPerson(); person1.nsid = "12345678901@N01"; person1.isadmin = 0; person1.ispro = 0; person1.iconserver = 2; person1.realname = "Resin Caucho"; person1.mbox_sha1sum = "a11fc34be47a7ad1da8f670a26fa2b29f293c9fd"; person1.location = "La Jolla, California"; person1.photosurl = "http://www.flickr.com/photos/resin-caucho/"; person1.profileurl = "http://www.flickr.com/people/resin-caucho/"; person1.photos = new FlickrPerson.Photos(); person1.photos.firstdate = 1053200573; person1.photos.firstdatetaken = "2003-10-08 17:32:04"; person1.photos.count = 342; _infoMap.put("12345678901@N01", person1); FlickrGroups groups1 = new FlickrGroups(); FlickrGroups.Group group1 = new FlickrGroups.Group(); group1.nsid = "23456789012@N01"; group1.name = "Flowers"; group1.admin = 0; group1.eighteenplus = 0; groups1.groups.add(group1); FlickrGroups.Group group2 = new FlickrGroups.Group(); group2.nsid = "34567890123@N01"; group2.name = "Architecture"; group2.admin = 0; group2.eighteenplus = 0; groups1.groups.add(group2); _groupsMap.put("12345678901@N01", groups1); ArrayList<FlickrPhotos.Photo> photoList1 = new ArrayList<FlickrPhotos.Photo>(); FlickrPhotos.Photo photo1 = new FlickrPhotos.Photo(); photo1.id = "3041"; photo1.owner = "12345678901@N01"; photo1.secret = "x123456"; photo1.server = 2; photo1.title = "Our wedding"; photo1.ispublic = 1; photo1.isfriend = 0; photo1.isfamily = 0; photoList1.add(photo1); FlickrPhotos.Photo photo2 = new FlickrPhotos.Photo(); photo2.id = "3042"; photo2.owner = "12345678901@N01"; photo2.secret = "y123456"; photo2.server = 1; photo2.title = "Best friends"; photo2.ispublic = 0; photo2.isfriend = 1; photo2.isfamily = 0; photoList1.add(photo2); _photoMap.put("12345678901@N01", photoList1); } @WebMethod(operationName="flickr.people.findByEmail") public FlickrResponse findByEmail(@WebParam(name="api_key") String api_key, @WebParam(name="find_email") String find_email) { FlickrResponse response = new FlickrResponse(); response.payload = _emailToUserMap.get(find_email); if (response.payload == null) { response.stat = "fail"; response.payload = new FlickrError(); } return response; } @WebMethod(operationName="flickr.people.findByUsername") public FlickrResponse findByUsername(@WebParam(name="api_key") String api_key, @WebParam(name="username") String username) { FlickrResponse response = new FlickrResponse(); response.payload = _usernameToUserMap.get(username); if (response.payload == null) { response.stat = "fail"; response.payload = new FlickrError(); } return response; } @WebMethod(operationName="flickr.people.getInfo") public FlickrResponse getInfo(@WebParam(name="api_key") String api_key, @WebParam(name="user_id") String user_id) { FlickrResponse response = new FlickrResponse(); response.payload = _infoMap.get(user_id); if (response.payload == null) { response.stat = "fail"; response.payload = new FlickrError(); } return response; } @WebMethod(operationName="flickr.people.getPublicGroups") public FlickrResponse getPublicGroups(@WebParam(name="api_key") String api_key, @WebParam(name="user_id") String user_id) { FlickrResponse response = new FlickrResponse(); response.payload = _groupsMap.get(user_id); if (response.payload == null) { response.stat = "fail"; response.payload = new FlickrError(); } return response; } @WebMethod(operationName="flickr.people.getPublicPhotos") public FlickrResponse getPublicPhotos(@WebParam(name="api_key") String api_key, @WebParam(name="user_id") String user_id, @WebParam(name="extras") String extras, @WebParam(name="per_page") int per_page, @WebParam(name="page") int page) { FlickrResponse response = new FlickrResponse(); ArrayList<FlickrPhotos.Photo> photoList = _photoMap.get(user_id); if (photoList != null) { FlickrPhotos photos = new FlickrPhotos(); photos.page = page; photos.pages = (photoList.size() / per_page) + (photoList.size() % per_page > 0 ? 1 : 0); photos.perpage = per_page; photos.total = photoList.size(); int startPhoto = (page - 1) * per_page; int endPhoto = Math.min(page * per_page, photos.total); for (int i = startPhoto; i < endPhoto; i++) photos.photos.add(photoList.get(i)); response.payload = photos; } if (response.payload == null) { response.stat = "fail"; response.payload = new FlickrError(); } return response; } }