| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package io.v.moments.model; |
| |
| import android.graphics.Bitmap; |
| |
| import org.joda.time.DateTime; |
| |
| import io.v.moments.ifc.Moment; |
| import io.v.moments.lib.Id; |
| |
| /** |
| * A photo and ancillary information. |
| */ |
| class MomentImpl implements Moment { |
| private static final String NOT_LETTERS_DIGITS = "[^a-zA-Z0-9]"; |
| protected final BitMapper mBitMapper; |
| private final DateTime mCreationTime; |
| private final String mAuthor; |
| private final String mCaption; |
| private final Id mId; |
| private final int mOrdinal; |
| private AdState mDesiredAdState = AdState.OFF; |
| |
| public MomentImpl( |
| BitMapper bitMapper, Id id, int ordinal, |
| String author, String caption, DateTime dt, |
| AdState desiredAdState) { |
| mBitMapper = bitMapper; |
| mOrdinal = ordinal; |
| mAuthor = author; |
| mCaption = caption; |
| mCreationTime = dt; |
| mId = id; |
| mDesiredAdState = desiredAdState; |
| } |
| |
| public AdState getDesiredAdState() { |
| return mDesiredAdState; |
| } |
| |
| public void setDesiredAdState(AdState value) { |
| mDesiredAdState = value; |
| } |
| |
| public boolean hasPhoto(Kind kind, Style style) { |
| return mBitMapper.exists(getOrdinal(), kind, style); |
| } |
| |
| public int getOrdinal() { |
| return mOrdinal; |
| } |
| |
| public String getAuthor() { |
| return mAuthor; |
| } |
| |
| public Bitmap getPhoto(Kind kind, Style style) { |
| return mBitMapper.readBitmap(getOrdinal(), kind, style); |
| } |
| |
| public void setPhoto(Kind kind, Style style, byte[] data) { |
| mBitMapper.writeBytes(getOrdinal(), kind, style, data); |
| } |
| |
| public String getName() { |
| StringBuilder b = new StringBuilder(); |
| b.append(mAuthor.replaceAll(NOT_LETTERS_DIGITS, "")); |
| b.append(mCaption.replaceAll(NOT_LETTERS_DIGITS, "")); |
| return b.toString(); |
| } |
| |
| // A string with no blanks, could be used as a file name. |
| public String toString() { |
| StringBuilder b = new StringBuilder(); |
| b.append(getName()); |
| b.append("_index_"); |
| b.append(getOrdinal()); |
| b.append("_id_"); |
| b.append(getId()); |
| return b.toString(); |
| } |
| |
| public Id getId() { |
| return mId; |
| } |
| |
| public String getCaption() { |
| return mCaption; |
| } |
| |
| public DateTime getCreationTime() { |
| return mCreationTime; |
| } |
| } |