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">