package com.android_mvc.sample_project.db.entity;
import android.content.ContentValues;
import android.database.Cursor;
import com.android_mvc.sample_project.db.entity.lib.LPUtil;
import com.android_mvc.sample_project.db.entity.lib.LogicalEntity;
/**
* 友達1人を表す論理エンティティ。
* @author id:language_and_engineering
*
*/
public class Friend extends LogicalEntity<Friend>
{
// Intent経由でエンティティを運搬可能にするために
private static final long serialVersionUID = 1L;
@Override
public String tableName(){return "friends";}
@Override
public final String[] columns(){
return new String[]{ "id", "name", "age", "favorite_flag" };
}
// メンバ
private String name = null;
private Integer age = null;
private Boolean favorite_flag = null;
// IDEが自動生成したG&S
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public Boolean getFavorite_flag() {
return favorite_flag;
}
public void setFavorite_flag(Boolean favoriteFlag) {
favorite_flag = favoriteFlag;
}
// カスタムG&S
/**
* 友達に自分の説明をさせる
*/
public String getDescription()
{
String friend_description = "id:" // ※forループ中で呼ばれるので,本当はStringBuilderを(略
+ getId()
+","
+ getName()
+ "さん("
+ getAge()
+")"
;
// お気に入りなら星マークをつける
if( getFavorite_flag() )
{
friend_description += "★";
}
return friend_description;
}
// ----- LP変換(Logical <-> Physical) -----
/**
* DBの格納値から論理エンティティを構成
*/
@Override
public Friend logicalFromPhysical(Cursor c)
{
setId(c.getLong(0));
setName(c.getString(1));
setAge( c.getInt(2) );
setFavorite_flag( LPUtil.decodeIntegerToBoolean( c.getInt(3) ) );
return this;
}
/**
* 自身をDBに新規登録可能なデータ型に変換して返す
*/
@Override
protected ContentValues toPhysicalEntity(ContentValues values)
{
// entityをContentValueに変換
if( getId() != null)
{
values.put("id", getId());
}
values.put("name", getName());
values.put("age", getAge());
values.put("favorite_flag", LPUtil.encodeBooleanToInteger( getFavorite_flag() ) );
return values;
}
}