1
0
mirror of https://github.com/octoleo/plantuml.git synced 2024-06-07 02:40:52 +00:00

Merge pull request #1588 from travkin79/patch/1475

#1475 Fix show statement
This commit is contained in:
PlantUML 2023-10-27 11:39:41 +02:00 committed by GitHub
commit 89406657e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 82 additions and 21 deletions

View File

@ -37,4 +37,6 @@ package net.sourceforge.plantuml.abel;
public interface EntityGender { public interface EntityGender {
public boolean contains(Entity test); public boolean contains(Entity test);
public String getGender();
} }

View File

@ -44,6 +44,11 @@ public class EntityGenderUtils {
public boolean contains(Entity test) { public boolean contains(Entity test) {
return test.getLeafType() == type; return test.getLeafType() == type;
} }
@Override
public String getGender() {
return type.name();
}
}; };
} }
@ -52,6 +57,11 @@ public class EntityGenderUtils {
public boolean contains(Entity test) { public boolean contains(Entity test) {
return test.getUid().equals(entity.getUid()); return test.getUid().equals(entity.getUid());
} }
@Override
public String getGender() {
return entity.getUid();
}
}; };
} }
@ -63,6 +73,11 @@ public class EntityGenderUtils {
} }
return stereotype.equals(test.getStereotype().getLabel(Guillemet.DOUBLE_COMPARATOR)); return stereotype.equals(test.getStereotype().getLabel(Guillemet.DOUBLE_COMPARATOR));
} }
@Override
public String getGender() {
return stereotype;
}
}; };
} }
@ -80,6 +95,11 @@ public class EntityGenderUtils {
} }
return false; return false;
} }
@Override
public String getGender() {
return null;
}
}; };
} }
@ -88,6 +108,11 @@ public class EntityGenderUtils {
public boolean contains(Entity test) { public boolean contains(Entity test) {
return g1.contains(test) && g2.contains(test); return g1.contains(test) && g2.contains(test);
} }
@Override
public String getGender() {
return null;
}
}; };
} }
@ -96,6 +121,11 @@ public class EntityGenderUtils {
public boolean contains(Entity test) { public boolean contains(Entity test) {
return true; return true;
} }
@Override
public String getGender() {
return null;
}
}; };
} }
@ -104,6 +134,11 @@ public class EntityGenderUtils {
public boolean contains(Entity test) { public boolean contains(Entity test) {
return test.getBodier().getMethodsToDisplay().size() == 0; return test.getBodier().getMethodsToDisplay().size() == 0;
} }
@Override
public String getGender() {
return null;
}
}; };
} }
@ -112,7 +147,26 @@ public class EntityGenderUtils {
public boolean contains(Entity test) { public boolean contains(Entity test) {
return test.getBodier().getFieldsToDisplay().size() == 0; return test.getBodier().getFieldsToDisplay().size() == 0;
} }
@Override
public String getGender() {
return null;
}
}; };
} }
static public EntityGender byClassName(String className) {
return new EntityGender() {
@Override
public boolean contains(Entity test) {
return className.equals(test.getName());
}
@Override
public String getGender() {
return className;
}
};
}
} }

View File

@ -190,30 +190,35 @@ public class CommandHideShowByGender extends SingleLineCommand2<UmlDiagram> {
} else { } else {
arg1 = StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(arg1); arg1 = StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(arg1);
final Quark<Entity> quark = diagram.quarkInContext(true, diagram.cleanId(arg1)); final Quark<Entity> quark = diagram.quarkInContext(true, diagram.cleanId(arg1));
Entity entity = quark.getData(); if (quark == null) {
if (entity == null) return CommandExecutionResult.error("No such quark " + arg1);
return CommandExecutionResult.error("No such element " + quark.getName()); }
gender = EntityGenderUtils.byEntityAlone(entity); if (portion == EntityPortion.METHOD) {
} gender = EntityGenderUtils.byClassName(arg1);
if (gender != null) {
final boolean empty = arg.get("EMPTY", 0) != null;
final boolean emptyMembers = empty && portion == EntityPortion.MEMBER;
if (empty == true && emptyMembers == false)
gender = EntityGenderUtils.and(gender, emptyByGender(portion));
if (diagram.getCurrentGroup().isRoot() == false)
gender = EntityGenderUtils.and(gender, EntityGenderUtils.byPackage(diagram.getCurrentGroup()));
if (emptyMembers) {
diagram.hideOrShow(EntityGenderUtils.and(gender, emptyByGender(EntityPortion.FIELD)),
EntityPortion.FIELD, arg.get("COMMAND", 0).equalsIgnoreCase("show"));
diagram.hideOrShow(EntityGenderUtils.and(gender, emptyByGender(EntityPortion.METHOD)),
EntityPortion.METHOD, arg.get("COMMAND", 0).equalsIgnoreCase("show"));
} else { } else {
diagram.hideOrShow(gender, portion, arg.get("COMMAND", 0).equalsIgnoreCase("show")); Entity entity = quark.getData();
if (entity == null)
return CommandExecutionResult.error("No such element " + quark.getName());
gender = EntityGenderUtils.byEntityAlone(entity);
} }
} }
return CommandExecutionResult.ok(); final boolean empty = arg.get("EMPTY", 0) != null;
final boolean emptyMembers = empty && portion == EntityPortion.MEMBER;
if (empty && !emptyMembers)
gender = EntityGenderUtils.and(gender, emptyByGender(portion));
if (!diagram.getCurrentGroup().isRoot())
gender = EntityGenderUtils.and(gender, EntityGenderUtils.byPackage(diagram.getCurrentGroup()));
if (emptyMembers) {
diagram.hideOrShow(EntityGenderUtils.and(gender, emptyByGender(EntityPortion.FIELD)),
EntityPortion.FIELD, arg.get("COMMAND", 0).equalsIgnoreCase("show"));
diagram.hideOrShow(EntityGenderUtils.and(gender, emptyByGender(EntityPortion.METHOD)),
EntityPortion.METHOD, arg.get("COMMAND", 0).equalsIgnoreCase("show"));
} else {
diagram.hideOrShow(gender, portion, arg.get("COMMAND", 0).equalsIgnoreCase("show"));
}
return CommandExecutionResult.ok();
} }
private EntityPortion getEntityPortion(String s) { private EntityPortion getEntityPortion(String s) {