Compare commits

...
Author SHA1 Message Date
r-ca c8517ad814 Impl 2023-12-25 14:49:04 +09:00
r-ca ffb6ebb358 Repository追加 2023-12-25 14:46:45 +09:00
r-ca a4db519fcf 操作メソッド追加 2023-12-25 14:29:10 +09:00
r-ca 5ff6ac32ba コンストラクタ, Getter, Setter 2023-12-25 14:25:22 +09:00
r-ca bc06438811 メタデータのモデル作成 WIP 2023-12-25 14:23:12 +09:00
r-ca 6adcbf81c6 メタデータのモデル作成 WIP 2023-12-25 14:23:08 +09:00
r-ca bc24ec45af メタデータのプロセッサーを作成 2023-12-25 14:16:46 +09:00
r-ca ca3b4d78a5 Revert "メタデータのプロセッサーを作成"
This reverts commit c1b8722b82.
2023-12-25 14:16:13 +09:00
r-ca c1b8722b82 メタデータのプロセッサーを作成 2023-12-25 14:15:54 +09:00
r-ca 646627ac49 一旦コメントアウト 2023-12-25 13:34:04 +09:00
r-ca 6a98deab83 FileManagerに普通のファイル読み書きを追加 WIP 2023-12-25 13:33:28 +09:00
r-ca 92b48336ac FileManagerに普通のファイル読み書きを追加 WIP 2023-12-25 13:30:46 +09:00
r-ca 81d545b90b addNewPage実装 WIP 2023-12-25 13:29:02 +09:00
r-ca 9daccbb084 山っぽいものを描画するように 2023-12-25 12:13:22 +09:00
r-ca a47d652275 pngで保存するように変更 2023-12-25 11:57:48 +09:00
r-ca e55b5709dd pngで保存するように変更 2023-12-25 11:57:44 +09:00
r-ca 9fc5d160ac pngで保存するように変更 2023-12-25 11:57:37 +09:00
r-ca 544b09dc39 デバッグメニューロジック実装 2023-12-25 11:55:42 +09:00
r-ca bc42d59471 デバッグメニューレイアウト修正 2023-12-25 11:52:10 +09:00
r-ca 5d46fc3e81 デバッグメニューレイアウト作成 2023-12-25 11:50:13 +09:00
r-ca 9a17910862 saveの中身を実装 WIP 2023-12-25 11:49:01 +09:00
r-ca 8441b88ab3 save/load/removeを追加 Impl WIP 2023-12-25 11:46:54 +09:00
r-ca 92d147ab65 Revert "save/load/removeを追加 Impl WIP"
This reverts commit 1eee31316a.
2023-12-25 11:45:33 +09:00
r-ca 1eee31316a save/load/removeを追加 Impl WIP 2023-12-25 11:44:58 +09:00
r-ca 302eccfdfe save/load/removeを追加 Impl WIP 2023-12-25 11:42:51 +09:00
r-ca 93d1fa3f19 save/load/removeを追加 2023-12-25 11:41:37 +09:00
r-ca 2154e67178 WIP 2023-12-25 11:38:14 +09:00
r-ca de9b78035a Merge remote-tracking branch 'origin/source/add_files' into source/add_files 2023-12-24 15:07:30 +09:00
r-ca 7cb5b1ca7c アノテーション忘れ修正 2023-12-24 15:07:17 +09:00
r-ca 85c419c3ea アノテーション忘れ修正 2023-12-24 15:07:17 +09:00
r-ca 685bdd56f8 メニューに追加 2023-12-24 15:07:16 +09:00
r-ca a32ea3568f Navigationに追加 2023-12-24 15:07:16 +09:00
r-ca 275cd77f53 Impl, Factory修正 2023-12-24 15:07:15 +09:00
r-ca a8274d3882 ロジック実装 2023-12-24 15:07:15 +09:00
r-ca 8b0b58ce99 ID変更 2023-12-24 15:07:14 +09:00
r-ca eeb5387cdf WIP レイアウト 2023-12-24 15:07:14 +09:00
r-ca 41d5f8d71f ファイルマネージャーのデバッグ用フラグメント作成 2023-12-24 15:07:13 +09:00
r-ca b90ef6a487 Factory作成, 実装 2023-12-24 15:07:13 +09:00
r-ca 734f6eb41d Module実装 2023-12-24 15:07:13 +09:00
r-ca 4f762627cf Module作成 2023-12-24 15:07:12 +09:00
r-ca 85a1f8a505 create/remove実装 2023-12-24 15:07:12 +09:00
r-ca 98232dc403 create/removeの引数変更 2023-12-24 15:07:11 +09:00
r-ca e925893ad2 getList修正 2023-12-24 15:07:11 +09:00
r-ca 2f21ecd6bd getList修正 2023-12-24 15:07:10 +09:00
r-ca d203b1b76e Revert "パッケージ整理"
This reverts commit f2dfd2ca56.
2023-12-24 15:07:10 +09:00
r-ca a15383d420 Revert "WIP"
This reverts commit bbad45fbbd.
2023-12-24 15:07:09 +09:00
r-ca 6433b9a1ae WIP 2023-12-24 15:07:09 +09:00
r-ca 1a1446ac62 パッケージ整理 2023-12-24 15:07:09 +09:00
r-ca 60544c7905 Impl実装 WIP 2023-12-24 15:07:08 +09:00
r-ca 7e7d72f903 Impl実装 WIP 2023-12-24 15:07:08 +09:00
r-ca 5a468e37f9 なんかもう全部変えた 2023-12-24 15:07:07 +09:00
r-ca 25cbc32ef9 リネーム 2023-12-24 15:07:07 +09:00
r-ca 310944f51e ImplクラスInit 2023-12-24 15:07:06 +09:00
r-ca c90715b0f5 Repository実装 2023-12-24 15:07:06 +09:00
r-ca effdd8e9f3 リネーム 2023-12-24 15:07:05 +09:00
r-ca b07d370e69 モジュール整理 2023-12-24 15:07:05 +09:00
r-ca f51313411b 依存関係にHiltを追加 2023-12-24 15:07:04 +09:00
r-ca c183327842 依存関係にJGitを追加 2023-12-24 15:07:04 +09:00
r-ca 95d9af1281 インポート追加 2023-12-24 15:07:04 +09:00
r-ca 413c42fdc1 Impl実装 WIP 2023-12-24 15:07:03 +09:00
r-ca 7eca8e9528 リポジトリ更新 2023-12-24 15:07:03 +09:00
r-ca a0deb45fa0 WIP 2023-12-24 15:07:02 +09:00
r-ca e19198446b Factory作成 2023-12-24 15:07:02 +09:00
r-ca e0fe27eadd Impl, Moduleクラス作成 2023-12-24 15:07:01 +09:00
r-ca 83707f8bec パッケージ整理 2023-12-24 15:07:01 +09:00
r-ca c3d9bb0cf9 DocumentProcessor リポジトリ作成 2023-12-24 15:07:00 +09:00
r-ca 39d356841b 依存関係修正 2023-12-24 15:07:00 +09:00
r-ca 4db67a59d7 Init 2023-12-24 15:07:00 +09:00
r-ca 26f5968a4a Init WIP 2023-12-24 15:06:56 +09:00
r-ca 21f2f55531 アノテーション忘れ修正 2023-12-21 16:55:50 +09:00
r-ca 02f1ac13cf アノテーション忘れ修正 2023-12-21 16:54:52 +09:00
r-ca e0f634fcb6 メニューに追加 2023-12-21 16:54:13 +09:00
r-ca 69a0b392ff Navigationに追加 2023-12-21 16:53:55 +09:00
r-ca 0d42dc3461 Impl, Factory修正 2023-12-21 16:53:17 +09:00
r-ca 2aa6bf8c5b ロジック実装 2023-12-21 16:49:17 +09:00
r-ca 123145b6a8 ID変更 2023-12-21 16:49:13 +09:00
r-ca e723174b81 WIP レイアウト 2023-12-21 16:45:26 +09:00
r-ca c1b3c06a9d ファイルマネージャーのデバッグ用フラグメント作成 2023-12-21 16:38:59 +09:00
r-ca a23010b535 Factory作成, 実装 2023-12-21 15:13:31 +09:00
r-ca 29e0dca2c7 Module実装 2023-12-21 15:12:21 +09:00
r-ca a1c87535c6 Module作成 2023-12-21 15:09:15 +09:00
r-ca a0c4718b3a create/remove実装 2023-12-21 15:08:32 +09:00
r-ca 7c0d82f25c create/removeの引数変更 2023-12-21 15:07:32 +09:00
r-ca 5f74123c63 getList修正 2023-12-21 15:06:56 +09:00
r-ca d0543d89b9 getList修正 2023-12-21 15:05:56 +09:00
r-ca fd74f5eab0 Revert "パッケージ整理"
This reverts commit f2dfd2ca56.
2023-12-21 15:03:51 +09:00
r-ca 1bac068c8c Revert "WIP"
This reverts commit bbad45fbbd.
2023-12-21 15:03:51 +09:00
r-ca bbad45fbbd WIP 2023-12-21 15:03:44 +09:00
r-ca f2dfd2ca56 パッケージ整理 2023-12-21 15:02:02 +09:00
r-ca e3d6826912 Impl実装 WIP 2023-12-21 14:59:12 +09:00
r-ca b28a939792 Impl実装 WIP 2023-12-21 14:54:45 +09:00
r-ca 7ba70cc84b なんかもう全部変えた 2023-12-21 14:53:04 +09:00
r-ca 865d8b994c リネーム 2023-12-21 14:49:36 +09:00
r-ca 1c5325711a ImplクラスInit 2023-12-21 14:45:35 +09:00
r-ca aff7af76d4 Repository実装 2023-12-21 14:44:36 +09:00
r-ca 9fecefeb4e リネーム 2023-12-21 14:41:06 +09:00
r-ca 577453a4db モジュール整理 2023-12-21 14:35:41 +09:00
r-ca 814dfd23fa 依存関係にHiltを追加 2023-12-21 14:31:04 +09:00
r-ca 0309864d0b 依存関係にJGitを追加 2023-12-21 14:29:53 +09:00
r-ca 947c2aa2ab インポート追加 2023-12-21 14:29:16 +09:00
r-ca 0f4ce1b9b1 Impl実装 WIP 2023-12-21 14:27:28 +09:00
r-ca 8a851e4f11 リポジトリ更新 2023-12-21 14:26:59 +09:00
r-ca a298247824 WIP 2023-12-21 14:09:00 +09:00
r-ca 59e32fe696 Factory作成 2023-12-21 14:00:22 +09:00
r-ca 15beb0af57 Impl, Moduleクラス作成 2023-12-21 12:47:23 +09:00
r-ca 14e7fbd127 パッケージ整理 2023-12-21 12:46:49 +09:00
r-ca 144ff7dfd2 DocumentProcessor リポジトリ作成 2023-12-21 12:44:42 +09:00
r-ca d030847992 依存関係修正 2023-12-21 12:42:50 +09:00
r-ca eb1ad1f4af Init 2023-12-21 12:27:50 +09:00
r-ca fc048c9bd6 Init WIP 2023-12-21 12:27:28 +09:00
24 changed files with 643 additions and 0 deletions

