Skip to content

Commit 323901c

Browse files
some bugs fixed and shared preferences completed
1 parent 88aa443 commit 323901c

15 files changed

+149
-78
lines changed

.idea/misc.xml

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/edu/sharif/homework1/AddToClassFragment.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
import edu.sharif.homework1.databinding.FragmentAddToClassBinding;
1717

18-
public class AddToClassFragment extends Fragment implements MyRecyclerViewAdapter.ItemClickListener{
18+
public class AddToClassFragment extends Fragment implements MyRecyclerViewAdapter.ItemClickListener {
1919

2020
private FragmentAddToClassBinding binding;
2121
private MyRecyclerViewAdapter adapter;
@@ -74,8 +74,8 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
7474

7575
private void addToClass(String searchText) {
7676
Class newClass = Class.getClassByName(searchText);
77-
newClass.getStudents().add(student);
78-
student.getClasses().add(newClass);
77+
newClass.addStudent(student.getUsername(), getActivity());
78+
student.addClass(newClass, getActivity(), false);
7979
Toast.makeText(getContext(), "you added to this class!", Toast.LENGTH_SHORT).show();
8080
}
8181

@@ -90,8 +90,8 @@ public void onDestroyView() {
9090
@Override
9191
public void onItemClick(View view, int position) {
9292
Class newClass = Class.classes.get(position);
93-
newClass.getStudents().add(student);
94-
student.getClasses().add(newClass);
93+
newClass.addStudent(student.getUsername(), getActivity());
94+
student.addClass(newClass, getActivity(), false);
9595
Toast.makeText(getContext(), "you added to this class!", Toast.LENGTH_SHORT).show();
9696
}
9797
}

app/src/main/java/edu/sharif/homework1/Answer.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public class Answer {
1111
answers = new ArrayList<>();
1212
}
1313

14+
private int id;
1415
private String studentUsername;
1516
private String answerText;
1617
private boolean gradeSet;
@@ -23,9 +24,14 @@ public Answer(String studentUsername, String answerText, FragmentActivity activi
2324
this.grade = 0;
2425

2526
MainActivity.saveData(activity, this, "Answers" + answers.size());
27+
id = answers.size();
2628
answers.add(this);
2729
}
2830

31+
public static Answer getAnswerById(int id) {
32+
return answers.get(id);
33+
}
34+
2935
public String getStudentUsername() {
3036
return studentUsername;
3137
}
@@ -34,23 +40,36 @@ public String getAnswerText() {
3440
return answerText;
3541
}
3642

37-
public void setAnswerText(String answerText) {
43+
public void setAnswerText(String answerText, FragmentActivity activity) {
3844
this.answerText = answerText;
45+
46+
MainActivity.saveData(activity, this,
47+
"Answers" + id);
3948
}
4049

4150
public boolean isGradeSet() {
4251
return gradeSet;
4352
}
4453

45-
public void setGradeSet(boolean gradeSet) {
54+
public void setGradeSet(boolean gradeSet, FragmentActivity activity) {
4655
this.gradeSet = gradeSet;
56+
57+
MainActivity.saveData(activity, this,
58+
"Answers" + id);
4759
}
4860

4961
public int getGrade() {
5062
return grade;
5163
}
5264

53-
public void setGrade(int grade) {
65+
public void setGrade(int grade, FragmentActivity activity) {
5466
this.grade = grade;
67+
68+
MainActivity.saveData(activity, this,
69+
"Answers" + id);
70+
}
71+
72+
public int getId() {
73+
return id;
5574
}
5675
}

app/src/main/java/edu/sharif/homework1/Class.java

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ public class Class {
1313

1414
private String name;
1515
private String professorUsername;
16-
private ArrayList<Student> students;
17-
private ArrayList<Training> trainings;
16+
private ArrayList<String> studentsUsername;
17+
private ArrayList<Integer> trainingsId;
1818

1919
{
20-
students = new ArrayList<>();
21-
trainings = new ArrayList<>();
20+
studentsUsername = new ArrayList<>();
21+
trainingsId = new ArrayList<>();
2222
}
2323

2424
public Class(String name, String professorUsername, FragmentActivity activity) {
@@ -38,24 +38,31 @@ public static Class getClassByName(String name) {
3838
return null;
3939
}
4040

41-
public ArrayList<Student> getStudents() {
42-
return students;
41+
public ArrayList<String> getStudentsUsername() {
42+
return studentsUsername;
4343
}
4444

45-
public ArrayList<Training> getTrainings() {
46-
return trainings;
45+
public ArrayList<Integer> getTrainingsId() {
46+
return trainingsId;
4747
}
4848

4949
public String getName() {
5050
return name;
5151
}
5252

53-
public void addStudent(Student student) {
54-
students.add(student);
53+
public void addStudent(String studentUsername, FragmentActivity activity) {
54+
studentsUsername.add(studentUsername);
55+
MainActivity.saveData(activity, this, "Classes" + classes.indexOf(this));
5556
}
5657

57-
public void addTraining(Training training) {
58-
trainings.add(training);
58+
public void addTraining(int trainingId, FragmentActivity activity) {
59+
trainingsId.add(trainingId);
60+
MainActivity.saveData(activity, this, "Classes" + classes.indexOf(this));
61+
}
62+
63+
public void setTrainingsId(ArrayList<Integer> trainingsId, FragmentActivity activity) {
64+
this.trainingsId = trainingsId;
65+
MainActivity.saveData(activity, this, "Classes" + classes.indexOf(this));
5966
}
6067

6168
public String getProfessorUsername() { return professorUsername; }

app/src/main/java/edu/sharif/homework1/ClassPageFragment.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@ public View onCreateView(
5454
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
5555
super.onViewCreated(view, savedInstanceState);
5656

57-
ArrayList<Training> trainings = thisClass.getTrainings();
57+
ArrayList<Integer> trainings = thisClass.getTrainingsId();
5858

5959
trainingsName.clear();
60-
for (Training training: trainings) {
61-
trainingsName.add(training.getName());
60+
for (int trainingId : trainings) {
61+
trainingsName.add(Training.getTrainingById(trainingId).getName());
6262
}
6363

6464
RecyclerView recyclerView = view.findViewById(R.id.class_training_list);

app/src/main/java/edu/sharif/homework1/CreateClassFragment.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
6060
}
6161

6262
private void createClass(String className) {
63-
professor.getClasses().add(new Class(className, professor.getUsername(), getActivity()));
63+
Class c = new Class(className, professor.getUsername(), getActivity());
64+
professor.addClass(c, getActivity(), true);
6465
}
6566

6667
@Override

app/src/main/java/edu/sharif/homework1/CreateTrainingFragment.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
5454

5555
private void addTrainingToClass(String trainingName) {
5656
Class ownerClass = Class.getClassByName(className);
57-
ownerClass.getTrainings().add(new Training(trainingName, className, getActivity()));
57+
58+
Training training = new Training(trainingName, className, getActivity());
59+
ownerClass.addTraining(training.getId(), getActivity());
5860
}
5961

6062
@Override

app/src/main/java/edu/sharif/homework1/MainActivity.java

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ protected void onCreate(Bundle savedInstanceState) {
4040

4141

4242
// uncomment to delete all saved data
43-
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
44-
SharedPreferences.Editor editor = sharedPreferences.edit();
45-
editor.clear();
46-
editor.apply();
43+
// SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
44+
// SharedPreferences.Editor editor = sharedPreferences.edit();
45+
// editor.clear();
46+
// editor.apply();
4747
retrieveData();
4848
}
4949

@@ -71,11 +71,12 @@ public static void saveData(FragmentActivity activity, Object object, String ide
7171
private void retrieveData() {
7272
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
7373
Gson gson = new Gson();
74+
String json = sharedPreferences.getString("Classes0", "");
7475

7576
retrieveProfessors(sharedPreferences, gson);
7677
retrieveStudents(sharedPreferences, gson);
77-
retrieveTrainings(sharedPreferences, gson);
7878
retrieveAnswers(sharedPreferences, gson);
79+
retrieveTrainings(sharedPreferences, gson);
7980
retrieveClasses(sharedPreferences, gson);
8081

8182
}
@@ -102,53 +103,54 @@ private void retrieveStudents(SharedPreferences sharedPreferences, Gson gson) {
102103
}
103104
}
104105

105-
private void retrieveTrainings(SharedPreferences sharedPreferences, Gson gson) {
106-
String json = sharedPreferences.getString("Trainings0", "");
106+
private void retrieveAnswers(SharedPreferences sharedPreferences, Gson gson) {
107+
String json = sharedPreferences.getString("Answers0", "");
107108
for (int i = 1; !json.isEmpty(); i++) {
108-
Training training = gson.fromJson(json, Training.class);
109-
new Training(training.getName(), training.getOwnerClass(), this);
109+
Answer answer = gson.fromJson(json, Answer.class);
110+
Answer newAnswer =
111+
new Answer(answer.getStudentUsername(), answer.getAnswerText(), this);
112+
newAnswer.setGradeSet(answer.isGradeSet(), this);
113+
newAnswer.setGrade(answer.getGrade(), this);
110114

111-
json = sharedPreferences.getString("Trainings" + i, "");
115+
json = sharedPreferences.getString("Answers" + i, "");
112116
}
113117
}
114118

115-
private void retrieveAnswers(SharedPreferences sharedPreferences, Gson gson) {
116-
String json = sharedPreferences.getString("Answers0", "");
119+
private void retrieveTrainings(SharedPreferences sharedPreferences, Gson gson) {
120+
String json = sharedPreferences.getString("Trainings0", "");
117121
for (int i = 1; !json.isEmpty(); i++) {
118-
Answer answer = gson.fromJson(json, Answer.class);
119-
new Answer(answer.getStudentUsername(), answer.getAnswerText(), this);
122+
Training training = gson.fromJson(json, Training.class);
123+
Training newTraining =
124+
new Training(training.getName(), training.getOwnerClass(), this);
120125

121-
json = sharedPreferences.getString("Answers" + i, "");
126+
newTraining.setAnswersId(training.getAnswersId(), this);
127+
128+
json = sharedPreferences.getString("Trainings" + i, "");
122129
}
123130
}
124131

125132
private void retrieveClasses(SharedPreferences sharedPreferences, Gson gson) {
126-
String json = sharedPreferences.getString("Trainings0", "");
133+
String json = sharedPreferences.getString("Classes0", "");
127134
for (int i = 1; !json.isEmpty(); i++) {
128135
Class c1 = gson.fromJson(json, Class.class);
129136

130137
Professor professor = (Professor) User.getUserByUsername(c1.getProfessorUsername());
131138
Class c2 = new Class(c1.getName(), professor.getUsername(), this);
132-
professor.addClass(c2);
139+
professor.addClass(c2, this, true);
133140

134141
// add students to class
135-
ArrayList<Student> students = c1.getStudents();
136-
for (Student student : students) {
137-
Student newStudent = (Student) User.getUserByUsername(student.getUsername());
138-
c2.addStudent(newStudent);
139-
newStudent.addClass(c2);
142+
ArrayList<String> studentsUsername = c1.getStudentsUsername();
143+
for (String studentUsername : studentsUsername) {
144+
c2.addStudent(studentUsername, this);
145+
146+
Student newStudent = (Student) User.getUserByUsername(studentUsername);
147+
newStudent.addClass(c2, this, false);
140148
}
141149

142150
// add trainings to class
143-
ArrayList<Training> trainings = c1.getTrainings();
144-
for (Training training : trainings) {
145-
Training newTraining = (Training) Training.getTrainingByClassAndName(
146-
Class.getClassByName(training.getOwnerClass()), training.getName());
151+
c2.setTrainingsId(c1.getTrainingsId(), this);
147152

148-
c2.addTraining(newTraining);
149-
}
150-
151-
json = sharedPreferences.getString("Trainings" + i, "");
153+
json = sharedPreferences.getString("Classes" + i, "");
152154
}
153155
}
154156
}

app/src/main/java/edu/sharif/homework1/StudentClassPageFragment.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@ public View onCreateView(
5656
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
5757
super.onViewCreated(view, savedInstanceState);
5858

59-
ArrayList<Training> trainings = thisClass.getTrainings();
59+
ArrayList<Integer> trainingsId = thisClass.getTrainingsId();
6060

6161
trainingsName.clear();
62-
for (Training training: trainings) {
63-
trainingsName.add(training.getName());
62+
for (int trainingId : trainingsId) {
63+
trainingsName.add(Training.getTrainingById(trainingId).getName());
6464
}
6565

6666
RecyclerView recyclerView = view.findViewById(R.id.class_trainings_list);

app/src/main/java/edu/sharif/homework1/StudentTrainingPageFragment.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,21 +80,28 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
8080
}
8181

8282
private void addAnswerToTraining(String answerText) {
83-
for (int i = 0; i < thisTraining.getAnswers().size(); i++) {
84-
Answer answer = thisTraining.getAnswers().get(i);
83+
for (int i = 0; i < thisTraining.getAnswersId().size(); i++) {
84+
int answerId = thisTraining.getAnswersId().get(i);
85+
Answer answer = Answer.getAnswerById(answerId);
86+
8587
Student newStudent = (Student) User.getUserByUsername(answer.getStudentUsername());
8688

8789
if (newStudent.equals(student)) {
88-
answer.setAnswerText(answerText);
89-
answer.setGradeSet(false);
90-
answer.setGrade(0);
91-
thisTraining.getAnswers().set(i, answer);
90+
answer.setAnswerText(answerText, getActivity());
91+
answer.setGradeSet(false, getActivity());
92+
answer.setGrade(0, getActivity());
93+
thisTraining.getAnswersId().set(i, answer.getId());
94+
MainActivity.saveData(getActivity(), thisTraining,
95+
"Trainings" + thisTraining.getId());
96+
9297
return;
9398
}
9499
}
95100

96101
Answer newAnswer = new Answer(student.getUsername(), answerText, getActivity());
97-
thisTraining.getAnswers().add(newAnswer);
102+
thisTraining.getAnswersId().add(newAnswer.getId());
103+
MainActivity.saveData(getActivity(), thisTraining,
104+
"Trainings" + thisTraining.getId());
98105
}
99106

100107
@Override

0 commit comments

Comments
 (0)