mirror of
https://github.com/lacerta-doc/Lacerta.git
synced 2024-11-23 00:13:16 +00:00
Merge branch 'develop' into component/viewer/1
This commit is contained in:
commit
0accd4fa79
|
@ -1,5 +1,6 @@
|
||||||
package one.nem.lacerta.component.scanner;
|
package one.nem.lacerta.component.scanner;
|
||||||
|
|
||||||
|
import android.app.ProgressDialog;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.graphics.drawable.BitmapDrawable;
|
import android.graphics.drawable.BitmapDrawable;
|
||||||
|
@ -22,6 +23,7 @@ import com.websitebeaver.documentscanner.DocumentScanner;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
@ -152,21 +154,34 @@ public class ScannerManagerActivity extends AppCompatActivity {
|
||||||
|
|
||||||
private void saveNewDocument() {
|
private void saveNewDocument() {
|
||||||
logger.debug(TAG, "saveNewDocument");
|
logger.debug(TAG, "saveNewDocument");
|
||||||
|
// Deprecatedだが、中断機能が存在しないので操作をブロックする目的で(意図的に)使用
|
||||||
|
ProgressDialog dialog = new ProgressDialog(this);
|
||||||
|
dialog.setMessage("保存中..."); // TODO-rca: テキストをリソースに移動
|
||||||
|
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
|
||||||
|
dialog.setCancelable(false);
|
||||||
|
dialog.show();
|
||||||
DocumentMeta documentMeta = new DocumentMeta("Untitled"); // TODO-rca: デフォルトタイトルを指定できるようにする
|
DocumentMeta documentMeta = new DocumentMeta("Untitled"); // TODO-rca: デフォルトタイトルを指定できるようにする
|
||||||
DocumentDetail documentDetail = document.createDocument(documentMeta);
|
document.createDocument(documentMeta).thenAccept((documentDetail1) -> {
|
||||||
Bitmap[] bitmaps = new Bitmap[this.croppedImages.size()];
|
Bitmap[] bitmaps = new Bitmap[this.croppedImages.size()];
|
||||||
this.croppedImages.toArray(bitmaps);
|
this.croppedImages.toArray(bitmaps);
|
||||||
try {
|
addPagesToDocumentDetail(documentDetail1, bitmaps).thenRun(() -> {
|
||||||
documentProcessorFactory.create(documentDetail).addNewPagesToLast(bitmaps);
|
dialog.dismiss();
|
||||||
Toast.makeText(this, "Saved.", Toast.LENGTH_SHORT).show();
|
finish();
|
||||||
lacertaVcsFactory.create(documentDetail.getMeta().getId()).generateRevisionAtCurrent("Initial commit");
|
});
|
||||||
lacertaVcsFactory.create(documentDetail.getMeta().getId()).printLog(); // Debug
|
});
|
||||||
lacertaVcsFactory.create(documentDetail.getMeta().getId()).printRev(); // Debug
|
|
||||||
finish();
|
}
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error(TAG, "Error: " + e.getMessage());
|
private CompletableFuture<Void> addPagesToDocumentDetail(DocumentDetail documentDetail, Bitmap[] bitmaps) {
|
||||||
logger.e_code("9dff2a28-20e8-4ccd-9d04-f0c7646faa6a");
|
return CompletableFuture.runAsync(() -> {
|
||||||
}
|
try {
|
||||||
|
documentProcessorFactory.create(documentDetail).addNewPagesToLast(bitmaps);
|
||||||
|
lacertaVcsFactory.create(documentDetail.getMeta().getId()).generateRevisionAtCurrent("Initial commit");
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error(TAG, "Error: " + e.getMessage());
|
||||||
|
logger.e_code("9dff2a28-20e8-4ccd-9d04-f0c7646faa6a");
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void insertToExistDocument() {
|
private void insertToExistDocument() {
|
||||||
|
|
|
@ -2,6 +2,7 @@ package one.nem.lacerta.data;
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
import java.lang.reflect.Array;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import one.nem.lacerta.model.document.DocumentMeta;
|
import one.nem.lacerta.model.document.DocumentMeta;
|
||||||
import one.nem.lacerta.model.document.DocumentDetail;
|
import one.nem.lacerta.model.document.DocumentDetail;
|
||||||
|
@ -13,13 +14,13 @@ import one.nem.lacerta.model.document.tag.DocumentTag;
|
||||||
*/
|
*/
|
||||||
public interface Document {
|
public interface Document {
|
||||||
|
|
||||||
DocumentDetail createDocument(DocumentMeta meta);
|
CompletableFuture<DocumentDetail> createDocument(DocumentMeta meta);
|
||||||
|
|
||||||
DocumentDetail createDocument();
|
CompletableFuture<DocumentDetail> createDocument();
|
||||||
|
|
||||||
void deleteDocument(String documentId);
|
CompletableFuture<Void> deleteDocument(String documentId);
|
||||||
|
|
||||||
void updateDocument(DocumentMeta meta, DocumentDetail detail);
|
CompletableFuture<Void> updateDocument(DocumentMeta meta, DocumentDetail detail);
|
||||||
|
|
||||||
DocumentDetail getDocument(String documentId);
|
CompletableFuture<DocumentDetail> getDocument(String documentId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package one.nem.lacerta.data;
|
package one.nem.lacerta.data;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import one.nem.lacerta.model.ListItem;
|
import one.nem.lacerta.model.ListItem;
|
||||||
import one.nem.lacerta.model.ListItemType;
|
import one.nem.lacerta.model.ListItemType;
|
||||||
|
@ -11,15 +12,13 @@ import one.nem.lacerta.model.document.DocumentDetail;
|
||||||
public interface LacertaLibrary {
|
public interface LacertaLibrary {
|
||||||
|
|
||||||
// Get History
|
// Get History
|
||||||
ArrayList<ListItem> getRecentDocument(int limit);
|
CompletableFuture<ArrayList<ListItem>> getRecentDocument(int limit);
|
||||||
ArrayList<ListItem> getRecentDocument(int limit, int offset);
|
CompletableFuture<ArrayList<ListItem>> getRecentDocument(int limit, int offset);
|
||||||
|
|
||||||
// Get Library page
|
// Get Library page
|
||||||
LibraryItemPage getLibraryPage(int limit);
|
CompletableFuture<LibraryItemPage> getLibraryPage(int limit);
|
||||||
LibraryItemPage getLibraryPage(int limit, int offset);
|
CompletableFuture<LibraryItemPage> getLibraryPage(int limit, int offset);
|
||||||
LibraryItemPage getLibraryPage(String pageId, int limit);
|
CompletableFuture<LibraryItemPage> getLibraryPage(String pageId, int limit);
|
||||||
LibraryItemPage getLibraryPage(String pageId, int limit, int offset);
|
CompletableFuture<LibraryItemPage> getLibraryPage(String pageId, int limit, int offset);
|
||||||
|
|
||||||
// GetDocument
|
|
||||||
DocumentDetail getDocumentDetailById(String id); // TODO-rca: Documentに統合する
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
package one.nem.lacerta.data.impl;
|
package one.nem.lacerta.data.impl;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
// Hilt
|
// Hilt
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
@ -16,13 +18,19 @@ import one.nem.lacerta.model.document.DocumentMeta;
|
||||||
import one.nem.lacerta.model.document.DocumentDetail;
|
import one.nem.lacerta.model.document.DocumentDetail;
|
||||||
|
|
||||||
// Lacerta/source
|
// Lacerta/source
|
||||||
|
import one.nem.lacerta.model.document.internal.XmlMetaPageModel;
|
||||||
|
import one.nem.lacerta.model.document.page.Page;
|
||||||
import one.nem.lacerta.source.database.LacertaDatabase;
|
import one.nem.lacerta.source.database.LacertaDatabase;
|
||||||
import one.nem.lacerta.source.database.entity.DocumentEntity;
|
import one.nem.lacerta.source.database.entity.DocumentEntity;
|
||||||
|
|
||||||
// Lacerta/utils
|
// Lacerta/utils
|
||||||
|
import one.nem.lacerta.source.file.FileManager;
|
||||||
|
import one.nem.lacerta.source.file.factory.FileManagerFactory;
|
||||||
import one.nem.lacerta.utils.LacertaLogger;
|
import one.nem.lacerta.utils.LacertaLogger;
|
||||||
|
|
||||||
// Lacerta/vcs
|
// Lacerta/vcs
|
||||||
|
import one.nem.lacerta.utils.XmlMetaParser;
|
||||||
|
import one.nem.lacerta.utils.repository.DeviceInfoUtils;
|
||||||
import one.nem.lacerta.vcs.LacertaVcs;
|
import one.nem.lacerta.vcs.LacertaVcs;
|
||||||
import one.nem.lacerta.vcs.factory.LacertaVcsFactory;
|
import one.nem.lacerta.vcs.factory.LacertaVcsFactory;
|
||||||
|
|
||||||
|
@ -40,6 +48,14 @@ public class DocumentImpl implements Document {
|
||||||
@Inject
|
@Inject
|
||||||
LacertaVcsFactory vcsFactory;
|
LacertaVcsFactory vcsFactory;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
FileManagerFactory fileManagerFactory;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DeviceInfoUtils deviceInfoUtils;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
XmlMetaParser xmlMetaParser;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public DocumentImpl() {
|
public DocumentImpl() {
|
||||||
|
@ -49,35 +65,34 @@ public class DocumentImpl implements Document {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DocumentDetail createDocument(DocumentMeta meta) {
|
public CompletableFuture<DocumentDetail> createDocument(DocumentMeta meta) {
|
||||||
DocumentDetail detail = new DocumentDetail();
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
detail.setMeta(meta);
|
DocumentDetail detail = new DocumentDetail();
|
||||||
detail.setPages(new ArrayList<>());
|
detail.setMeta(meta);
|
||||||
|
detail.setPages(new ArrayList<>());
|
||||||
|
// Create DocumentEntity
|
||||||
|
DocumentEntity documentEntity = new DocumentEntity();
|
||||||
|
documentEntity.id = meta.getId();
|
||||||
|
documentEntity.title = meta.getTitle();
|
||||||
|
documentEntity.author = meta.getAuthor();
|
||||||
|
documentEntity.defaultBranch = meta.getDefaultBranch();
|
||||||
|
documentEntity.updatedAt = meta.getUpdatedAt();
|
||||||
|
documentEntity.createdAt = meta.getCreatedAt();
|
||||||
|
documentEntity.publicPath = meta.getPath().getStringPath();
|
||||||
|
documentEntity.tagIds = meta.getTagIds();
|
||||||
|
|
||||||
// TODO-rca: UIスレッドから追い出す
|
database.documentDao().insert(documentEntity);
|
||||||
|
|
||||||
// Create DocumentEntity
|
// Vcs
|
||||||
DocumentEntity documentEntity = new DocumentEntity();
|
LacertaVcs vcs = vcsFactory.create(meta.getId());
|
||||||
documentEntity.id = meta.getId();
|
vcs.createDocument(meta.getId());
|
||||||
documentEntity.title = meta.getTitle();
|
|
||||||
documentEntity.author = meta.getAuthor();
|
|
||||||
documentEntity.defaultBranch = meta.getDefaultBranch();
|
|
||||||
documentEntity.updatedAt = meta.getUpdatedAt();
|
|
||||||
documentEntity.createdAt = meta.getCreatedAt();
|
|
||||||
documentEntity.publicPath = meta.getPath().getStringPath();
|
|
||||||
documentEntity.tagIds = meta.getTagIds();
|
|
||||||
|
|
||||||
database.documentDao().insert(documentEntity);
|
return detail;
|
||||||
|
});
|
||||||
// Vcs
|
|
||||||
LacertaVcs vcs = vcsFactory.create(meta.getId());
|
|
||||||
vcs.createDocument(meta.getId());
|
|
||||||
|
|
||||||
return detail;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DocumentDetail createDocument() {
|
public CompletableFuture<DocumentDetail> createDocument() {
|
||||||
DocumentMeta meta = new DocumentMeta();
|
DocumentMeta meta = new DocumentMeta();
|
||||||
meta.setId(UUID.randomUUID().toString());
|
meta.setId(UUID.randomUUID().toString());
|
||||||
meta.setTitle("New Document");
|
meta.setTitle("New Document");
|
||||||
|
@ -91,17 +106,83 @@ public class DocumentImpl implements Document {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteDocument(String documentId) {
|
public CompletableFuture<Void> deleteDocument(String documentId) {
|
||||||
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
|
return null;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateDocument(DocumentMeta meta, DocumentDetail detail) {
|
public CompletableFuture<Void> updateDocument(DocumentMeta meta, DocumentDetail detail) {
|
||||||
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
|
return null;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DocumentDetail getDocument(String documentId) {
|
public CompletableFuture<DocumentDetail> getDocument(String documentId) {
|
||||||
return null;
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
|
DocumentEntity documentEntity = database.documentDao().findById(documentId);
|
||||||
|
if (documentEntity == null) {
|
||||||
|
throw new IllegalArgumentException("documentId is not found");
|
||||||
|
}
|
||||||
|
DocumentMeta meta = new DocumentMeta();
|
||||||
|
meta.setId(documentEntity.id);
|
||||||
|
meta.setTitle(documentEntity.title);
|
||||||
|
meta.setAuthor(documentEntity.author);
|
||||||
|
meta.setDefaultBranch(documentEntity.defaultBranch);
|
||||||
|
meta.setUpdatedAt(documentEntity.updatedAt);
|
||||||
|
meta.setCreatedAt(documentEntity.createdAt);
|
||||||
|
meta.setPath(new PublicPath().resolve(documentEntity.publicPath));
|
||||||
|
meta.setTags(new ArrayList<>()); // TODO-rca: タグを取得する
|
||||||
|
|
||||||
|
DocumentDetail detail = new DocumentDetail();
|
||||||
|
|
||||||
|
getPagesByXmlMeta(documentId).thenCompose(xmlMetaPageModels -> getPagesByXmlMetaPageModel(documentId, xmlMetaPageModels)).thenAccept(pages -> {
|
||||||
|
detail.setMeta(meta);
|
||||||
|
detail.setPages(pages);
|
||||||
|
});
|
||||||
|
return detail;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private CompletableFuture<ArrayList<XmlMetaPageModel>> getPagesByXmlMeta(String documentId) {
|
||||||
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
|
FileManager fileManager = fileManagerFactory.create(deviceInfoUtils.getExternalStorageDirectory());
|
||||||
|
try {
|
||||||
|
return xmlMetaParser.deserialize(fileManager.resolve(documentId).loadXml("meta.xml")).getPages();
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error(TAG, "DocumentMeta parse error");
|
||||||
|
logger.trace(TAG, e.getMessage());
|
||||||
|
logger.e_code("db18c04a-1625-4871-9e4e-918d805568ac");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private CompletableFuture<ArrayList<Page>> getPagesByXmlMetaPageModel(String documentId, ArrayList<XmlMetaPageModel> xmlMetaPageModels) {
|
||||||
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
|
ArrayList<Page> pages = new ArrayList<>();
|
||||||
|
FileManager fileManager;
|
||||||
|
try {
|
||||||
|
fileManager = fileManagerFactory.create(deviceInfoUtils.getExternalStorageDirectory()).resolve(documentId);
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error(TAG, "FileManager resolve error");
|
||||||
|
logger.trace(TAG, e.getMessage());
|
||||||
|
logger.e_code("2235e8ee-4177-46f8-af6b-084381b202e6");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
for (XmlMetaPageModel xmlMetaPageModel : xmlMetaPageModels) {
|
||||||
|
try {
|
||||||
|
pages.add(new Page(xmlMetaPageModel.getFilename(), fileManager.loadBitmap(xmlMetaPageModel.getFilename())));
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error(TAG, "Bitmap decode error");
|
||||||
|
logger.trace(TAG, e.getMessage());
|
||||||
|
logger.e_code("3bba8c8f-90fb-4a24-a726-7ea201929f8b");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pages;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,9 @@ package one.nem.lacerta.data.impl;
|
||||||
|
|
||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
@ -18,55 +20,71 @@ import one.nem.lacerta.utils.LacertaLogger;
|
||||||
|
|
||||||
public class LacertaLibraryImpl implements LacertaLibrary {
|
public class LacertaLibraryImpl implements LacertaLibrary {
|
||||||
|
|
||||||
@Inject
|
|
||||||
LacertaLogger logger;
|
LacertaLogger logger;
|
||||||
|
|
||||||
@Inject
|
|
||||||
LacertaDatabase database;
|
LacertaDatabase database;
|
||||||
|
|
||||||
@Override
|
@Inject
|
||||||
public ArrayList<ListItem> getRecentDocument(int limit) {
|
public LacertaLibraryImpl(LacertaLogger logger, LacertaDatabase database) {
|
||||||
List<DocumentEntity> documentEntities = database.documentDao().getRecentDocument(limit);
|
this.logger = logger;
|
||||||
|
this.database = database;
|
||||||
ArrayList<ListItem> listItems = new ArrayList<>();
|
|
||||||
for (DocumentEntity documentEntity : documentEntities) {
|
|
||||||
ListItem listItem = new ListItem();
|
|
||||||
listItem.setItemType(ListItemType.ITEM_TYPE_DOCUMENT);
|
|
||||||
listItem.setTitle(documentEntity.title);
|
|
||||||
listItem.setDescription(DateFormat.getDateInstance().format(documentEntity.updatedAt));
|
|
||||||
listItem.setItemId(documentEntity.id);
|
|
||||||
listItems.add(listItem);
|
|
||||||
}
|
|
||||||
return listItems;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<ListItem> getRecentDocument(int limit, int offset) {
|
public CompletableFuture<ArrayList<ListItem>> getRecentDocument(int limit) {
|
||||||
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
|
// 5秒フリーズさせる
|
||||||
|
try {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<DocumentEntity> documentEntities = database.documentDao().getRecentDocument(limit);
|
||||||
|
|
||||||
|
ArrayList<ListItem> listItems = new ArrayList<>();
|
||||||
|
for (DocumentEntity documentEntity : documentEntities) {
|
||||||
|
ListItem listItem = new ListItem();
|
||||||
|
listItem.setItemType(ListItemType.ITEM_TYPE_DOCUMENT);
|
||||||
|
listItem.setTitle(documentEntity.title);
|
||||||
|
listItem.setDescription(DateFormat.getDateInstance().format(documentEntity.updatedAt));
|
||||||
|
listItem.setItemId(documentEntity.id);
|
||||||
|
listItems.add(listItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
return listItems;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompletableFuture<ArrayList<ListItem>> getRecentDocument(int limit, int offset) {
|
||||||
return null; // TODO-rca: Implement
|
return null; // TODO-rca: Implement
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LibraryItemPage getLibraryPage(int limit) {
|
public CompletableFuture<LibraryItemPage> getLibraryPage(int limit) {
|
||||||
return null;
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
|
return null;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LibraryItemPage getLibraryPage(int limit, int offset) {
|
public CompletableFuture<LibraryItemPage> getLibraryPage(int limit, int offset) {
|
||||||
return null;
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
|
return null;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LibraryItemPage getLibraryPage(String pageId, int limit) {
|
public CompletableFuture<LibraryItemPage> getLibraryPage(String pageId, int limit) {
|
||||||
return null;
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
|
return null;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LibraryItemPage getLibraryPage(String pageId, int limit, int offset) {
|
public CompletableFuture<LibraryItemPage> getLibraryPage(String pageId, int limit, int offset) {
|
||||||
return null;
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
}
|
return null;
|
||||||
|
});
|
||||||
@Override
|
|
||||||
public DocumentDetail getDocumentDetailById(String id) {
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,219 +1,219 @@
|
||||||
package one.nem.lacerta.data.impl;
|
//package one.nem.lacerta.data.impl;
|
||||||
|
//
|
||||||
import one.nem.lacerta.data.LacertaLibrary;
|
//import one.nem.lacerta.data.LacertaLibrary;
|
||||||
import one.nem.lacerta.model.LibraryItemPage;
|
//import one.nem.lacerta.model.LibraryItemPage;
|
||||||
import one.nem.lacerta.model.ListItem;
|
//import one.nem.lacerta.model.ListItem;
|
||||||
import one.nem.lacerta.model.ListItemType;
|
//import one.nem.lacerta.model.ListItemType;
|
||||||
import one.nem.lacerta.model.document.DocumentDetail;
|
//import one.nem.lacerta.model.document.DocumentDetail;
|
||||||
|
//
|
||||||
import one.nem.lacerta.model.document.DocumentMeta;
|
//import one.nem.lacerta.model.document.DocumentMeta;
|
||||||
import one.nem.lacerta.model.document.path.DocumentPath;
|
//import one.nem.lacerta.model.document.path.DocumentPath;
|
||||||
import one.nem.lacerta.utils.LacertaLogger;
|
//import one.nem.lacerta.utils.LacertaLogger;
|
||||||
|
//
|
||||||
import com.github.javafaker.DateAndTime;
|
//import com.github.javafaker.DateAndTime;
|
||||||
import com.github.javafaker.Faker;
|
//import com.github.javafaker.Faker;
|
||||||
|
//
|
||||||
import java.text.DateFormat;
|
//import java.text.DateFormat;
|
||||||
import java.util.ArrayList;
|
//import java.util.ArrayList;
|
||||||
import java.util.Objects;
|
//import java.util.Objects;
|
||||||
import java.util.UUID;
|
//import java.util.UUID;
|
||||||
|
//
|
||||||
import javax.inject.Inject;
|
//import javax.inject.Inject;
|
||||||
|
//
|
||||||
/**
|
///**
|
||||||
* LacertaLibraryのスタブ実装
|
// * LacertaLibraryのスタブ実装
|
||||||
*/
|
// */
|
||||||
public class LacertaLibraryStubImpl implements LacertaLibrary {
|
//public class LacertaLibraryStubImpl implements LacertaLibrary {
|
||||||
|
//
|
||||||
LacertaLogger logger;
|
// LacertaLogger logger;
|
||||||
|
//
|
||||||
Faker faker;
|
// Faker faker;
|
||||||
|
//
|
||||||
@Inject
|
// @Inject
|
||||||
public LacertaLibraryStubImpl(LacertaLogger logger) {
|
// public LacertaLibraryStubImpl(LacertaLogger logger) {
|
||||||
faker = new Faker(); // Init Faker
|
// faker = new Faker(); // Init Faker
|
||||||
this.logger = logger;
|
// this.logger = logger;
|
||||||
logger.debug("LibraryStub", "Initialized");
|
// logger.debug("LibraryStub", "Initialized");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
// Internal Methods
|
// // Internal Methods
|
||||||
|
//
|
||||||
// Generate Stub Data
|
// // Generate Stub Data
|
||||||
private LibraryItemPage generateStubLibraryItemPage(int limit, String pageId) {
|
// private LibraryItemPage generateStubLibraryItemPage(int limit, String pageId) {
|
||||||
logger.debug("LibraryStub", "generateStubLibraryItemPage");
|
// logger.debug("LibraryStub", "generateStubLibraryItemPage");
|
||||||
ArrayList<ListItem> listItems = new ArrayList<>();
|
// ArrayList<ListItem> listItems = new ArrayList<>();
|
||||||
int itemTotal = faker.number().numberBetween(1, limit); // 実際に返却するアイテム数を決定
|
// int itemTotal = faker.number().numberBetween(1, limit); // 実際に返却するアイテム数を決定
|
||||||
int folderTotal;
|
// int folderTotal;
|
||||||
// フォルダ数の抽選
|
// // フォルダ数の抽選
|
||||||
if (itemTotal > 4) {
|
// if (itemTotal > 4) {
|
||||||
folderTotal = faker.number().numberBetween(1, itemTotal - 2);
|
// folderTotal = faker.number().numberBetween(1, itemTotal - 2);
|
||||||
}
|
// }
|
||||||
else {
|
// else {
|
||||||
if (itemTotal > 2) {
|
// if (itemTotal > 2) {
|
||||||
folderTotal = 1;
|
// folderTotal = 1;
|
||||||
}
|
// }
|
||||||
else { // ドキュメント数がゼロにならないように
|
// else { // ドキュメント数がゼロにならないように
|
||||||
folderTotal = 0;
|
// folderTotal = 0;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
int documentTotal = itemTotal - folderTotal; // ドキュメント数を決定
|
// int documentTotal = itemTotal - folderTotal; // ドキュメント数を決定
|
||||||
logger.debug("LibraryStub", "itemTotal: " + itemTotal);
|
// logger.debug("LibraryStub", "itemTotal: " + itemTotal);
|
||||||
logger.debug("LibraryStub", "folderTotal: " + folderTotal);
|
// logger.debug("LibraryStub", "folderTotal: " + folderTotal);
|
||||||
logger.debug("LibraryStub", "documentTotal: " + documentTotal);
|
// logger.debug("LibraryStub", "documentTotal: " + documentTotal);
|
||||||
|
//
|
||||||
// フォルダを生成
|
// // フォルダを生成
|
||||||
for (int i = 0; i < folderTotal; i++) {
|
// for (int i = 0; i < folderTotal; i++) {
|
||||||
listItems.add(generateStubListItem(ListItemType.ITEM_TYPE_FOLDER));
|
// listItems.add(generateStubListItem(ListItemType.ITEM_TYPE_FOLDER));
|
||||||
}
|
// }
|
||||||
// ドキュメントを生成
|
// // ドキュメントを生成
|
||||||
for (int i = 0; i < documentTotal; i++) {
|
// for (int i = 0; i < documentTotal; i++) {
|
||||||
listItems.add(generateStubListItem(ListItemType.ITEM_TYPE_DOCUMENT));
|
// listItems.add(generateStubListItem(ListItemType.ITEM_TYPE_DOCUMENT));
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
LibraryItemPage libraryItemPage = new LibraryItemPage();
|
// LibraryItemPage libraryItemPage = new LibraryItemPage();
|
||||||
libraryItemPage.setListItems(listItems);
|
// libraryItemPage.setListItems(listItems);
|
||||||
if (pageId == null) {
|
// if (pageId == null) {
|
||||||
libraryItemPage.setPageId(UUID.randomUUID().toString());
|
// libraryItemPage.setPageId(UUID.randomUUID().toString());
|
||||||
} else {
|
// } else {
|
||||||
libraryItemPage.setPageId(pageId);
|
// libraryItemPage.setPageId(pageId);
|
||||||
}
|
// }
|
||||||
libraryItemPage.setPageTitle("FakePage" + faker.number().digits(3));
|
// libraryItemPage.setPageTitle("FakePage" + faker.number().digits(3));
|
||||||
|
//
|
||||||
return libraryItemPage;
|
// return libraryItemPage;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
private ListItem generateStubListItem(ListItemType itemType) {
|
// private ListItem generateStubListItem(ListItemType itemType) {
|
||||||
if (itemType == ListItemType.ITEM_TYPE_FOLDER) {
|
// if (itemType == ListItemType.ITEM_TYPE_FOLDER) {
|
||||||
ListItem listItem = new ListItem();
|
// ListItem listItem = new ListItem();
|
||||||
listItem.setTitle("FakeFolder" + faker.number().digits(3));
|
// listItem.setTitle("FakeFolder" + faker.number().digits(3));
|
||||||
listItem.setDescription("Updated at " + DateFormat.getDateTimeInstance().format(faker.date().birthday()));
|
// listItem.setDescription("Updated at " + DateFormat.getDateTimeInstance().format(faker.date().birthday()));
|
||||||
listItem.setItemType(ListItemType.ITEM_TYPE_FOLDER);
|
// listItem.setItemType(ListItemType.ITEM_TYPE_FOLDER);
|
||||||
listItem.setItemId(UUID.randomUUID().toString());
|
// listItem.setItemId(UUID.randomUUID().toString());
|
||||||
return listItem;
|
// return listItem;
|
||||||
} else if (itemType == ListItemType.ITEM_TYPE_DOCUMENT) {
|
// } else if (itemType == ListItemType.ITEM_TYPE_DOCUMENT) {
|
||||||
ListItem listItem = new ListItem();
|
// ListItem listItem = new ListItem();
|
||||||
listItem.setTitle("FakeDocument" + faker.book().title());
|
// listItem.setTitle("FakeDocument" + faker.book().title());
|
||||||
listItem.setDescription("Updated at " + DateFormat.getDateTimeInstance().format(faker.date().birthday()));
|
// listItem.setDescription("Updated at " + DateFormat.getDateTimeInstance().format(faker.date().birthday()));
|
||||||
listItem.setItemType(ListItemType.ITEM_TYPE_DOCUMENT);
|
// listItem.setItemType(ListItemType.ITEM_TYPE_DOCUMENT);
|
||||||
listItem.setItemId(UUID.randomUUID().toString());
|
// listItem.setItemId(UUID.randomUUID().toString());
|
||||||
return listItem;
|
// return listItem;
|
||||||
} else {
|
// } else {
|
||||||
return null;
|
// return null;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
private LibraryItemPage getRecentDocumentPage(int limit) {
|
// private LibraryItemPage getRecentDocumentPage(int limit) {
|
||||||
int itemTotal = faker.number().numberBetween(1, limit);
|
// int itemTotal = faker.number().numberBetween(1, limit);
|
||||||
ArrayList<ListItem> listItems = new ArrayList<>();
|
// ArrayList<ListItem> listItems = new ArrayList<>();
|
||||||
for (int i = 0; i < itemTotal; i++) {
|
// for (int i = 0; i < itemTotal; i++) {
|
||||||
listItems.add(generateStubListItem(ListItemType.ITEM_TYPE_DOCUMENT));
|
// listItems.add(generateStubListItem(ListItemType.ITEM_TYPE_DOCUMENT));
|
||||||
}
|
// }
|
||||||
// DescriptionからDateを抽出して新しい順にソート
|
// // DescriptionからDateを抽出して新しい順にソート
|
||||||
listItems.sort((a, b) -> {
|
// listItems.sort((a, b) -> {
|
||||||
String aDate = a.getDescription().substring(11);
|
// String aDate = a.getDescription().substring(11);
|
||||||
String bDate = b.getDescription().substring(11);
|
// String bDate = b.getDescription().substring(11);
|
||||||
return bDate.compareTo(aDate);
|
// return bDate.compareTo(aDate);
|
||||||
});
|
// });
|
||||||
LibraryItemPage libraryItemPage = new LibraryItemPage();
|
// LibraryItemPage libraryItemPage = new LibraryItemPage();
|
||||||
libraryItemPage.setListItems(listItems);
|
// libraryItemPage.setListItems(listItems);
|
||||||
libraryItemPage.setPageId(UUID.randomUUID().toString());
|
// libraryItemPage.setPageId(UUID.randomUUID().toString());
|
||||||
libraryItemPage.setPageTitle("RecentDocument");
|
// libraryItemPage.setPageTitle("RecentDocument");
|
||||||
return libraryItemPage;
|
// return libraryItemPage;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
private DocumentDetail generateStubDocumentDetail(String id) throws IllegalArgumentException {
|
// private DocumentDetail generateStubDocumentDetail(String id) throws IllegalArgumentException {
|
||||||
|
//
|
||||||
if (Objects.isNull(id)) {
|
// if (Objects.isNull(id)) {
|
||||||
throw new IllegalArgumentException("id is null");
|
// throw new IllegalArgumentException("id is null");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
DocumentMeta documentMeta = new DocumentMeta();
|
// DocumentMeta documentMeta = new DocumentMeta();
|
||||||
documentMeta.setId(id);
|
// documentMeta.setId(id);
|
||||||
documentMeta.setTitle("FakeDocument" + faker.book().title());
|
// documentMeta.setTitle("FakeDocument" + faker.book().title());
|
||||||
documentMeta.setCreatedAt(faker.date().birthday());
|
// documentMeta.setCreatedAt(faker.date().birthday());
|
||||||
documentMeta.setUpdatedAt(faker.date().birthday()); // TODO-rca: 更新日のほうが古くなることがあるのでなんとかする?
|
// documentMeta.setUpdatedAt(faker.date().birthday()); // TODO-rca: 更新日のほうが古くなることがあるのでなんとかする?
|
||||||
ArrayList<String> tagIds = new ArrayList<>();
|
// ArrayList<String> tagIds = new ArrayList<>();
|
||||||
|
//
|
||||||
DocumentDetail documentDetail = new DocumentDetail();
|
// DocumentDetail documentDetail = new DocumentDetail();
|
||||||
documentDetail.setMeta(documentMeta);
|
// documentDetail.setMeta(documentMeta);
|
||||||
// documentDetail.setPath(null); // TODO-rca: なんとかする
|
//// documentDetail.setPath(null); // TODO-rca: なんとかする
|
||||||
// documentDetail.setAuthor(faker.name().fullName());
|
//// documentDetail.setAuthor(faker.name().fullName());
|
||||||
// documentDetail.setRepository(null); // TODO-rca: なんとかする
|
//// documentDetail.setRepository(null); // TODO-rca: なんとかする
|
||||||
return documentDetail;
|
// return documentDetail;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* 履歴ページを取得する
|
// * 履歴ページを取得する
|
||||||
* @param limit 取得するアイテム数
|
// * @param limit 取得するアイテム数
|
||||||
* @return ページオブジェクト
|
// * @return ページオブジェクト
|
||||||
*/
|
// */
|
||||||
@Override
|
// @Override
|
||||||
public ArrayList<ListItem> getRecentDocument(int limit) {
|
// public ArrayList<ListItem> getRecentDocument(int limit) {
|
||||||
return getRecentDocumentPage(limit).getListItems();
|
// return getRecentDocumentPage(limit).getListItems();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* 履歴ページを取得する
|
// * 履歴ページを取得する
|
||||||
* @param limit 取得するアイテム数
|
// * @param limit 取得するアイテム数
|
||||||
* @param offset 取得するアイテムのオフセット
|
// * @param offset 取得するアイテムのオフセット
|
||||||
* @return ページオブジェクト
|
// * @return ページオブジェクト
|
||||||
*/
|
// */
|
||||||
@Override
|
// @Override
|
||||||
public ArrayList<ListItem> getRecentDocument(int limit, int offset) {
|
// public ArrayList<ListItem> getRecentDocument(int limit, int offset) {
|
||||||
return getRecentDocumentPage(limit).getListItems();
|
// return getRecentDocumentPage(limit).getListItems();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* ライブラリページを取得する
|
// * ライブラリページを取得する
|
||||||
* @param limit 取得するアイテム数
|
// * @param limit 取得するアイテム数
|
||||||
* @return ページオブジェクト
|
// * @return ページオブジェクト
|
||||||
*/
|
// */
|
||||||
@Override
|
// @Override
|
||||||
public LibraryItemPage getLibraryPage(int limit) {
|
// public LibraryItemPage getLibraryPage(int limit) {
|
||||||
return generateStubLibraryItemPage(limit, null);
|
// return generateStubLibraryItemPage(limit, null);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* ライブラリページを取得する
|
// * ライブラリページを取得する
|
||||||
* @param limit 取得するアイテム数
|
// * @param limit 取得するアイテム数
|
||||||
* @param offset 取得するアイテムのオフセット
|
// * @param offset 取得するアイテムのオフセット
|
||||||
* @return ページオブジェクト
|
// * @return ページオブジェクト
|
||||||
*/
|
// */
|
||||||
@Override
|
// @Override
|
||||||
public LibraryItemPage getLibraryPage(int limit, int offset) {
|
// public LibraryItemPage getLibraryPage(int limit, int offset) {
|
||||||
return generateStubLibraryItemPage(limit, null);
|
// return generateStubLibraryItemPage(limit, null);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* ライブラリページを取得する
|
// * ライブラリページを取得する
|
||||||
* @param pageId ページID
|
// * @param pageId ページID
|
||||||
* @param limit 取得するアイテム数
|
// * @param limit 取得するアイテム数
|
||||||
* @return ページオブジェクト
|
// * @return ページオブジェクト
|
||||||
*/
|
// */
|
||||||
@Override
|
// @Override
|
||||||
public LibraryItemPage getLibraryPage(String pageId, int limit) {
|
// public LibraryItemPage getLibraryPage(String pageId, int limit) {
|
||||||
return generateStubLibraryItemPage(limit, pageId);
|
// return generateStubLibraryItemPage(limit, pageId);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* ライブラリページを取得する
|
// * ライブラリページを取得する
|
||||||
* @param pageId ページID
|
// * @param pageId ページID
|
||||||
* @param limit 取得するアイテム数
|
// * @param limit 取得するアイテム数
|
||||||
* @param offset 取得するアイテムのオフセット
|
// * @param offset 取得するアイテムのオフセット
|
||||||
* @return ページオブジェクト
|
// * @return ページオブジェクト
|
||||||
*/
|
// */
|
||||||
@Override
|
// @Override
|
||||||
public LibraryItemPage getLibraryPage(String pageId, int limit, int offset) {
|
// public LibraryItemPage getLibraryPage(String pageId, int limit, int offset) {
|
||||||
return generateStubLibraryItemPage(limit, pageId);
|
// return generateStubLibraryItemPage(limit, pageId);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* ドキュメント詳細を取得する
|
// * ドキュメント詳細を取得する
|
||||||
* @param id ドキュメントID
|
// * @param id ドキュメントID
|
||||||
* @return ドキュメント詳細オブジェクト
|
// * @return ドキュメント詳細オブジェクト
|
||||||
*/
|
// */
|
||||||
@Override
|
// @Override
|
||||||
public DocumentDetail getDocumentDetailById(String id) throws IllegalArgumentException {
|
// public DocumentDetail getDocumentDetailById(String id) throws IllegalArgumentException {
|
||||||
return generateStubDocumentDetail(id);
|
// return generateStubDocumentDetail(id);
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
|
@ -30,9 +30,10 @@ public class LacertaSearchStubImpl implements LacertaSearch {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<ListItem> autoSearch(String query, int limit) {
|
public ArrayList<ListItem> autoSearch(String query, int limit) {
|
||||||
logger.debug("SearchStub", "autoSearch");
|
// logger.debug("SearchStub", "autoSearch");
|
||||||
logger.debug("SearchStub", "query: " + query);
|
// logger.debug("SearchStub", "query: " + query);
|
||||||
return library.getLibraryPage(limit).getListItems();
|
// return library.getLibraryPage(limit).getListItems();
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -44,8 +45,9 @@ public class LacertaSearchStubImpl implements LacertaSearch {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<ListItem> autoSearch(String query, int limit, int offset) {
|
public ArrayList<ListItem> autoSearch(String query, int limit, int offset) {
|
||||||
logger.debug("SearchStub", "autoSearch");
|
// logger.debug("SearchStub", "autoSearch");
|
||||||
logger.debug("SearchStub", "query: " + query);
|
// logger.debug("SearchStub", "query: " + query);
|
||||||
return library.getLibraryPage(limit, offset).getListItems();
|
// return library.getLibraryPage(limit, offset).getListItems();
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ import dagger.hilt.android.components.FragmentComponent;
|
||||||
import dagger.hilt.migration.DisableInstallInCheck;
|
import dagger.hilt.migration.DisableInstallInCheck;
|
||||||
|
|
||||||
import one.nem.lacerta.data.LacertaLibrary;
|
import one.nem.lacerta.data.LacertaLibrary;
|
||||||
import one.nem.lacerta.data.impl.LacertaLibraryStubImpl;
|
import one.nem.lacerta.data.impl.LacertaLibraryImpl;
|
||||||
import one.nem.lacerta.utils.LacertaLogger;
|
import one.nem.lacerta.utils.LacertaLogger;
|
||||||
|
|
||||||
@Module
|
@Module
|
||||||
|
@ -16,6 +16,6 @@ import one.nem.lacerta.utils.LacertaLogger;
|
||||||
abstract public class LacertaLibraryModule {
|
abstract public class LacertaLibraryModule {
|
||||||
|
|
||||||
@Binds
|
@Binds
|
||||||
public abstract LacertaLibrary bindLacertaLibrary(LacertaLibraryStubImpl impl);
|
public abstract LacertaLibrary bindLacertaLibrary(LacertaLibraryImpl impl);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,8 @@ public class DebugMenuLibraryItemListPageFragment extends Fragment {
|
||||||
// Inflate the layout for this fragment
|
// Inflate the layout for this fragment
|
||||||
View view = inflater.inflate(R.layout.fragment_debug_menu_library_item_list_page, container, false);
|
View view = inflater.inflate(R.layout.fragment_debug_menu_library_item_list_page, container, false);
|
||||||
|
|
||||||
ArrayList<ListItem> listItems = lacertaLibrary.getRecentDocument(10);
|
// ArrayList<ListItem> listItems = lacertaLibrary.getRecentDocument(10);
|
||||||
|
ArrayList<ListItem> listItems = new ArrayList<>();
|
||||||
for (ListItem listItem : listItems) {
|
for (ListItem listItem : listItems) {
|
||||||
System.out.println(listItem.getTitle());
|
System.out.println(listItem.getTitle());
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ import com.google.android.material.appbar.CollapsingToolbarLayout;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
@ -67,18 +68,6 @@ public class HomeTopFragment extends Fragment {
|
||||||
// Inflate the layout for this fragment
|
// Inflate the layout for this fragment
|
||||||
View view = inflater.inflate(R.layout.fragment_home_top, container, false);
|
View view = inflater.inflate(R.layout.fragment_home_top, container, false);
|
||||||
|
|
||||||
ArrayList<ListItem> recentDocument = lacertaLibrary.getRecentDocument(10);
|
|
||||||
|
|
||||||
Log.d("docs", Integer.toString(recentDocument.size()));
|
|
||||||
|
|
||||||
RecyclerView recyclerView = view.findViewById(R.id.home_item_recycler_view);
|
|
||||||
|
|
||||||
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
|
||||||
|
|
||||||
ListItemAdapter listItemAdapter = new ListItemAdapter(recentDocument);
|
|
||||||
|
|
||||||
recyclerView.setAdapter(listItemAdapter);
|
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,6 +75,20 @@ public class HomeTopFragment extends Fragment {
|
||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
|
||||||
|
RecyclerView recyclerView = view.findViewById(R.id.home_item_recycler_view);
|
||||||
|
|
||||||
|
|
||||||
|
ListItemAdapter listItemAdapter = new ListItemAdapter();
|
||||||
|
recyclerView.setAdapter(listItemAdapter);
|
||||||
|
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||||
|
|
||||||
|
lacertaLibrary.getRecentDocument(10).thenAccept(listItems -> {
|
||||||
|
listItemAdapter.setListItems(listItems);
|
||||||
|
getActivity().runOnUiThread(() -> {
|
||||||
|
listItemAdapter.notifyItemRangeInserted(0, listItems.size());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
CollapsingToolbarLayout collapsingToolbarLayout = view.findViewById(R.id.collapsing_toolbar);
|
CollapsingToolbarLayout collapsingToolbarLayout = view.findViewById(R.id.collapsing_toolbar);
|
||||||
Toolbar toolbar = view.findViewById(R.id.toolbar);
|
Toolbar toolbar = view.findViewById(R.id.toolbar);
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,14 @@ public class ListItemAdapter extends RecyclerView.Adapter<ListItemAdapter.ListIt
|
||||||
this.listItems = listItems;
|
this.listItems = listItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ListItemAdapter() {
|
||||||
|
this.listItems = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setListItems(ArrayList<ListItem> listItems) {
|
||||||
|
this.listItems = listItems;
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public ListItemAdapter.ListItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public ListItemAdapter.ListItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user