/* * Copyright 2012 Javier Pérez Pacheco and Francisco Díaz Rodriguez * TweetTopics 2.0 * javielinux@gmail.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.javielinux.api.loaders; import android.content.Context; import com.javielinux.api.AsynchronousLoader; import com.javielinux.api.request.TwitterUserRequest; import com.javielinux.api.response.BaseResponse; import com.javielinux.api.response.ErrorResponse; import com.javielinux.api.response.TwitterUserResponse; import com.javielinux.database.EntityTweetUser; import com.javielinux.infos.InfoSaveTweets; import com.javielinux.twitter.ConnectionManager; import com.javielinux.utils.TweetTopicsUtils; import com.javielinux.utils.Utils; public class TwitterUserLoader extends AsynchronousLoader<BaseResponse> { private TwitterUserRequest request; public TwitterUserLoader(Context context, TwitterUserRequest request) { super(context); this.request = request; } private InfoSaveTweets saveTimeline(long user_id) { InfoSaveTweets infoSaveTweets = null; try { EntityTweetUser entityTweetUser = new EntityTweetUser(user_id, TweetTopicsUtils.TWEET_TYPE_TIMELINE); infoSaveTweets = entityTweetUser.saveTweets(getContext(), ConnectionManager.getInstance().getTwitter(request.getUserId())); } catch (Exception e) { e.printStackTrace(); if (infoSaveTweets == null) { infoSaveTweets = new InfoSaveTweets(); infoSaveTweets.setError(Utils.UNKNOWN_ERROR); } else { infoSaveTweets.setError(Utils.UNKNOWN_ERROR); } } return infoSaveTweets; } private InfoSaveTweets saveMentions(long user_id) { InfoSaveTweets infoSaveTweets = null; try { EntityTweetUser entityTweetUser = new EntityTweetUser(user_id, TweetTopicsUtils.TWEET_TYPE_MENTIONS); infoSaveTweets = entityTweetUser.saveTweets(getContext(), ConnectionManager.getInstance().getTwitter(request.getUserId())); } catch (Exception e) { e.printStackTrace(); if (infoSaveTweets == null) { InfoSaveTweets info = new InfoSaveTweets(); info.setError(Utils.UNKNOWN_ERROR); } else { infoSaveTweets.setError(Utils.UNKNOWN_ERROR); } } return infoSaveTweets; } private InfoSaveTweets saveDirects(long user_id) { InfoSaveTweets infoSaveTweets = null; try { // TODO: Comprobar este código EntityTweetUser entityTweetUser = new EntityTweetUser(user_id, TweetTopicsUtils.TWEET_TYPE_DIRECTMESSAGES); infoSaveTweets = entityTweetUser.saveTweets(getContext(), ConnectionManager.getInstance().getTwitter(request.getUserId())); EntityTweetUser entityTweetUser_send = new EntityTweetUser(user_id, TweetTopicsUtils.TWEET_TYPE_SENT_DIRECTMESSAGES); infoSaveTweets = entityTweetUser_send.saveTweets(getContext(), ConnectionManager.getInstance().getTwitter(request.getUserId())); } catch (Exception e) { e.printStackTrace(); if (infoSaveTweets == null) { InfoSaveTweets info = new InfoSaveTweets(); info.setError(Utils.UNKNOWN_ERROR); } else { infoSaveTweets.setError(Utils.UNKNOWN_ERROR); } } return infoSaveTweets; } @Override public BaseResponse loadInBackground() { try { TwitterUserResponse response = new TwitterUserResponse(); ConnectionManager.getInstance().open(getContext()); response.setUserId(request.getUserId()); response.setColumn(request.getColumn()); if (request.getColumn() == TweetTopicsUtils.COLUMN_TIMELINE) { InfoSaveTweets infoSaveTweets = saveTimeline(response.getUserId()); if (infoSaveTweets.getError() == Utils.LIMIT_ERROR) { ErrorResponse errorResponse = new ErrorResponse(); errorResponse.setTypeError(Utils.LIMIT_ERROR); errorResponse.setRateError(infoSaveTweets.getRate()); return errorResponse; } else { response.setInfo(infoSaveTweets); } } if (request.getColumn() == TweetTopicsUtils.COLUMN_MENTIONS) { InfoSaveTweets infoSaveTweets = saveMentions(response.getUserId()); if (infoSaveTweets.getError() == Utils.LIMIT_ERROR) { ErrorResponse errorResponse = new ErrorResponse(); errorResponse.setTypeError(Utils.LIMIT_ERROR); errorResponse.setRateError(infoSaveTweets.getRate()); return errorResponse; } else { response.setInfo(infoSaveTweets); } } if (request.getColumn() == TweetTopicsUtils.COLUMN_DIRECT_MESSAGES) { InfoSaveTweets infoSaveTweets = saveDirects(response.getUserId()); if (infoSaveTweets.getError() == Utils.LIMIT_ERROR) { ErrorResponse errorResponse = new ErrorResponse(); errorResponse.setTypeError(Utils.LIMIT_ERROR); errorResponse.setRateError(infoSaveTweets.getRate()); return errorResponse; } else { response.setInfo(infoSaveTweets); } } return response; } catch (Exception e) { e.printStackTrace(); ErrorResponse errorResponse = new ErrorResponse(); errorResponse.setError(e, e.getMessage()); return errorResponse; } } }