Compare commits

..
Author SHA1 Message Date
r-ca da9cd9be8e 代替としてStoreで管理するように 2024-01-23 03:04:55 +09:00
r-ca 0b2d58470b 代替としてStoreで管理するように 2024-01-23 02:57:36 +09:00
r-ca ed5e699493 WIP 2024-01-23 02:53:53 +09:00
r-ca 29737303af 依存関係追加 2024-01-23 02:35:59 +09:00
ろむねこ 151c2dde25 Merge pull request #96 from lacerta-doc/vcs/rev_list
fixUI
2024-01-23 02:10:38 +09:00
r-ca 18eee403ef fixUI 2024-01-23 02:09:36 +09:00
ろむねこ 2b9a68b6f5 Merge pull request #95 from lacerta-doc/vcs/rev_list
Vcs/rev list
2024-01-23 02:06:26 +09:00
r-ca b820f42007 iroiro, コミット履歴を表示できるように 2024-01-23 02:04:25 +09:00
r-ca af8935cd7f アイテムレイアウト作成 2024-01-23 01:46:47 +09:00
r-ca 6c50675938 修正 2024-01-23 01:29:30 +09:00
r-ca 791084b737 依存関係追加 2024-01-23 01:28:22 +09:00
r-ca 15d4a369d8 移動 2024-01-23 01:27:20 +09:00
r-ca 07e14eb90c getRevisionHistoryByDocumentId実装 2024-01-23 01:27:11 +09:00
r-ca b13f048c7e Adapter作成 2024-01-23 01:15:46 +09:00
r-ca f0ed4327ca Model作成 2024-01-23 01:13:00 +09:00
r-ca b852e9b7ee RevListFragment作成 2024-01-23 01:05:45 +09:00
ろむねこ ca063709dd Merge pull request #94 from lacerta-doc/improve/fixui
Improve/fixui
2024-01-23 01:03:40 +09:00
23 changed files with 554 additions and 24 deletions

No files matched your search

