/*******************************************************************************
* ____.____ __.____ ___ _____
* | | |/ _| | \ / _ \ ______ ______
* | | < | | / / /_\ \\____ \\____ \
* /\__| | | \| | / / | \ |_> > |_> >
* \________|____|__ \______/ \____|__ / __/| __/
* \/ \/|__| |__|
*
* Copyright (c) 2014-2015 Paul "Marunjar" Pretsch
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
******************************************************************************/
package org.voidsink.anewjkuapp.kusss;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.text.TextUtils;
import org.voidsink.anewjkuapp.KusssContentContract;
import org.voidsink.anewjkuapp.provider.KusssDatabaseHelper;
import org.voidsink.anewjkuapp.update.ImportAssessmentTask;
import org.voidsink.anewjkuapp.update.ImportCourseTask;
import org.voidsink.anewjkuapp.update.ImportCurriculaTask;
import org.voidsink.anewjkuapp.update.ImportExamTask;
import org.voidsink.anewjkuapp.utils.AppUtils;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.Locale;
public class KusssHelper {
private static final String URL_GET_EXAMS = "https://www.kusss.jku.at/kusss/szexaminationlist.action";
public static final DateFormat dateFormat = DateFormat.getDateTimeInstance();
public static void showExamInBrowser(Context context, String courseId) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(URL_GET_EXAMS));
context.startActivity(intent);
// TODO: create activity with webview that uses stored credentials to login and open page with search for courseId
}
public static String getCourseKey(Term term, String courseId) {
return term.toString() + "-" + courseId;
}
public static Course createCourse(Cursor c) throws ParseException {
return new Course(Term.parseTerm(c.getString(ImportCourseTask.COLUMN_LVA_TERM)),
c.getString(ImportCourseTask.COLUMN_LVA_COURSEID),
c.getString(ImportCourseTask.COLUMN_LVA_TITLE),
c.getInt(ImportCourseTask.COLUMN_LVA_CURRICULA_ID),
c.getString(ImportCourseTask.COLUMN_LVA_TEACHER),
c.getDouble(ImportCourseTask.COLUMN_LVA_SWS),
c.getDouble(ImportCourseTask.COLUMN_LVA_ECTS),
c.getString(ImportCourseTask.COLUMN_LVA_TYPE),
c.getString(ImportCourseTask.COLUMN_LVA_CODE));
}
public static ContentValues getLvaContentValues(Course course) {
ContentValues cv = new ContentValues();
cv.put(KusssContentContract.Course.COL_TITLE, course.getTitle());
cv.put(KusssContentContract.Course.COL_ECTS, course.getEcts());
cv.put(KusssContentContract.Course.COL_SWS, course.getSws());
cv.put(KusssContentContract.Course.COL_COURSEID, course.getCourseId());
cv.put(KusssContentContract.Course.COL_CURRICULA_ID, course.getCid());
cv.put(KusssContentContract.Course.COL_CLASS_CODE, course.getCode());
cv.put(KusssContentContract.Course.COL_LECTURER, course.getTeacher());
cv.put(KusssContentContract.Course.COL_TERM, AppUtils.termToString(course.getTerm()));
cv.put(KusssContentContract.Course.COL_TYPE, course.getLvaType());
return cv;
}
public static String getExamKey(String courseId, String term, long date) {
return String.format(Locale.GERMAN, "%s-%s-%d", courseId, term, date);
}
public static Exam createExam(Cursor c) throws ParseException {
return new Exam(
c.getString(ImportExamTask.COLUMN_EXAM_COURSEID),
Term.parseTerm(c.getString(ImportExamTask.COLUMN_EXAM_TERM)),
new Date(c.getLong(ImportExamTask.COLUMN_EXAM_DTSTART)),
new Date(c.getLong(ImportExamTask.COLUMN_EXAM_DTEND)),
c.getString(ImportExamTask.COLUMN_EXAM_LOCATION),
c.getString(ImportExamTask.COLUMN_EXAM_DESCRIPTION),
c.getString(ImportExamTask.COLUMN_EXAM_INFO),
c.getString(ImportExamTask.COLUMN_EXAM_TITLE),
KusssDatabaseHelper.toBool(c.getInt(ImportExamTask.COLUMN_EXAM_IS_REGISTERED)));
}
public static ContentValues getExamContentValues(Exam exam) {
ContentValues cv = new ContentValues();
cv.put(KusssContentContract.Exam.COL_DTSTART, exam.getDtStart().getTime());
cv.put(KusssContentContract.Exam.COL_DESCRIPTION, exam.getDescription());
cv.put(KusssContentContract.Exam.COL_INFO, exam.getInfo());
cv.put(KusssContentContract.Exam.COL_LOCATION, exam.getLocation());
cv.put(KusssContentContract.Exam.COL_COURSEID, exam.getCourseId());
cv.put(KusssContentContract.Exam.COL_TERM, AppUtils.termToString(exam.getTerm()));
cv.put(KusssContentContract.Exam.COL_DTEND, exam.getDtEnd().getTime());
cv.put(KusssContentContract.Exam.COL_IS_REGISTERED,
KusssDatabaseHelper.toInt(exam.isRegistered()));
cv.put(KusssContentContract.Exam.COL_TITLE, exam.getTitle());
return cv;
}
public static String getCurriculumKey(String cid, Date dtStart) {
return cid + "-" + dateFormat.format(dtStart);
}
public static Curriculum createCurricula(Cursor c) {
return new Curriculum(KusssDatabaseHelper.toBool(c.getInt(ImportCurriculaTask.COLUMN_CURRICULUM_IS_STD)),
c.getString(ImportCurriculaTask.COLUMN_CURRICULUM_CURRICULUM_ID),
c.getString(ImportCurriculaTask.COLUMN_CURRICULUM_TITLE),
KusssDatabaseHelper.toBool(c.getInt(ImportCurriculaTask.COLUMN_CURRICULUM_STEOP_DONE)),
KusssDatabaseHelper.toBool(c.getInt(ImportCurriculaTask.COLUMN_CURRICULUM_ACTIVE_STATE)),
c.getString(ImportCurriculaTask.COLUMN_CURRICULUM_UNI),
new Date(c.getLong(ImportCurriculaTask.COLUMN_CURRICULUM_DT_START)),
!c.isNull(ImportCurriculaTask.COLUMN_CURRICULUM_DT_END) ? new Date(c.getLong(ImportCurriculaTask.COLUMN_CURRICULUM_DT_END)) : null);
}
public static ContentValues getCurriculumContentValues(Curriculum curriculum) {
ContentValues cv = new ContentValues();
cv.put(KusssContentContract.Curricula.COL_IS_STD, KusssDatabaseHelper.toInt(curriculum.isStandard()));
cv.put(KusssContentContract.Curricula.COL_CURRICULUM_ID, curriculum.getCid());
cv.put(KusssContentContract.Curricula.COL_TITLE, curriculum.getTitle());
cv.put(KusssContentContract.Curricula.COL_STEOP_DONE, KusssDatabaseHelper.toInt(curriculum.isSteopDone()));
cv.put(KusssContentContract.Curricula.COL_ACTIVE_STATE, KusssDatabaseHelper.toInt(curriculum.isActive()));
cv.put(KusssContentContract.Curricula.COL_UNI, curriculum.getUni());
cv.put(KusssContentContract.Curricula.COL_DT_START, curriculum.getDtStart().getTime());
Date date = curriculum.getDtEnd();
if (date != null) {
cv.put(KusssContentContract.Curricula.COL_DT_END, date.getTime());
} else {
cv.putNull(KusssContentContract.Curricula.COL_DT_END);
}
return cv;
}
public static String getAssessmentKey(String classCode, String courseId, long date) {
return String.format(Locale.GERMAN, "%s-%s-%d", classCode, courseId, date);
}
public static Assessment createAssessment(Cursor c) throws ParseException {
String termStr = c.getString(ImportAssessmentTask.COLUMN_ASSESSMENT_TERM);
return new Assessment(
AssessmentType.parseAssessmentType(c.getInt(ImportAssessmentTask.COLUMN_ASSESSMENT_TYPE)),
new Date(c.getLong(ImportAssessmentTask.COLUMN_ASSESSMENT_DATE)),
c.getString(ImportAssessmentTask.COLUMN_ASSESSMENT_COURSEID),
TextUtils.isEmpty(termStr) ? null : Term.parseTerm(termStr),
Grade.parseGradeType(c.getInt(ImportAssessmentTask.COLUMN_ASSESSMENT_GRADE)),
c.getInt(ImportAssessmentTask.COLUMN_ASSESSMENT_CURRICULA_ID),
c.getString(ImportAssessmentTask.COLUMN_ASSESSMENT_TITLE),
c.getString(ImportAssessmentTask.COLUMN_ASSESSMENT_CODE),
c.getDouble(ImportAssessmentTask.COLUMN_ASSESSMENT_ECTS),
c.getDouble(ImportAssessmentTask.COLUMN_ASSESSMENT_SWS));
}
public static ContentValues getAssessmentContentValues(Assessment assessment) {
ContentValues cv = new ContentValues();
cv.put(KusssContentContract.Assessment.COL_DATE, assessment.getDate().getTime());
cv.put(KusssContentContract.Assessment.COL_GRADE, assessment.getGrade().ordinal());
cv.put(KusssContentContract.Assessment.COL_COURSEID, assessment.getCourseId());
cv.put(KusssContentContract.Assessment.COL_CURRICULA_ID, assessment.getCid());
cv.put(KusssContentContract.Assessment.COL_TERM, AppUtils.termToString(assessment.getTerm()));
cv.put(KusssContentContract.Assessment.COL_TYPE, assessment.getAssessmentType().ordinal());
cv.put(KusssContentContract.Assessment.COL_CODE, assessment.getCode());
cv.put(KusssContentContract.Assessment.COL_TITLE, assessment.getTitle());
cv.put(KusssContentContract.Assessment.COL_ECTS, assessment.getEcts());
cv.put(KusssContentContract.Assessment.COL_SWS, assessment.getSws());
return cv;
}
}