Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
package="com.example.anna.myapplication">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<application
android:name=".presentation.MyApplication"
Expand All @@ -26,7 +28,13 @@
<activity android:name=".presentation.CatAsyncTaskActivity" />
<activity android:name=".presentation.FrescoImageActivity" />
<activity android:name=".presentation.SQLiteDBActivity" />
<activity android:name=".presentation.RoomDB"></activity>
<activity android:name=".presentation.RoomDB" />

<service
android:name=".data.LoadDatabaseIntentService"
android:exported="false" />

<activity android:name=".presentation.IntentServiceActivity"></activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

public interface PersonContract extends BaseColumns {


String TABLE_NAME = "personsTable";

String NAME = "name";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}

Original file line number Diff line number Diff line change
@@ -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));
}

});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,39 @@

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();
}
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() {
Expand All @@ -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(){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
27 changes: 27 additions & 0 deletions app/src/main/res/layout/intent_service.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".presentation.IntentServiceActivity">

<Button
android:id="@+id/loadDatabaseButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/load_database"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />

<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/loadDatabaseButton">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</ScrollView>

</android.support.constraint.ConstraintLayout>
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@
<string name="additional_thread">try everything</string>
<string name="cat_start">Start the cat</string>
<string name="next">Next screen</string>
<string name="load_database">Load Database</string>
<string name="error_load_database">ERROR happened during database showing</string>
</resources>