diff --git a/component/scanner/src/main/java/one/nem/lacerta/component/scanner/ScannerDataManagerStubFragment.java b/component/scanner/src/main/java/one/nem/lacerta/component/scanner/ScannerDataManagerStubFragment.java index 043f5cb7..9fd979b9 100644 --- a/component/scanner/src/main/java/one/nem/lacerta/component/scanner/ScannerDataManagerStubFragment.java +++ b/component/scanner/src/main/java/one/nem/lacerta/component/scanner/ScannerDataManagerStubFragment.java @@ -123,109 +123,110 @@ public class ScannerDataManagerStubFragment extends Fragment { public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - view.findViewById(R.id.button_call_camera).setOnClickListener(v -> { - Log.d("ScannerDataManagerStubFragment", "button_call_camera clicked"); - Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); - if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) { - File photoFile = null; - try { - String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date()); - String imageFileName = "JPEG_" + timeStamp + "_"; - File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES); - photoFile = File.createTempFile(imageFileName, ".jpg", storageDir); - } catch (IOException ex) { - Log.e("ScannerDataManagerStubFragment", "Error occurred while creating the file", ex); - } - if (photoFile != null) { - photoURI = FileProvider.getUriForFile(getActivity(), "one.nem.lacerta.provider", photoFile); - takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); - cameraLauncher.launch(takePictureIntent); - } - else { - Log.d("ScannerDataManagerStubFragment", "photoFile is null"); - } - } - else { - Log.d("ScannerDataManagerStubFragment", "camera not available"); - } - updateResults(); - }); - - view.findViewById(R.id.button_create_documnent).setOnClickListener(v -> { - Log.d("ScannerDataManagerStubFragment", "button_create_documnent clicked"); - Toast.makeText(getActivity(), "button_create_documnent clicked", Toast.LENGTH_LONG).show(); - - this.documentDetail = createSampleDocumentDetail(); - - }); - - view.findViewById(R.id.button_init_document_processor).setOnClickListener(v -> { - Log.d("ScannerDataManagerStubFragment", "button_init_document_processor clicked"); - Toast.makeText(getActivity(), "button_init_document_processor clicked", Toast.LENGTH_LONG).show(); - // TODO-rca: ここでDocumentProcessorを初期化する - if (this.documentDetail == null) { - Toast.makeText(getActivity(), "documentDetail is null", Toast.LENGTH_LONG).show(); - return; - } - this.documentProcessor = documentProcessorFactory.create(this.documentDetail); - Toast.makeText(getActivity(), "documentProcessor created", Toast.LENGTH_LONG).show(); - try { - this.documentProcessor.init(); - } catch (Exception e) { - Toast.makeText(getActivity(), "Error occurred while initializing documentProcessor", Toast.LENGTH_LONG).show(); - Log.e("ScannerDataManagerStubFragment", "Error occurred while initializing documentProcessor", e); - } - Toast.makeText(getActivity(), "documentProcessor initialized", Toast.LENGTH_LONG).show(); - }); - - view.findViewById(R.id.button_add_page).setOnClickListener(v -> { - Log.d("ScannerDataManagerStubFragment", "button_add_page clicked"); - Toast.makeText(getActivity(), "button_add_page clicked", Toast.LENGTH_LONG).show(); - if (this.documentProcessor == null) { - Toast.makeText(getActivity(), "documentProcessor is null", Toast.LENGTH_LONG).show(); - return; - } - Bitmap[] bitmaps = new Bitmap[results.size()]; - for (int i = 0; i < results.size(); i++) { - bitmaps[i] = results.get(i).getBitmap(); - } - - try { - this.documentProcessor.addNewPagesToLast(bitmaps); - } catch (Exception e) { - Toast.makeText(getActivity(), "Error occurred while adding pages", Toast.LENGTH_LONG).show(); - Log.e("ScannerDataManagerStubFragment", "Error occurred while adding pages", e); - } - - Toast.makeText(getActivity(), "pages added", Toast.LENGTH_LONG).show(); - - try { - this.documentProcessor.close(); - } catch (Exception e) { - Toast.makeText(getActivity(), "Error occurred while closing documentProcessor", Toast.LENGTH_LONG).show(); - Log.e("ScannerDataManagerStubFragment", "Error occurred while closing documentProcessor", e); - } - }); +// view.findViewById(R.id.button_call_camera).setOnClickListener(v -> { +// Log.d("ScannerDataManagerStubFragment", "button_call_camera clicked"); +// Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); +// if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) { +// File photoFile = null; +// try { +// String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date()); +// String imageFileName = "JPEG_" + timeStamp + "_"; +// File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES); +// photoFile = File.createTempFile(imageFileName, ".jpg", storageDir); +// } catch (IOException ex) { +// Log.e("ScannerDataManagerStubFragment", "Error occurred while creating the file", ex); +// } +// if (photoFile != null) { +// photoURI = FileProvider.getUriForFile(getActivity(), "one.nem.lacerta.provider", photoFile); +// takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); +// cameraLauncher.launch(takePictureIntent); +// } +// else { +// Log.d("ScannerDataManagerStubFragment", "photoFile is null"); +// } +// } +// else { +// Log.d("ScannerDataManagerStubFragment", "camera not available"); +// } +// updateResults(); +// }); +// +// view.findViewById(R.id.button_create_documnent).setOnClickListener(v -> { +// Log.d("ScannerDataManagerStubFragment", "button_create_documnent clicked"); +// Toast.makeText(getActivity(), "button_create_documnent clicked", Toast.LENGTH_LONG).show(); +// +// this.documentDetail = createSampleDocumentDetail(); +// +// }); +// +// view.findViewById(R.id.button_init_document_processor).setOnClickListener(v -> { +// Log.d("ScannerDataManagerStubFragment", "button_init_document_processor clicked"); +// Toast.makeText(getActivity(), "button_init_document_processor clicked", Toast.LENGTH_LONG).show(); +// // TODO-rca: ここでDocumentProcessorを初期化する +// if (this.documentDetail == null) { +// Toast.makeText(getActivity(), "documentDetail is null", Toast.LENGTH_LONG).show(); +// return; +// } +// this.documentProcessor = documentProcessorFactory.create(this.documentDetail); +// Toast.makeText(getActivity(), "documentProcessor created", Toast.LENGTH_LONG).show(); +// try { +// this.documentProcessor.init(); +// } catch (Exception e) { +// Toast.makeText(getActivity(), "Error occurred while initializing documentProcessor", Toast.LENGTH_LONG).show(); +// Log.e("ScannerDataManagerStubFragment", "Error occurred while initializing documentProcessor", e); +// } +// Toast.makeText(getActivity(), "documentProcessor initialized", Toast.LENGTH_LONG).show(); +// }); +// +// view.findViewById(R.id.button_add_page).setOnClickListener(v -> { +// Log.d("ScannerDataManagerStubFragment", "button_add_page clicked"); +// Toast.makeText(getActivity(), "button_add_page clicked", Toast.LENGTH_LONG).show(); +// if (this.documentProcessor == null) { +// Toast.makeText(getActivity(), "documentProcessor is null", Toast.LENGTH_LONG).show(); +// return; +// } +// Bitmap[] bitmaps = new Bitmap[results.size()]; +// for (int i = 0; i < results.size(); i++) { +// bitmaps[i] = results.get(i).getBitmap(); +// } +// +// try { +// this.documentProcessor.addNewPagesToLast(bitmaps); +// } catch (Exception e) { +// Toast.makeText(getActivity(), "Error occurred while adding pages", Toast.LENGTH_LONG).show(); +// Log.e("ScannerDataManagerStubFragment", "Error occurred while adding pages", e); +// } +// +// Toast.makeText(getActivity(), "pages added", Toast.LENGTH_LONG).show(); +// +// try { +// this.documentProcessor.close(); +// } catch (Exception e) { +// Toast.makeText(getActivity(), "Error occurred while closing documentProcessor", Toast.LENGTH_LONG).show(); +// Log.e("ScannerDataManagerStubFragment", "Error occurred while closing documentProcessor", e); +// } +// }); } public DocumentDetail createSampleDocumentDetail() { - - String id = UUID.randomUUID().toString(); - - Toast.makeText(getActivity(), "Generated id: " + id, Toast.LENGTH_LONG).show(); - //logger.debug("CreateSample", "Generated id: " + id); - - DocumentMeta meta = new DocumentMeta( - id, - "Sample" + DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(LocalDateTime.now()), - new Date(), - new Date()); - - DocumentPath path = new DocumentPath( - deviceInfoUtils.getExternalStorageDirectoryString(), - "Sample" + DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(LocalDateTime.now())); - - return new DocumentDetail(meta, path, "SampleAuthor", "SampleDefaultBranch"); +// +// String id = UUID.randomUUID().toString(); +// +// Toast.makeText(getActivity(), "Generated id: " + id, Toast.LENGTH_LONG).show(); +// //logger.debug("CreateSample", "Generated id: " + id); +// +// DocumentMeta meta = new DocumentMeta( +// id, +// "Sample" + DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(LocalDateTime.now()), +// new Date(), +// new Date()); +// +// DocumentPath path = new DocumentPath( +// deviceInfoUtils.getExternalStorageDirectoryString(), +// "Sample" + DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(LocalDateTime.now())); +// +// return new DocumentDetail(meta, path, "SampleAuthor", "SampleDefaultBranch"); + return null; } @Override diff --git a/data/build.gradle b/data/build.gradle index 4615289e..8af2cd06 100644 --- a/data/build.gradle +++ b/data/build.gradle @@ -56,4 +56,6 @@ dependencies { // データソースモジュール implementation project(':source') + + implementation project(':vcs') } \ No newline at end of file diff --git a/data/src/main/java/one/nem/lacerta/data/Document.java b/data/src/main/java/one/nem/lacerta/data/Document.java index 78293c85..145a5905 100644 --- a/data/src/main/java/one/nem/lacerta/data/Document.java +++ b/data/src/main/java/one/nem/lacerta/data/Document.java @@ -13,34 +13,13 @@ import one.nem.lacerta.model.document.tag.DocumentTag; */ public interface Document { - ArrayList getAllDocumentMetas(int limit); + DocumentDetail createDocument(DocumentMeta meta); - ArrayList getAllDocumentMetas(int limit, int offset); + DocumentDetail createDocument(); - /** - * 更新の新しいドキュメントから順に並べてlimit件取得する - * @param limit 取得する上限数 - */ - ArrayList getRecentDocumentMetas(int limit); + void deleteDocument(String documentId); - /** - * 更新の新しいドキュメントから順に並べてoffset位置からlimit件取得する - * @param limit 取得する上限数 - * @param offset 取得するオフセット - */ - ArrayList getRecentDocumentMetas(int limit, int offset); + void updateDocument(DocumentMeta meta, DocumentDetail detail); - /** - * ドキュメントIDからDocumentDetailを取得する - * @param id ドキュメントID - */ - DocumentDetail getDocumentDetail(String id); - - /** - * DocumentMetaからDocumentDetailを取得する - * @param meta DocumentMeta - */ - DocumentDetail getDocumentDetailByMeta(DocumentMeta meta); // 簡単に使えるように - - DocumentDetail createDocumentByMeta(DocumentMeta meta); + DocumentDetail getDocument(String documentId); } diff --git a/data/src/main/java/one/nem/lacerta/data/DocumentDebug.java b/data/src/main/java/one/nem/lacerta/data/DocumentDebug.java deleted file mode 100644 index 94ae5b42..00000000 --- a/data/src/main/java/one/nem/lacerta/data/DocumentDebug.java +++ /dev/null @@ -1,12 +0,0 @@ -package one.nem.lacerta.data; - -import one.nem.lacerta.model.document.DocumentMeta; -import one.nem.lacerta.model.document.DocumentDetail; -import one.nem.lacerta.model.document.path.DocumentPath; -import one.nem.lacerta.model.document.tag.DocumentTag; - -public interface DocumentDebug { - - void insertDocument(DocumentMeta meta, DocumentDetail detail); - -} diff --git a/data/src/main/java/one/nem/lacerta/data/LacertaLibrary.java b/data/src/main/java/one/nem/lacerta/data/LacertaLibrary.java index 408a9171..4748d7d0 100644 --- a/data/src/main/java/one/nem/lacerta/data/LacertaLibrary.java +++ b/data/src/main/java/one/nem/lacerta/data/LacertaLibrary.java @@ -18,5 +18,5 @@ public interface LacertaLibrary { LibraryItemPage getLibraryPage(String pageId, int limit, int offset); // GetDocument - DocumentDetail getDocumentDetailById(String id); + DocumentDetail getDocumentDetailById(String id); // TODO-rca: Documentに統合する } diff --git a/data/src/main/java/one/nem/lacerta/data/impl/DocumentDebugImpl.java b/data/src/main/java/one/nem/lacerta/data/impl/DocumentDebugImpl.java deleted file mode 100644 index 0985436f..00000000 --- a/data/src/main/java/one/nem/lacerta/data/impl/DocumentDebugImpl.java +++ /dev/null @@ -1,47 +0,0 @@ -package one.nem.lacerta.data.impl; - -import java.util.List; - -import javax.inject.Inject; - -import one.nem.lacerta.data.DocumentDebug; -import one.nem.lacerta.model.document.DocumentDetail; -import one.nem.lacerta.model.document.DocumentMeta; - -import one.nem.lacerta.source.database.entity.DocumentEntity; -import one.nem.lacerta.source.database.entity.LibraryEntity; -import one.nem.lacerta.source.database.entity.TagEntity; - -import one.nem.lacerta.source.database.LacertaDatabase; - -public class DocumentDebugImpl implements DocumentDebug{ - - @Inject - LacertaDatabase database; - - @Inject - public DocumentDebugImpl() { - } - - - public void insertDocument(DocumentMeta meta, DocumentDetail detail) { - DocumentEntity documentEntity = new DocumentEntity(); - LibraryEntity libraryEntity = new LibraryEntity(); - - documentEntity.id = meta.getId(); - documentEntity.title = meta.getTitle(); - documentEntity.createdAt = meta.getCreatedAt(); - documentEntity.updatedAt = meta.getUpdatedAt(); - documentEntity.author = detail.getAuthor(); - documentEntity.defaultBranch = detail.getDefaultBranch(); - // ArrayListからListに変換 - documentEntity.tagIds = meta.getTagIds(); - - libraryEntity.id = meta.getId(); - libraryEntity.path = "Placeholder"; - libraryEntity.rootPath = "Placeholder"; - - database.documentDao().insert(documentEntity); - database.libraryDao().insert(libraryEntity); - } -} diff --git a/data/src/main/java/one/nem/lacerta/data/impl/DocumentImpl.java b/data/src/main/java/one/nem/lacerta/data/impl/DocumentImpl.java index 0be30724..69c98bc1 100644 --- a/data/src/main/java/one/nem/lacerta/data/impl/DocumentImpl.java +++ b/data/src/main/java/one/nem/lacerta/data/impl/DocumentImpl.java @@ -1,12 +1,15 @@ package one.nem.lacerta.data.impl; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.UUID; import javax.inject.Inject; import one.nem.lacerta.data.Document; +import one.nem.lacerta.model.PublicPath; import one.nem.lacerta.model.document.DocumentMeta; import one.nem.lacerta.model.document.DocumentDetail; @@ -18,124 +21,90 @@ import one.nem.lacerta.source.database.entity.DocumentEntity; import one.nem.lacerta.source.database.entity.LibraryEntity; import one.nem.lacerta.source.database.entity.TagEntity; +import one.nem.lacerta.source.database.entity.VcsLogEntity; +import one.nem.lacerta.vcs.ActionType; +import one.nem.lacerta.source.file.factory.FileManagerFactory; import one.nem.lacerta.source.jgit.JGitRepository; +import one.nem.lacerta.utils.LacertaLogger; +import one.nem.lacerta.utils.XmlMetaParser; import one.nem.lacerta.utils.repository.DeviceInfoUtils; +import one.nem.lacerta.vcs.LacertaVcs; -public class DocumentImpl implements Document{ +public class DocumentImpl implements Document { - private LacertaDatabase database; + String TAG = getClass().getSimpleName(); @Inject - public DocumentImpl(LacertaDatabase database) { - this.database = database; + LacertaLogger logger; + + @Inject + LacertaDatabase database; + + @Inject + LacertaVcs vcs; + + + @Inject + public DocumentImpl() { + // Init + logger.debug(TAG, "called"); } - @Inject - JGitRepository jGitRepository; - - @Inject - DeviceInfoUtils deviceInfoUtils; @Override - public ArrayList getAllDocumentMetas(int limit) { - ArrayList documentMetas = new ArrayList<>(); - List documentEntities = database.documentDao().getAllWithLimit(limit); + public DocumentDetail createDocument(DocumentMeta meta) { + DocumentDetail detail = new DocumentDetail(); + detail.setMeta(meta); + detail.setPages(new ArrayList<>()); - for (DocumentEntity documentEntity : documentEntities) { - // タグ取得 - // TODO-rca: 切り出すべきかも? - List tagEntities = database.tagDao().findByIds(documentEntity.tagIds); - ArrayList documentTags = new ArrayList<>(); - for (TagEntity tagEntity : tagEntities) { - documentTags.add(new DocumentTag(tagEntity.id, tagEntity.tagName, tagEntity.color)); - } + // TODO-rca: UIスレッドから追い出す - // 組み立て処理 - // 可読性が終わるのでコンストラクタはつかわないほうがいいかも? - DocumentMeta documentMeta = new DocumentMeta(); - documentMeta.setId(documentEntity.id); - documentMeta.setTitle(documentEntity.title); - documentMeta.setCreatedAt(documentEntity.createdAt); - documentMeta.setUpdatedAt(documentEntity.updatedAt); - documentMeta.setTags(documentTags); + // 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(); - documentMetas.add(documentMeta); - } + database.documentDao().insert(documentEntity); - return documentMetas; + // Vcs + vcs.createDocument(meta.getId()); + + return detail; } @Override - public ArrayList getAllDocumentMetas(int limit, int offset) { - return null; // TODO-rca: 実装する + public DocumentDetail createDocument() { + DocumentMeta meta = new DocumentMeta(); + meta.setId(UUID.randomUUID().toString()); + meta.setTitle("New Document"); + meta.setAuthor("author"); + meta.setDefaultBranch("master"); + meta.setUpdatedAt(new Date()); + meta.setCreatedAt(new Date()); + meta.setPath(new PublicPath().getRoot()); // TODO-rca: 2回インスタンスを生成していて無駄なのでなんとかする + meta.setTags(new ArrayList<>()); + return createDocument(meta); } @Override - public ArrayList getRecentDocumentMetas(int limit) { -// ArrayList documentMetas = new ArrayList<>(); -// database.documentDao(). - // TODO-rca: 履歴取得するDao実装する + public void deleteDocument(String documentId) { + + } + + @Override + public void updateDocument(DocumentMeta meta, DocumentDetail detail) { + + } + + @Override + public DocumentDetail getDocument(String documentId) { return null; } - - @Override - public ArrayList getRecentDocumentMetas(int limit, int offset) { - return null; - } - - @Override - public DocumentDetail getDocumentDetail(String id) { - DocumentDetail documentDetail = new DocumentDetail(); - DocumentEntity documentEntity = database.documentDao().findById(id); - - // タグ取得 - // TODO-rca: 切り出すべきかも? - List tagEntities = database.tagDao().findByIds(documentEntity.tagIds); - ArrayList documentTags = new ArrayList<>(); - for (TagEntity tagEntity : tagEntities) { - documentTags.add(new DocumentTag(tagEntity.id, tagEntity.tagName, tagEntity.color)); - } - - // パス取得 - // TODO-rca: 切り出すべきかも? - LibraryEntity libraryEntity = database.libraryDao().findById(id); - DocumentPath documentPath = new DocumentPath(libraryEntity.rootPath, libraryEntity.path); - - // リポジトリ取得 - documentDetail.setRepository(jGitRepository.getRepository(id)); // TODO-rca: エラーハンドリング - - // 組み立て処理 - // 可読性が終わるのでコンストラクタはつかわないほうがいいかも? - DocumentMeta documentMeta = new DocumentMeta(); - documentMeta.setId(documentEntity.id); - documentMeta.setTitle(documentEntity.title); - documentMeta.setCreatedAt(documentEntity.createdAt); - documentMeta.setUpdatedAt(documentEntity.updatedAt); - documentMeta.setTags(documentTags); - - documentDetail.setMeta(documentMeta); - documentDetail.setAuthor(documentEntity.author); - documentDetail.setPath(documentPath); - documentDetail.setDefaultBranch(documentEntity.defaultBranch); - - return documentDetail; - } - - @Override - public DocumentDetail getDocumentDetailByMeta(DocumentMeta meta) { - return getDocumentDetail(meta.getId()); // TODO-rca: 効率悪いのでMetaはもらった物を使うようにする(処理を切り分ける?) - } - - @Override - public DocumentDetail createDocumentByMeta(DocumentMeta meta) { - DocumentDetail documentDetail = new DocumentDetail(); - - documentDetail.setMeta(meta); - documentDetail.setAuthor("author"); // TODO-rca: SharedPrefを扱う機能を作ってそこから取得するようにする or Gitの設定を参照するようにする - documentDetail.setPath(new DocumentPath(deviceInfoUtils.getExternalStorageDirectoryString(), meta.getId())); - documentDetail.setDefaultBranch("master"); // TODO-rca: SharedPrefを扱う機能を作ってそこから取得するようにする? - - return documentDetail; - } } diff --git a/data/src/main/java/one/nem/lacerta/data/impl/LacertaLibraryStubImpl.java b/data/src/main/java/one/nem/lacerta/data/impl/LacertaLibraryStubImpl.java index 55129bba..47d547f8 100644 --- a/data/src/main/java/one/nem/lacerta/data/impl/LacertaLibraryStubImpl.java +++ b/data/src/main/java/one/nem/lacerta/data/impl/LacertaLibraryStubImpl.java @@ -136,9 +136,9 @@ public class LacertaLibraryStubImpl implements LacertaLibrary { DocumentDetail documentDetail = new DocumentDetail(); documentDetail.setMeta(documentMeta); - documentDetail.setPath(null); // TODO-rca: なんとかする - documentDetail.setAuthor(faker.name().fullName()); - documentDetail.setRepository(null); // TODO-rca: なんとかする +// documentDetail.setPath(null); // TODO-rca: なんとかする +// documentDetail.setAuthor(faker.name().fullName()); +// documentDetail.setRepository(null); // TODO-rca: なんとかする return documentDetail; } diff --git a/data/src/main/java/one/nem/lacerta/data/module/DocumentDebugModule.java b/data/src/main/java/one/nem/lacerta/data/module/DocumentDebugModule.java deleted file mode 100644 index bcf5c7c5..00000000 --- a/data/src/main/java/one/nem/lacerta/data/module/DocumentDebugModule.java +++ /dev/null @@ -1,16 +0,0 @@ -package one.nem.lacerta.data.module; - -import dagger.Binds; -import dagger.Module; -import dagger.hilt.InstallIn; -import dagger.hilt.components.SingletonComponent; -import one.nem.lacerta.data.DocumentDebug; -import one.nem.lacerta.data.impl.DocumentDebugImpl; - -@Module -@InstallIn(SingletonComponent.class) // TODO-rca: Singletonでいいのか検討する -abstract public class DocumentDebugModule { - - @Binds - public abstract DocumentDebug bindDocumentDebug(DocumentDebugImpl documentDebugImpl); -} diff --git a/feature/debug/src/main/java/one/nem/lacerta/feature/debug/DebugMenuDocumentTesterListFragment.java b/feature/debug/src/main/java/one/nem/lacerta/feature/debug/DebugMenuDocumentTesterListFragment.java deleted file mode 100644 index a0d57399..00000000 --- a/feature/debug/src/main/java/one/nem/lacerta/feature/debug/DebugMenuDocumentTesterListFragment.java +++ /dev/null @@ -1,81 +0,0 @@ -package one.nem.lacerta.feature.debug; - -import android.os.Bundle; - -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.RecyclerView; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.List; - -import javax.inject.Inject; - -import dagger.hilt.android.AndroidEntryPoint; -import one.nem.lacerta.data.Document; -import one.nem.lacerta.feature.debug.common.adapter.DebugMenuDocumentListItemAdapter; -import one.nem.lacerta.feature.debug.common.model.DebugMenuDocumentListItem; -import one.nem.lacerta.model.document.DocumentMeta; -import one.nem.lacerta.utils.LacertaLogger; - -/** - * A simple {@link Fragment} subclass. - * Use the {@link DebugMenuDocumentTesterListFragment#newInstance} factory method to - * create an instance of this fragment. - */ - -@AndroidEntryPoint -public class DebugMenuDocumentTesterListFragment extends Fragment { - - @Inject - Document document; - - @Inject - LacertaLogger logger; - - public DebugMenuDocumentTesterListFragment() { - // Required empty public constructor - } - - public static DebugMenuDocumentTesterListFragment newInstance() { - DebugMenuDocumentTesterListFragment fragment = new DebugMenuDocumentTesterListFragment(); - Bundle args = new Bundle(); - fragment.setArguments(args); - return fragment; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - View view = inflater.inflate(R.layout.fragment_debug_menu_document_tester_list, container, false); - - RecyclerView recyclerView = view.findViewById(R.id.recycler_view_document_list); - recyclerView.setLayoutManager(new androidx.recyclerview.widget.LinearLayoutManager(getContext())); - - ArrayList documentMetas = document.getAllDocumentMetas(100); - - logger.debug("Debug/DocList", "Document count: " + documentMetas.size()); - - List debugMenuDocumentListItems = new ArrayList<>(); - - for (DocumentMeta documentMeta : documentMetas) { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - debugMenuDocumentListItems.add(new DebugMenuDocumentListItem(documentMeta.getTitle(), "Internal Id: " + documentMeta.getId(), simpleDateFormat.format(documentMeta.getUpdatedAt()))); - } - - DebugMenuDocumentListItemAdapter adapter = new DebugMenuDocumentListItemAdapter(debugMenuDocumentListItems); - recyclerView.setAdapter(adapter); - - return view; - } -} \ No newline at end of file diff --git a/feature/debug/src/main/java/one/nem/lacerta/feature/debug/DebugMenuDocumentTesterManageFragment.java b/feature/debug/src/main/java/one/nem/lacerta/feature/debug/DebugMenuDocumentTesterManageFragment.java deleted file mode 100644 index b46ee40d..00000000 --- a/feature/debug/src/main/java/one/nem/lacerta/feature/debug/DebugMenuDocumentTesterManageFragment.java +++ /dev/null @@ -1,72 +0,0 @@ -package one.nem.lacerta.feature.debug; - -import android.os.Bundle; - -import androidx.fragment.app.Fragment; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.google.android.material.textfield.TextInputEditText; - -import java.util.UUID; - -import javax.inject.Inject; - -import dagger.hilt.android.AndroidEntryPoint; -import dagger.multibindings.IntKey; -import one.nem.lacerta.data.DocumentDebug; - -import one.nem.lacerta.model.document.DocumentMeta; -import one.nem.lacerta.model.document.DocumentDetail; - -import one.nem.lacerta.model.document.path.DocumentPath; -import one.nem.lacerta.model.document.tag.DocumentTag; - -/** - * A simple {@link Fragment} subclass. - * Use the {@link DebugMenuDocumentTesterManageFragment#newInstance} factory method to - * create an instance of this fragment. - */ -@AndroidEntryPoint -public class DebugMenuDocumentTesterManageFragment extends Fragment { - - @Inject - DocumentDebug documentDebug; - - public DebugMenuDocumentTesterManageFragment() { - // Required empty public constructor - } - - public static DebugMenuDocumentTesterManageFragment newInstance() { - DebugMenuDocumentTesterManageFragment fragment = new DebugMenuDocumentTesterManageFragment(); - Bundle args = new Bundle(); - fragment.setArguments(args); - return fragment; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - View view = inflater.inflate(R.layout.fragment_debug_menu_document_tester_manage, container, false); - - TextInputEditText editTextDocumentTitle = view.findViewById(R.id.edit_text_document_title); - view.findViewById(R.id.button_insert_test_data).setOnClickListener( v -> { - - DocumentMeta meta = new DocumentMeta(editTextDocumentTitle != null ? editTextDocumentTitle.getText().toString() : "empty title"); // TODO-rca: Nullable - DocumentPath path = new DocumentPath("root", "test_path"); - DocumentDetail detail = new DocumentDetail(meta, path, "test_author", "test_default_branch"); - - documentDebug.insertDocument(meta, detail); - }); - - return view; - } -} \ No newline at end of file diff --git a/feature/debug/src/main/java/one/nem/lacerta/feature/debug/DebugMenuDocumentTesterTopFragment.java b/feature/debug/src/main/java/one/nem/lacerta/feature/debug/DebugMenuDocumentTesterTopFragment.java index 6d9bbe3e..369b41cc 100644 --- a/feature/debug/src/main/java/one/nem/lacerta/feature/debug/DebugMenuDocumentTesterTopFragment.java +++ b/feature/debug/src/main/java/one/nem/lacerta/feature/debug/DebugMenuDocumentTesterTopFragment.java @@ -47,8 +47,8 @@ public class DebugMenuDocumentTesterTopFragment extends Fragment { List debugMenuDocTesterListItems = new ArrayList<>(); - debugMenuDocTesterListItems.add(new DebugMenuListItem("DocumentListFragment", "DocumentListFragment", R.id.action_debugMenuDocumentTesterTopFragment_to_debugMenuDocumentTesterListFragment, true)); - debugMenuDocTesterListItems.add(new DebugMenuListItem("DocumentManagerFragment", "DocumentManagerFragment", R.id.action_debugMenuDocumentTesterTopFragment_to_debugMenuDocumentTesterManageFragment, true)); +// debugMenuDocTesterListItems.add(new DebugMenuListItem("DocumentListFragment", "DocumentListFragment", R.id.action_debugMenuDocumentTesterTopFragment_to_debugMenuDocumentTesterListFragment, true)); +// debugMenuDocTesterListItems.add(new DebugMenuListItem("DocumentManagerFragment", "DocumentManagerFragment", R.id.action_debugMenuDocumentTesterTopFragment_to_debugMenuDocumentTesterManageFragment, true)); DebugMenuListItemAdapter adapter = new DebugMenuListItemAdapter(debugMenuDocTesterListItems); diff --git a/feature/debug/src/main/res/layout/fragment_debug_menu_document_tester_list.xml b/feature/debug/src/main/res/layout/fragment_debug_menu_document_tester_list.xml deleted file mode 100644 index 65642307..00000000 --- a/feature/debug/src/main/res/layout/fragment_debug_menu_document_tester_list.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - \ No newline at end of file diff --git a/feature/debug/src/main/res/layout/fragment_debug_menu_document_tester_manage.xml b/feature/debug/src/main/res/layout/fragment_debug_menu_document_tester_manage.xml deleted file mode 100644 index e4b8b046..00000000 --- a/feature/debug/src/main/res/layout/fragment_debug_menu_document_tester_manage.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/feature/debug/src/main/res/navigation/feature_debug_internal_navigation.xml b/feature/debug/src/main/res/navigation/feature_debug_internal_navigation.xml index d0f2126d..ebd05b44 100644 --- a/feature/debug/src/main/res/navigation/feature_debug_internal_navigation.xml +++ b/feature/debug/src/main/res/navigation/feature_debug_internal_navigation.xml @@ -28,23 +28,7 @@ android:name="one.nem.lacerta.feature.debug.DebugMenuDocumentTesterTopFragment" android:label="fragment_debug_menu_document_tester_top" tools:layout="@layout/fragment_debug_menu_document_tester_top" > - - - - metas = document.getAllDocumentMetas(100); +// List metas = document.getAllDocumentMetas(100); - Toast.makeText(getContext(), "Documents: " + Integer.toString(metas.size()), Toast.LENGTH_LONG).show(); +// Toast.makeText(getContext(), "Documents: " + Integer.toString(metas.size()), Toast.LENGTH_LONG).show(); // Create and set the adapter - DocumentAdapter adapter = new DocumentAdapter(metas); - documentRecyclerView.setAdapter(adapter); +// DocumentAdapter adapter = new DocumentAdapter(metas); +// documentRecyclerView.setAdapter(adapter); // Use a LinearLayoutManager to specify the layout return view; diff --git a/model/src/main/java/one/nem/lacerta/model/PublicPath.java b/model/src/main/java/one/nem/lacerta/model/PublicPath.java index 980a3a9d..47f68ca7 100644 --- a/model/src/main/java/one/nem/lacerta/model/PublicPath.java +++ b/model/src/main/java/one/nem/lacerta/model/PublicPath.java @@ -65,4 +65,10 @@ public class PublicPath { public String getStringPath() { return String.join("/", path); } + + public PublicPath getRoot() { + PublicPath root = new PublicPath(); + root.add("/"); + return root; + } } diff --git a/model/src/main/java/one/nem/lacerta/model/document/DocumentDetail.java b/model/src/main/java/one/nem/lacerta/model/document/DocumentDetail.java index 13559491..6108525d 100644 --- a/model/src/main/java/one/nem/lacerta/model/document/DocumentDetail.java +++ b/model/src/main/java/one/nem/lacerta/model/document/DocumentDetail.java @@ -3,11 +3,14 @@ package one.nem.lacerta.model.document; import org.eclipse.jgit.lib.Repository; import java.nio.file.Path; +import java.util.ArrayList; import java.util.Date; import one.nem.lacerta.model.document.path.DocumentPath; import one.nem.lacerta.model.document.DocumentMeta; +import one.nem.lacerta.model.document.page.Page; + /** * ドキュメントの詳細データ */ @@ -19,31 +22,21 @@ public class DocumentDetail { DocumentMeta meta; /** - * ドキュメントのパス(DocumentPathインスタンス) + * ドキュメントのページ(Pageインスタンスのリスト) */ - DocumentPath path; - - /** - * ドキュメントの作者(String) - */ - String author; - - /** - * ドキュメントのデフォルトブランチ(String) - */ - String defaultBranch; - - Repository repository; + ArrayList pages; // Constructor public DocumentDetail() { } - public DocumentDetail(DocumentMeta meta, DocumentPath path, String author, String defaultBranch) { + public DocumentDetail(DocumentMeta meta) { this.meta = meta; - this.path = path; - this.author = author; - this.defaultBranch = defaultBranch; + } + + public DocumentDetail(DocumentMeta meta, ArrayList pages) { + this.meta = meta; + this.pages = pages; } // Getter @@ -56,34 +49,12 @@ public class DocumentDetail { } /** - * ドキュメントのパス(DocumentPathインスタンス)を取得する + * ドキュメントのページ(Pageインスタンスのリスト)を取得する */ - public DocumentPath getPath() { - return path; + public ArrayList getPages() { + return pages; } - /** - * ドキュメントの作者(String)を取得する - */ - public String getAuthor() { - return author; - } - - /** - * ドキュメントのデフォルトブランチ(String)を取得する - */ - public String getDefaultBranch() { - return defaultBranch; - } - - /** - * ドキュメントのリポジトリを取得する - */ - public Repository getRepository() { - return repository; - } - - // Setter /** @@ -95,34 +66,11 @@ public class DocumentDetail { } /** - * ドキュメントのパス(DocumentPathインスタンス)を設定する - * @param path DocumentPathインスタンス + * ドキュメントのページ(Pageインスタンスのリスト)を設定する + * @param pages Pageインスタンスのリスト */ - public void setPath(DocumentPath path) { - this.path = path; - } - - /** - * ドキュメントの作者(String)を設定する - * @param author ドキュメントの作者 - */ - public void setAuthor(String author) { - this.author = author; - } - - /** - * ドキュメントのデフォルトブランチ(String)を設定する - * @param defaultBranch ドキュメントのデフォルトブランチ - */ - public void setDefaultBranch(String defaultBranch) { - this.defaultBranch = defaultBranch; - } - - /** - * ドキュメントのリポジトリを設定する - */ - public void setRepository(Repository repository) { - this.repository = repository; + public void setPages(ArrayList pages) { + this.pages = pages; } } diff --git a/model/src/main/java/one/nem/lacerta/model/document/DocumentMeta.java b/model/src/main/java/one/nem/lacerta/model/document/DocumentMeta.java index c191fcde..038b625e 100644 --- a/model/src/main/java/one/nem/lacerta/model/document/DocumentMeta.java +++ b/model/src/main/java/one/nem/lacerta/model/document/DocumentMeta.java @@ -1,6 +1,8 @@ package one.nem.lacerta.model.document; import java.util.ArrayList; + +import one.nem.lacerta.model.PublicPath; import one.nem.lacerta.model.document.tag.DocumentTag; import java.util.Date; import java.util.List; @@ -9,7 +11,7 @@ import java.util.UUID; /** * ドキュメントのメタデータ */ -public class DocumentMeta { +public class DocumentMeta { // TODO-rca: JavaDoc対応 /** * ドキュメントのID(String) */ @@ -35,42 +37,52 @@ public class DocumentMeta { */ List tags; + PublicPath path; + + String author; + + String defaultBranch; + // Constructor + public DocumentMeta() { } - public DocumentMeta(String id, String title, Date updatedAt, Date createdAt, List tags) { // With all + public DocumentMeta(String title, List tags, String author, String defaultBranch) { + this.id = UUID.randomUUID().toString(); + this.title = title; + this.tags = tags; + this.author = author; + this.defaultBranch = defaultBranch; + } + + public DocumentMeta(String id, String title, List tags, String author, String defaultBranch) { + this.id = id; + this.title = title; + this.tags = tags; + this.author = author; + this.defaultBranch = defaultBranch; + } + + public DocumentMeta(String id, String title, Date updatedAt, Date createdAt, List tags, String author, String defaultBranch) { this.id = id; this.title = title; this.updatedAt = updatedAt; this.createdAt = createdAt; this.tags = tags; + this.author = author; + this.defaultBranch = defaultBranch; } - public DocumentMeta(String id, String title, Date updatedAt, Date createdAt) { // Without tags + public DocumentMeta(String id, String title, Date updatedAt, Date createdAt, List tags, PublicPath path, String author, String defaultBranch) { this.id = id; this.title = title; this.updatedAt = updatedAt; this.createdAt = createdAt; - this.tags = new ArrayList<>(); - } - - public DocumentMeta(String id, String title) { // Without tags, updatedAt, createdAt - this.id = id; - this.title = title; - // 現在時刻を設定 - this.updatedAt = new Date(); - this.createdAt = new Date(); - this.tags = new ArrayList<>(); - } - - public DocumentMeta(String title) { // title only - this.id = UUID.randomUUID().toString(); // 新規作成時想定なのでコンストラクタで生成してしまう(使う人が楽なので) - this.title = title; - // 現在時刻を設定 - this.updatedAt = new Date(); - this.createdAt = new Date(); - this.tags = new ArrayList<>(); + this.tags = tags; + this.path = path; + this.author = author; + this.defaultBranch = defaultBranch; } // Getter @@ -121,6 +133,27 @@ public class DocumentMeta { return tagIds; } + /** + * PublicPathを取得する + */ + public PublicPath getPath() { + return path; + } + + /** + * ドキュメントの作者(String)を取得する + */ + public String getAuthor() { + return author; + } + + /** + * ドキュメントのデフォルトブランチ(String)を取得する + */ + public String getDefaultBranch() { + return defaultBranch; + } + // Setter /** @@ -163,6 +196,30 @@ public class DocumentMeta { this.tags = tags; } + /** + * PublicPathを設定する + * @param path PublicPath + */ + public void setPath(PublicPath path) { + this.path = path; + } + + /** + * ドキュメントの作者(String)を設定する + * @param author ドキュメントの作者 + */ + public void setAuthor(String author) { + this.author = author; + } + + /** + * ドキュメントのデフォルトブランチ(String)を設定する + * @param defaultBranch ドキュメントのデフォルトブランチ + */ + public void setDefaultBranch(String defaultBranch) { + this.defaultBranch = defaultBranch; + } + /** * updatedAtを現在時刻に設定する */ diff --git a/model/src/main/java/one/nem/lacerta/model/document/internal/XmlMetaModel.java b/model/src/main/java/one/nem/lacerta/model/document/internal/XmlMetaModel.java index a4dff2e2..55ae05d7 100644 --- a/model/src/main/java/one/nem/lacerta/model/document/internal/XmlMetaModel.java +++ b/model/src/main/java/one/nem/lacerta/model/document/internal/XmlMetaModel.java @@ -4,12 +4,8 @@ import java.util.ArrayList; public class XmlMetaModel { - String title; - String author; - String description; -// Date created; -// Date updated; - String defaultBranch; + String revisionId; + ArrayList pages; // Constructor @@ -17,31 +13,15 @@ public class XmlMetaModel { public XmlMetaModel() { } - public XmlMetaModel(String title, String author, String description, String defaultBranch, ArrayList pages) { - this.title = title; - this.author = author; - this.description = description; - this.defaultBranch = defaultBranch; + public XmlMetaModel(String revisionId, ArrayList pages) { + this.revisionId = revisionId; this.pages = pages; } - // Getter - public String getTitle() { - return title; - } - - public String getAuthor() { - return author; - } - - public String getDescription() { - return description; - } - - public String getDefaultBranch() { - return defaultBranch; + public String getRevisionId() { + return revisionId; } public ArrayList getPages() { @@ -50,24 +30,11 @@ public class XmlMetaModel { // Setter - public void setTitle(String title) { - this.title = title; - } - - public void setAuthor(String author) { - this.author = author; - } - - public void setDescription(String description) { - this.description = description; - } - - public void setDefaultBranch(String defaultBranch) { - this.defaultBranch = defaultBranch; + public void setRevisionId(String revisionId) { + this.revisionId = revisionId; } public void setPages(ArrayList pages) { this.pages = pages; } - } diff --git a/model/src/main/java/one/nem/lacerta/model/document/page/Page.java b/model/src/main/java/one/nem/lacerta/model/document/page/Page.java new file mode 100644 index 00000000..97f65214 --- /dev/null +++ b/model/src/main/java/one/nem/lacerta/model/document/page/Page.java @@ -0,0 +1,39 @@ +package one.nem.lacerta.model.document.page; + +import android.graphics.Bitmap; + +public class Page { + + String fileName; + Bitmap bitmap; + + // Constructor + + public Page() { + } + + public Page(String fileName, Bitmap bitmap) { + this.fileName = fileName; + this.bitmap = bitmap; + } + + // Getter + + public String getFileName() { + return fileName; + } + + public Bitmap getBitmap() { + return bitmap; + } + + // Setter + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public void setBitmap(Bitmap bitmap) { + this.bitmap = bitmap; + } +} diff --git a/processor/build.gradle b/processor/build.gradle index ec1ea9b1..34829cc7 100644 --- a/processor/build.gradle +++ b/processor/build.gradle @@ -44,4 +44,5 @@ dependencies { implementation project(':source') implementation project(':utils') implementation project(':data') + implementation project(':vcs') } \ No newline at end of file diff --git a/processor/src/main/java/one/nem/lacerta/processor/DocumentProcessor.java b/processor/src/main/java/one/nem/lacerta/processor/DocumentProcessor.java index d5584c24..8a967ff0 100644 --- a/processor/src/main/java/one/nem/lacerta/processor/DocumentProcessor.java +++ b/processor/src/main/java/one/nem/lacerta/processor/DocumentProcessor.java @@ -2,13 +2,14 @@ package one.nem.lacerta.processor; import android.graphics.Bitmap; +import one.nem.lacerta.model.document.DocumentDetail; + public interface DocumentProcessor { // ページ操作 void addNewPageToLast(Bitmap bitmap) throws Exception; void addNewPagesToLast(Bitmap[] bitmaps) throws Exception; - void addNewPageAfterIndex(Bitmap bitmap, int index) throws Exception; - void addNewPageBeforeIndex(Bitmap bitmap, int index) throws Exception; + void insertPageAtIndex(Bitmap bitmap, int index) throws Exception; void removePageAtIndex(int index) throws Exception; // 更新 @@ -18,7 +19,5 @@ public interface DocumentProcessor { Bitmap getPageAtIndex(int index); int getPageCount(); - void close() throws Exception; - void init() throws Exception; // TODO-rca: 例外処理 - + DocumentDetail getDocumentDetail(); } diff --git a/processor/src/main/java/one/nem/lacerta/processor/impl/DocumentProcessorImpl.java b/processor/src/main/java/one/nem/lacerta/processor/impl/DocumentProcessorImpl.java index d6b15343..684a71af 100644 --- a/processor/src/main/java/one/nem/lacerta/processor/impl/DocumentProcessorImpl.java +++ b/processor/src/main/java/one/nem/lacerta/processor/impl/DocumentProcessorImpl.java @@ -14,12 +14,18 @@ import one.nem.lacerta.processor.DocumentProcessor; import one.nem.lacerta.model.document.DocumentDetail; import one.nem.lacerta.model.document.internal.XmlMetaModel; + +import one.nem.lacerta.model.document.page.Page; + 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.XmlMetaParser; +import one.nem.lacerta.utils.repository.DeviceInfoUtils; +import one.nem.lacerta.vcs.LacertaVcs; +import one.nem.lacerta.vcs.factory.LacertaVcsFactory; public class DocumentProcessorImpl implements DocumentProcessor{ @@ -32,77 +38,47 @@ public class DocumentProcessorImpl implements DocumentProcessor{ private XmlMetaModel xmlMetaModel; private Path documentRootPath; private FileManager fileManager; + private LacertaVcs lacertaVcs; // Injection private final FileManagerFactory fileManagerFactory; private final LacertaLogger logger; private final XmlMetaParser xmlMetaParser; + private final LacertaVcsFactory lacertaVcsFactory; + private final DeviceInfoUtils deviceInfoUtils; @AssistedInject - public DocumentProcessorImpl(FileManagerFactory fileManagerFactory, LacertaLogger logger, XmlMetaParser xmlMetaParser, @Assisted DocumentDetail documentDetail) { + public DocumentProcessorImpl(FileManagerFactory fileManagerFactory, LacertaLogger logger, XmlMetaParser xmlMetaParser, LacertaVcsFactory lacertaVcsFactory, DeviceInfoUtils deviceInfoUtils, @Assisted DocumentDetail documentDetail) { this.fileManagerFactory = fileManagerFactory; this.logger = logger; this.xmlMetaParser = xmlMetaParser; if (documentDetail == null) { throw new IllegalArgumentException("documentDetail must not be null"); } + this.lacertaVcsFactory = lacertaVcsFactory; this.documentDetail = documentDetail; - } + this.deviceInfoUtils = deviceInfoUtils; - @Override - public void init() throws Exception{ - logger.debug("init", "called"); - // Init Variables - this.documentRootPath = this.documentDetail.getPath().getFullPath(); + // Init + this.documentRootPath = deviceInfoUtils.getExternalStorageDirectory().resolve(this.documentDetail.getMeta().getId()); logger.debug("init", "documentRootPath: " + this.documentRootPath); - this.fileManager = fileManagerFactory.create(this.documentRootPath).enableAutoCreateParent(); //Initialize FileManager - - FileManager initFileManager = this.fileManager.getNewInstance(); - - logger.debug("init", "fileManager created"); - - // xmlファイルの読み込み - if (initFileManager.isExist("meta.xml")) { - logger.debug("init", "meta.xml found"); - try { - this.xmlMetaModel = xmlMetaParser.deserialize(this.fileManager.loadXml("meta.xml")); - logger.debug("init", "meta.xml parsed"); - } catch (Exception e) { - logger.debug("init", "meta.xml parse failed"); - logger.trace("init", e.getMessage()); - } - } else { - logger.debug("init", "meta.xml not found"); - xmlMetaModel = new XmlMetaModel(); - - xmlMetaModel.setTitle(this.documentDetail.getMeta().getTitle()); - xmlMetaModel.setAuthor(this.documentDetail.getAuthor()); - xmlMetaModel.setDescription(""); // FIXME-rca: - xmlMetaModel.setDefaultBranch(this.documentDetail.getDefaultBranch()); - xmlMetaModel.setPages(new ArrayList<>()); - - try { - initFileManager.createFileIfNotExist("meta.xml").saveXml(xmlMetaParser.serialize(xmlMetaModel), "meta.xml"); - logger.debug("init", "meta.xml saved"); - } catch (Exception e) { - logger.error("init", "meta.xml save failed"); - logger.trace("init", e.getMessage()); - } - } - - logger.info("init", "finished"); + this.lacertaVcs = lacertaVcsFactory.create(this.documentDetail.getMeta().getId()); } + @Override public void addNewPageToLast(Bitmap bitmap) throws Exception{ logger.debug("addNewPageToLast", "called"); String filename = UUID.randomUUID().toString() + ".png"; // TODO-rca: 拡張子を動的にする - this.fileManager.getNewInstance().createDirectoryIfNotExist(DEFAULT_SAVE_DIR).resolve(DEFAULT_SAVE_DIR).saveBitmap(bitmap, filename); + Page page = new Page(); + page.setFileName(filename); + page.setBitmap(bitmap); + this.documentDetail.getPages().add(page); - XmlMetaPageModel xmlMetaPageModel = new XmlMetaPageModel(); - xmlMetaPageModel.setFilename(filename); - xmlMetaModel.getPages().add(xmlMetaPageModel); + lacertaVcs.insertPage(documentDetail.getPages().size(), filename); + + this.fileManager.getNewInstance().createDirectoryIfNotExist(DEFAULT_SAVE_DIR).resolve(DEFAULT_SAVE_DIR).saveBitmap(bitmap, filename); logger.info("addNewPageToLast", "finished"); logger.info("addNewPageToLast", "filename: " + filename); @@ -118,27 +94,18 @@ public class DocumentProcessorImpl implements DocumentProcessor{ } @Override - public void addNewPageAfterIndex(Bitmap bitmap, int index) throws Exception { + public void insertPageAtIndex(Bitmap bitmap, int index) throws Exception { logger.debug("addNewPageAfterIndex", "called"); String filename = UUID.randomUUID().toString() + ".png"; // TODO-rca: 拡張子を動的にする this.fileManager.getNewInstance().createDirectoryIfNotExist(DEFAULT_SAVE_DIR).resolve(DEFAULT_SAVE_DIR).saveBitmap(bitmap, filename); - XmlMetaPageModel xmlMetaPageModel = new XmlMetaPageModel(); - xmlMetaPageModel.setFilename(filename); - xmlMetaModel.getPages().add(index, xmlMetaPageModel); - } + Page page = new Page(); + page.setFileName(filename); + page.setBitmap(bitmap); + this.documentDetail.getPages().add(index, page); - @Override - public void addNewPageBeforeIndex(Bitmap bitmap, int index) throws Exception { - logger.debug("addNewPageBeforeIndex", "called"); - String filename = UUID.randomUUID().toString() + ".png"; // TODO-rca: 拡張子を動的にする - - this.fileManager.getNewInstance().createDirectoryIfNotExist(DEFAULT_SAVE_DIR).resolve(DEFAULT_SAVE_DIR).saveBitmap(bitmap, filename); - - XmlMetaPageModel xmlMetaPageModel = new XmlMetaPageModel(); - xmlMetaPageModel.setFilename(filename); - xmlMetaModel.getPages().add(index - 1, xmlMetaPageModel); + lacertaVcs.insertPage(index, filename); } @Override @@ -162,14 +129,7 @@ public class DocumentProcessorImpl implements DocumentProcessor{ } @Override - public void close() throws Exception{ - logger.debug("close", "called"); - try { - this.fileManager.getNewInstance().createFileIfNotExist("meta.xml").saveXml(xmlMetaParser.serialize(xmlMetaModel), "meta.xml"); - logger.debug("close", "meta.xml saved"); - } catch (Exception e) { - logger.error("close", "meta.xml save failed"); - logger.trace("close", e.getMessage()); - } + public DocumentDetail getDocumentDetail() { + return this.documentDetail; } } diff --git a/utils/src/main/java/one/nem/lacerta/utils/impl/XmlMetaParserImpl.java b/utils/src/main/java/one/nem/lacerta/utils/impl/XmlMetaParserImpl.java index 7874a0b9..60263d68 100644 --- a/utils/src/main/java/one/nem/lacerta/utils/impl/XmlMetaParserImpl.java +++ b/utils/src/main/java/one/nem/lacerta/utils/impl/XmlMetaParserImpl.java @@ -32,10 +32,7 @@ public class XmlMetaParserImpl implements XmlMetaParser{ XmlMetaModel meta = new XmlMetaModel(); - meta.setTitle(rootElement.getElementsByTagName("title").item(0).getTextContent()); - meta.setAuthor(rootElement.getElementsByTagName("author").item(0).getTextContent()); - meta.setDescription(rootElement.getElementsByTagName("description").item(0).getTextContent()); - meta.setDefaultBranch(rootElement.getElementsByTagName("defaultBranch").item(0).getTextContent()); + meta.setRevisionId(rootElement.getElementsByTagName("revisionId").item(0).getTextContent()); ArrayList pages = new ArrayList<>(); for(int i = 0; i < rootElement.getElementsByTagName("pages").getLength(); i++) { @@ -64,10 +61,7 @@ public class XmlMetaParserImpl implements XmlMetaParser{ Element rootElement = document.createElement("meta"); - appendElement(document, rootElement, "title", meta.getTitle()); - appendElement(document, rootElement, "author", meta.getAuthor()); - appendElement(document, rootElement, "description", meta.getDescription()); - appendElement(document, rootElement, "defaultBranch", meta.getDefaultBranch()); + appendElement(document, rootElement, "revisionId", meta.getRevisionId()); Element pagesElement = document.createElement("pages"); for(XmlMetaPageModel page : meta.getPages()) { diff --git a/vcs/build.gradle b/vcs/build.gradle index 874bad5d..52036d31 100644 --- a/vcs/build.gradle +++ b/vcs/build.gradle @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.com.android.library) + id 'com.google.dagger.hilt.android' } android { diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java b/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java index 29125361..46640d37 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java @@ -9,6 +9,8 @@ public interface LacertaVcs { public void deletePage(int index); + public void createDocument(String documentId); + // debug public void printLog(); diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 0a20e5e3..15e343da 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -52,6 +52,11 @@ public class LacertaVcsImpl implements LacertaVcs { } + @Override + public void createDocument(String documentId) { + + } + @Override public void printLog() { logger.debug(TAG, "printLog");