package macbury.pod.db.scopes;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.stmt.QueryBuilder;
import java.sql.SQLException;
import java.util.List;
import macbury.pod.api.APIProgram;
import macbury.pod.db.models.Program;
/**
* Created by macbury on 09.09.14.
*/
public class ProgramsScope extends AbstractScope<Program> {
public ProgramsScope(Dao<Program, Integer> dao) {
super(dao);
}
public Program buildFromApi(APIProgram apiObject) {
Program program = new Program();
program.id = apiObject.id;
program.name = apiObject.name;
program.description = apiObject.description;
program.author = apiObject.author;
program.image = apiObject.image;
program.live = apiObject.live;
return program;
}
public Program find(APIProgram apiObject) {
return find(apiObject.id);
}
public List<Program> allOrderedByName() {
QueryBuilder<Program, Integer> builder = dao.queryBuilder();
try {
return builder.orderBy("name", true).query();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public List<Program> allFavorited() {
QueryBuilder<Program, Integer> builder = dao.queryBuilder();
try {
return builder.orderBy("name", true).where().eq("favorite", true).query();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public boolean updateFromApi(APIProgram apiProgram) {
Program oldProgram = find(apiProgram);
Program newProgram = buildFromApi(apiProgram);
if (oldProgram != null) {
newProgram.favorite = oldProgram.favorite;
}
return update(newProgram);
}
@Override
public void afterCreate(Program model) {
}
@Override
public void afterDestroy(Program object) {
}
@Override
public void afterSave(Program object) {
}
}