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
@@ -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);
}
}