private PartId insertPart(MasterSecret masterSecret, PduPart part, long mmsId, Bitmap thumbnail) throws MmsException { Log.w(TAG, "inserting part to mms " + mmsId); SQLiteDatabase database = databaseHelper.getWritableDatabase(); Pair<File, Long> partData = null; if (!part.isPendingPush()) { partData = writePartData(masterSecret, part); Log.w(TAG, "Wrote part to file: " + partData.first.getAbsolutePath()); } ContentValues contentValues = getContentValuesForPart(part); contentValues.put(MMS_ID, mmsId); if (partData != null) { contentValues.put(DATA, partData.first.getAbsolutePath()); contentValues.put(SIZE, partData.second); } long partRowId = database.insert(TABLE_NAME, null, contentValues); PartId partId = new PartId(partRowId, part.getUniqueId()); if (thumbnail != null) { Log.w(TAG, "inserting pre-generated thumbnail"); ThumbnailData data = new ThumbnailData(thumbnail); updatePartThumbnail(masterSecret, partId, part, data.toDataStream(), data.getAspectRatio()); } else if (!part.isPendingPush()) { thumbnailExecutor.submit(new ThumbnailFetchCallable(masterSecret, partId)); } return partId; }
private ContentValues getContentValuesForPart(PduPart part) throws MmsException { ContentValues contentValues = new ContentValues(); if (part.getCharset() != 0) { contentValues.put(CHARSET, part.getCharset()); } if (part.getContentType() != null) { contentValues.put(CONTENT_TYPE, Util.toIsoString(part.getContentType())); if (Util.toIsoString(part.getContentType()).equals(ContentType.APP_SMIL)) { contentValues.put(SEQUENCE, -1); } } else { throw new MmsException("There is no content type for this part."); } if (part.getName() != null) { contentValues.put(NAME, new String(part.getName())); } if (part.getFilename() != null) { contentValues.put(FILENAME, new String(part.getFilename())); } if (part.getContentDisposition() != null) { contentValues.put(CONTENT_DISPOSITION, Util.toIsoString(part.getContentDisposition())); } if (part.getContentId() != null) { contentValues.put(CONTENT_ID, Util.toIsoString(part.getContentId())); } if (part.getContentLocation() != null) { contentValues.put(CONTENT_LOCATION, Util.toIsoString(part.getContentLocation())); } contentValues.put(ENCRYPTED, part.getEncrypted() ? 1 : 0); contentValues.put(PENDING_PUSH_ATTACHMENT, part.isPendingPush() ? 1 : 0); contentValues.put(UNIQUE_ID, part.getUniqueId()); return contentValues; }