No files matched your search

@@ -0,0 +1,110 @@
package one.nem.lacerta.feature.debug;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.lacerta.source.file.FileManager;
import one.nem.lacerta.source.file.factory.FileManagerFactory;
import one.nem.lacerta.utils.repository.DeviceInfoUtils;
import javax.inject.Inject;
/**
* A simple {@link Fragment} subclass.
* Use the {@link DebugMenuFileManagerTesterFragment#newInstance} factory method to
* create an instance of this fragment.
*/
@AndroidEntryPoint
public class DebugMenuFileManagerTesterFragment extends Fragment {
public DebugMenuFileManagerTesterFragment() {
// Required empty public constructor
}
@Inject
FileManagerFactory fileManagerFactory;
@Inject
DeviceInfoUtils deviceInfoUtils;
// TODO: Rename and change types and number of parameters
public static DebugMenuFileManagerTesterFragment newInstance() {
DebugMenuFileManagerTesterFragment fragment = new DebugMenuFileManagerTesterFragment();
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_file_manager_tester, container, false);
view.findViewById(R.id.button_create_directory).setOnClickListener(v -> {
EditText editText = view.findViewById(R.id.edit_text_dir_name);
String dirName = editText.getText().toString();
FileManager fileManager = fileManagerFactory.create(deviceInfoUtils.getExternalStorageDirectory());
fileManager.createDir(dirName);
});
view.findViewById(R.id.button_save_item).setOnClickListener(v -> {
FileManager fileManager = fileManagerFactory.create(deviceInfoUtils.getExternalStorageDirectory());
fileManager.createDir("test");
fileManager.changeDir("test");
Bitmap bitmap = Bitmap.createBitmap(1000, 1000, Bitmap.Config.ARGB_8888);
// Bitmapに描画処理を行う
Canvas canvas = new Canvas(bitmap);
// 大きな山の形状を作成
android.graphics.Path bigMountainPath = new android.graphics.Path();
bigMountainPath.moveTo(100, 800); // 左下の開始点
bigMountainPath.lineTo(500, 300); // 頂点
bigMountainPath.lineTo(900, 800); // 右下
bigMountainPath.close(); // パスを閉じる
// 山の描画設定
Paint mountainPaint = new Paint();
mountainPaint.setColor(Color.GREEN);
mountainPaint.setStyle(Paint.Style.FILL);
// 大きな山を描画
canvas.drawPath(bigMountainPath, mountainPaint);
// 小さな山の形状を作成
android.graphics.Path smallMountainPath = new android.graphics.Path();
smallMountainPath.moveTo(400, 800); // 左下の開始点
smallMountainPath.lineTo(650, 400); // 頂点
smallMountainPath.lineTo(900, 800); // 右下
smallMountainPath.close(); // パスを閉じる
Paint smallMountainPaint = new Paint();
smallMountainPaint.setColor(Color.parseColor("#006e54"));
smallMountainPaint.setStyle(Paint.Style.FILL);
// 小さな山を描画
canvas.drawPath(smallMountainPath, smallMountainPaint);
fileManager.saveBitmapAtCurrent(bitmap, "test.png");
});
return view;
}
}
@@ -12,6 +12,7 @@ import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.lacerta.feature.debug.common.adapter.DebugMenuListItemAdapter;
import one.nem.lacerta.feature.debug.common.model.DebugMenuListItem;
@@ -20,6 +21,7 @@ import one.nem.lacerta.feature.debug.common.model.DebugMenuListItem;
* Use the {@link DebugMenuTopFragment#newInstance} factory method to
* create an instance of this fragment.
*/
@AndroidEntryPoint
public class DebugMenuTopFragment extends Fragment {
public DebugMenuTopFragment() {
// Required empty public constructor
@@ -49,6 +51,7 @@ public class DebugMenuTopFragment extends Fragment {
debugMenuListItems.add(new DebugMenuListItem("Meta Data", "View meta data", R.id.action_debugMenuTopFragment_to_debugMenuMetaDataFragment, true));
debugMenuListItems.add(new DebugMenuListItem("Document Tester", "placeholder", R.id.action_debugMenuTopFragment_to_debugMenuDocumentTesterTopFragment, true));
debugMenuListItems.add(new DebugMenuListItem("Scanner", "placeholder", R.id.action_debugMenuTopFragment_to_scannerDataManagerStubFragment, true));
debugMenuListItems.add(new DebugMenuListItem("File Manager", "placeholder", R.id.action_debugMenuTopFragment_to_debugMenuFileManagerTesterFragment, true));
DebugMenuListItemAdapter adapter = new DebugMenuListItemAdapter(debugMenuListItems);
recyclerView.setAdapter(adapter);
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DebugMenuFileManagerTesterFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<EditText
android:id="@+id/edit_text_dir_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/button_create_directory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Create dir" />
<Button
android:id="@+id/button_dir_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="List item in current" />
<Button
android:id="@+id/button_save_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Save Test Image" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -19,6 +19,9 @@
<action
android:id="@+id/action_debugMenuTopFragment_to_scannerDataManagerStubFragment"
app:destination="@id/scannerDataManagerStubFragment" />
<action
android:id="@+id/action_debugMenuTopFragment_to_debugMenuFileManagerTesterFragment"
app:destination="@id/debugMenuFileManagerTesterFragment" />
</fragment>
<fragment
android:id="@+id/debugMenuMetaDataFragment"
@@ -51,4 +54,9 @@
android:id="@+id/scannerDataManagerStubFragment"
android:name="one.nem.lacerta.component.scanner.ScannerDataManagerStubFragment"
android:label="ScannerDataManagerStubFragment" />
<fragment
android:id="@+id/debugMenuFileManagerTesterFragment"
android:name="one.nem.lacerta.feature.debug.DebugMenuFileManagerTesterFragment"
android:label="fragment_debug_menu_file_manager_tester"
tools:layout="@layout/fragment_debug_menu_file_manager_tester" />
</navigation>
+12
View File
@@ -32,4 +32,16 @@ dependencies {
testImplementation libs.junit
androidTestImplementation libs.androidx.test.ext.junit
androidTestImplementation libs.androidx.test.espresso.core
// DI
implementation libs.com.google.dagger.hilt.android
annotationProcessor libs.com.google.dagger.hilt.compiler
// JGit
implementation 'org.eclipse.jgit:org.eclipse.jgit:6.8.0.202311291450-r'
implementation project(':model')
implementation project(':source')
implementation project(':utils')
implementation project(':data')
}
@@ -0,0 +1,21 @@
package one.nem.lacerta.processor;
import android.graphics.Bitmap;
public interface DocumentProcessor {
// ページ操作
void addNewPageToLast(Bitmap bitmap);
void addNewPagesToLast(Bitmap[] bitmaps);
void addNewPageAfterIndex(Bitmap bitmap, int index);
void addNewPageBeforeIndex(Bitmap bitmap, int index);
void removePageAtIndex(int index);
// 更新
void updatePageAtIndex(Bitmap bitmap, int index);
// ページ取得
Bitmap getPageAtIndex(int index);
int getPageCount();
}
@@ -0,0 +1,10 @@
package one.nem.lacerta.processor;
import one.nem.lacerta.processor.model.XmlMetaModel;
import one.nem.lacerta.processor.model.XmlMetaPageModel;
public interface XmlMetaProcessor {
void saveXmlMeta(XmlMetaModel xmlMetaModel);
XmlMetaModel loadXmlMeta();
}
@@ -0,0 +1,4 @@
package one.nem.lacerta.processor.factory;
public class DocumentProcessorFactory {
}
@@ -0,0 +1,80 @@
package one.nem.lacerta.processor.impl;
import android.graphics.Bitmap;
import java.io.File;
import java.nio.file.Path;
import java.util.UUID;
import javax.inject.Inject;
import one.nem.lacerta.processor.DocumentProcessor;
import one.nem.lacerta.model.document.DocumentDetail;
import one.nem.lacerta.model.document.DocumentMeta;
import one.nem.lacerta.source.file.FileManager;
import one.nem.lacerta.source.file.factory.FileManagerFactory;
public class DocumentProcessorImpl implements DocumentProcessor{
// Magic Numbers
private static final String DEFAULT_SAVE_DIR = "raw";
private DocumentDetail documentDetail;
// Injection
@Inject
FileManagerFactory fileManagerFactory;
// Internal utils
@Override
public void addNewPageToLast(Bitmap bitmap) {
Path path = documentDetail.getPath().getFullPath();
String fileName = String.format(UUID.randomUUID().toString() + ".png"); // TODO-rca: 対応表をもたせる
FileManager fileManager = fileManagerFactory.create(path);
if(fileManager.getList().contains(path.resolve(DEFAULT_SAVE_DIR))) {
fileManager.changeDir(DEFAULT_SAVE_DIR);
} else {
fileManager.createDir(DEFAULT_SAVE_DIR);
fileManager.changeDir(DEFAULT_SAVE_DIR);
}
fileManager.saveBitmapAtCurrent(bitmap, fileName);
}
@Override
public void addNewPagesToLast(Bitmap[] bitmaps) {
}
@Override
public void addNewPageAfterIndex(Bitmap bitmap, int index) {
}
@Override
public void addNewPageBeforeIndex(Bitmap bitmap, int index) {
}
@Override
public void removePageAtIndex(int index) {
}
@Override
public void updatePageAtIndex(Bitmap bitmap, int index) {
}
@Override
public Bitmap getPageAtIndex(int index) {
return null;
}
@Override
public int getPageCount() {
return 0;
}
}
@@ -0,0 +1,17 @@
package one.nem.lacerta.processor.impl;
import one.nem.lacerta.processor.XmlMetaProcessor;
import one.nem.lacerta.processor.model.XmlMetaModel;
public class XmlMetaProcessorImpl implements XmlMetaProcessor{
@Override
public void saveXmlMeta(XmlMetaModel xmlMetaModel) {
}
@Override
public XmlMetaModel loadXmlMeta() {
return null;
}
}
Whitespace-only changes.
@@ -0,0 +1,105 @@
package one.nem.lacerta.processor.model;
import java.util.ArrayList;
import java.util.Date;
public class XmlMetaModel {
String title;
String author;
String description;
// Date created;
// Date updated;
String defaultBranch;
ArrayList<XmlMetaPageModel> pages;
// Constructor
public XmlMetaModel() {
}
public XmlMetaModel(String title, String author, String description, String defaultBranch, ArrayList<XmlMetaPageModel> pages) {
this.title = title;
this.author = author;
this.description = description;
this.defaultBranch = defaultBranch;
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 ArrayList<XmlMetaPageModel> getPages() {
return pages;
}
// 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 setPages(ArrayList<XmlMetaPageModel> pages) {
this.pages = pages;
}
// Public Methods
public void addPage(XmlMetaPageModel page) {
this.pages.add(page);
}
public void addPageAfterIndex(int index, XmlMetaPageModel page) {
this.pages.add(index, page);
//Update index
this.updateIndex();
}
public void removePage(XmlMetaPageModel page) {
this.pages.remove(page);
}
public void removePageAtIndex(int index) {
this.pages.remove(index);
//Update index
this.updateIndex();
}
// Internal Methods
private void updateIndex() { // TODO-rca: 効率悪そう
for (int i = 0; i < this.pages.size(); i++) {
this.pages.get(i).setIndex(i);
}
}
}
@@ -0,0 +1,37 @@
package one.nem.lacerta.processor.model;
public class XmlMetaPageModel {
int index;
String filename;
// Constructor
public XmlMetaPageModel() {
}
public XmlMetaPageModel(int index, String filename) {
this.index = index;
this.filename = filename;
}
// Getter
public int getIndex() {
return index;
}
public String getFilename() {
return filename;
}
// Setter
public void setIndex(int index) {
this.index = index;
}
public void setFilename(String filename) {
this.filename = filename;
}
}
@@ -0,0 +1,4 @@
package one.nem.lacerta.processor.module;
public class DocumentProcessorModule {
}
Whitespace-only changes.
Whitespace-only changes.
@@ -0,0 +1,4 @@
<resources>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
</resources>
@@ -0,0 +1,27 @@
package one.nem.lacerta.source.file;
import android.graphics.Bitmap;
import java.io.File;
import java.nio.file.Path;
import java.util.List;
public interface FileManager {
Path getRootDir();
void changeDir(String dirName); //cd
void backDir(); //cd ..
void backRootDir(); //cd /
List<Path> getList();
void createDir(String dirName);
void removeDir(String dirName);
void saveBitmapAtCurrent(Bitmap bitmap, String fileName);
Bitmap loadBitmap(Path path);
void removeBitmap(Path path);
// void saveFileAtCurrent(File file);
// File getFile(Path path);
// void removeFile(Path path);
}
@@ -0,0 +1,11 @@
package one.nem.lacerta.source.file.factory;
import java.nio.file.Path;
import dagger.assisted.AssistedFactory;
import one.nem.lacerta.source.file.impl.FileManagerImpl;
@AssistedFactory
public interface FileManagerFactory {
FileManagerImpl create(Path rootDir);
}
Whitespace-only changes.
@@ -0,0 +1,130 @@
package one.nem.lacerta.source.file.impl;
import android.graphics.Bitmap;
import java.io.File;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.inject.Inject;
import dagger.assisted.Assisted;
import dagger.assisted.AssistedInject;
import one.nem.lacerta.source.file.FileManager;
public class FileManagerImpl implements FileManager {
// RootDir
private Path rootDir;
// CurrentDir
private Path currentDir;
// Internal Methods
private Path convertPath(String path) {
Path convertedPath = currentDir.resolve(path);
if (convertedPath.startsWith(rootDir)) { // 異常なパスの場合はnullを返す // TODO-rca: エラーハンドリング
return convertedPath;
} else {
return null;
}
}
@AssistedInject
public FileManagerImpl(@Assisted Path rootDir) {
this.rootDir = rootDir;
this.currentDir = rootDir;
}
@Override
public Path getRootDir() {
return rootDir;
}
@Override
public void changeDir(String dirName) {
this.currentDir = rootDir.resolve(dirName);
}
@Override
public void backDir() {
this.currentDir = currentDir.getParent();
}
@Override
public void backRootDir() {
this.currentDir = rootDir;
}
@Override
public List<Path> getList() {
List<Path> list = new ArrayList<>();
try (DirectoryStream<Path> stream = Files.newDirectoryStream(currentDir)) {
for (Path entry : stream) { // TODO-rca: エラーハンドリング, 効率化
list.add(entry);
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
@Override
public void createDir(String dirName) {
currentDir.resolve(dirName).toFile().mkdir(); // TODO-rca: エラーハンドリング
}
@Override
public void removeDir(String dirName) {
currentDir.resolve(dirName).toFile().delete(); // TODO-rca: エラーハンドリング
}
@Override
public void saveBitmapAtCurrent(Bitmap bitmap, String fileName) { // TODO-rca: ファイル形式を変更できるようにする?
try {
File file = currentDir.resolve(fileName).toFile();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, Files.newOutputStream(file.toPath()));
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public Bitmap loadBitmap(Path path) {
return null;
}
@Override
public void removeBitmap(Path path) {
}
// @Override
// public void saveFileAtCurrent(File file) {
// try {
// Files.copy(file.toPath(), currentDir.resolve(file.getName()));
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
//
// @Override
// public File getFile(Path path) {
// // ファイルを取得する
// return path.toFile();
// }
//
// @Override
// public void removeFile(Path path) {
// // ファイルを削除する
// if (path.toFile().exists()) {
// path.toFile().delete(); // Resultを返す?
// }
// }
}
Whitespace-only changes.
@@ -0,0 +1,20 @@
package one.nem.lacerta.source.file.module;
import java.nio.file.Path;
import dagger.assisted.Assisted;
import dagger.assisted.AssistedInject;
public class FileManagerModule {
private final Path rootDir;
@AssistedInject
public FileManagerModule(@Assisted Path rootDir) {
this.rootDir = rootDir;
}
public Path getRootDir() {
return rootDir;
}
}
Whitespace-only changes.