diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 60dad6c..40543a8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,6 +3,8 @@
package="com.example.anna.myapplication">
+
+
-
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/example/anna/myapplication/data/LoadDatabaseIntentService.java b/app/src/main/java/com/example/anna/myapplication/data/LoadDatabaseIntentService.java
new file mode 100644
index 0000000..eeab1c6
--- /dev/null
+++ b/app/src/main/java/com/example/anna/myapplication/data/LoadDatabaseIntentService.java
@@ -0,0 +1,36 @@
+package com.example.anna.myapplication.data;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+
+import android.app.IntentService;
+import android.content.Context;
+import android.content.Intent;
+import android.widget.Toast;
+
+import com.example.anna.myapplication.presentation.MyApplication;
+
+public class LoadDatabaseIntentService extends IntentService {
+
+ private FileOutputStream fileOutputStream = null;
+
+ public LoadDatabaseIntentService() {
+ super("LoadDatabaseIntentService");
+ }
+
+ @Override
+ protected void onHandleIntent(Intent intent) {
+ if (intent != null) {
+ String databaseBackup = MyApplication.getPersonDao().loadAll().toString();
+ String fileName = intent.getStringExtra("fileName");
+ try {
+ fileOutputStream = openFileOutput(fileName, Context.MODE_PRIVATE);
+ fileOutputStream.write(databaseBackup.getBytes());
+ fileOutputStream.close();
+ } catch (Exception e) {
+ Toast toast = Toast.makeText(this, "An error occurred while writing database", Toast.LENGTH_LONG);
+ toast.show();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/anna/myapplication/data/PersonContract.java b/app/src/main/java/com/example/anna/myapplication/data/PersonContract.java
index 6a8c5ff..83949f5 100644
--- a/app/src/main/java/com/example/anna/myapplication/data/PersonContract.java
+++ b/app/src/main/java/com/example/anna/myapplication/data/PersonContract.java
@@ -4,7 +4,6 @@
public interface PersonContract extends BaseColumns {
-
String TABLE_NAME = "personsTable";
String NAME = "name";
diff --git a/app/src/main/java/com/example/anna/myapplication/domain/Person.java b/app/src/main/java/com/example/anna/myapplication/domain/Person.java
index 1a4a3cf..3cd7c2e 100644
--- a/app/src/main/java/com/example/anna/myapplication/domain/Person.java
+++ b/app/src/main/java/com/example/anna/myapplication/domain/Person.java
@@ -71,11 +71,29 @@ public void setBirthday(String birthday) {
@Override
public String toString() {
+ String returnedString = "Person{id=";
if (id == NOT_SPECIFIED_LONG) {
- return "Person{" + "id=?, name='" + name + "\'" + '}';
+ returnedString = returnedString.concat("?");
} else {
- return "Person{" + "id=" + id + ", name='" + name + "\'" + '}';
+ returnedString = returnedString.concat("" + id);
}
+ if (!name.equals(NOT_SPECIFIED_STRING)) {
+ returnedString = returnedString.concat(", name='" + name + "\'");
+ }
+ if (!note.equals(NOT_SPECIFIED_STRING)) {
+ returnedString = returnedString.concat(", note='" + note + "\'");
+ }
+ if (imageRes != NOT_SPECIFIED_INT) {
+ returnedString = returnedString.concat(", imageRes=" + imageRes);
+ }
+ if (!imageLink.equals(NOT_SPECIFIED_STRING)) {
+ returnedString = returnedString.concat(", imageLink='" + imageLink + "\'");
+ }
+ if (!birthday.equals(NOT_SPECIFIED_STRING)) {
+ returnedString = returnedString.concat(", birthday=" + birthday);
+ }
+ returnedString = returnedString.concat("}");
+ return returnedString;
}
}
diff --git a/app/src/main/java/com/example/anna/myapplication/presentation/IntentServiceActivity.java b/app/src/main/java/com/example/anna/myapplication/presentation/IntentServiceActivity.java
new file mode 100644
index 0000000..26f55c6
--- /dev/null
+++ b/app/src/main/java/com/example/anna/myapplication/presentation/IntentServiceActivity.java
@@ -0,0 +1,41 @@
+package com.example.anna.myapplication.presentation;
+
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.example.anna.myapplication.R;
+
+import java.io.FileInputStream;
+
+public class IntentServiceActivity extends AppCompatActivity {
+
+ private TextView DatabaseTextView;
+ private Button DatabaseLoadButton;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.intent_service);
+
+ DatabaseTextView = (TextView) findViewById(R.id.textView);
+
+ DatabaseLoadButton = (Button) findViewById(R.id.loadDatabaseButton);
+ DatabaseLoadButton.setOnClickListener(view -> {
+ StringBuilder stringBuilder = new StringBuilder();
+ try{
+ FileInputStream fstream = openFileInput(MyApplication.getFileName());
+ int i;
+ while ((i = fstream.read())!= -1){
+ stringBuilder.append((char)i);
+ }
+ fstream.close();
+ DatabaseTextView.setText(stringBuilder.toString());
+ }catch (Exception e){
+ DatabaseTextView.setText(getResources().getString(R.string.error_load_database));
+ }
+
+ });
+ }
+}
diff --git a/app/src/main/java/com/example/anna/myapplication/presentation/MainActivity.java b/app/src/main/java/com/example/anna/myapplication/presentation/MainActivity.java
index f987268..716f096 100644
--- a/app/src/main/java/com/example/anna/myapplication/presentation/MainActivity.java
+++ b/app/src/main/java/com/example/anna/myapplication/presentation/MainActivity.java
@@ -48,7 +48,7 @@ protected void onCreate(Bundle savedInstanceState) {
buttonTraining = findViewById(R.id.training_thread);
buttonTraining.setOnClickListener(view -> {
- Intent startActivity = new Intent(MainActivity.this, RoomDB.class);
+ Intent startActivity = new Intent(MainActivity.this, IntentServiceActivity.class);
startActivity(startActivity);
});
}
diff --git a/app/src/main/java/com/example/anna/myapplication/presentation/MyApplication.java b/app/src/main/java/com/example/anna/myapplication/presentation/MyApplication.java
index cce6dbc..3fba448 100644
--- a/app/src/main/java/com/example/anna/myapplication/presentation/MyApplication.java
+++ b/app/src/main/java/com/example/anna/myapplication/presentation/MyApplication.java
@@ -2,18 +2,23 @@
import android.app.Application;
import android.arch.persistence.room.Room;
+import android.content.Intent;
+import com.example.anna.myapplication.data.LoadDatabaseIntentService;
import com.example.anna.myapplication.data.AppDatabase;
import com.example.anna.myapplication.data.DatabaseHolder;
import com.example.anna.myapplication.data.PersonDao;
import com.example.anna.myapplication.data.PersonRepository;
import com.facebook.drawee.backends.pipeline.Fresco;
+import java.util.Date;
+
public class MyApplication extends Application {
private static AppDatabase database;
private static PersonRepository personRepository;
private static DatabaseHolder databaseHolder;
+ private static String fileName;
public static PersonDao getPersonDao(){
return database.PersonDao();
@@ -21,6 +26,15 @@ public static PersonDao getPersonDao(){
public static PersonRepository getRepository(){
return personRepository;
}
+ public static String getFileName(){
+ return fileName;
+ }
+
+ private String getFileNameOnCurrentTime(){
+ Date currentDate = new Date();
+ long millisFromStart = currentDate.getTime();
+ return "backup-" + millisFromStart;
+ }
@Override
public void onCreate() {
@@ -36,6 +50,11 @@ public void onCreate() {
.build();
setInitialData();
+
+ // Запускаем IntentService
+ Intent intentMyIntentService = new Intent(this, LoadDatabaseIntentService.class);
+ fileName = getFileNameOnCurrentTime();
+ startService(intentMyIntentService.putExtra("fileName", fileName));
}
public static void setInitialData(){
diff --git a/app/src/main/java/com/example/anna/myapplication/presentation/RoomDB.java b/app/src/main/java/com/example/anna/myapplication/presentation/RoomDB.java
index f40c511..6cabb61 100644
--- a/app/src/main/java/com/example/anna/myapplication/presentation/RoomDB.java
+++ b/app/src/main/java/com/example/anna/myapplication/presentation/RoomDB.java
@@ -37,8 +37,8 @@ protected void onCreate(Bundle savedInstanceState) {
nextButton = findViewById(R.id.nextScreenButton);
nextButton.setOnClickListener(view -> {
- // Intent startActivity = new Intent(this, RoomDB.class);
- //startActivity(startActivity);
+ Intent startActivity = new Intent(this, IntentServiceActivity.class);
+ startActivity(startActivity);
});
backButton = findViewById(R.id.to_first_activity_button);
diff --git a/app/src/main/res/layout/intent_service.xml b/app/src/main/res/layout/intent_service.xml
new file mode 100644
index 0000000..dc52d19
--- /dev/null
+++ b/app/src/main/res/layout/intent_service.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index cb1af09..5dd164b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -16,4 +16,6 @@
try everything
Start the cat
Next screen
+ Load Database
+ ERROR happened during database showing