diff --git a/app/build.gradle b/app/build.gradle
index 9ede0a1..10200c9 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -28,7 +28,11 @@ dependencies {
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
+
+ //Room dependencies
+ implementation 'android.arch.persistence.room:runtime:1.0.0'
+ annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'
// butter knife
- compile 'com.jakewharton:butterknife:8.8.1'
+ implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ba96da7..f21b1bd 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -16,8 +16,8 @@
-
-
+
+
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/BranchPage/HomeContract.java b/app/src/main/java/com/example/androidtechies/majorproject/BranchPage/HomeContract.java
new file mode 100644
index 0000000..e08afb7
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/BranchPage/HomeContract.java
@@ -0,0 +1,19 @@
+package com.example.androidtechies.majorproject.BranchPage;
+
+
+import com.example.androidtechies.majorproject.Data.ProjectModel;
+
+import java.util.List;
+
+public interface HomeContract {
+
+ interface IHomePresenter {
+ void openNewActivity(String branch);
+ void insertData(List projects);
+ void deleteAllData();
+ }
+
+ interface IHomeView {
+ void showNewActivity(String branch);
+ }
+}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/BranchPage/HomePresenter.java b/app/src/main/java/com/example/androidtechies/majorproject/BranchPage/HomePresenter.java
new file mode 100644
index 0000000..68b82f5
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/BranchPage/HomePresenter.java
@@ -0,0 +1,42 @@
+package com.example.androidtechies.majorproject.BranchPage;
+
+import com.example.androidtechies.majorproject.Data.DataManager;
+import com.example.androidtechies.majorproject.Data.ProjectModel;
+
+import java.util.List;
+
+public class HomePresenter implements HomeContract.IHomePresenter{
+
+ private final DataManager manager;
+ private HomeContract.IHomeView view;
+
+ public HomePresenter(HomeContract.IHomeView view, DataManager dataSource) {
+ this.view = view;
+ this.manager =dataSource;
+ }
+
+ /*
+ Called on any of the four button clicks , receives branch value & passes it to view function
+ */
+ @Override
+ public void openNewActivity(String branchValue) {
+ view.showNewActivity(branchValue);
+
+ }
+
+ /*
+ Inserts value into sqlite database, interacts with Datamanger only
+ */
+ @Override
+ public void insertData(List projects) {
+ manager.saveProject(projects);
+ }
+
+ /*
+ Currently, only logs , not implemented yet
+ */
+ @Override
+ public void deleteAllData() {
+ manager.nukeTable();
+ }
+}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/BranchPage/HomeScreenActivity.java b/app/src/main/java/com/example/androidtechies/majorproject/BranchPage/HomeScreenActivity.java
new file mode 100644
index 0000000..526288b
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/BranchPage/HomeScreenActivity.java
@@ -0,0 +1,107 @@
+package com.example.androidtechies.majorproject.BranchPage;
+
+import android.content.Intent;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+
+import com.example.androidtechies.majorproject.Data.DataManager;
+import com.example.androidtechies.majorproject.Data.ProjectModel;
+import com.example.androidtechies.majorproject.ListProjects.ListProjectActivity;
+import com.example.androidtechies.majorproject.R;
+import com.example.androidtechies.majorproject.Utils.InjectionClass;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+public class HomeScreenActivity extends AppCompatActivity implements View.OnClickListener,HomeContract.IHomeView{
+ public static final String HomeScreenTag = "HomeScreenActivity";
+
+ @BindView(R.id.cseTag)
+ Button cseButton;
+ @BindView(R.id.itTag)
+ Button itButton;
+ @BindView(R.id.eceTag)
+ Button eceButton;
+ @BindView(R.id.eeeTag)
+ Button eeeButton;
+
+ HomePresenter presenter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_home_screen);
+
+ ButterKnife.bind(this);
+ DataManager source = InjectionClass.provideDataSource(this);
+ presenter = new HomePresenter(this , source);
+
+ //checking first time app starting
+ if(source.checkFirstTime()) {
+ source.setFirstTime(false);
+ Log.d(HomeScreenTag, "first time run");
+ //populating sqlite database
+ populateDatabase();
+ }
+
+ //setting listeners on all buttons
+ cseButton.setOnClickListener(this);
+ itButton.setOnClickListener(this);
+ eceButton.setOnClickListener(this);
+ eeeButton.setOnClickListener(this);
+ }
+
+
+ /*
+ Function which takes values from string-arrays & call insert function to insert into database
+ */
+ //Todo replace team name with modules
+ private void populateDatabase() {
+ List arrayList = new ArrayList<>();
+ int lengthIt = getResources().getStringArray(R.array.project_titles_it).length;
+ ProjectModel model;
+ for(int i=0 ; i projects) {
+ dbSource.saveProject(projects);
+ }
+
+ @Override
+ public long getCountProjects() {
+
+ return dbSource.getCountProjects();
+ }
+
+ @Override
+ public void nukeTable() {
+ LogAndToastUtil.Logging("nuke table function called!");
+ }
+}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/Data/IDataManager.java b/app/src/main/java/com/example/androidtechies/majorproject/Data/IDataManager.java
new file mode 100644
index 0000000..8017eb4
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/Data/IDataManager.java
@@ -0,0 +1,8 @@
+package com.example.androidtechies.majorproject.Data;
+
+import com.example.androidtechies.majorproject.Data.db.IDbSource;
+import com.example.androidtechies.majorproject.Data.pref.IPrefHelper;
+
+public interface IDataManager extends IPrefHelper, IDbSource {
+
+}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/Data/ProjectModel.java b/app/src/main/java/com/example/androidtechies/majorproject/Data/ProjectModel.java
new file mode 100644
index 0000000..c27865e
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/Data/ProjectModel.java
@@ -0,0 +1,102 @@
+package com.example.androidtechies.majorproject.Data;
+
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class ProjectModel implements Parcelable {
+
+ private String projectBranch;
+ private String titleOfProject;
+ private String introOfProject;
+ private String technologyUsed;
+ private String modulesOfProject;
+
+
+ public ProjectModel(String projectBranch, String titleOfProject, String introOfProject, String technologyUsed, String modulesOfProject) {
+ this.projectBranch = projectBranch;
+ this.titleOfProject = titleOfProject;
+ this.introOfProject = introOfProject;
+ this.technologyUsed = technologyUsed;
+ this.modulesOfProject = modulesOfProject;
+ }
+
+ /*
+ Getters and Setters
+ */
+ public String getProjectBranch() {
+ return projectBranch;
+ }
+
+ public void setProjectBranch(String projectBranch) {
+ this.projectBranch = projectBranch;
+ }
+
+ public String getTitleOfProject() {
+ return titleOfProject;
+ }
+
+ public void setTitleOfProject(String titleOfProject) {
+ this.titleOfProject = titleOfProject;
+ }
+
+ public String getIntroOfProject() {
+ return introOfProject;
+ }
+
+ public void setIntroOfProject(String introOfProject) {
+ this.introOfProject = introOfProject;
+ }
+
+ public String getTechnologyUsed() {
+ return technologyUsed;
+ }
+
+ public void setTechnologyUsed(String technologyUsed) {
+ this.technologyUsed = technologyUsed;
+ }
+
+ public String getModulesOfProject() {
+ return modulesOfProject;
+ }
+
+ public void setModulesOfProject(String modulesOfProject) {
+ this.modulesOfProject = modulesOfProject;
+ }
+
+ /*
+ parcellable functions
+ */
+
+ @Override
+ public int describeContents() {
+ return hashCode();
+ }
+
+ @Override
+ public void writeToParcel(Parcel parcel, int flags) {
+ parcel.writeString(titleOfProject);
+ parcel.writeString(introOfProject);
+ parcel.writeString(technologyUsed);
+ parcel.writeString(modulesOfProject);
+ }
+
+ protected ProjectModel(Parcel in) {
+ titleOfProject = in.readString();
+ introOfProject = in.readString();
+ technologyUsed = in.readString();
+ modulesOfProject = in.readString();
+ }
+
+ public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
+ @Override
+ public ProjectModel createFromParcel(Parcel in) {
+ return new ProjectModel(in);
+ }
+
+ @Override
+ public ProjectModel[] newArray(int size) {
+ return new ProjectModel[0];
+ }
+ };
+ }
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/Data/db/DbSource.java b/app/src/main/java/com/example/androidtechies/majorproject/Data/db/DbSource.java
new file mode 100644
index 0000000..968c30e
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/Data/db/DbSource.java
@@ -0,0 +1,79 @@
+package com.example.androidtechies.majorproject.Data.db;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.DatabaseUtils;
+import android.database.sqlite.SQLiteDatabase;
+import android.support.annotation.NonNull;
+
+import com.example.androidtechies.majorproject.Data.ProjectModel;
+import com.example.androidtechies.majorproject.Data.db.ProjectContract.ProjectEntry;
+
+import java.util.List;
+
+public class DbSource implements IDbSource {
+
+ private static DbSource INSTANCE;
+ private static final Object sLock = new Object();
+ public static ProjectDbHelper dbHelper;
+
+ public DbSource(Context context) {
+ dbHelper = new ProjectDbHelper(context);
+ }
+
+ public static DbSource getInstance(Context context) {
+ synchronized (sLock) {
+ if (INSTANCE == null) {
+ INSTANCE =
+ new DbSource(context);
+ }
+ return INSTANCE;
+ }
+ }
+
+ @Override
+ public Cursor getBranchProjects(@NonNull String branch) {
+ SQLiteDatabase db = dbHelper.getReadableDatabase();
+ String[] columns = new String[]{ProjectEntry.COLUMN_PROJECT_TITLE, ProjectEntry.COLUMN_PROJECT_INTRO,
+ ProjectEntry.COLUMN_TECH_USED, ProjectEntry.COLUMN_MODULES_USED};
+ String whereClause = ProjectEntry.COLUMN_BRANCH + " = ?";
+ String[] whereArgs = new String[]{branch};
+
+ return db.query(ProjectEntry.TABLE_NAME, columns, whereClause, whereArgs,
+ null, null, ProjectEntry._ID);
+ }
+
+ @Override
+ public void saveProject(@NonNull List projects) {
+ SQLiteDatabase db = dbHelper.getWritableDatabase();
+ ContentValues values = new ContentValues();
+ db.beginTransaction();
+ try{
+ for (ProjectModel project: projects){
+ values.put(ProjectEntry.COLUMN_BRANCH,project.getProjectBranch());
+ values.put(ProjectEntry.COLUMN_PROJECT_TITLE,project.getTitleOfProject());
+ values.put(ProjectEntry.COLUMN_PROJECT_INTRO,project.getIntroOfProject());
+ values.put(ProjectEntry.COLUMN_TECH_USED,project.getTechnologyUsed());
+ values.put(ProjectEntry.COLUMN_MODULES_USED,project.getModulesOfProject());
+ db.insert(ProjectEntry.TABLE_NAME, null, values);
+ }
+ db.setTransactionSuccessful();
+ }finally {
+ db.endTransaction();
+ }
+
+ }
+
+ @Override
+ public long getCountProjects() {
+ SQLiteDatabase db = dbHelper.getReadableDatabase();
+ long count = DatabaseUtils.queryNumEntries(db, ProjectEntry.TABLE_NAME);
+ return count;
+ }
+
+ @Override
+ public void nukeTable() {
+
+ }
+}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/Data/db/IDbSource.java b/app/src/main/java/com/example/androidtechies/majorproject/Data/db/IDbSource.java
new file mode 100644
index 0000000..735ebf2
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/Data/db/IDbSource.java
@@ -0,0 +1,24 @@
+package com.example.androidtechies.majorproject.Data.db;
+
+import android.database.Cursor;
+import android.support.annotation.NonNull;
+
+import com.example.androidtechies.majorproject.Data.ProjectModel;
+
+import java.util.List;
+
+public interface IDbSource {
+
+ interface LoadDataCallBack {
+ void onBranchDataLoaded(Cursor cursor);
+ void onDataNotAvailable();
+ }
+ Cursor getBranchProjects(@NonNull String branch);
+
+ void saveProject(@NonNull List projects);
+
+ long getCountProjects();
+
+ void nukeTable();
+
+}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/Data/db/ProjectContract.java b/app/src/main/java/com/example/androidtechies/majorproject/Data/db/ProjectContract.java
new file mode 100644
index 0000000..34310bf
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/Data/db/ProjectContract.java
@@ -0,0 +1,15 @@
+package com.example.androidtechies.majorproject.Data.db;
+
+import android.provider.BaseColumns;
+
+public class ProjectContract {
+
+ public static final class ProjectEntry implements BaseColumns {
+ public static final String TABLE_NAME = "project_table";
+ public static final String COLUMN_BRANCH = "branch";
+ public static final String COLUMN_PROJECT_TITLE = "title_project";
+ public static final String COLUMN_PROJECT_INTRO = "intro_project";
+ public static final String COLUMN_TECH_USED = "technology_used";
+ public static final String COLUMN_MODULES_USED = "modules_used";
+ }
+}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/Data/db/ProjectDbHelper.java b/app/src/main/java/com/example/androidtechies/majorproject/Data/db/ProjectDbHelper.java
new file mode 100644
index 0000000..c5ff193
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/Data/db/ProjectDbHelper.java
@@ -0,0 +1,38 @@
+package com.example.androidtechies.majorproject.Data.db;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+import com.example.androidtechies.majorproject.Data.db.ProjectContract.ProjectEntry;
+import com.example.androidtechies.majorproject.Utils.LogAndToastUtil;
+
+public class ProjectDbHelper extends SQLiteOpenHelper {
+
+ private static final String DATABASE_NAME = "project-database";
+ private static final int DATABASE_VERSION = 1;
+
+ public ProjectDbHelper(Context context) {
+ super(context, DATABASE_NAME, null, DATABASE_VERSION);
+ }
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ final String CREATE_DATABASE_QUERY = "CREATE TABLE " + ProjectEntry.TABLE_NAME + "("
+ + ProjectEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ + ProjectEntry.COLUMN_BRANCH + " TEXT NOT NULL, "
+ + ProjectEntry.COLUMN_PROJECT_TITLE + " TEXT NOT NULL, "
+ + ProjectEntry.COLUMN_PROJECT_INTRO + " TEXT, "
+ + ProjectEntry.COLUMN_TECH_USED + " TEXT, "
+ + ProjectEntry.COLUMN_MODULES_USED + " TEXT"
+ + ");";
+ LogAndToastUtil.Logging(CREATE_DATABASE_QUERY);
+ db.execSQL(CREATE_DATABASE_QUERY);
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ db.execSQL("DROP TABLE IF EXISTS " + ProjectEntry.TABLE_NAME);
+ onCreate(db);
+ }
+}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/Data/pref/IPrefHelper.java b/app/src/main/java/com/example/androidtechies/majorproject/Data/pref/IPrefHelper.java
new file mode 100644
index 0000000..bcf2dea
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/Data/pref/IPrefHelper.java
@@ -0,0 +1,6 @@
+package com.example.androidtechies.majorproject.Data.pref;
+
+public interface IPrefHelper {
+ boolean checkFirstTime();
+ void setFirstTime(boolean value);
+}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/Data/pref/PrefHelper.java b/app/src/main/java/com/example/androidtechies/majorproject/Data/pref/PrefHelper.java
new file mode 100644
index 0000000..7e0e997
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/Data/pref/PrefHelper.java
@@ -0,0 +1,25 @@
+package com.example.androidtechies.majorproject.Data.pref;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+public class PrefHelper implements IPrefHelper {
+
+ private static final String PREF_KEY_CHECK_FIRST_TIME = "IS_THIS_FIRST_RUN";
+ private final SharedPreferences mPrefs;
+
+ public PrefHelper(Context context, String prefFileName) {
+ mPrefs = context.getSharedPreferences(prefFileName, Context.MODE_PRIVATE);
+ }
+
+ @Override
+ public boolean checkFirstTime() {
+ return mPrefs.getBoolean(PREF_KEY_CHECK_FIRST_TIME, true);
+ }
+
+ @Override
+ public void setFirstTime(boolean value) {
+ mPrefs.edit().putBoolean(PREF_KEY_CHECK_FIRST_TIME, value).apply();
+ }
+
+}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/DescriptionActivity.java b/app/src/main/java/com/example/androidtechies/majorproject/DescriptionActivity.java
index 6c842fa..32ff866 100644
--- a/app/src/main/java/com/example/androidtechies/majorproject/DescriptionActivity.java
+++ b/app/src/main/java/com/example/androidtechies/majorproject/DescriptionActivity.java
@@ -7,6 +7,9 @@
import android.util.Log;
import android.widget.TextView;
+import com.example.androidtechies.majorproject.Data.ProjectModel;
+import com.example.androidtechies.majorproject.Utils.LogAndToastUtil;
+
import butterknife.BindView;
import butterknife.ButterKnife;
@@ -16,6 +19,8 @@ public class DescriptionActivity extends AppCompatActivity {
TextView introDescription;
@BindView(R.id.tech_brief)
TextView techDescription;
+ @BindView(R.id.modules_used)
+ TextView modulesUsed;
@BindView(R.id.collapsingtoolbar)
CollapsingToolbarLayout cToolBar;
@@ -26,13 +31,19 @@ protected void onCreate(Bundle savedInstanceState) {
ButterKnife.bind(this);
Intent intent = getIntent();
- InformationModel model = intent.getParcelableExtra("Information");
- String title = model.getTitleOfProject();
- String intro = model.getIntroProject();
- String tech = model.getTechnologyUsed();
- Log.d("Information", title+ " 2 "+intro+ " 3 "+tech);
+ ProjectModel detail = intent.getParcelableExtra("Information");
+ String title = detail.getTitleOfProject();
+ String intro = detail.getIntroOfProject();
+ String tech = detail.getTechnologyUsed();
+ String module = detail.getModulesOfProject();
+
+ LogAndToastUtil.Logging("1 " + title + "\n2 " + intro + "\n3 " + tech + "\n4 " + module);
+ cToolBar.setTitle(title);
introDescription.setText(intro);
techDescription.setText(tech);
- cToolBar.setTitle(title);
+ modulesUsed.setText(module);
+// introDescription.setText(intro);
+// techDescription.setText(tech);
+// cToolBar.setTitle(title);
}
}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/HomeScreen.java b/app/src/main/java/com/example/androidtechies/majorproject/HomeScreen.java
deleted file mode 100644
index 65a80ca..0000000
--- a/app/src/main/java/com/example/androidtechies/majorproject/HomeScreen.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.androidtechies.majorproject;
-
-import android.content.Intent;
-import android.support.v7.app.AppCompatActivity;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.Button;
-
-public class HomeScreen extends AppCompatActivity {
- public static final String HomeScreenTag = "HomeScreen";
- public static final Integer cseValue = 0;
- public static final Integer it = 0;
- public static final Integer ece = 0;
- public static final Integer eee = 0;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_home_screen);
- final Button cse = (Button) findViewById(R.id.cseTag);
- Button ece = (Button) findViewById(R.id.eceTag);
- Button it = (Button) findViewById(R.id.itTag);
- Button eee = (Button) findViewById(R.id.eeeTag);
- cse.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent cseIntent = new Intent(HomeScreen.this, ListPage.class);
- cseIntent.putExtra(HomeScreenTag, cseValue);
- startActivity(cseIntent);
-
- }
- });
-// ece.setOnClickListener(new View.OnClickListener() {
-// @Override
-// public void onClick(View view) {
-// Intent ece = new Intent(HomeScreen.this, ECEHomeScreen.class);
-// startActivity(ece);
-//
-// }
-// });
-// it.setOnClickListener(new View.OnClickListener() {
-// @Override
-// public void onClick(View view) {
-// Intent it = new Intent(HomeScreen.this, ITHomeScreen.class);
-// startActivity(it);
-//
-// }
-// });
-// eee.setOnClickListener(new View.OnClickListener() {
-// @Override
-// public void onClick(View view) {
-// Intent eee = new Intent(HomeScreen.this, EEEHomeScreen.class);
-// startActivity(eee);
-//
-// }
-// });
- }
- }
-
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/InformationModel.java b/app/src/main/java/com/example/androidtechies/majorproject/InformationModel.java
deleted file mode 100644
index 6502074..0000000
--- a/app/src/main/java/com/example/androidtechies/majorproject/InformationModel.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.example.androidtechies.majorproject;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-/**
- * Created by TANSU on 22/03/2018.
- */
-
-public class InformationModel implements Parcelable {
- String titleOfProject;
- String introProject;
- String technologyUsed;
-
- public InformationModel(String titleOfProject, String introProject, String technologyUsed) {
- this.titleOfProject = titleOfProject;
- this.introProject = introProject;
- this.technologyUsed = technologyUsed;
- }
-
- public String getTitleOfProject() {
- return titleOfProject;
- }
-
- public void setTitleOfProject(String titleOfProject) {
- this.titleOfProject = titleOfProject;
- }
-
- public String getIntroProject() {
- return introProject;
- }
-
- public void setIntroProject(String introProject) {
- this.introProject = introProject;
- }
-
- public String getTechnologyUsed() {
- return technologyUsed;
- }
-
- public void setTechnologyUsed(String technologyUsed) {
- this.technologyUsed = technologyUsed;
- }
-
- @Override
- public int describeContents() {
- return hashCode();
- }
-
- @Override
- public void writeToParcel(Parcel parcel, int i) {
- parcel.writeString(titleOfProject);
- parcel.writeString(introProject);
- parcel.writeString(technologyUsed);
- }
-
- protected InformationModel(Parcel in) {
- titleOfProject = in.readString();
- introProject = in.readString();
- technologyUsed = in.readString();
- }
-
- public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
- @Override
- public InformationModel createFromParcel(Parcel in) {
- return new InformationModel(in);
- }
-
- @Override
- public InformationModel[] newArray(int size) {
- return new InformationModel[0];
- }
- };
-
-}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/ListPage.java b/app/src/main/java/com/example/androidtechies/majorproject/ListPage.java
deleted file mode 100644
index e479454..0000000
--- a/app/src/main/java/com/example/androidtechies/majorproject/ListPage.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.example.androidtechies.majorproject;
-
-import android.content.Intent;
-import android.support.v7.app.AppCompatActivity;
-import android.os.Bundle;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.util.Log;
-import android.view.View;
-
-import java.util.ArrayList;
-
-public class ListPage extends AppCompatActivity {
- ArrayList informationModelArrayList;
- RecyclerView recyclerView;
- ListAdapter listAdapter;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_list_page);
- Intent intent = getIntent();
- Integer value = intent.getIntExtra(HomeScreen.HomeScreenTag,0);
- informationModelArrayList = new ArrayList<>();
- informationModelArrayList = createFakeData(value);
-
-
- recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
- // listAdapter = new ListAdapter(informationModelArrayList, this);
-
- listAdapter = new ListAdapter(informationModelArrayList, this, new ListAdapter.ClickListener() {
- @Override
- public void onItemClick(View v, int position) {
- Intent intent = new Intent(ListPage.this, DescriptionActivity.class);
- intent.putExtra("Information",informationModelArrayList.get(position));
- startActivity(intent);
- }
- });
-
- RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
- recyclerView.setLayoutManager(mLayoutManager);
- recyclerView.setItemAnimator(new DefaultItemAnimator());
- recyclerView.setAdapter(listAdapter);
- }
-
- // Todo check value and apply switch case
-
- private ArrayList createFakeData(int value) {
- ArrayList arrayList = new ArrayList<>();
- int length = getResources().getStringArray(R.array.project_title_it).length;
- InformationModel model;
- for(int i=0 ; i projects);
+ void startDetailedActivity(ProjectModel project);
+ }
+
+ interface IListActivityPresenter {
+
+ void getBranchSpecificList(String branch);
+ void startDetailedActivity(ProjectModel project);
+ void countProjects();
+
+ }
+}
+
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/ListProjects/ListActivityPresenter.java b/app/src/main/java/com/example/androidtechies/majorproject/ListProjects/ListActivityPresenter.java
new file mode 100644
index 0000000..b503b20
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/ListProjects/ListActivityPresenter.java
@@ -0,0 +1,64 @@
+package com.example.androidtechies.majorproject.ListProjects;
+
+import android.database.Cursor;
+import android.support.annotation.NonNull;
+import android.util.Log;
+
+import com.example.androidtechies.majorproject.Data.DataManager;
+import com.example.androidtechies.majorproject.Data.ProjectModel;
+import com.example.androidtechies.majorproject.Data.db.ProjectContract;
+import com.example.androidtechies.majorproject.Utils.LogAndToastUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ListActivityPresenter implements ListActivityContract.IListActivityPresenter {
+
+ private final ListActivityContract.IListActivityView view;
+ private DataManager manager;
+
+ public ListActivityPresenter(@NonNull ListActivityContract.IListActivityView view,@NonNull DataManager dataSource) {
+ this.view = view;
+ this.manager = dataSource;
+
+ view.setRecyclerView();
+ }
+
+ @Override
+ public void getBranchSpecificList(String branch) {
+
+ Cursor cursor = manager.getBranchProjects(branch);
+ List list = new ArrayList<>();
+ ProjectModel model;
+ if(cursor!=null) {
+ try {
+ while (cursor.moveToNext()) {
+ model = new ProjectModel(
+ branch, cursor.getString(cursor.getColumnIndex(ProjectContract.ProjectEntry.COLUMN_PROJECT_TITLE)),
+ cursor.getString(cursor.getColumnIndex(ProjectContract.ProjectEntry.COLUMN_PROJECT_INTRO)),
+ cursor.getString(cursor.getColumnIndex(ProjectContract.ProjectEntry.COLUMN_TECH_USED)),
+ cursor.getString(cursor.getColumnIndex(ProjectContract.ProjectEntry.COLUMN_MODULES_USED))
+ );
+ list.add(model);
+ }
+ } finally {
+ cursor.close();
+ LogAndToastUtil.Logging("cursor value changed to list- list presenter");
+ }
+ view.createAdapterAndSetData(list);
+ }
+ else {
+ LogAndToastUtil.Logging("no data available");
+ }
+ }
+
+ @Override
+ public void startDetailedActivity(ProjectModel project) {
+ view.startDetailedActivity(project);
+ }
+
+ @Override
+ public void countProjects() {
+ manager.getCountProjects();
+ }
+}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/ListAdapter.java b/app/src/main/java/com/example/androidtechies/majorproject/ListProjects/ListAdapter.java
similarity index 84%
rename from app/src/main/java/com/example/androidtechies/majorproject/ListAdapter.java
rename to app/src/main/java/com/example/androidtechies/majorproject/ListProjects/ListAdapter.java
index a566d9f..b6121f7 100644
--- a/app/src/main/java/com/example/androidtechies/majorproject/ListAdapter.java
+++ b/app/src/main/java/com/example/androidtechies/majorproject/ListProjects/ListAdapter.java
@@ -1,4 +1,4 @@
-package com.example.androidtechies.majorproject;
+package com.example.androidtechies.majorproject.ListProjects;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
@@ -7,7 +7,10 @@
import android.view.ViewGroup;
import android.widget.TextView;
-import java.util.ArrayList;
+import com.example.androidtechies.majorproject.Data.ProjectModel;
+import com.example.androidtechies.majorproject.R;
+
+import java.util.List;
/**
* Created by TANSU on 22/03/2018.
@@ -15,12 +18,12 @@
public class ListAdapter extends RecyclerView.Adapter {
- ArrayList informationList;
+ List informationList;
Context context;
ClickListener listener;
- public ListAdapter(ArrayList informationList , Context context, ClickListener listener) {
+ public ListAdapter(List informationList , Context context, ClickListener listener) {
this.informationList = informationList;
this.context = context;
this.listener = listener;
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/ListProjects/ListProjectActivity.java b/app/src/main/java/com/example/androidtechies/majorproject/ListProjects/ListProjectActivity.java
new file mode 100644
index 0000000..23fccf0
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/ListProjects/ListProjectActivity.java
@@ -0,0 +1,78 @@
+package com.example.androidtechies.majorproject.ListProjects;
+
+import android.content.Intent;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.support.v7.widget.DefaultItemAnimator;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.util.Log;
+import android.view.View;
+import android.widget.Toast;
+
+import com.example.androidtechies.majorproject.BranchPage.HomeScreenActivity;
+import com.example.androidtechies.majorproject.Data.ProjectModel;
+import com.example.androidtechies.majorproject.DescriptionActivity;
+import com.example.androidtechies.majorproject.R;
+import com.example.androidtechies.majorproject.ListProjects.ListActivityContract.IListActivityView;
+import com.example.androidtechies.majorproject.Utils.InjectionClass;
+import com.example.androidtechies.majorproject.Utils.LogAndToastUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ListProjectActivity extends AppCompatActivity implements IListActivityView {
+ RecyclerView recyclerView;
+ ListAdapter listAdapter;
+ ListActivityPresenter listPresenter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_list_page);
+
+
+ //receives branch name from intent
+ Intent intent = getIntent();
+ String branch = intent.getStringExtra(HomeScreenActivity.HomeScreenTag);
+ LogAndToastUtil.Logging(branch);
+
+ recyclerView = findViewById(R.id.recyclerView);
+ listPresenter = new ListActivityPresenter(this, InjectionClass.provideDataSource(this));
+ listPresenter.getBranchSpecificList(branch);
+ }
+
+
+ @Override
+ public void setRecyclerView() {
+ RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
+ recyclerView.setLayoutManager(mLayoutManager);
+ recyclerView.setItemAnimator(new DefaultItemAnimator());
+
+ }
+
+ @Override
+ public void showToast(String text) {
+ Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
+ }
+
+
+ @Override
+ public void createAdapterAndSetData(final List projects) {
+ listAdapter = new ListAdapter(projects, this, new ListAdapter.ClickListener() {
+ @Override
+ public void onItemClick(View v, int position) {
+ listPresenter.startDetailedActivity(projects.get(position));
+ }
+ });
+ recyclerView.setAdapter(listAdapter);
+ }
+
+
+ @Override
+ public void startDetailedActivity(ProjectModel project) {
+ Intent intent = new Intent(ListProjectActivity.this, DescriptionActivity.class);
+ intent.putExtra("Information", project);
+ startActivity(intent);
+ }
+}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/SplashScreen.java b/app/src/main/java/com/example/androidtechies/majorproject/SplashScreen.java
index 109febf..def5909 100644
--- a/app/src/main/java/com/example/androidtechies/majorproject/SplashScreen.java
+++ b/app/src/main/java/com/example/androidtechies/majorproject/SplashScreen.java
@@ -8,6 +8,8 @@
import android.view.animation.AnimationUtils;
import android.widget.*;
+import com.example.androidtechies.majorproject.BranchPage.HomeScreenActivity;
+
public class SplashScreen extends AppCompatActivity {
private TextView textView;
private ImageView imageView;
@@ -21,7 +23,7 @@ protected void onCreate(Bundle savedInstanceState) {
Animation myanim = AnimationUtils.loadAnimation(this,R.anim.mytransition);
textView.startAnimation(myanim);
imageView.startAnimation(myanim);
- final Intent branch = new Intent(this,HomeScreen.class);
+ final Intent branch = new Intent(this,HomeScreenActivity.class);
Thread timer = new Thread(){
public void run(){
try {
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/Utils/InjectionClass.java b/app/src/main/java/com/example/androidtechies/majorproject/Utils/InjectionClass.java
new file mode 100644
index 0000000..88f709c
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/Utils/InjectionClass.java
@@ -0,0 +1,13 @@
+package com.example.androidtechies.majorproject.Utils;
+
+import android.content.Context;
+
+import com.example.androidtechies.majorproject.Data.DataManager;
+import com.example.androidtechies.majorproject.Data.pref.PrefHelper;
+
+public class InjectionClass {
+
+ public static DataManager provideDataSource(Context context) {
+ return DataManager.getInstance(context, new PrefHelper(context,"pref_file" ));
+ }
+}
diff --git a/app/src/main/java/com/example/androidtechies/majorproject/Utils/LogAndToastUtil.java b/app/src/main/java/com/example/androidtechies/majorproject/Utils/LogAndToastUtil.java
new file mode 100644
index 0000000..92b823a
--- /dev/null
+++ b/app/src/main/java/com/example/androidtechies/majorproject/Utils/LogAndToastUtil.java
@@ -0,0 +1,17 @@
+package com.example.androidtechies.majorproject.Utils;
+
+import android.content.Context;
+import android.util.Log;
+import android.widget.Toast;
+
+public class LogAndToastUtil {
+ private static final String TAG = "myTag";
+
+ public static void Logging(String msg) {
+ Log.d(TAG, msg);
+ }
+
+ public static void Toasting(Context context, String msg) {
+ Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
+ }
+}
diff --git a/app/src/main/res/layout/activity_home_screen.xml b/app/src/main/res/layout/activity_home_screen.xml
index 79bbb87..b0c0a13 100644
--- a/app/src/main/res/layout/activity_home_screen.xml
+++ b/app/src/main/res/layout/activity_home_screen.xml
@@ -6,7 +6,7 @@
android:layout_height="match_parent"
android:background="@color/colorPrimary"
- tools:context="com.example.androidtechies.majorproject.HomeScreen">
+ tools:context="com.example.androidtechies.majorproject.BranchPage.HomeScreenActivity">