From 5b19adec4e1c709d0166b6a10319ba807d1e4b8b Mon Sep 17 00:00:00 2001 From: pk910 Date: Sun, 28 Feb 2016 00:42:27 +0100 Subject: [PATCH] =?utf8?q?Klausur=C3=BCbersicht=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../campusapp/database/DatabaseManager.java | 7 ++ .../VorlesungsplanDatabaseHelper.java | 57 +++++++++++++ .../fragments/VorlesungsplanExams.java | 53 +++++++++++- .../VorlesungsplanExamsListAdapter.java | 69 +++++++++++++++ .../VorlesungsplanExamsListItem.java | 67 +++++++++++++++ .../layout/fragment_vorlesungsplan_exams.xml | 17 ++-- .../fragment_vorlesungsplan_exams_exam.xml | 85 +++++++++++++++++++ app/src/main/res/values/strings.xml | 4 + 8 files changed, 348 insertions(+), 11 deletions(-) create mode 100644 app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExamsListAdapter.java create mode 100644 app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExamsListItem.java create mode 100644 app/src/main/res/layout/fragment_vorlesungsplan_exams_exam.xml diff --git a/app/src/main/java/de/dhbwloe/campusapp/database/DatabaseManager.java b/app/src/main/java/de/dhbwloe/campusapp/database/DatabaseManager.java index fed7eac..06cf972 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/database/DatabaseManager.java +++ b/app/src/main/java/de/dhbwloe/campusapp/database/DatabaseManager.java @@ -411,6 +411,13 @@ public class DatabaseManager { return vorlesungsplanDBHelper.getCourseGroups(coursename, notBefore); } + public CourseEvent[] getCourseExamEvents(String coursename, long timeFrom, long timeTo) { + openDatabase(); + if(vorlesungsplanDBHelper == null) + vorlesungsplanDBHelper = new VorlesungsplanDatabaseHelper(AppContext, database); + return vorlesungsplanDBHelper.getCourseExamEvents(coursename, timeFrom, timeTo); + } + public void updateMensaTagesplan(MensaTagesplan plan) { openDatabase(); if(mensaplanDBHelper == null) diff --git a/app/src/main/java/de/dhbwloe/campusapp/database/VorlesungsplanDatabaseHelper.java b/app/src/main/java/de/dhbwloe/campusapp/database/VorlesungsplanDatabaseHelper.java index f4d5c8a..8fc5f95 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/database/VorlesungsplanDatabaseHelper.java +++ b/app/src/main/java/de/dhbwloe/campusapp/database/VorlesungsplanDatabaseHelper.java @@ -420,4 +420,61 @@ public class VorlesungsplanDatabaseHelper { return groupsArr; } + public CourseEvent[] getCourseExamEvents(String coursename, long timeFrom, long timeTo) { + String[] whereArgs = new String[] { + coursename, + Long.toString(timeFrom), + Long.toString(timeTo) + }; + Cursor resultSet = database.rawQuery( + "SELECT " + + "Id, CourseName, UniqueId, SequenceId, CourseCalendarEvent.EventFrom, CourseCalendarEvent.EventTo, EventTitle, EventLocation, EventStatus, RecurRule, ExcludeDates, CourseGroupId, EventType " + + "FROM " + + "CourseCalendarEvent " + + "LEFT JOIN " + + "CourseCalendar ON CourseCalendar.Id = CourseCalendarEvent.EventId "+ + "WHERE " + + "CourseName = ? AND CourseCalendarEvent.EventTo >= ? AND CourseCalendarEvent.EventFrom <= ? AND EventType = 2", + whereArgs); + ArrayList events = new ArrayList(); + if(resultSet.moveToFirst()) { + int[] columnIndexes = { + resultSet.getColumnIndex("Id"), + resultSet.getColumnIndex("CourseName"), + resultSet.getColumnIndex("UniqueId"), + resultSet.getColumnIndex("SequenceId"), + resultSet.getColumnIndex("EventFrom"), + resultSet.getColumnIndex("EventTo"), + resultSet.getColumnIndex("EventTitle"), + resultSet.getColumnIndex("EventLocation"), + resultSet.getColumnIndex("EventStatus"), + resultSet.getColumnIndex("RecurRule"), + resultSet.getColumnIndex("ExcludeDates"), + resultSet.getColumnIndex("CourseGroupId"), + resultSet.getColumnIndex("EventType") + }; + do { + int groupId = resultSet.getInt(columnIndexes[11]); + CourseGroup group; + if(groupId > 0) + group = CourseGroup.GetCourseGroupById(AppContext.getDatabaseManager(), groupId); + else + group = null; + + int eventType = resultSet.getInt(columnIndexes[12]); + + CourseEvent event = new CourseEvent(resultSet.getInt(columnIndexes[0]), resultSet.getString(columnIndexes[1]), resultSet.getString(columnIndexes[2]), resultSet.getInt(columnIndexes[3]), + resultSet.getLong(columnIndexes[4]), resultSet.getLong(columnIndexes[5]), resultSet.getString(columnIndexes[6]), resultSet.getString(columnIndexes[7]), + resultSet.getString(columnIndexes[8]), resultSet.getString(columnIndexes[9]), resultSet.getString(columnIndexes[10]), group, eventType); + + events.add(event); + } while (resultSet.moveToNext()); + } + resultSet.close(); + + CourseEvent[] eventsArr = new CourseEvent[events.size()]; + eventsArr = events.toArray(eventsArr); + return eventsArr; + } + } diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExams.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExams.java index 9dc6c02..1d089c0 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExams.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExams.java @@ -6,15 +6,24 @@ import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ListView; + +import java.util.ArrayList; +import java.util.Date; import de.dhbwloe.campusapp.CampusAppFragment; import de.dhbwloe.campusapp.R; +import de.dhbwloe.campusapp.vorlesungen.CourseEvent; +import de.dhbwloe.campusapp.vorlesungen.CourseGroup; /** * A simple {@link Fragment} subclass. */ public class VorlesungsplanExams extends CampusAppFragment implements Vorlesungsplan.VorlesungsplanFragment { - + private String coursename; + private View view; + private VorlesungsplanExamsListAdapter listAdapter; + private ArrayList listItems = new ArrayList(); public VorlesungsplanExams() { // Required empty public constructor @@ -24,8 +33,18 @@ public class VorlesungsplanExams extends CampusAppFragment implements Vorlesungs @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_vorlesungsplan_exams, container, false); + String kursTag = AppContext.getDatabaseManager().getRuntimeCache("CourseName"); + if(kursTag == null || kursTag.isEmpty()) + return null; + coursename = kursTag; + + view = inflater.inflate(R.layout.fragment_vorlesungsplan_exams, container, false); + + ListView listView = (ListView) view.findViewById(R.id.listView); + listAdapter = new VorlesungsplanExamsListAdapter(view.getContext(), R.layout.fragment_vorlesungsplan_exams_exam, listItems); + listView.setAdapter(listAdapter); + + return view; } @Override @@ -33,4 +52,32 @@ public class VorlesungsplanExams extends CampusAppFragment implements Vorlesungs } + @Override + public void onResume() { + super.onResume(); + if(coursename != null) + updateCoursesList(); + } + + private void updateCoursesList() { + long now = (new Date()).getTime()/1000; + + CourseEvent[] events = AppContext.getDatabaseManager().getCourseExamEvents(coursename, now, now + (86400 * 30 * 3)); // next 3 month + listItems.clear(); + for(CourseEvent event : events) { + + VorlesungsplanExamsListItem item = new VorlesungsplanExamsListItem( + event.getEventId(), + coursename, + event.getEventTitle(), + event.getEventFrom(), + event.getEventTo(), + 1 + ); + listItems.add(item); + } + if(listAdapter != null) + listAdapter.notifyDataSetChanged(); + } + } diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExamsListAdapter.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExamsListAdapter.java new file mode 100644 index 0000000..a880be8 --- /dev/null +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExamsListAdapter.java @@ -0,0 +1,69 @@ +package de.dhbwloe.campusapp.fragments; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.TextView; + +import java.util.ArrayList; + +import de.dhbwloe.campusapp.CampusAppContext; +import de.dhbwloe.campusapp.R; + +/** + * Created by pk910 on 27.02.2016. + */ +public class VorlesungsplanExamsListAdapter extends ArrayAdapter { + private Context context; + private int layoutResourceId; + private ArrayList data = new ArrayList(); + + public VorlesungsplanExamsListAdapter(Context context, int layoutResourceId, ArrayList data) { + super(context, layoutResourceId, data); + this.layoutResourceId = layoutResourceId; + this.context = context; + this.data = data; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View row = convertView; + RecordHolder holder = null; + + if (row == null) { + LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + row = inflater.inflate(layoutResourceId, parent, false); + + holder = new RecordHolder(row); + row.setTag(holder); + } else { + holder = (RecordHolder) row.getTag(); + } + + final VorlesungsplanExamsListAdapter that = this; + final VorlesungsplanExamsListItem item = data.get(position); + + holder.groupName.setText(item.getGroupName()); + holder.eventDate.setText(item.getEventDate()); + holder.eventStart.setText(item.getEventStart()); + holder.eventEnd.setText(item.getEventEnd()); + + return row; + } + + static class RecordHolder { + TextView groupName; + TextView eventDate; + TextView eventStart; + TextView eventEnd; + + public RecordHolder(View view) { + this.groupName = (TextView) view.findViewById(R.id.courseTitle); + this.eventDate = (TextView) view.findViewById(R.id.eventDate); + this.eventStart = (TextView) view.findViewById(R.id.eventStart); + this.eventEnd = (TextView) view.findViewById(R.id.eventEnd); + } + } +} diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExamsListItem.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExamsListItem.java new file mode 100644 index 0000000..06d3343 --- /dev/null +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExamsListItem.java @@ -0,0 +1,67 @@ +package de.dhbwloe.campusapp.fragments; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import de.dhbwloe.campusapp.CampusAppContext; +import de.dhbwloe.campusapp.R; + +/** + * Created by pk910 on 28.02.2016. + */ +public class VorlesungsplanExamsListItem { + private int groupId; + private String courseName; + private String groupName; + private long eventStart, eventEnd; + private int eventCount; + + public VorlesungsplanExamsListItem(int groupid, String coursename, String groupname, long eventstart, long eventend, int eventcount) { + groupId = groupid; + courseName = coursename; + groupName = groupname; + eventStart = eventstart; + eventEnd = eventend; + eventCount = eventcount; + } + + public int getGroupId() { + return groupId; + } + + public String getCourseName() { + return courseName; + } + + public String getGroupName() { + return groupName; + } + + public String getEventDate() { + if(eventStart == 0) + return null; + SimpleDateFormat dateFormat = new SimpleDateFormat(CampusAppContext.getInstance().getResString(R.string.timeformat_vorlesungsplan_date)); + Date date = new Date(eventStart*1000); + return dateFormat.format(date); + } + + public String getEventStart() { + if(eventStart == 0) + return null; + SimpleDateFormat dateFormat = new SimpleDateFormat(CampusAppContext.getInstance().getResString(R.string.timeformat_vorlesungsplan_time)); + Date date = new Date(eventStart*1000); + return dateFormat.format(date); + } + + public String getEventEnd() { + if(eventEnd == 0) + return null; + SimpleDateFormat dateFormat = new SimpleDateFormat(CampusAppContext.getInstance().getResString(R.string.timeformat_vorlesungsplan_time)); + Date date = new Date(eventEnd*1000); + return dateFormat.format(date); + } + + public int getEventCount() { + return eventCount; + } +} diff --git a/app/src/main/res/layout/fragment_vorlesungsplan_exams.xml b/app/src/main/res/layout/fragment_vorlesungsplan_exams.xml index b7fe84e..6bfc77a 100644 --- a/app/src/main/res/layout/fragment_vorlesungsplan_exams.xml +++ b/app/src/main/res/layout/fragment_vorlesungsplan_exams.xml @@ -1,13 +1,14 @@ - + tools:context="de.dhbwloe.campusapp.fragments.VorlesungsplanGroups" + android:orientation="vertical"> - - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_vorlesungsplan_exams_exam.xml b/app/src/main/res/layout/fragment_vorlesungsplan_exams_exam.xml new file mode 100644 index 0000000..15cb59b --- /dev/null +++ b/app/src/main/res/layout/fragment_vorlesungsplan_exams_exam.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 523a4cd..4a394bd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -86,6 +86,10 @@ Klausur: Präsentation: + Datum: + Beginn: + Ende: + Impressum Campus App Diese App wurde im Rahmen der Vorlesung \n\'Entwicklung mobiler Apps\' erstellt. -- 2.20.1