add TodoItemStorage class
This commit is contained in:
parent
a97b0565bc
commit
2052812189
|
@ -1,13 +1,11 @@
|
|||
package org.cutem.cutecalendar.model;
|
||||
|
||||
import com.google.gson.GsonBuilder;
|
||||
import org.cutem.cutecalendar.util.CalendarUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class TodoItemManager {
|
||||
private static final String TODO_LIST_SAVE_NAME = "todo-list.json";
|
||||
|
||||
|
||||
private static TodoItemManager ourInstance;
|
||||
|
@ -51,6 +49,10 @@ public class TodoItemManager {
|
|||
addDateCache(item);
|
||||
}
|
||||
|
||||
public void add(@NotNull Collection<TodoItem> items) {
|
||||
items.forEach(this::add);
|
||||
}
|
||||
|
||||
public void remove(@NotNull TodoItem item) {
|
||||
remove(item.getId());
|
||||
}
|
||||
|
@ -129,11 +131,32 @@ public class TodoItemManager {
|
|||
|
||||
|
||||
|
||||
|
||||
String toJson() {
|
||||
GsonBuilder gson = new GsonBuilder();
|
||||
gson.registerTypeAdapter(TodoItem.class, new TodoItemSerializer());
|
||||
return gson.create().toJson(items);
|
||||
return TodoItemsStorage.toJson(items);
|
||||
}
|
||||
|
||||
boolean save(String filename) {
|
||||
return TodoItemsStorage.save(filename, items);
|
||||
}
|
||||
|
||||
public boolean save() {
|
||||
return save(TodoItemsStorage.TODO_LIST_SAVE_NAME);
|
||||
}
|
||||
|
||||
void load(String filename) {
|
||||
add(TodoItemsStorage.load(filename));
|
||||
}
|
||||
|
||||
public void load() {
|
||||
load(TodoItemsStorage.TODO_LIST_SAVE_NAME);
|
||||
}
|
||||
|
||||
|
||||
public TodoItem get(long id) {
|
||||
return idCache.getOrDefault(id, null);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
package org.cutem.cutecalendar.model;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonParser;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public class TodoItemsStorage {
|
||||
public static final String TODO_LIST_SAVE_NAME = "todo-list.json";
|
||||
|
||||
public static String toJson(Collection<TodoItem> items) {
|
||||
GsonBuilder gsonBuilder = new GsonBuilder();
|
||||
gsonBuilder.registerTypeAdapter(TodoItem.class, new TodoItemSerializer());
|
||||
return gsonBuilder.create().toJson(items);
|
||||
}
|
||||
|
||||
public static boolean save(@NotNull String filename, Collection<TodoItem> items) {
|
||||
GsonBuilder gsonBuilder = new GsonBuilder();
|
||||
gsonBuilder.registerTypeAdapter(TodoItem.class, new TodoItemSerializer());
|
||||
Gson gson = gsonBuilder.create();
|
||||
|
||||
try (
|
||||
OutputStream out = new BufferedOutputStream(new FileOutputStream(filename))
|
||||
) {
|
||||
OutputStreamWriter writer = new OutputStreamWriter(out);
|
||||
gson.toJson(items, writer);
|
||||
writer.flush();
|
||||
} catch (IOException ex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static List<TodoItem> load(@NotNull String filename) {
|
||||
ArrayList<TodoItem> items = new ArrayList<>();
|
||||
|
||||
try (
|
||||
InputStream in = new BufferedInputStream(new FileInputStream(filename))
|
||||
) {
|
||||
JsonParser parser = new JsonParser();
|
||||
JsonArray ele = parser.parse(new InputStreamReader(in)).getAsJsonArray();
|
||||
|
||||
GsonBuilder gsonBuilder = new GsonBuilder();
|
||||
gsonBuilder.registerTypeAdapter(TodoItem.class, new TodoItemDeserializer());
|
||||
Gson gson = gsonBuilder.create();
|
||||
|
||||
ele.forEach(o -> items.add(gson.fromJson(o, TodoItem.class)));
|
||||
|
||||
} catch (IOException ex) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
return items;
|
||||
}
|
||||
|
||||
}
|
|
@ -6,16 +6,19 @@ import org.junit.Test;
|
|||
|
||||
import java.util.Calendar;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
|
||||
public class TodoItemManagerTest {
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
System.out.println("##### TodoItemManagerTest *bgn* #####");
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
System.out.println("##### TodoItemManagerTest *end* #####");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -45,17 +48,32 @@ public class TodoItemManagerTest {
|
|||
|
||||
assertNotEquals(item1, item2);
|
||||
|
||||
String oldJson = manager.toJson();
|
||||
System.out.println(
|
||||
manager.toJson()
|
||||
oldJson
|
||||
);
|
||||
|
||||
manager.remove(item1);
|
||||
|
||||
System.out.println(
|
||||
manager.toJson()
|
||||
);
|
||||
|
||||
String filename = "build/" + TodoItemsStorage.TODO_LIST_SAVE_NAME;
|
||||
manager.remove(item1);
|
||||
manager.remove(item2);
|
||||
manager.add(item1);
|
||||
manager.add(item2);
|
||||
System.out.println(manager.toJson());
|
||||
System.out.println(manager.save(filename));
|
||||
manager.remove(item1);
|
||||
manager.remove(item2);
|
||||
manager.load(filename);
|
||||
|
||||
String newJson = manager.toJson();
|
||||
System.out.println(
|
||||
newJson
|
||||
);
|
||||
assertEquals(oldJson, newJson);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue