package org.mtransit.android.data;
import java.util.Comparator;
import java.util.HashMap;
import org.mtransit.android.commons.StringUtils;
import org.mtransit.android.provider.FavoriteManager;
import org.mtransit.android.provider.FavoriteProvider;
import org.mtransit.android.provider.FavoriteProvider.FavoriteColumns;
import android.content.ContentValues;
import android.database.Cursor;
public class Favorite {
private static final int KEY_TYPE_VALUE_AUTHORITY_POI = 1;
private int id = -1;
private String fkId;
private int type;
private int folder_id;
private Favorite() {
}
public Favorite(String fkId, int folderId) {
this.type = KEY_TYPE_VALUE_AUTHORITY_POI;
this.fkId = fkId;
this.folder_id = folderId;
}
public static Favorite fromCursor(Cursor c) {
Favorite favorite = new Favorite();
favorite.id = c.getInt(c.getColumnIndexOrThrow(FavoriteColumns.T_FAVORITE_K_ID));
favorite.type = c.getInt(c.getColumnIndexOrThrow(FavoriteColumns.T_FAVORITE_K_TYPE));
favorite.fkId = c.getString(c.getColumnIndexOrThrow(FavoriteColumns.T_FAVORITE_K_FK_ID));
int folderIdColumnInx = c.getColumnIndex(FavoriteColumns.T_FAVORITE_K_FOLDER_ID);
if (folderIdColumnInx >= 0) {
favorite.folder_id = c.getInt(folderIdColumnInx);
} else {
favorite.folder_id = FavoriteManager.DEFAULT_FOLDER_ID;
}
return favorite;
}
public static ContentValues toContentValues(Favorite favorite) {
ContentValues values = new ContentValues();
if (favorite.getId() > 0) {
values.put(FavoriteColumns.T_FAVORITE_K_ID, favorite.id);
} // ELSE IF no ID yet, let SQLite choose the ID
values.put(FavoriteColumns.T_FAVORITE_K_TYPE, favorite.type);
values.put(FavoriteColumns.T_FAVORITE_K_FK_ID, favorite.fkId);
values.put(FavoriteColumns.T_FAVORITE_K_FOLDER_ID, favorite.folder_id);
return values;
}
public ContentValues toContentValues() {
return toContentValues(this);
}
public int getId() {
return id;
}
public String getFkId() {
return fkId;
}
public int getFolderId() {
return folder_id;
}
public static class FavoriteFolderNameComparator implements Comparator<POIManager> {
private HashMap<Integer, Favorite.Folder> favoriteFolders;
public FavoriteFolderNameComparator(HashMap<Integer, Favorite.Folder> favoriteFolders) {
this.favoriteFolders = favoriteFolders;
}
@Override
public int compare(POIManager lPoim, POIManager rPoim) {
String lFavoriteFolderName = StringUtils.EMPTY;
if (FavoriteManager.isFavoriteDataSourceId(lPoim.poi.getDataSourceTypeId())) {
int favoriteFolderId = FavoriteManager.extractFavoriteFolderId(lPoim.poi.getDataSourceTypeId());
if (this.favoriteFolders != null && this.favoriteFolders.containsKey(favoriteFolderId)) {
lFavoriteFolderName = this.favoriteFolders.get(favoriteFolderId).getName();
}
}
String rFavoriteFolderName = StringUtils.EMPTY;
if (FavoriteManager.isFavoriteDataSourceId(rPoim.poi.getDataSourceTypeId())) {
int favoriteFolderId = FavoriteManager.extractFavoriteFolderId(rPoim.poi.getDataSourceTypeId());
if (this.favoriteFolders != null && this.favoriteFolders.containsKey(favoriteFolderId)) {
rFavoriteFolderName = this.favoriteFolders.get(favoriteFolderId).getName();
}
}
return lFavoriteFolderName.compareTo(rFavoriteFolderName);
}
}
@Override
public String toString() {
return Favorite.class.getSimpleName() + "[" + this.id + "," + this.fkId + "," + this.folder_id + "]";
}
public static class Folder {
public static FavoriteFolderNameComparator NAME_COMPARATOR = new FavoriteFolderNameComparator();
private int id = -1;
private String name;
private Folder() {
}
public Folder(String name) {
this.name = name;
}
public Folder(int id, String name) {
this.id = id;
this.name = name;
}
public static Favorite.Folder fromCursor(Cursor c) {
Favorite.Folder favoriteFolder = new Favorite.Folder();
favoriteFolder.id = c.getInt(c.getColumnIndexOrThrow(FavoriteProvider.FavoriteFolderColumns.T_FAVORITE_FOLDER_K_ID));
favoriteFolder.name = c.getString(c.getColumnIndexOrThrow(FavoriteProvider.FavoriteFolderColumns.T_FAVORITE_FOLDER_K_NAME));
return favoriteFolder;
}
public static ContentValues toContentValues(Favorite.Folder favoriteFolder) {
ContentValues values = new ContentValues();
if (favoriteFolder.getId() >= 0) {
values.put(FavoriteProvider.FavoriteFolderColumns.T_FAVORITE_FOLDER_K_ID, favoriteFolder.id);
} // ELSE IF no ID yet, let SQLite choose the ID
values.put(FavoriteProvider.FavoriteFolderColumns.T_FAVORITE_FOLDER_K_NAME, favoriteFolder.name);
return values;
}
public ContentValues toContentValues() {
return toContentValues(this);
}
public int getId() {
return this.id;
}
public String getName() {
return this.name;
}
@Override
public String toString() {
return "Favorite." + Favorite.Folder.class.getSimpleName() + "[" + this.id + "," + this.name + "]";
}
private static class FavoriteFolderNameComparator implements Comparator<Favorite.Folder> {
@Override
public int compare(Favorite.Folder lFolder, Favorite.Folder rFolder) {
String lFolderName = lFolder == null ? StringUtils.EMPTY : lFolder.getName();
String rFolderName = rFolder == null ? StringUtils.EMPTY : rFolder.getName();
return lFolderName.compareTo(rFolderName);
}
}
}
}