Klausurübersicht hinzugefügt
authorpk910 <philipp@pk910.de>
Sat, 27 Feb 2016 23:42:27 +0000 (00:42 +0100)
committerpk910 <philipp@pk910.de>
Sat, 27 Feb 2016 23:42:27 +0000 (00:42 +0100)
app/src/main/java/de/dhbwloe/campusapp/database/DatabaseManager.java
app/src/main/java/de/dhbwloe/campusapp/database/VorlesungsplanDatabaseHelper.java
app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExams.java
app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExamsListAdapter.java [new file with mode: 0644]
app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanExamsListItem.java [new file with mode: 0644]
app/src/main/res/layout/fragment_vorlesungsplan_exams.xml
app/src/main/res/layout/fragment_vorlesungsplan_exams_exam.xml [new file with mode: 0644]
app/src/main/res/values/strings.xml

index fed7eaca8bbd92f2547c9d01c67b279c44e9cff4..06cf972fb5aa9c9f91626ec636b442c07ed778fa 100644 (file)
@@ -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)
index f4d5c8a99ba5fb717d5099c34f8536af0a80ff2d..8fc5f9569edc11dc2d67b8e531303c7ff85d4ef0 100644 (file)
@@ -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<CourseEvent> events = new ArrayList<CourseEvent>();
+        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;
+    }
+
 }
index 9dc6c02472a25d3ea9831dff8cdd1dde4b64ee4e..1d089c0a3675808b44ee4b826366c7678fc755b6 100644 (file)
@@ -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<VorlesungsplanExamsListItem> listItems = new ArrayList<VorlesungsplanExamsListItem>();
 
     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 (file)
index 0000000..a880be8
--- /dev/null
@@ -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<VorlesungsplanExamsListItem> {
+    private Context context;
+    private int layoutResourceId;
+    private ArrayList<VorlesungsplanExamsListItem> data = new ArrayList<VorlesungsplanExamsListItem>();
+
+    public VorlesungsplanExamsListAdapter(Context context, int layoutResourceId, ArrayList<VorlesungsplanExamsListItem> 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 (file)
index 0000000..06d3343
--- /dev/null
@@ -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;
+    }
+}
index b7fe84e0a00e154e5a2d18a6e9e9e23a8790ae37..6bfc77a932195cb413bd7cd71d329471e56ece87 100644 (file)
@@ -1,13 +1,14 @@
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context="de.dhbwloe.campusapp.fragments.VorlesungsplanExams">
+    tools:context="de.dhbwloe.campusapp.fragments.VorlesungsplanGroups"
+    android:orientation="vertical">
 
-    <!-- TODO: Update blank fragment layout -->
-    <TextView
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:text="@string/hello_blank_fragment" />
 
-</FrameLayout>
+    <ListView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:id="@+id/listView"
+        android:layout_gravity="center_horizontal" />
+</LinearLayout>
\ 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 (file)
index 0000000..15cb59b
--- /dev/null
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
+        android:id="@+id/card_upcomingday"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_margin="8dp"
+        card_view:cardCornerRadius="5dp">
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:padding="8dp">
+
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="{title}"
+                android:id="@+id/courseTitle"
+                android:layout_alignParentTop="true"
+                android:layout_alignParentLeft="true"
+                android:layout_alignParentStart="true" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/vorlesungsplan_exam_date"
+                android:id="@+id/textView16"
+                android:layout_below="@+id/courseTitle"
+                android:layout_marginLeft="12dp"
+                android:layout_marginTop="8dp" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/vorlesungsplan_exam_start"
+                android:id="@+id/textView17"
+                android:layout_below="@+id/textView16"
+                android:layout_marginLeft="12dp" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/vorlesungsplan_exam_end"
+                android:id="@+id/klausurName"
+                android:layout_below="@+id/textView17"
+                android:layout_marginLeft="12dp" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="{date}"
+                android:id="@+id/eventDate"
+                android:layout_alignBottom="@+id/textView16"
+                android:layout_toRightOf="@+id/textView16"
+                android:layout_toEndOf="@+id/textView16"
+                android:layout_marginLeft="16dp" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="{date}"
+                android:id="@+id/eventStart"
+                android:layout_alignBottom="@+id/textView17"
+                android:layout_alignLeft="@+id/eventDate"
+                android:layout_alignStart="@+id/eventDate" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="{date}"
+                android:id="@+id/eventEnd"
+                android:layout_alignBottom="@+id/klausurName"
+                android:layout_alignLeft="@+id/eventDate"
+                android:layout_alignStart="@+id/eventDate" />
+
+        </RelativeLayout>
+    </android.support.v7.widget.CardView>
+
+</RelativeLayout>
\ No newline at end of file
index 523a4cd54a50fe3038aecaf2bef62bb21bbb7cf5..4a394bde12691fd2001e29e1e62019737eb4b3b1 100644 (file)
     <string name="vorlesungsplan_groups_klausur">Klausur:</string>
     <string name="vorlesungsplan_groups_praesi">Präsentation:</string>
 
+    <string name="vorlesungsplan_exam_date">Datum:</string>
+    <string name="vorlesungsplan_exam_start">Beginn:</string>
+    <string name="vorlesungsplan_exam_end">Ende:</string>
+
     <string name="impressum_title">Impressum</string>
     <string name="impressum_h1">Campus App</string>
     <string name="impressum_about">Diese App wurde im Rahmen der Vorlesung \n\'Entwicklung mobiler Apps\' erstellt.</string>