From c72cd8b6a72935df67e500f320a0ba3addc969ee Mon Sep 17 00:00:00 2001
From: Kaloyan <kd1u18@soton.ac.uk>
Date: Sat, 23 Feb 2019 23:14:44 +0000
Subject: [PATCH] File organization

---
 GUI/MainActivity.java        | 101 +++++++++++++++++++++++++++++++++++
 functionality/Activity.java  |  33 ++++++++++++
 functionality/Complaint.java |  13 +++++
 functionality/Event.java     |  47 ++++++++++++++++
 functionality/Group.java     |  28 ++++++++++
 functionality/User.java      |  30 +++++++++++
 6 files changed, 252 insertions(+)
 create mode 100644 GUI/MainActivity.java
 create mode 100644 functionality/Activity.java
 create mode 100644 functionality/Complaint.java
 create mode 100644 functionality/Event.java
 create mode 100644 functionality/Group.java
 create mode 100644 functionality/User.java

diff --git a/GUI/MainActivity.java b/GUI/MainActivity.java
new file mode 100644
index 0000000..e5de3c4
--- /dev/null
+++ b/GUI/MainActivity.java
@@ -0,0 +1,101 @@
+package com.example.uni_study;
+
+import android.os.Bundle;
+import android.support.design.widget.FloatingActionButton;
+import android.support.design.widget.Snackbar;
+import android.view.View;
+import android.support.design.widget.NavigationView;
+import android.support.v4.view.GravityCompat;
+import android.support.v4.widget.DrawerLayout;
+import android.support.v7.app.ActionBarDrawerToggle;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.view.Menu;
+import android.view.MenuItem;
+
+public class MainActivity extends AppCompatActivity
+        implements NavigationView.OnNavigationItemSelectedListener {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+        setSupportActionBar(toolbar);
+
+        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
+        fab.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
+                        .setAction("Action", null).show();
+            }
+        });
+
+        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
+        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
+                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
+        drawer.addDrawerListener(toggle);
+        toggle.syncState();
+
+        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
+        navigationView.setNavigationItemSelectedListener(this);
+    }
+
+    @Override
+    public void onBackPressed() {
+        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
+        if (drawer.isDrawerOpen(GravityCompat.START)) {
+            drawer.closeDrawer(GravityCompat.START);
+        } else {
+            super.onBackPressed();
+        }
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        // Inflate the menu; this adds items to the action bar if it is present.
+        getMenuInflater().inflate(R.menu.main, menu);
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        // Handle action bar item clicks here. The action bar will
+        // automatically handle clicks on the Home/Up button, so long
+        // as you specify a parent activity in AndroidManifest.xml.
+        int id = item.getItemId();
+
+        //noinspection SimplifiableIfStatement
+        if (id == R.id.action_settings) {
+            return true;
+        }
+
+        return super.onOptionsItemSelected(item);
+    }
+
+    @SuppressWarnings("StatementWithEmptyBody")
+    @Override
+    public boolean onNavigationItemSelected(MenuItem item) {
+        // Handle navigation view item clicks here.
+        int id = item.getItemId();
+
+        if (id == R.id.nav_camera) {
+            // Handle the camera action
+        } else if (id == R.id.nav_gallery) {
+
+        } else if (id == R.id.nav_slideshow) {
+
+        } else if (id == R.id.nav_manage) {
+
+        } else if (id == R.id.nav_share) {
+
+        } else if (id == R.id.nav_send) {
+
+        }
+
+        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
+        drawer.closeDrawer(GravityCompat.START);
+        return true;
+    }
+}
diff --git a/functionality/Activity.java b/functionality/Activity.java
new file mode 100644
index 0000000..dee64bf
--- /dev/null
+++ b/functionality/Activity.java
@@ -0,0 +1,33 @@
+import java.util.ArrayList;
+
+public abstract class Activity {
+//    private String type;
+    private String title;
+    protected ArrayList<Group> groups;
+    private String description;
+    private User host;
+
+    public Activity (/*String type,*/ String title, String description, User host){
+        /*this.type = type;*/
+        this.title = title;
+        this.description = description;
+        this.host = host;
+        groups = new ArrayList<Group>();
+    }
+
+    ArrayList<Group> getGroups(){
+        return groups;
+    }
+
+    String getTitle(){
+        return title;
+    }
+
+    User getHost(){
+        return host;
+    }
+
+    String getDescription(){
+        return description;
+    }
+}
diff --git a/functionality/Complaint.java b/functionality/Complaint.java
new file mode 100644
index 0000000..21de7e6
--- /dev/null
+++ b/functionality/Complaint.java
@@ -0,0 +1,13 @@
+import java.util.Date;
+
+public class Complaint extends Activity {
+    private boolean anonymous;
+    public Complaint (/*String type,*/ String title, String description, User host, boolean anonymous){
+        super(/*type,*/title,description,host);
+        this.anonymous = anonymous;
+    }
+
+    boolean isAnonymous(){
+        return anonymous;
+    }
+}
\ No newline at end of file
diff --git a/functionality/Event.java b/functionality/Event.java
new file mode 100644
index 0000000..e87ec3e
--- /dev/null
+++ b/functionality/Event.java
@@ -0,0 +1,47 @@
+import java.util.ArrayList;
+import java.util.Date;
+
+public class Event extends Activity {
+    Date date;
+    String location;
+    public Event (/*String type,*/ String title, String description, User host, Date date, String location){
+        super(/*type,*/title,description,host);
+        this.date = date;
+        this.location = location;
+    }
+
+    void addGroup(Group group){
+        groups.add(group);
+    }
+
+    void addGroups(ArrayList<Group> groupsToAdd){
+        groupsToAdd.forEach((g) -> groups.add(g));
+        /*for (Group g : groupsToAdd){
+            groups.add(g);
+        }*/
+    }
+
+    void removeGroup(Group group){
+        groups.remove(group);
+    }
+
+    void removerGroups(ArrayList<Group> groupsToRemove){
+        groupsToRemove.forEach((g) -> groups.remove(g));
+    }
+
+    void setDate (Date date){
+        this.date = date;
+    }
+
+    Date getDate(){
+        return date;
+    }
+
+    void setLocation(String location){
+        this.location = location;
+    }
+
+    String getLocation(){
+        return location;
+    }
+}
diff --git a/functionality/Group.java b/functionality/Group.java
new file mode 100644
index 0000000..e419b79
--- /dev/null
+++ b/functionality/Group.java
@@ -0,0 +1,28 @@
+import java.util.ArrayList;
+
+/*
+    Represents a Group of Users.
+ */
+public class Group {
+
+    private String groupID;
+    private ArrayList<User> users;
+
+    public void addUser(User user) {
+        users.add(user);
+    }
+
+    public void removeUser(User u) {
+        users.remove(u);
+    }
+
+    //Getters
+
+    public String getID() {
+        return groupID;
+    }
+
+    public ArrayList<User> getUsers() {
+        return users;
+    }
+}
\ No newline at end of file
diff --git a/functionality/User.java b/functionality/User.java
new file mode 100644
index 0000000..4198dbe
--- /dev/null
+++ b/functionality/User.java
@@ -0,0 +1,30 @@
+import java.util.ArrayList;
+
+/*
+    Represents a single User of the app.
+ */
+
+public class User {
+
+    private String userName;
+    private String password;
+    private String screenName;
+    private ArrayList<Group> groups;
+
+    //Class constructor
+    public User(String userName, String password, String screenName) {
+        this.userName = userName;
+        this.password = password;
+        this.screenName = screenName;
+    }
+
+    //Getters
+
+    public String getScreenName() {
+        return screenName;
+    }
+
+    public ArrayList<Group> getGroups() {
+        return groups;
+    }
+}
-- 
GitLab