+2
View File
@@ -54,4 +54,6 @@ dependencies {
implementation project(':model')
implementation project(':vcs')
}
@@ -3,7 +3,9 @@ package one.nem.lacerta.component.viewer;
import android.graphics.Bitmap;
import android.os.Bundle;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.navigation.Navigation;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -67,6 +69,10 @@ public class ComponentViewerTopFragment extends Fragment {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_component_viewer_top, container, false);
// Toolbar
Toolbar toolbar = view.findViewById(R.id.toolbar);
toolbarSetup(toolbar, true, "Revision List");
RecyclerView recyclerView = view.findViewById(R.id.body_recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
ViewerBodyAdapter viewerBodyAdapter = new ViewerBodyAdapter(fileName -> {
@@ -85,4 +91,39 @@ public class ComponentViewerTopFragment extends Fragment {
return view;
}
/**
* ToolbarをInitする
*
* @param toolbar Toolbar
* @param showBackButton 戻るボタンを表示するか
* @param title タイトル
*/
private void toolbarSetup(Toolbar toolbar, boolean showBackButton, String title) {
getActivity().runOnUiThread(() -> {
if (showBackButton) {
toolbar.setNavigationIcon(one.nem.lacerta.shared.ui.R.drawable.arrow_back_24px);
toolbar.setNavigationOnClickListener(v -> {
//this.libraryItemPage = lacertaLibrary.getLibraryPage(this.libraryItemPage.getParentId(), 10).join();
// Back
Navigation.findNavController(requireView()).popBackStack();
});
} else {
toolbar.setNavigationIcon(null);
}
toolbar.setTitle(title);
toolbar.inflateMenu(R.menu.viewer_menu);
toolbar.setOnMenuItemClickListener(item -> {
if (item.getItemId() == R.id.action_open_vcs_rev_list) {
// Open vcs rev list
getParentFragmentManager().beginTransaction()
.replace(R.id.nav_host_fragment, ViewerVcsRevListFragment.newInstance(documentId))
.commit();
return true;
} else {
return false;
}
});
});
}
}
@@ -0,0 +1,80 @@
package one.nem.lacerta.component.viewer;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import one.nem.lacerta.model.VcsRevModel;
import one.nem.lacerta.utils.FeatureSwitch;
public class RevAdapter extends RecyclerView.Adapter<RevAdapter.RevViewHolder>{
private ArrayList<VcsRevModel> revModels;
public RevAdapter(ArrayList<VcsRevModel> revModels) {
this.revModels = revModels;
}
public RevAdapter() {
}
public void setRevModels(ArrayList<VcsRevModel> revModels) {
this.revModels = revModels;
}
@NonNull
@Override
public RevAdapter.RevViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.viewer_rev_list_item, parent, false);
return new RevAdapter.RevViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RevAdapter.RevViewHolder holder, int position) {
VcsRevModel revModel = revModels.get(position);
holder.title.setText(revModel.getCommitMessage());
if (FeatureSwitch.Vcs.disableBranchDisplay) {
// holder.detail.setText(DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(revModel.getCreatedAt().toInstant()));
holder.detail.setText("DateTimePlaceholder");
} else {
// holder.detail.setText(DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(revModel.getCreatedAt().toInstant()) + " " + revModel.getBranchName());
holder.detail.setText("DateTimePlaceholder" + " " + revModel.getBranchName());
}
holder.revId.setText("RevID: " + revModel.getId());
}
@Override
public int getItemCount() {
if (revModels == null) {
return 0;
} else {
return revModels.size();
}
}
class RevViewHolder extends RecyclerView.ViewHolder {
TextView title;
TextView detail;
TextView revId;
public RevViewHolder(@NonNull View itemView) {
super(itemView);
title = itemView.findViewById(R.id.rev_item_title);
detail = itemView.findViewById(R.id.rev_item_detail);
revId = itemView.findViewById(R.id.rev_item_id);
}
}
}
@@ -58,8 +58,9 @@ public class ViewerMainActivity extends AppCompatActivity {
finish();
}
// Navigation
getSupportFragmentManager().beginTransaction()
.replace(R.id.nav_host_fragment, ComponentViewerTopFragment.newInstance(documentId))
.commitNow();
.commit();
}
}
@@ -0,0 +1,95 @@
package one.nem.lacerta.component.viewer;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
import one.nem.lacerta.utils.LacertaLogger;
import one.nem.lacerta.vcs.LacertaVcs;
import one.nem.lacerta.vcs.factory.LacertaVcsFactory;
/**
* A simple {@link Fragment} subclass.
* Use the {@link ViewerVcsRevListFragment#newInstance} factory method to
* create an instance of this fragment.
*/
@AndroidEntryPoint
public class ViewerVcsRevListFragment extends Fragment {
@Inject
LacertaVcsFactory lacertaVcsFactory;
@Inject
LacertaLogger logger;
LacertaVcs lacertaVcs;
private String documentId;
public ViewerVcsRevListFragment() {
// Required empty public constructor
}
public static ViewerVcsRevListFragment newInstance(String documentId) {
ViewerVcsRevListFragment fragment = new ViewerVcsRevListFragment();
Bundle args = new Bundle();
args.putString("documentId", documentId);
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
return inflater.inflate(R.layout.fragment_viewer_vcs_rev_list, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Init arg
if (getArguments() != null) {
this.documentId = getArguments().getString("documentId");
logger.debug("ViewerVcsRevListFragment", "documentId: " + documentId);
}
// Init vcs
lacertaVcs = lacertaVcsFactory.create(documentId);
// Init view
RecyclerView recyclerView = view.findViewById(R.id.rev_list);
// Init adapter
RevAdapter revAdapter = new RevAdapter();
// Set adapter
recyclerView.setAdapter(revAdapter);
// Set layout manager
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
lacertaVcs.getRevisionHistory().thenAccept(revModels -> {
logger.debug("ViewerVcsRevListFragment", "revModels.size(): " + revModels.size());
getActivity().runOnUiThread(() -> {
revAdapter.setRevModels(revModels);
revAdapter.notifyDataSetChanged();
});
});
}
}
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ViewerVcsRevListFragment">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rev_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
@@ -11,6 +11,7 @@
android:layout_height="wrap_content"
android:elevation="8dp"
android:adjustViewBounds="true"
android:layout_marginBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -0,0 +1,55 @@
<?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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="24dp"
android:paddingVertical="16dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/item_text_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/rev_item_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="16sp"
android:layout_marginEnd="8dp"
android:text="Placeholder Title"
android:textColor="@color/colorOnSurface"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/rev_item_detail"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="14sp"
android:text="2023/01/01 00:00:00 - hogehoge"
android:textColor="@color/colorOnSurfaceSecondary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/rev_item_title" />
<TextView
android:id="@+id/rev_item_id"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="12sp"
android:text="dd76a029-51f1-40f7-b316-a0c74bbfebb1(Example)"
android:textColor="@color/colorOnSurfaceSecondary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/rev_item_detail" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_open_vcs_rev_list"
android:title="Open VCS Rev List" />
</menu>
@@ -1,11 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<navigation 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:id="@+id/component_viewer_navigation"
app:startDestination="@id/componentViewerTopFragment">
<fragment
android:id="@+id/componentViewerTopFragment"
android:name="one.nem.lacerta.component.viewer.ComponentViewerTopFragment"
android:label="ComponentViewerTopFragment" />
android:label="ComponentViewerTopFragment" >
<action
android:id="@+id/action_componentViewerTopFragment_to_viewerVcsRevListFragment"
app:destination="@id/viewerVcsRevListFragment" />
</fragment>
<fragment
android:id="@+id/viewerVcsRevListFragment"
android:name="one.nem.lacerta.component.viewer.ViewerVcsRevListFragment"
android:label="fragment_viewer_vcs_rev_list"
tools:layout="@layout/fragment_viewer_vcs_rev_list" />
</navigation>
+4
View File
@@ -45,4 +45,8 @@ dependencies {
// shared
implementation project(':shared:ui')
// https://mvnrepository.com/artifact/androidx.preference/preference
implementation 'androidx.preference:preference:1.2.1'
}
@@ -2,8 +2,12 @@ package one.nem.lacerta.setting;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.preference.PreferenceFragmentCompat;
import android.preference.PreferenceFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -13,12 +17,17 @@ import android.view.ViewGroup;
* Use the {@link SettingScanPageFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class SettingScanPageFragment extends Fragment {
public class SettingScanPageFragment extends PreferenceFragmentCompat {
public SettingScanPageFragment() {
// Required empty public constructor
}
@Override
public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
addPreferencesFromResource(R.xml.scan_preferences);
}
public static SettingScanPageFragment newInstance() {
SettingScanPageFragment fragment = new SettingScanPageFragment();
Bundle args = new Bundle();
@@ -26,16 +35,4 @@ public class SettingScanPageFragment extends Fragment {
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
return inflater.inflate(R.layout.fragment_setting_scan_page, container, false);
}
}
@@ -1,14 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SettingScanPageFragment">
android:background="@color/colorSurface">
<!-- TODO: Update blank fragment layout -->
<TextView
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
app:contentScrim="@color/colorSecondaryContainer"
android:background="@color/colorSurface"
android:layout_width="match_parent"
android:layout_height="160dp"
android:fitsSystemWindows="true"
android:minHeight="?attr/actionBarSize"
app:collapsedTitleGravity="start|center_vertical"
app:expandedTitleGravity="start|bottom"
app:expandedTitleMarginBottom="16dp"
app:expandedTitleMarginStart="16dp"
app:expandedTitleTextAppearance="@style/TextAppearance.MaterialComponents.Headline4"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:title="@string/setting_top_scan_title" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<FrameLayout
android:id="@+id/setting_scan_page_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</FrameLayout>
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="png_quality_array">
<item name="5">5</item>
<item name="6">6</item>
<item name="7">7</item>
<item name="8">8</item>
<item name="9">9</item>
</array>
</resources>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="png_quality_default">70</integer>
<integer name="png_quality_min">5</integer>
<integer name="png_quality_max">100</integer>
</resources>
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory android:title="@string/setting_scan_quality_title">
<SeekBarPreference
android:defaultValue="@integer/png_quality_default"
android:key="png_quality"
android:max="@integer/png_quality_max"
android:min="@integer/png_quality_min"
android:summary="@string/setting_scan_quality_png_quality_description"
android:title="@string/setting_scan_quality_png_quality_title" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/setting_scan_default_title">
<EditTextPreference
android:defaultValue="Untitled"
android:key="new_doc_default_title"
android:selectAllOnFocus="true"
android:singleLine="true"
android:title="@string/setting_scan_default_document_name" />
<EditTextPreference
android:defaultValue="NewFolder"
android:key="new_dir_default_title"
android:selectAllOnFocus="true"
android:singleLine="true"
android:title="@string/setting_scan_default_folder_name" />
</PreferenceCategory>
</PreferenceScreen>
@@ -0,0 +1,80 @@
package one.nem.lacerta.model;
import java.util.ArrayList;
import java.util.Date;
public class VcsRevModel {
String id;
String documentId;
String branchName;
String commitMessage;
Date createdAt;
ArrayList<String> logIds;
public VcsRevModel(String id, String documentId, String branchName, String commitMessage, Date createdAt, ArrayList<String> logIds) {
this.id = id;
this.documentId = documentId;
this.branchName = branchName;
this.commitMessage = commitMessage;
this.createdAt = createdAt;
this.logIds = logIds;
}
// Empty constructor
public VcsRevModel() {
}
public String getId() {
return id;
}
public String getDocumentId() {
return documentId;
}
public String getBranchName() {
return branchName;
}
public String getCommitMessage() {
return commitMessage;
}
public Date getCreatedAt() {
return createdAt;
}
public ArrayList<String> getLogIds() {
return logIds;
}
public void setId(String id) {
this.id = id;
}
public void setDocumentId(String documentId) {
this.documentId = documentId;
}
public void setBranchName(String branchName) {
this.branchName = branchName;
}
public void setCommitMessage(String commitMessage) {
this.commitMessage = commitMessage;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
public void setLogIds(ArrayList<String> logIds) {
this.logIds = logIds;
}
}
@@ -19,6 +19,14 @@
<string name="setting_top_scan_title">スキャン</string>
<string name="setting_top_scan_description">画質, 保存先</string>
<string name="setting_scan_quality_title">画質</string>
<string name="setting_scan_quality_png_quality_title">PNG画質</string>
<string name="setting_scan_quality_png_quality_description">PNG画質を設定します. 画質が高いほどファイルサイズが大きくなります.</string>
<string name="setting_scan_default_title">保存先</string>
<string name="setting_scan_default_document_name">新規ドキュメントのデフォルトタイトル</string>
<string name="setting_scan_default_folder_name">新規フォルダのデフォルト名</string>
<string name="setting_top_display_title">表示</string>
<string name="setting_top_display_description">テーマ, フォントサイズ</string>
@@ -22,6 +22,7 @@ import dagger.assisted.AssistedInject;
import one.nem.lacerta.source.file.FileManager;
import one.nem.lacerta.utils.LacertaLogger;
import one.nem.lacerta.utils.Store;
public class FileManagerImpl implements FileManager {
@@ -303,7 +304,16 @@ public class FileManagerImpl implements FileManager {
private void saveBitmapInternal(Bitmap bitmap, Path path) throws IOException {
try {
logger.debug("saveBitmapInternal", "path: " + path);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, Files.newOutputStream(path));
// Bitmapの長辺を1024pxにする
int width = bitmap.getWidth();
int height = bitmap.getHeight();
float scale = 1.0f;
if (width > height) {
scale = Store.Scan.MAX_RESOLUTION_LONG / width;
} else {
scale = Store.Scan.MAX_RESOLUTION_LONG / height;
}
bitmap.compress(new Store.Scan().COMPRESS_FORMAT, Store.Scan.QUALITY, Files.newOutputStream(path));
} catch (Exception e) {
logger.error("saveBitmapInternal", e.getMessage());
throw new IOException("Failed to save bitmap");
@@ -8,7 +8,11 @@ public class FeatureSwitch {
public static class FeatureMaster {
public static boolean enableSearch = false;
public static boolean enableDebugMenu = false;
public static boolean enableDebugMenu = true;
}
public static class Vcs {
public static boolean disableBranchDisplay = true;
}
public static class Setting {
@@ -0,0 +1,11 @@
package one.nem.lacerta.utils;
import android.graphics.Bitmap;
public class Store {
public static class Scan {
public Bitmap.CompressFormat COMPRESS_FORMAT = Bitmap.CompressFormat.JPEG;
public static final int QUALITY = 60;
public static final float MAX_RESOLUTION_LONG = 2048;
}
}
@@ -1,5 +1,10 @@
package one.nem.lacerta.vcs;
import java.util.ArrayList;
import java.util.concurrent.CompletableFuture;
import one.nem.lacerta.model.VcsRevModel;
public interface LacertaVcs {
// Actions
@@ -13,6 +18,8 @@ public interface LacertaVcs {
public void generateRevisionAtCurrent(String message);
public CompletableFuture<ArrayList<VcsRevModel>> getRevisionHistory();
// debug
public void printLog();
@@ -3,11 +3,13 @@ package one.nem.lacerta.vcs.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import javax.inject.Inject;
import dagger.assisted.Assisted;
import dagger.assisted.AssistedInject;
import one.nem.lacerta.model.VcsRevModel;
import one.nem.lacerta.source.database.LacertaDatabase;
import one.nem.lacerta.source.database.entity.VcsLogEntity;
import one.nem.lacerta.source.database.entity.VcsRevEntity;
@@ -122,6 +124,27 @@ public class LacertaVcsImpl implements LacertaVcs {
logger.debug(TAG, "New revision inserted: " + vcsRevEntity.id);
}
@Override
public CompletableFuture<ArrayList<VcsRevModel>> getRevisionHistory() {
return CompletableFuture.supplyAsync(() -> {
logger.debug(TAG, "getRevisionHistoryByDocumentId");
ArrayList<VcsRevModel> vcsRevModels = new ArrayList<>();
List<VcsRevEntity> vcsRevEntities = database.vcsRevDao().findByDocumentId(this.documentId);
vcsRevEntities.forEach(vcsRevEntity -> {
VcsRevModel vcsRevModel = new VcsRevModel();
vcsRevModel.setId(vcsRevEntity.id);
vcsRevModel.setDocumentId(vcsRevEntity.documentId);
vcsRevModel.setBranchName(vcsRevEntity.branchName);
vcsRevModel.setCommitMessage(vcsRevEntity.commitMessage);
vcsRevModel.setLogIds(vcsRevEntity.logIds);
vcsRevModels.add(vcsRevModel);
});
return vcsRevModels;
});
}
@Override
public void printLog() {
logger.debug(TAG, "printLog");