Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,13 @@ public String asText() {
return value;
}

public Optional<PackageIdentifier> parentIfExist() {
PackageIdentifier parent = parent();
if (parent.value.equals("(default)")) return Optional.empty();
return Optional.of(parent);
}

// TODO (default) がでてきた場合にを型で識別できないので、使わないようにした方が良さそう
public PackageIdentifier parent() {
String[] split = value.split("\\.");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ public String label(PackageIdentifier packageIdentifier, PackageIdentifier paren

public String label(PackageIdentifier packageIdentifier) {
String fqn = packageIdentifier.asText();
String labelText = commonPrefix.map(String::length).map(index -> trimDot(fqn.substring(index)))
String labelText = commonPrefix
.filter(fqn::startsWith)
.map(prefix -> trimDot(fqn.substring(prefix.length())))
.orElse(fqn);

return addAliasIfExists(packageIdentifier, labelText);
Expand Down Expand Up @@ -61,8 +63,13 @@ public void applyContext(Collection<PackageIdentifier> contextPackages) {
// 全てで共通する部分を抜き出す
String commonPrefix = null;
for (PackageIdentifier currentPackageIdentifier : contextPackages) {
PackageIdentifier currentParentPackageIdentifier = currentPackageIdentifier.parent();
String currentText = currentParentPackageIdentifier.asText();
Optional<PackageIdentifier> packageIdentifier = currentPackageIdentifier.parentIfExist();
if (packageIdentifier.isEmpty()) {
continue;
}
String currentText = packageIdentifier.orElseThrow().asText();

packageIdentifier.map(PackageIdentifier::asText);
if (commonPrefix == null) {
commonPrefix = currentText;
continue;
Expand All @@ -80,7 +87,7 @@ public void applyContext(Collection<PackageIdentifier> contextPackages) {

commonPrefix = commonPrefix.substring(0, commonPrefixLength);
}
this.commonPrefix = Optional.of(trimDot(commonPrefix));
this.commonPrefix = Optional.ofNullable(commonPrefix).map(this::trimDot);
}

public String contextDescription() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,37 @@ class PackageRelationDiagramTest {
"\"a.aa.aaa\" -> \"b\";",
"subgraph \"cluster_a.aa\""
)
),
Arguments.argumentSet("階層がずれた関連を1階層切り詰める",
new PackageIdentifiers(List.of(
PackageIdentifier.valueOf("a.aa.aaa"),
PackageIdentifier.valueOf("a.aa.aab.aaba"),
PackageIdentifier.valueOf("b")
)),
new ClassRelations(List.of(
new ClassRelation(TypeIdentifier.valueOf("a.aa.aaa.Foo"), TypeIdentifier.valueOf("a.aa.aab.aaba.Bar")),
new ClassRelation(TypeIdentifier.valueOf("a.aa.aaa.Foo"), TypeIdentifier.valueOf("b.Bbb"))
)),
2,
List.of(
"\"a.aa\" -> \"b\";"
)
),
Arguments.argumentSet("デフォルトパッケージを扱える",
new PackageIdentifiers(List.of(
PackageIdentifier.valueOf("a.aa.aaa.aaaa.aaaaa"),
PackageIdentifier.valueOf("a.aa.aaa.aaaa.aaaab"),
PackageIdentifier.defaultPackage(),
PackageIdentifier.valueOf("a")
)),
new ClassRelations(List.of(
new ClassRelation(TypeIdentifier.valueOf("a.aa.aaa.aaaa.aaaaa.Hoge"), TypeIdentifier.valueOf("a.aa.aaa.aaaa.aaaab.Fuga")),
new ClassRelation(TypeIdentifier.valueOf("a.aa.aaa.aaaa.aaaaa.Hoge"), TypeIdentifier.valueOf("DefaultPackageClass"))
)),
4,
List.of(
"\"a.aa.aaa.aaaa\" -> \"(default)\";"
)
)
);
}
Expand Down
Loading