Set file size also for cached avatars

This commit is contained in:
Holger Weiß 2015-03-17 17:36:17 +01:00
parent 4aab45533a
commit 52af62d298

View file

@ -318,39 +318,41 @@ public class FileBackend {
} }
public boolean save(Avatar avatar) { public boolean save(Avatar avatar) {
File file;
if (isAvatarCached(avatar)) { if (isAvatarCached(avatar)) {
return true; file = new File(getAvatarPath(avatar.getFilename()));
} } else {
String filename = getAvatarPath(avatar.getFilename()); String filename = getAvatarPath(avatar.getFilename());
File file = new File(filename + ".tmp"); file = new File(filename + ".tmp");
file.getParentFile().mkdirs(); file.getParentFile().mkdirs();
try { try {
file.createNewFile(); file.createNewFile();
FileOutputStream mFileOutputStream = new FileOutputStream(file); FileOutputStream mFileOutputStream = new FileOutputStream(file);
MessageDigest digest = MessageDigest.getInstance("SHA-1"); MessageDigest digest = MessageDigest.getInstance("SHA-1");
digest.reset(); digest.reset();
DigestOutputStream mDigestOutputStream = new DigestOutputStream( DigestOutputStream mDigestOutputStream = new DigestOutputStream(
mFileOutputStream, digest); mFileOutputStream, digest);
mDigestOutputStream.write(avatar.getImageAsBytes()); mDigestOutputStream.write(avatar.getImageAsBytes());
mDigestOutputStream.flush(); mDigestOutputStream.flush();
mDigestOutputStream.close(); mDigestOutputStream.close();
avatar.size = file.length(); String sha1sum = CryptoHelper.bytesToHex(digest.digest());
String sha1sum = CryptoHelper.bytesToHex(digest.digest()); if (sha1sum.equals(avatar.sha1sum)) {
if (sha1sum.equals(avatar.sha1sum)) { file.renameTo(new File(filename));
file.renameTo(new File(filename)); } else {
return true; Log.d(Config.LOGTAG, "sha1sum mismatch for " + avatar.owner);
} else { file.delete();
Log.d(Config.LOGTAG, "sha1sum mismatch for " + avatar.owner); return false;
file.delete(); }
} catch (FileNotFoundException e) {
return false;
} catch (IOException e) {
return false;
} catch (NoSuchAlgorithmException e) {
return false; return false;
} }
} catch (FileNotFoundException e) {
return false;
} catch (IOException e) {
return false;
} catch (NoSuchAlgorithmException e) {
return false;
} }
avatar.size = file.length();
return true;
} }
public String getAvatarPath(String avatar) { public String getAvatarPath(String avatar) {