package com.fastaccess.data.dao;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.orm.SugarRecord;
import com.orm.dsl.Ignore;
import com.orm.dsl.Unique;
import com.orm.query.Select;
import com.orm.util.NamingHelper;
import java.util.List;
/**
* Created by Kosh on 10 Oct 2016, 10:21 PM
*/
public class FolderModel extends SugarRecord implements Parcelable {
@Unique private String folderName;
private long createdDate;
private int orderIndex;
private int color;
private int appsCount;
@Ignore private List<AppsModel> folderApps;
public String getFolderName() {
return folderName;
}
public void setFolderName(String folderName) {
this.folderName = folderName;
}
public long getCreatedDate() {
return createdDate;
}
public void setCreatedDate(long createdDate) {
this.createdDate = createdDate;
}
public int getOrderIndex() {
return orderIndex;
}
public void setOrderIndex(int orderIndex) {
this.orderIndex = orderIndex;
}
public int getColor() {
return color;
}
public void setColor(int color) {
this.color = color;
}
public int getAppsCount() {
appsCount = (int) AppsModel.countApps(getId());
return appsCount;
}
@Nullable public static FolderModel getFolder(@NonNull String folderName) {
return Select.from(FolderModel.class).where(NamingHelper.toSQLNameDefault("folderName") + " = ? COLLATE NOCASE", new String[]{folderName})
.first();
}
public static List<FolderModel> getFolders() {
return Select.from(FolderModel.class)
.orderBy(NamingHelper.toSQLNameDefault("createdDate") + " DESC")
.list();
}
public static void deleteFolder(@NonNull FolderModel model) {
model.delete();
AppsModel.deleteAll(AppsModel.class, NamingHelper.toSQLNameDefault("folderId") + " = ?", String.valueOf(model.getId()));
}
public FolderModel() {}
@Override public int describeContents() { return 0; }
@Override public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.folderName);
dest.writeLong(this.createdDate);
dest.writeInt(this.orderIndex);
dest.writeInt(this.color);
dest.writeInt(this.appsCount);
dest.writeValue(this.getId());
}
protected FolderModel(Parcel in) {
this.folderName = in.readString();
this.createdDate = in.readLong();
this.orderIndex = in.readInt();
this.color = in.readInt();
this.appsCount = in.readInt();
this.setId((Long) in.readValue(Long.class.getClassLoader()));
}
public static final Creator<FolderModel> CREATOR = new Creator<FolderModel>() {
@Override public FolderModel createFromParcel(Parcel source) {return new FolderModel(source);}
@Override public FolderModel[] newArray(int size) {return new FolderModel[size];}
};
public List<AppsModel> getFolderApps() {
return AppsModel.getApps(getId());
}
public void setFolderApps(List<AppsModel> folderApps) {
this.folderApps = folderApps;
if (folderApps != null && !folderApps.isEmpty()) {
for (AppsModel app : folderApps) {
if (app.getFolderId() == 0) {
app.setFolderId(getId());
}
if (app.getFolderId() != 0) app.save();
}
}
}
}