use of org.stepik.api.objects.lessons.Lessons in project intellij-plugins by StepicOrg.
the class LessonNode method loadData.
@Override
protected boolean loadData(@NotNull StepikApiClient stepikApiClient, long id) {
try {
CompoundUnitLesson data = getData();
if (data == null) {
return true;
}
String updateDate = data.getUpdateDate();
Lessons lessons = stepikApiClient.lessons().get().id(id).execute();
Lesson lesson;
if (!lessons.isEmpty()) {
lesson = lessons.getFirst();
} else {
lesson = new Lesson();
lesson.setId(id);
}
data.setLesson(lesson);
return !updateDate.equals(data.getUpdateDate());
} catch (StepikClientException logged) {
logger.warn(String.format("Failed load lesson data id=%d", id), logged);
}
return true;
}
use of org.stepik.api.objects.lessons.Lessons in project intellij-plugins by StepicOrg.
the class SectionNode method getChildDataList.
@Override
protected List<CompoundUnitLesson> getChildDataList(@NotNull StepikApiClient stepikApiClient) {
List<CompoundUnitLesson> objects = new ArrayList<>();
try {
List<Long> unitsIds;
Section data = getData();
unitsIds = data != null ? data.getUnits() : Collections.emptyList();
if (!unitsIds.isEmpty()) {
int size = unitsIds.size();
Long[] list = unitsIds.toArray(new Long[size]);
int start = 0;
int end;
while (start < size) {
end = start + 20;
if (end > size) {
end = size;
}
Long[] part = Arrays.copyOfRange(list, start, end);
start = end;
Units units = stepikApiClient.units().get().id(part).execute();
Map<Long, Unit> unitsMap = new HashMap<>();
List<Long> lessonsIds = new ArrayList<>();
units.getUnits().forEach(unit -> {
long lessonId = unit.getLesson();
lessonsIds.add(lessonId);
unitsMap.put(lessonId, unit);
});
Lessons lessons = stepikApiClient.lessons().get().id(lessonsIds).execute();
lessons.getLessons().forEach(lesson -> objects.add(new CompoundUnitLesson(unitsMap.get(lesson.getId()), lesson)));
}
}
} catch (StepikClientException logged) {
logger.warn("A section initialization don't is fully", logged);
}
return objects;
}
Aggregations