List of usage examples for org.json JSONObject getBoolean
public boolean getBoolean(String key) throws JSONException
From source file:org.dasein.cloud.joyent.compute.Dataset.java
@Override public boolean isImageSharedWithPublic(@Nonnull String machineImageId) throws CloudException, InternalException { ProviderContext ctx = getProvider().getContext(); if (ctx == null) { throw new CloudException("No context has been defined for this request"); }//from w ww . j a v a 2 s.co m JoyentMethod method = new JoyentMethod(getProvider()); try { String json = method.doGetJson(getProvider().getEndpoint(), "images/" + machineImageId); if (json != null) { JSONObject jsonObject = new JSONObject(json); if (jsonObject.has("public")) { return jsonObject.getBoolean("public"); } } return false; } catch (JSONException e) { throw new CloudException(e); } }
From source file:org.dasein.cloud.joyent.compute.Dataset.java
private @Nullable MachineImage toMachineImage(@Nullable JSONObject json) throws CloudException { if (json == null) { return null; }/*w w w . j a v a 2 s .c om*/ String regionId = getContext().getRegionId(); if (regionId == null) { throw new CloudException("No region ID was specified for this request"); } String imageId = null, name = null, description = null, version = null, owner = "--joyent--"; Architecture architecture = Architecture.I64; Platform platform = Platform.UNKNOWN; long created = 0L; Boolean isPublic = null; try { if (json.has("id")) { imageId = json.getString("id"); } if (json.has("name")) { name = json.getString("name"); } if (json.has("description")) { description = json.getString("description"); } if (json.has("os")) { String os = (name == null ? json.getString("os") : name + " " + json.getString("os")); platform = Platform.guess(os); if (os.contains("32")) { architecture = Architecture.I32; } } if (json.has("created")) { created = getProvider().parseTimestamp(json.getString("created")); } if (json.has("version")) { version = json.getString("version"); name = name + ":" + version; } if (json.has("public")) { isPublic = json.getBoolean("public"); owner = isPublic ? "--joyent--" : getContext().getAccountNumber(); } if (json.has("requirements")) { JSONObject requirements = json.getJSONObject("requirements"); if (requirements.length() > 0) { // TODO: Allow image requirements in MachineImage // MachineImage does not currently allow requirements to be communicated, // therefore we will not be able to satisfy them. return null; } } } catch (JSONException e) { throw new CloudException(e); } if (imageId == null) { return null; } if (name == null) { name = imageId; } if (description == null) { description = name + " (" + platform + ") [#" + imageId + "]"; } //old version only supported public images and did not return owner attribute final MachineImage machineImage = MachineImage.getMachineImageInstance(owner, regionId, imageId, MachineImageState.ACTIVE, name, description, architecture, platform).createdAt(created); if (isPublic != null) { machineImage.setTag("public", String.valueOf(isPublic)); if (isPublic) { machineImage.sharedWithPublic(); } } return machineImage; }
From source file:com.piusvelte.sonet.core.SonetComments.java
private void loadComments() { mComments.clear();/* w w w .java 2 s . c o m*/ setListAdapter(new SimpleAdapter(SonetComments.this, mComments, R.layout.comment, new String[] { Entities.FRIEND, Statuses.MESSAGE, Statuses.CREATEDTEXT, getString(R.string.like) }, new int[] { R.id.friend, R.id.message, R.id.created, R.id.like })); mMessage.setEnabled(false); mMessage.setText(R.string.loading); final ProgressDialog loadingDialog = new ProgressDialog(this); final AsyncTask<Void, String, String> asyncTask = new AsyncTask<Void, String, String>() { @Override protected String doInBackground(Void... none) { // load the status itself if (mData != null) { SonetCrypto sonetCrypto = SonetCrypto.getInstance(getApplicationContext()); UriMatcher um = new UriMatcher(UriMatcher.NO_MATCH); String authority = Sonet.getAuthority(SonetComments.this); um.addURI(authority, SonetProvider.VIEW_STATUSES_STYLES + "/*", SonetProvider.STATUSES_STYLES); um.addURI(authority, SonetProvider.TABLE_NOTIFICATIONS + "/*", SonetProvider.NOTIFICATIONS); Cursor status; switch (um.match(mData)) { case SonetProvider.STATUSES_STYLES: status = getContentResolver().query(Statuses_styles.getContentUri(SonetComments.this), new String[] { Statuses_styles.ACCOUNT, Statuses_styles.SID, Statuses_styles.ESID, Statuses_styles.WIDGET, Statuses_styles.SERVICE, Statuses_styles.FRIEND, Statuses_styles.MESSAGE, Statuses_styles.CREATED }, Statuses_styles._ID + "=?", new String[] { mData.getLastPathSegment() }, null); if (status.moveToFirst()) { mService = status.getInt(4); mServiceName = getResources().getStringArray(R.array.service_entries)[mService]; mAccount = status.getLong(0); mSid = sonetCrypto.Decrypt(status.getString(1)); mEsid = sonetCrypto.Decrypt(status.getString(2)); Cursor widget = getContentResolver().query( Widgets_settings.getContentUri(SonetComments.this), new String[] { Widgets.TIME24HR }, Widgets.WIDGET + "=? and " + Widgets.ACCOUNT + "=?", new String[] { Integer.toString(status.getInt(3)), Long.toString(mAccount) }, null); if (widget.moveToFirst()) { mTime24hr = widget.getInt(0) == 1; } else { Cursor b = getContentResolver().query( Widgets_settings.getContentUri(SonetComments.this), new String[] { Widgets.TIME24HR }, Widgets.WIDGET + "=? and " + Widgets.ACCOUNT + "=?", new String[] { Integer.toString(status.getInt(3)), Long.toString(Sonet.INVALID_ACCOUNT_ID) }, null); if (b.moveToFirst()) { mTime24hr = b.getInt(0) == 1; } else { Cursor c = getContentResolver() .query(Widgets_settings.getContentUri(SonetComments.this), new String[] { Widgets.TIME24HR }, Widgets.WIDGET + "=? and " + Widgets.ACCOUNT + "=?", new String[] { Integer.toString(AppWidgetManager.INVALID_APPWIDGET_ID), Long.toString(Sonet.INVALID_ACCOUNT_ID) }, null); if (c.moveToFirst()) { mTime24hr = c.getInt(0) == 1; } else { mTime24hr = false; } c.close(); } b.close(); } widget.close(); HashMap<String, String> commentMap = new HashMap<String, String>(); commentMap.put(Statuses.SID, mSid); commentMap.put(Entities.FRIEND, status.getString(5)); commentMap.put(Statuses.MESSAGE, status.getString(6)); commentMap.put(Statuses.CREATEDTEXT, Sonet.getCreatedText(status.getLong(7), mTime24hr)); commentMap.put(getString(R.string.like), mService == TWITTER ? getString(R.string.retweet) : mService == IDENTICA ? getString(R.string.repeat) : ""); mComments.add(commentMap); // load the session Cursor account = getContentResolver().query(Accounts.getContentUri(SonetComments.this), new String[] { Accounts.TOKEN, Accounts.SECRET, Accounts.SID }, Accounts._ID + "=?", new String[] { Long.toString(mAccount) }, null); if (account.moveToFirst()) { mToken = sonetCrypto.Decrypt(account.getString(0)); mSecret = sonetCrypto.Decrypt(account.getString(1)); mAccountSid = sonetCrypto.Decrypt(account.getString(2)); } account.close(); } status.close(); break; case SonetProvider.NOTIFICATIONS: Cursor notification = getContentResolver().query( Notifications.getContentUri(SonetComments.this), new String[] { Notifications.ACCOUNT, Notifications.SID, Notifications.ESID, Notifications.FRIEND, Notifications.MESSAGE, Notifications.CREATED }, Notifications._ID + "=?", new String[] { mData.getLastPathSegment() }, null); if (notification.moveToFirst()) { // clear notification ContentValues values = new ContentValues(); values.put(Notifications.CLEARED, 1); getContentResolver().update(Notifications.getContentUri(SonetComments.this), values, Notifications._ID + "=?", new String[] { mData.getLastPathSegment() }); mAccount = notification.getLong(0); mSid = sonetCrypto.Decrypt(notification.getString(1)); mEsid = sonetCrypto.Decrypt(notification.getString(2)); mTime24hr = false; // load the session Cursor account = getContentResolver().query(Accounts.getContentUri(SonetComments.this), new String[] { Accounts.TOKEN, Accounts.SECRET, Accounts.SID, Accounts.SERVICE }, Accounts._ID + "=?", new String[] { Long.toString(mAccount) }, null); if (account.moveToFirst()) { mToken = sonetCrypto.Decrypt(account.getString(0)); mSecret = sonetCrypto.Decrypt(account.getString(1)); mAccountSid = sonetCrypto.Decrypt(account.getString(2)); mService = account.getInt(3); } account.close(); HashMap<String, String> commentMap = new HashMap<String, String>(); commentMap.put(Statuses.SID, mSid); commentMap.put(Entities.FRIEND, notification.getString(3)); commentMap.put(Statuses.MESSAGE, notification.getString(4)); commentMap.put(Statuses.CREATEDTEXT, Sonet.getCreatedText(notification.getLong(5), mTime24hr)); commentMap.put(getString(R.string.like), mService == TWITTER ? getString(R.string.retweet) : getString(R.string.repeat)); mComments.add(commentMap); mServiceName = getResources().getStringArray(R.array.service_entries)[mService]; } notification.close(); break; default: mComments.clear(); HashMap<String, String> commentMap = new HashMap<String, String>(); commentMap.put(Statuses.SID, ""); commentMap.put(Entities.FRIEND, ""); commentMap.put(Statuses.MESSAGE, "error, status not found"); commentMap.put(Statuses.CREATEDTEXT, ""); commentMap.put(getString(R.string.like), ""); mComments.add(commentMap); } String response = null; HttpGet httpGet; SonetOAuth sonetOAuth; boolean liked = false; String screen_name = ""; switch (mService) { case TWITTER: sonetOAuth = new SonetOAuth(TWITTER_KEY, TWITTER_SECRET, mToken, mSecret); if ((response = SonetHttpClient.httpResponse(mHttpClient, sonetOAuth.getSignedRequest( new HttpGet(String.format(TWITTER_USER, TWITTER_BASE_URL, mEsid))))) != null) { try { JSONObject user = new JSONObject(response); screen_name = "@" + user.getString(Sscreen_name) + " "; } catch (JSONException e) { Log.e(TAG, e.toString()); } } publishProgress(screen_name); response = SonetHttpClient.httpResponse(mHttpClient, sonetOAuth.getSignedRequest(new HttpGet(String.format(TWITTER_MENTIONS, TWITTER_BASE_URL, String.format(TWITTER_SINCE_ID, mSid))))); break; case FACEBOOK: if ((response = SonetHttpClient.httpResponse(mHttpClient, new HttpGet(String.format(FACEBOOK_LIKES, FACEBOOK_BASE_URL, mSid, Saccess_token, mToken)))) != null) { try { JSONArray likes = new JSONObject(response).getJSONArray(Sdata); for (int i = 0, i2 = likes.length(); i < i2; i++) { JSONObject like = likes.getJSONObject(i); if (like.getString(Sid).equals(mAccountSid)) { liked = true; break; } } } catch (JSONException e) { Log.e(TAG, e.toString()); } } publishProgress(getString(liked ? R.string.unlike : R.string.like)); response = SonetHttpClient.httpResponse(mHttpClient, new HttpGet( String.format(FACEBOOK_COMMENTS, FACEBOOK_BASE_URL, mSid, Saccess_token, mToken))); break; case MYSPACE: sonetOAuth = new SonetOAuth(MYSPACE_KEY, MYSPACE_SECRET, mToken, mSecret); response = SonetHttpClient.httpResponse(mHttpClient, sonetOAuth.getSignedRequest(new HttpGet(String .format(MYSPACE_URL_STATUSMOODCOMMENTS, MYSPACE_BASE_URL, mEsid, mSid)))); break; case LINKEDIN: sonetOAuth = new SonetOAuth(LINKEDIN_KEY, LINKEDIN_SECRET, mToken, mSecret); httpGet = new HttpGet(String.format(LINKEDIN_UPDATE, LINKEDIN_BASE_URL, mSid)); for (String[] header : LINKEDIN_HEADERS) httpGet.setHeader(header[0], header[1]); if ((response = SonetHttpClient.httpResponse(mHttpClient, sonetOAuth.getSignedRequest(httpGet))) != null) { try { JSONObject data = new JSONObject(response); if (data.has("isCommentable") && !data.getBoolean("isCommentable")) { publishProgress(getString(R.string.uncommentable)); } if (data.has("isLikable")) { publishProgress(getString( data.has("isLiked") && data.getBoolean("isLiked") ? R.string.unlike : R.string.like)); } else { publishProgress(getString(R.string.unlikable)); } } catch (JSONException e) { Log.e(TAG, e.toString()); } } else { publishProgress(getString(R.string.unlikable)); } httpGet = new HttpGet(String.format(LINKEDIN_UPDATE_COMMENTS, LINKEDIN_BASE_URL, mSid)); for (String[] header : LINKEDIN_HEADERS) httpGet.setHeader(header[0], header[1]); response = SonetHttpClient.httpResponse(mHttpClient, sonetOAuth.getSignedRequest(httpGet)); break; case FOURSQUARE: response = SonetHttpClient.httpResponse(mHttpClient, new HttpGet( String.format(FOURSQUARE_GET_CHECKIN, FOURSQUARE_BASE_URL, mSid, mToken))); break; case IDENTICA: sonetOAuth = new SonetOAuth(IDENTICA_KEY, IDENTICA_SECRET, mToken, mSecret); if ((response = SonetHttpClient.httpResponse(mHttpClient, sonetOAuth.getSignedRequest( new HttpGet(String.format(IDENTICA_USER, IDENTICA_BASE_URL, mEsid))))) != null) { try { JSONObject user = new JSONObject(response); screen_name = "@" + user.getString(Sscreen_name) + " "; } catch (JSONException e) { Log.e(TAG, e.toString()); } } publishProgress(screen_name); response = SonetHttpClient.httpResponse(mHttpClient, sonetOAuth.getSignedRequest(new HttpGet(String.format(IDENTICA_MENTIONS, IDENTICA_BASE_URL, String.format(IDENTICA_SINCE_ID, mSid))))); break; case GOOGLEPLUS: //TODO: // get plussed status break; case CHATTER: // Chatter requires loading an instance if ((mChatterInstance == null) || (mChatterToken == null)) { if ((response = SonetHttpClient.httpResponse(mHttpClient, new HttpPost( String.format(CHATTER_URL_ACCESS, CHATTER_KEY, mToken)))) != null) { try { JSONObject jobj = new JSONObject(response); if (jobj.has("instance_url") && jobj.has(Saccess_token)) { mChatterInstance = jobj.getString("instance_url"); mChatterToken = jobj.getString(Saccess_token); } } catch (JSONException e) { Log.e(TAG, e.toString()); } } } if ((mChatterInstance != null) && (mChatterToken != null)) { httpGet = new HttpGet(String.format(CHATTER_URL_LIKES, mChatterInstance, mSid)); httpGet.setHeader("Authorization", "OAuth " + mChatterToken); if ((response = SonetHttpClient.httpResponse(mHttpClient, httpGet)) != null) { try { JSONObject jobj = new JSONObject(response); if (jobj.getInt(Stotal) > 0) { JSONArray likes = jobj.getJSONArray("likes"); for (int i = 0, i2 = likes.length(); i < i2; i++) { JSONObject like = likes.getJSONObject(i); if (like.getJSONObject(Suser).getString(Sid).equals(mAccountSid)) { mChatterLikeId = like.getString(Sid); liked = true; break; } } } } catch (JSONException e) { Log.e(TAG, e.toString()); } } publishProgress(getString(liked ? R.string.unlike : R.string.like)); httpGet = new HttpGet(String.format(CHATTER_URL_COMMENTS, mChatterInstance, mSid)); httpGet.setHeader("Authorization", "OAuth " + mChatterToken); response = SonetHttpClient.httpResponse(mHttpClient, httpGet); } else { response = null; } break; } return response; } return null; } @Override protected void onProgressUpdate(String... params) { mMessage.setText(""); if (params != null) { if ((mService == TWITTER) || (mService == IDENTICA)) { mMessage.append(params[0]); } else { if (mService == LINKEDIN) { if (params[0].equals(getString(R.string.uncommentable))) { mSend.setEnabled(false); mMessage.setEnabled(false); mMessage.setText(R.string.uncommentable); } else { setCommentStatus(0, params[0]); } } else { setCommentStatus(0, params[0]); } } } mMessage.setEnabled(true); } @Override protected void onPostExecute(String response) { if (response != null) { int i2; try { JSONArray comments; mSimpleDateFormat = null; switch (mService) { case TWITTER: comments = new JSONArray(response); if ((i2 = comments.length()) > 0) { for (int i = 0; i < i2; i++) { JSONObject comment = comments.getJSONObject(i); if (comment.getString(Sin_reply_to_status_id) == mSid) { HashMap<String, String> commentMap = new HashMap<String, String>(); commentMap.put(Statuses.SID, comment.getString(Sid)); commentMap.put(Entities.FRIEND, comment.getJSONObject(Suser).getString(Sname)); commentMap.put(Statuses.MESSAGE, comment.getString(Stext)); commentMap.put(Statuses.CREATEDTEXT, Sonet.getCreatedText( parseDate(comment.getString(Screated_at), TWITTER_DATE_FORMAT), mTime24hr)); commentMap.put(getString(R.string.like), getString(R.string.retweet)); mComments.add(commentMap); } } } else { noComments(); } break; case FACEBOOK: comments = new JSONObject(response).getJSONArray(Sdata); if ((i2 = comments.length()) > 0) { for (int i = 0; i < i2; i++) { JSONObject comment = comments.getJSONObject(i); HashMap<String, String> commentMap = new HashMap<String, String>(); commentMap.put(Statuses.SID, comment.getString(Sid)); commentMap.put(Entities.FRIEND, comment.getJSONObject(Sfrom).getString(Sname)); commentMap.put(Statuses.MESSAGE, comment.getString(Smessage)); commentMap.put(Statuses.CREATEDTEXT, Sonet.getCreatedText(comment.getLong(Screated_time) * 1000, mTime24hr)); commentMap.put(getString(R.string.like), getString(comment.has(Suser_likes) && comment.getBoolean(Suser_likes) ? R.string.unlike : R.string.like)); mComments.add(commentMap); } } else { noComments(); } break; case MYSPACE: comments = new JSONObject(response).getJSONArray(Sentry); if ((i2 = comments.length()) > 0) { for (int i = 0; i < i2; i++) { JSONObject entry = comments.getJSONObject(i); HashMap<String, String> commentMap = new HashMap<String, String>(); commentMap.put(Statuses.SID, entry.getString(ScommentId)); commentMap.put(Entities.FRIEND, entry.getJSONObject(Sauthor).getString(SdisplayName)); commentMap.put(Statuses.MESSAGE, entry.getString(Sbody)); commentMap.put(Statuses.CREATEDTEXT, Sonet.getCreatedText( parseDate(entry.getString(SpostedDate), MYSPACE_DATE_FORMAT), mTime24hr)); commentMap.put(getString(R.string.like), ""); mComments.add(commentMap); } } else { noComments(); } break; case LINKEDIN: JSONObject jsonResponse = new JSONObject(response); if (jsonResponse.has(S_total) && (jsonResponse.getInt(S_total) != 0)) { comments = jsonResponse.getJSONArray(Svalues); if ((i2 = comments.length()) > 0) { for (int i = 0; i < i2; i++) { JSONObject comment = comments.getJSONObject(i); JSONObject person = comment.getJSONObject(Sperson); HashMap<String, String> commentMap = new HashMap<String, String>(); commentMap.put(Statuses.SID, comment.getString(Sid)); commentMap.put(Entities.FRIEND, person.getString(SfirstName) + " " + person.getString(SlastName)); commentMap.put(Statuses.MESSAGE, comment.getString(Scomment)); commentMap.put(Statuses.CREATEDTEXT, Sonet.getCreatedText(comment.getLong(Stimestamp), mTime24hr)); commentMap.put(getString(R.string.like), ""); mComments.add(commentMap); } } else { noComments(); } } break; case FOURSQUARE: comments = new JSONObject(response).getJSONObject(Sresponse).getJSONObject(Scheckin) .getJSONObject(Scomments).getJSONArray(Sitems); if ((i2 = comments.length()) > 0) { for (int i = 0; i < i2; i++) { JSONObject comment = comments.getJSONObject(i); JSONObject user = comment.getJSONObject(Suser); HashMap<String, String> commentMap = new HashMap<String, String>(); commentMap.put(Statuses.SID, comment.getString(Sid)); commentMap.put(Entities.FRIEND, user.getString(SfirstName) + " " + user.getString(SlastName)); commentMap.put(Statuses.MESSAGE, comment.getString(Stext)); commentMap.put(Statuses.CREATEDTEXT, Sonet.getCreatedText(comment.getLong(ScreatedAt) * 1000, mTime24hr)); commentMap.put(getString(R.string.like), ""); mComments.add(commentMap); } } else { noComments(); } break; case IDENTICA: comments = new JSONArray(response); if ((i2 = comments.length()) > 0) { for (int i = 0; i < i2; i++) { JSONObject comment = comments.getJSONObject(i); if (comment.getString(Sin_reply_to_status_id) == mSid) { HashMap<String, String> commentMap = new HashMap<String, String>(); commentMap.put(Statuses.SID, comment.getString(Sid)); commentMap.put(Entities.FRIEND, comment.getJSONObject(Suser).getString(Sname)); commentMap.put(Statuses.MESSAGE, comment.getString(Stext)); commentMap.put(Statuses.CREATEDTEXT, Sonet.getCreatedText( parseDate(comment.getString(Screated_at), TWITTER_DATE_FORMAT), mTime24hr)); commentMap.put(getString(R.string.like), getString(R.string.repeat)); mComments.add(commentMap); } } } else { noComments(); } break; case GOOGLEPLUS: //TODO: load comments HttpPost httpPost = new HttpPost(GOOGLE_ACCESS); List<NameValuePair> httpParams = new ArrayList<NameValuePair>(); httpParams.add(new BasicNameValuePair("client_id", GOOGLE_CLIENTID)); httpParams.add(new BasicNameValuePair("client_secret", GOOGLE_CLIENTSECRET)); httpParams.add(new BasicNameValuePair("refresh_token", mToken)); httpParams.add(new BasicNameValuePair("grant_type", "refresh_token")); try { httpPost.setEntity(new UrlEncodedFormEntity(httpParams)); if ((response = SonetHttpClient.httpResponse(mHttpClient, httpPost)) != null) { JSONObject j = new JSONObject(response); if (j.has(Saccess_token)) { String access_token = j.getString(Saccess_token); if ((response = SonetHttpClient.httpResponse(mHttpClient, new HttpGet(String.format(GOOGLEPLUS_ACTIVITY, GOOGLEPLUS_BASE_URL, mSid, access_token)))) != null) { // check for a newer post, if it's the user's own, then set CLEARED=0 try { JSONObject item = new JSONObject(response); if (item.has(Sobject)) { JSONObject object = item.getJSONObject(Sobject); if (object.has(Sreplies)) { int commentCount = 0; JSONObject replies = object.getJSONObject(Sreplies); if (replies.has(StotalItems)) { //TODO: load comments commentCount = replies.getInt(StotalItems); } } } } catch (JSONException e) { Log.e(TAG, e.toString()); } } } } } catch (UnsupportedEncodingException e) { Log.e(TAG, e.toString()); } catch (JSONException e) { Log.e(TAG, e.toString()); } break; case CHATTER: JSONObject chats = new JSONObject(response); if (chats.getInt(Stotal) > 0) { comments = chats.getJSONArray(Scomments); if ((i2 = comments.length()) > 0) { for (int i = 0; i < i2; i++) { JSONObject comment = comments.getJSONObject(i); HashMap<String, String> commentMap = new HashMap<String, String>(); commentMap.put(Statuses.SID, comment.getString(Sid)); commentMap.put(Entities.FRIEND, comment.getJSONObject(Suser).getString(Sname)); commentMap.put(Statuses.MESSAGE, comment.getJSONObject(Sbody).getString(Stext)); commentMap.put(Statuses.CREATEDTEXT, Sonet.getCreatedText( parseDate(comment.getString(ScreatedDate), CHATTER_DATE_FORMAT), mTime24hr)); commentMap.put(getString(R.string.like), ""); mComments.add(commentMap); } } else { noComments(); } } else { noComments(); } break; } } catch (JSONException e) { Log.e(TAG, e.toString()); } } else { noComments(); } setListAdapter(new SimpleAdapter(SonetComments.this, mComments, R.layout.comment, new String[] { Entities.FRIEND, Statuses.MESSAGE, Statuses.CREATEDTEXT, getString(R.string.like) }, new int[] { R.id.friend, R.id.message, R.id.created, R.id.like })); if (loadingDialog.isShowing()) loadingDialog.dismiss(); } private void noComments() { HashMap<String, String> commentMap = new HashMap<String, String>(); commentMap.put(Statuses.SID, ""); commentMap.put(Entities.FRIEND, ""); commentMap.put(Statuses.MESSAGE, getString(R.string.no_comments)); commentMap.put(Statuses.CREATEDTEXT, ""); commentMap.put(getString(R.string.like), ""); mComments.add(commentMap); } private long parseDate(String date, String format) { if (date != null) { // hack for the literal 'Z' if (date.substring(date.length() - 1).equals("Z")) { date = date.substring(0, date.length() - 2) + "+0000"; } Date created = null; if (format != null) { if (mSimpleDateFormat == null) { mSimpleDateFormat = new SimpleDateFormat(format, Locale.ENGLISH); // all dates should be GMT/UTC mSimpleDateFormat.setTimeZone(sTimeZone); } try { created = mSimpleDateFormat.parse(date); return created.getTime(); } catch (ParseException e) { Log.e(TAG, e.toString()); } } else { // attempt to parse RSS date if (mSimpleDateFormat != null) { try { created = mSimpleDateFormat.parse(date); return created.getTime(); } catch (ParseException e) { Log.e(TAG, e.toString()); } } for (String rfc822 : sRFC822) { mSimpleDateFormat = new SimpleDateFormat(rfc822, Locale.ENGLISH); mSimpleDateFormat.setTimeZone(sTimeZone); try { if ((created = mSimpleDateFormat.parse(date)) != null) { return created.getTime(); } } catch (ParseException e) { Log.e(TAG, e.toString()); } } } } return System.currentTimeMillis(); } }; loadingDialog.setMessage(getString(R.string.loading)); loadingDialog.setCancelable(true); loadingDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { if (!asyncTask.isCancelled()) asyncTask.cancel(true); } }); loadingDialog.setButton(ProgressDialog.BUTTON_NEGATIVE, getString(android.R.string.cancel), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); loadingDialog.show(); asyncTask.execute(); }
From source file:com.hichinaschool.flashcards.libanki.Sched.java
private int _graduatingIvl(Card card, JSONObject conf, boolean early, boolean adj) { if (card.getType() == 2) { // lapsed card being relearnt if (card.getODid() != 0) { try { if (conf.getBoolean("resched")) { return _dynIvlBoost(card); }/*from w w w . j a va2s. c o m*/ } catch (JSONException e) { throw new RuntimeException(e); } } return card.getIvl(); } int ideal; JSONArray ja; try { ja = conf.getJSONArray("ints"); if (!early) { // graduate ideal = ja.getInt(0); } else { ideal = ja.getInt(1); } if (adj) { return _adjRevIvl(card, ideal); } else { return ideal; } } catch (JSONException e) { throw new RuntimeException(e); } }
From source file:com.hichinaschool.flashcards.libanki.Sched.java
private JSONObject _newConf(Card card) { try {// w w w . j a v a2s. com JSONObject conf = _cardConf(card); // normal deck if (card.getODid() == 0) { return conf.getJSONObject("new"); } // dynamic deck; override some attributes, use original deck for others JSONObject oconf = mCol.getDecks().confForDid(card.getODid()); JSONArray delays = conf.optJSONArray("delays"); if (delays == null) { delays = oconf.getJSONObject("new").getJSONArray("delays"); } JSONObject dict = new JSONObject(); // original deck dict.put("ints", oconf.getJSONObject("new").getJSONArray("ints")); dict.put("initialFactor", oconf.getJSONObject("new").getInt("initialFactor")); dict.put("bury", oconf.getJSONObject("new").optBoolean("bury", true)); // overrides dict.put("delays", delays); dict.put("separate", conf.getBoolean("separate")); dict.put("order", NEW_CARDS_DUE); dict.put("perDay", mReportLimit); return dict; } catch (JSONException e) { throw new RuntimeException(e); } }
From source file:com.hichinaschool.flashcards.libanki.Sched.java
private JSONObject _lapseConf(Card card) { try {//www .j a v a 2 s.c o m JSONObject conf = _cardConf(card); // normal deck if (card.getODid() == 0) { return conf.getJSONObject("lapse"); } // dynamic deck; override some attributes, use original deck for others JSONObject oconf = mCol.getDecks().confForDid(card.getODid()); JSONArray delays = conf.optJSONArray("delays"); if (delays == null) { delays = oconf.getJSONObject("lapse").getJSONArray("delays"); } JSONObject dict = new JSONObject(); // original deck dict.put("minInt", oconf.getJSONObject("lapse").getInt("minInt")); dict.put("leechFails", oconf.getJSONObject("lapse").getInt("leechFails")); dict.put("leechAction", oconf.getJSONObject("lapse").getInt("leechAction")); dict.put("mult", oconf.getJSONObject("lapse").getDouble("mult")); // overrides dict.put("delays", delays); dict.put("resched", conf.getBoolean("resched")); return dict; } catch (JSONException e) { if (!mCol.getDecks().isDyn(card.getDid()) && card.getODid() != 0) { // workaround, if a card's deck is a normal deck, but odid != 0 card.setODue(0); card.setODid(0); AnkiDroidApp.saveExceptionReportFile(e, "fixedODidInconsistencyInSched_lapseConf"); // return proper value after having fixed the problem return _lapseConf(card); } else { throw new RuntimeException(e); } } }
From source file:com.hichinaschool.flashcards.libanki.Sched.java
private boolean _resched(Card card) { JSONObject conf = _cardConf(card); try {/* w w w . jav a2 s . c om*/ if (conf.getInt("dyn") == 0) { return true; } return conf.getBoolean("resched"); } catch (JSONException e) { throw new RuntimeException(e); } }
From source file:com.hichinaschool.flashcards.libanki.Sched.java
public Object[] deckCounts() { TreeSet<Object[]> decks = deckDueTree(); int[] counts = new int[] { 0, 0, 0 }; for (Object[] deck : decks) { if (((String[]) deck[0]).length == 1) { counts[0] += (Integer) deck[2]; counts[1] += (Integer) deck[3]; counts[2] += (Integer) deck[4]; }/* ww w. jav a2 s.com*/ } TreeSet<Object[]> decksNet = new TreeSet<Object[]>(new DeckNameCompare()); for (Object[] d : decks) { try { boolean show = true; for (JSONObject o : mCol.getDecks().parents((Long) d[1])) { if (o.getBoolean("collapsed")) { show = false; break; } } if (show) { JSONObject deck = mCol.getDecks().get((Long) d[1]); if (deck.getBoolean("collapsed")) { String[] name = (String[]) d[0]; name[name.length - 1] = name[name.length - 1] + " (+)"; d[0] = name; } decksNet.add(new Object[] { d[0], d[1], d[2], d[3], d[4], deck.getInt("dyn") != 0 }); } } catch (JSONException e) { throw new RuntimeException(e); } } return new Object[] { decksNet, eta(counts), mCol.cardCount() }; }
From source file:me.mast3rplan.phantombot.cache.FollowersCache.java
public int quickUpdate(String channel) throws Exception { JSONObject j = TwitchAPIv3.instance().GetChannelFollows(channel, 100, 0, false); if (j.getBoolean("_success")) { if (j.getInt("_http") == 200) { int i = j.getInt("_total"); Map<String, JSONObject> newCache = Maps.newHashMap(); JSONArray followers = j.getJSONArray("follows"); for (int b = 0; b < followers.length(); b++) { JSONObject follower = followers.getJSONObject(b); newCache.put(follower.getJSONObject("user").getString("name"), follower); }/*from w w w. j av a 2 s . c o m*/ for (String key : newCache.keySet()) { if (cache == null || !cache.containsKey(key)) { cache.put(key, newCache.get(key)); EventBus.instance().post( new TwitchFollowEvent(key, PhantomBot.instance().getChannel("#" + this.channel))); } } this.count = cache.size(); return i; } else { throw new Exception("[HTTPErrorException] HTTP " + j.getInt("status") + " " + j.getString("error") + ". req=" + j.getString("_type") + " " + j.getString("_url") + " " + j.getString("_post") + " " + (j.has("message") && !j.isNull("message") ? "message=" + j.getString("message") : "content=" + j.getString("_content"))); } } else { throw new Exception("[" + j.getString("_exception") + "] " + j.getString("_exceptionMessage")); } }
From source file:me.mast3rplan.phantombot.cache.FollowersCache.java
private void updateCache(int newCount) throws Exception { Map<String, JSONObject> newCache = Maps.newHashMap(); final List<JSONObject> responses = Lists.newArrayList(); List<Thread> threads = Lists.newArrayList(); hasFail = false;/*from ww w . java 2s . c o m*/ Calendar c = Calendar.getInstance(); c.add(Calendar.HOUR, 1); nextFull = c.getTime(); for (int i = 0; i < Math.ceil(newCount / 100.0); i++) { final int offset = i * 100; Thread thread = new Thread() { @Override public void run() { JSONObject j = TwitchAPIv3.instance().GetChannelFollows(channel, 100, offset, true); if (j.getBoolean("_success")) { if (j.getInt("_http") == 200) { responses.add(j); } else { try { throw new Exception("[HTTPErrorException] HTTP " + j.getInt("status") + " " + j.getString("error") + ". req=" + j.getString("_type") + " " + j.getString("_url") + " " + j.getString("_post") + " " + (j.has("message") && !j.isNull("message") ? "message=" + j.getString("message") : "content=" + j.getString("_content"))); } catch (Exception e) { com.gmt2001.Console.out .println("FollowersCache.updateCache>>Failed to update followers: " + e.getMessage()); com.gmt2001.Console.err.logStackTrace(e); } } } else { try { throw new Exception( "[" + j.getString("_exception") + "] " + j.getString("_exceptionMessage")); } catch (Exception e) { if ((e.getMessage().startsWith("[SocketTimeoutException]") || e.getMessage().startsWith("[IOException]")) && !hasFail) { hasFail = true; Calendar c = Calendar.getInstance(); if (lastFail.after(new Date())) { numfail++; } else { numfail = 1; } c.add(Calendar.MINUTE, 1); lastFail = c.getTime(); if (numfail >= 5) { timeoutExpire = c.getTime(); } } com.gmt2001.Console.out.println( "FollowersCache.updateCache>>Failed to update followers: " + e.getMessage()); com.gmt2001.Console.err.logStackTrace(e); } } } }; threads.add(thread); thread.start(); } for (Thread thread : threads) { thread.join(); } for (JSONObject response : responses) { JSONArray followers = response.getJSONArray("follows"); if (followers.length() == 0) { break; } for (int j = 0; j < followers.length(); j++) { JSONObject follower = followers.getJSONObject(j); newCache.put(follower.getJSONObject("user").getString("name"), follower); } } List<String> followers = Lists.newArrayList(); List<String> unfollowers = Lists.newArrayList(); for (String key : newCache.keySet()) { if (cache == null || !cache.containsKey(key)) { followers.add(key); } } if (cache != null) { for (String key : cache.keySet()) { if (!newCache.containsKey(key)) { unfollowers.add(key); } } } this.cache = newCache; this.count = newCache.size(); for (String follower : followers) { EventBus.instance() .post(new TwitchFollowEvent(follower, PhantomBot.instance().getChannel("#" + this.channel))); } for (String follower : unfollowers) { EventBus.instance() .post(new TwitchUnfollowEvent(follower, PhantomBot.instance().getChannel("#" + this.channel))); } if (firstUpdate) { firstUpdate = false; EventBus.instance() .post(new TwitchFollowsInitializedEvent(PhantomBot.instance().getChannel("#" + this.channel))); } }