package com.fastaccess.data.dao; import android.content.ComponentName; import android.graphics.Bitmap; import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; import com.google.firebase.database.Exclude; import com.orm.SugarRecord; import com.orm.dsl.Ignore; import com.orm.query.Condition; import com.orm.query.Select; import com.orm.util.NamingHelper; import java.util.Comparator; import java.util.List; /** * Created by Kosh on 10 Oct 2016, 10:23 PM */ public class AppsModel extends SugarRecord implements Parcelable { private long folderId; private String appName; private String packageName; private String iconPath; private String activityInfoName; private int indexPosition; private int countEntry; @Exclude @Ignore private Bitmap bitmap; public AppsModel() {}//default constructor. public long getFolderId() { return folderId; } public void setFolderId(long folderId) { this.folderId = folderId; } public String getPackageName() { return packageName; } public void setPackageName(String packageName) { this.packageName = packageName; } public String getIconPath() { return iconPath; } public void setIconPath(String iconPath) { this.iconPath = iconPath; } public String getActivityInfoName() { return activityInfoName; } public void setActivityInfoName(String activityInfoName) { this.activityInfoName = activityInfoName; } public int getIndexPosition() { return indexPosition; } public void setIndexPosition(int indexPosition) { this.indexPosition = indexPosition; } public int getCountEntry() { return countEntry; } public void setCountEntry(int countEntry) { this.countEntry = countEntry; } public String getAppName() { return appName; } public void setAppName(String appName) { this.appName = appName; } @Exclude public ComponentName getComponentName() { return new ComponentName(packageName, activityInfoName); } public void setBitmap(Bitmap bitmap) { this.bitmap = bitmap; } public Bitmap getBitmap() { return bitmap; } public static List<AppsModel> getApps() { return Select.from(AppsModel.class) .where(Condition.prop(NamingHelper.toSQLNameDefault("folderId")).eq(0)) .orderBy(NamingHelper.toSQLNameDefault("indexPosition") + " ASC") .list(); } public static List<AppsModel> getApps(long folderId) { return Select.from(AppsModel.class) .where(Condition.prop(NamingHelper.toSQLNameDefault("folderId")).eq(folderId)) .list(); } public static int lastPosition() { AppsModel appsModel = Select.from(AppsModel.class).orderBy(NamingHelper.toSQLNameDefault("indexPosition") + " DESC").first(); if (appsModel != null) { return appsModel.getIndexPosition(); } return 0; } public static long countApps(long folderId) { return count(AppsModel.class, NamingHelper.toSQLNameDefault("folderId") + " = ?", new String[]{String.valueOf(folderId)}); } public static void deleteAllByFolder(@NonNull FolderModel folder) { deleteAll(AppsModel.class, NamingHelper.toSQLNameDefault("folderId") + " = ?", String.valueOf(folder.getId())); } public static void deleteAll() { deleteAll(AppsModel.class); } public static boolean exists(@NonNull String activityInfoName, @NonNull String packageName) { return Select.from(AppsModel.class) .where(Condition.prop(NamingHelper.toSQLNameDefault("activityInfoName")).eq(activityInfoName)) .and(Condition.prop(NamingHelper.toSQLNameDefault("packageName")).eq(packageName)) .and(Condition.prop(NamingHelper.toSQLNameDefault("folderId")).eq(0)) .first() != null; } public static Comparator<AppsModel> sortApps() { return new Comparator<AppsModel>() { @Override public int compare(AppsModel one, AppsModel two) { return one.getAppName().compareTo(two.getAppName()); } }; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeLong(this.folderId); dest.writeString(this.appName); dest.writeString(this.packageName); dest.writeString(this.iconPath); dest.writeString(this.activityInfoName); dest.writeInt(this.indexPosition); dest.writeInt(this.countEntry); dest.writeValue(this.getId()); } protected AppsModel(Parcel in) { this.folderId = in.readLong(); this.appName = in.readString(); this.packageName = in.readString(); this.iconPath = in.readString(); this.activityInfoName = in.readString(); this.indexPosition = in.readInt(); this.countEntry = in.readInt(); this.setId((Long) in.readValue(Long.class.getClassLoader())); } public static final Creator<AppsModel> CREATOR = new Creator<AppsModel>() { @Override public AppsModel createFromParcel(Parcel source) {return new AppsModel(source);} @Override public AppsModel[] newArray(int size) {return new AppsModel[size];} }; }