-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
1. classes list moved to sqlite database
2. check android 4.4 compatibility on all files 3. backup and restore done
- Loading branch information
Showing
27 changed files
with
550 additions
and
111 deletions.
There are no files selected for viewing
115 changes: 115 additions & 0 deletions
115
app/src/main/java/com/github/ali77gh/unitools/core/Backup.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
package com.github.ali77gh.unitools.core; | ||
|
||
import com.github.ali77gh.unitools.R; | ||
import com.github.ali77gh.unitools.data.FileManager.FilePackProvider; | ||
import com.github.ali77gh.unitools.data.model.BackupModel; | ||
import com.github.ali77gh.unitools.data.model.Event; | ||
import com.github.ali77gh.unitools.data.model.Friend; | ||
import com.github.ali77gh.unitools.data.model.UClass; | ||
import com.github.ali77gh.unitools.data.repo.EventRepo; | ||
import com.github.ali77gh.unitools.data.repo.FriendRepo; | ||
import com.github.ali77gh.unitools.data.repo.UClassRepo; | ||
import com.google.gson.Gson; | ||
|
||
import java.io.BufferedReader; | ||
import java.io.File; | ||
import java.io.FileInputStream; | ||
import java.io.FileOutputStream; | ||
import java.io.IOException; | ||
import java.io.InputStreamReader; | ||
import java.io.OutputStreamWriter; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
public class Backup { | ||
|
||
public static String backupFilePath = FilePackProvider.AppPath + "/" + "backup.json"; | ||
|
||
public static void DoBackup(boolean classes , boolean events , boolean friends){ | ||
|
||
//make savable object | ||
List<UClass> classesList = new ArrayList<>(); | ||
List<Event> eventsList = new ArrayList<>(); | ||
List<Friend> friendsList = new ArrayList<>(); | ||
|
||
if (classes) classesList = UClassRepo.getAll(); | ||
if (events) eventsList = EventRepo.getAll(); | ||
if (friends) friendsList = FriendRepo.getAll(); | ||
|
||
BackupModel bm = new BackupModel( | ||
ContextHolder.getAppContext().getString(R.string.app_version), | ||
classesList, | ||
eventsList, | ||
friendsList | ||
); | ||
|
||
//write to file | ||
try { | ||
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(new File(backupFilePath))); | ||
outputStreamWriter.write(new Gson().toJson(bm)); | ||
outputStreamWriter.close(); | ||
}catch (IOException e){ | ||
throw new RuntimeException(e.getMessage()); | ||
} | ||
} | ||
|
||
public static void Restore(boolean classes , boolean events , boolean friends){ | ||
try { | ||
FileInputStream inputStream = new FileInputStream(new File(backupFilePath)); | ||
|
||
InputStreamReader inputStreamReader = new InputStreamReader(inputStream); | ||
BufferedReader bufferedReader = new BufferedReader(inputStreamReader); | ||
String receiveString; | ||
StringBuilder stringBuilder = new StringBuilder(); | ||
|
||
while ((receiveString = bufferedReader.readLine()) != null) { | ||
stringBuilder.append(receiveString); | ||
} | ||
|
||
inputStream.close(); | ||
|
||
BackupModel bm = new Gson().fromJson(stringBuilder.toString(),BackupModel.class); | ||
|
||
if (classes) | ||
for (UClass uClass : bm.classes){ | ||
UClassRepo.Insert(uClass); | ||
} | ||
|
||
if (events) | ||
for (Event event : bm.events){ | ||
EventRepo.Insert(event); | ||
} | ||
|
||
if (friends) | ||
for (Friend friend : bm.friends){ | ||
FriendRepo.Insert(friend); | ||
} | ||
|
||
} catch (IOException e) { | ||
throw new RuntimeException(e.getMessage()); | ||
} | ||
} | ||
|
||
public static void ClearCurrentAndRestore(boolean classes , boolean events , boolean friends){ | ||
|
||
if(classes) UClassRepo.RemoveAll(); | ||
if(events) EventRepo.RemoveAll(); | ||
if(friends) FriendRepo.RemoveAll(); | ||
Restore(classes,events,friends); | ||
} | ||
|
||
public static boolean IsBackupPossible(){ | ||
|
||
if (FriendRepo.getAll().size() != 0) return true; | ||
if (EventRepo.getAll().size() != 0) return true; | ||
if (UClassRepo.getAll().size() != 0) return true; | ||
return false; | ||
} | ||
|
||
public static boolean IsRestorePossible(){ | ||
File backupFile = new File(backupFilePath); | ||
if (backupFile.exists()) return true; | ||
else return false; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 19 additions & 0 deletions
19
app/src/main/java/com/github/ali77gh/unitools/data/model/BackupModel.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package com.github.ali77gh.unitools.data.model; | ||
|
||
import java.util.List; | ||
|
||
public class BackupModel { | ||
|
||
public String version; | ||
public List<UClass> classes; | ||
public List<Event> events; | ||
public List<Friend> friends; | ||
|
||
public BackupModel(String version,List<UClass> classes , List<Event> events,List<Friend> friends){ | ||
this.version = version; | ||
this.classes = classes; | ||
this.events = events; | ||
this.friends = friends; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
55 changes: 55 additions & 0 deletions
55
app/src/main/java/com/github/ali77gh/unitools/data/repo/UClassRepo.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
package com.github.ali77gh.unitools.data.repo; | ||
|
||
import android.content.Context; | ||
|
||
import com.example.easyrepolib.KeyValDb; | ||
import com.github.ali77gh.unitools.data.model.UClass; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
import java.util.UUID; | ||
|
||
public class UClassRepo { | ||
|
||
private static KeyValDb db; | ||
private static String table = "classes"; | ||
|
||
public static void init(Context context) { | ||
db = new KeyValDb(context, table); | ||
} | ||
|
||
public static List<UClass> getAll() { | ||
ArrayList<UClass> list = new ArrayList<>(); | ||
for (Object o : db.ReadAllOfType(UClass.class)) | ||
list.add((UClass) o); | ||
return (list); | ||
} | ||
|
||
public static void Insert(UClass uClass) { | ||
uClass.id = UUID.randomUUID().toString(); | ||
db.insert(uClass.id, uClass); | ||
} | ||
|
||
public static void Update(UClass uClass) { | ||
db.Update(uClass.id, uClass); | ||
} | ||
|
||
public static UClass getById(String id) { | ||
return (UClass) db.Read(id, UClass.class); | ||
} | ||
|
||
|
||
public static boolean IsEmpty() { | ||
return db.IsEmpty(); | ||
} | ||
|
||
public static void Remove(String id) { | ||
db.Remove(id); | ||
} | ||
|
||
public static void RemoveAll(){ | ||
for (UClass uClass:getAll()) | ||
Remove(uClass.id); | ||
if (!IsEmpty()) new RuntimeException("remove all not works"); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.