Compare commits

...
Author SHA1 Message Date
r-ca 002c78d09b 実装 2024-01-13 15:17:48 +09:00
r-ca 171c8b380c 効率化 2024-01-13 15:13:56 +09:00
r-ca 04651f3b8e 実装 WIP 2024-01-13 15:12:03 +09:00
r-ca 180428fbb7 実装 WIP 2024-01-13 15:07:11 +09:00
ろむねこ 1d3015a7e4 Merge pull request #58 from lacerta-doc/data/add_search_stub
LacertaSearchインタフェースにスタブを追加
2024-01-13 14:39:12 +09:00
r-ca 4ce8315678 HiltModule実装 2024-01-13 14:36:59 +09:00
r-ca 3c66480f0f 受け取ったクエリをコンソールに吐き出すようにした 2024-01-13 14:35:25 +09:00
r-ca 82d0187a11 LacertaLibraryの実装を流用して取得できるように 2024-01-13 14:34:07 +09:00
r-ca dc340f1a96 継承, impl生成 2024-01-13 14:30:30 +09:00
r-ca 1d24467c09 インタフェースの戻り値を修正 2024-01-13 14:29:58 +09:00
ろむねこ bf385b952c Merge pull request #55 from lacerta-doc/data/add_search_interface
検索インタフェースをを追加
2024-01-13 14:27:29 +09:00
4 changed files with 126 additions and 2 deletions

No files matched your search

@@ -1,11 +1,13 @@
package one.nem.lacerta.data;
import java.util.ArrayList;
import one.nem.lacerta.model.ListItem;
public interface LacertaSearch {
ListItem autoSearch(String query, int limit);
ArrayList<ListItem> autoSearch(String query, int limit);
ListItem autoSearch(String query, int limit, int offset);
ArrayList<ListItem> autoSearch(String query, int limit, int offset);
}
@@ -0,0 +1,38 @@
package one.nem.lacerta.data.impl;
import java.util.ArrayList;
import javax.inject.Inject;
import one.nem.lacerta.data.LacertaSearch;
import one.nem.lacerta.model.ListItem;
import one.nem.lacerta.data.LacertaLibrary;
import one.nem.lacerta.utils.LacertaLogger;
public class LacertaSearchStubImpl implements LacertaSearch {
private LacertaLibrary library;
private LacertaLogger logger;
@Inject
public LacertaSearchStubImpl(LacertaLibrary library, LacertaLogger logger) {
this.library = library;
this.logger = logger;
}
@Override
public ArrayList<ListItem> autoSearch(String query, int limit) {
logger.debug("SearchStub", "autoSearch");
logger.debug("SearchStub", "query: " + query);
return library.getLibraryPage(limit).getListItems();
}
@Override
public ArrayList<ListItem> autoSearch(String query, int limit, int offset) {
logger.debug("SearchStub", "autoSearch");
logger.debug("SearchStub", "query: " + query);
return library.getLibraryPage(limit, offset).getListItems();
}
}
@@ -0,0 +1,16 @@
package one.nem.lacerta.data.module;
import dagger.Binds;
import dagger.Module;
import dagger.hilt.InstallIn;
import dagger.hilt.android.components.FragmentComponent;
import one.nem.lacerta.data.LacertaSearch;
import one.nem.lacerta.data.impl.LacertaSearchStubImpl;
@Module
@InstallIn(FragmentComponent.class)
abstract public class LacertaSearchModule {
@Binds
public abstract LacertaSearch bindLacertaSearch(LacertaSearchStubImpl impl);
}
@@ -0,0 +1,68 @@
package one.nem.lacerta.model;
import java.util.ArrayList;
import java.util.List;
public class PublicPath {
/*
* ユーザーが扱うパス(内部パスの代替)
* (時間がないのでInjectされることは考慮しない)
*
* TODO-rca:
* - こわれたパスを検知する
* - バリデーション
*/
List<String> path = new ArrayList<String>();
public PublicPath() {
}
public PublicPath(List<String> path) {
this.path = path;
}
private void add(String path) {
this.path.add(path);
}
private void resolveInternal(String path) {
if (path.equals("..")) {
this.path.remove(this.path.size() - 1);
} else {
add(path);
}
}
public PublicPath resolve(String path) {
resolveInternal(path);
return this;
}
public PublicPath resolve(List<String> path) {
for (String p : path) {
resolveInternal(p);
}
return this;
}
public PublicPath resolve(PublicPath path) {
for (String p : path.getPath()) {
resolveInternal(p);
}
return this;
}
public PublicPath parent() {
this.path.remove(this.path.size() - 1);
return this;
}
public List<String> getPath() {
return path;
}
public String getStringPath() {
return String.join("/", path);
}
}