Commit b6911584 authored by fpeterfalvi's avatar fpeterfalvi
Browse files

Export database to file function implemented

Also added "currentIndex" member variable to Question class to be able to store the current questions list (not only the full database).
parent 465e4177
......@@ -7,7 +7,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.1'
classpath 'com.android.tools.build:gradle:3.1.2'
// NOTE: Do not place your application dependencies here; they belong
......
egyéb Melyik hónap 31 napos? július február június november disabled
földrajz Mi Olaszország fővárosa? Róma London Berlin Moszkva enabled
földrajz Hány bolygó van a Naprendszerben? 8 enabled
egyéb Melyik nem emlős? szula oroszlán farkas rozmár enabled
egyéb Hogyan írjuk arab számmal az XVII római számot? 17 enabled
földrajz Hány ezer négyzetkilométer Magyarország területe? 93 enabled
földrajz Melyik kontinensen található Peru? Dél-Amerika Észak-Amerika Ázsia Afrika enabled
földrajz Melyik város van legtávolabb Budapesttől? Sydney Makó Jeruzsálem London enabled
egyéb Hány napos hónap a március? 31 enabled
egyéb Melyik nem biztosan trapéz? deltoid paralelogramma négyzet téglalap enabled
földrajz Melyik NEM gázbolygó? Föld Jupiter Uránusz Neptunusz disabled
földrajz Melyik folyó partján fekszik Budapest? Duna Jangce Nílus Szajna enabled
egyéb Melyik hónap 31 napos? július február június november disabled 8
földrajz Mi Olaszország fővárosa? Róma London Berlin Moszkva enabled 0
földrajz Hány bolygó van a Naprendszerben? 8 enabled 7
egyéb Melyik nem emlős? szula oroszlán farkas rozmár enabled 6
egyéb Hogyan írjuk arab számmal az XVII római számot? 17 enabled 3
földrajz Hány ezer négyzetkilométer Magyarország területe? 93 enabled 2
földrajz Melyik kontinensen található Peru? Dél-Amerika Észak-Amerika Ázsia Afrika enabled 0
földrajz Melyik város van legtávolabb Budapesttől? Sydney Makó Jeruzsálem London enabled 1
egyéb Hány napos hónap a március? 31 enabled 0
egyéb Melyik nem biztosan trapéz? deltoid paralelogramma négyzet téglalap enabled 5
földrajz Melyik NEM gázbolygó? Föld Jupiter Uránusz Neptunusz disabled 4
földrajz Melyik folyó partján fekszik Budapest? Duna Jangce Nílus Szajna enabled 0
package onlab.kvizserver;
import android.os.Handler;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.WindowManager;
import android.widget.Toast;
import com.google.gson.Gson;
import com.rustamg.filedialogs.FileDialog;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
......@@ -27,7 +28,7 @@ import onlab.kvizserver.model.PlayerAnswer;
import onlab.kvizserver.model.Question;
public class GameActivity extends AppCompatActivity implements GameControlFragment.OnFragmentInteractionListener,
QuestionListFragment.OnFragmentInteractionListener {
QuestionListFragment.OnFragmentInteractionListener, FileDialog.OnFileSelectedListener {
private Question question = null;
private int numberOfPlayers;
......@@ -238,4 +239,23 @@ public class GameActivity extends AppCompatActivity implements GameControlFragme
gameControlFragment.setNextQuestionButtonEnabled(true);
}
}
@Override
public void onFileSelected(FileDialog dialog, File file) {
try {
Log.d("SaveFileDialog", file.getCanonicalPath());
OutputStream outputStream = new FileOutputStream(file);
List<Question> allQuestions = Question.listAll(Question.class);
for (int i = 0; i < allQuestions.size(); i++) {
outputStream.write((allQuestions.get(i).convertToString() + "\t").getBytes());
}
outputStream.close();
Toast.makeText(this, "Saved to: " + file.getCanonicalPath(), Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
......@@ -10,7 +10,11 @@ import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.rustamg.filedialogs.SaveFileDialog;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import onlab.kvizserver.model.Question;
......@@ -50,8 +54,19 @@ public class QuestionListFragment extends Fragment {
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
questions = Question.listAll(Question.class);
initQuestionList();
initRecyclerView();
Button exportButton = (Button) getView().findViewById(R.id.ExportButton);
exportButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SaveFileDialog dialog = new SaveFileDialog();
dialog.show(getActivity().getSupportFragmentManager(), SaveFileDialog.class.getName());
}
});
Button generateButton = (Button) getView().findViewById(R.id.GenerateButton);
}
@Override
......@@ -86,4 +101,21 @@ public class QuestionListFragment extends Fragment {
public void selecetedQuestionDisplayed() {
adapter.deselectActualQuestion();
}
private void initQuestionList() {
//kezdetben a teljes kérdésadatbázis
questions = Question.listAll(Question.class);
//az aktuális kiválasztásban nem szereplő kérdések kidobása
Iterator<Question> it = questions.iterator();
while( it.hasNext() ) {
Question q = it.next();
if(q.getCurrentIndex() == 0)
it.remove();
}
//kérdések sorbarendezése index alapján
Collections.sort(questions);
}
}
package onlab.kvizserver.model;
import android.support.annotation.NonNull;
import com.orm.SugarRecord;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Question extends SugarRecord {
public class Question extends SugarRecord implements Comparable<Question> {
private String topic;
private String questionText;
private String correctAnswer;
......@@ -14,6 +16,7 @@ public class Question extends SugarRecord {
private String wrongAnswer2 = null;
private String wrongAnswer3 = null;
private boolean enabled;
private int currentIndex; //0, ha nem szerepel az aktuálisan kiválasztott kérdések között
public static final int MULTIPLE_CHOICE = 0;
public static final int GUESS = 1;
......@@ -25,16 +28,17 @@ public class Question extends SugarRecord {
topic = data[0];
questionText = data[1];
correctAnswer = data[2];
if (data.length >= 5) {
if (data.length >= 6) {
wrongAnswer1 = data[3];
}
if (data.length >= 6) {
if (data.length >= 7) {
wrongAnswer2 = data[4];
}
if (data.length >= 7) {
if (data.length >= 8) {
wrongAnswer3 = data[5];
}
enabled = data[data.length-1].equals("enabled");
enabled = data[data.length-2].equals("enabled");
currentIndex = Integer.parseInt(data[data.length-1]);
}
public String getQuestionText() {
......@@ -89,4 +93,27 @@ public class Question extends SugarRecord {
}
}
public int getCurrentIndex() {
return currentIndex;
}
@Override
public int compareTo(@NonNull Question question) {
return this.currentIndex - question.currentIndex;
}
public String convertToString() {
String line = topic + "\t" + questionText + "\t" + correctAnswer;
if (wrongAnswer1 != null) {
line += "\t" + wrongAnswer1;
}
if (wrongAnswer2 != null) {
line += "\t" + wrongAnswer2;
}
if (wrongAnswer3 != null) {
line += "\t" + wrongAnswer3;
}
line += "\t" + (enabled ? "enabled" : "disabled") + "\t" + currentIndex;
return line;
}
}
......@@ -23,7 +23,6 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/ExportButton"
android:enabled="false"
android:text="Export database to file"/>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
......
......@@ -7,7 +7,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.1'
classpath 'com.android.tools.build:gradle:3.1.2'
// NOTE: Do not place your application dependencies here; they belong
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment