/** * Returns a visibility String either for a VisibilityKind, but also for a model element, because * if it is a Feature, then the tag 'src_visibility' is to be taken into account for generating * language dependent visibilities. * * @param o the object which may be a VisibilityKind or a ModelElelement * @return the generated visibility string */ static String generateVisibility(Object o) { if (Model.getFacade().isAFeature(o)) { // TODO: The src_visibility tag doesn't appear to be created // anywhere by ArgoUML currently Object tv = Model.getFacade().getTaggedValue(o, "src_visibility"); if (tv != null) { Object tvValue = Model.getFacade().getValue(tv); /* Not all taggedvalues are string - see issue 4322: */ if (tvValue instanceof String) { String tagged = (String) tvValue; if (tagged != null) { if (tagged.trim().equals("") || tagged.trim().toLowerCase().equals("package") || tagged.trim().toLowerCase().equals("default")) { return ""; } return tagged + " "; } } } } if (Model.getFacade().isAModelElement(o)) { if (Model.getFacade().isPublic(o)) { return "public "; } if (Model.getFacade().isPrivate(o)) { return "private "; } if (Model.getFacade().isProtected(o)) { return "protected "; } if (Model.getFacade().isPackage(o)) { return ""; } } if (Model.getFacade().isAVisibilityKind(o)) { if (Model.getVisibilityKind().getPublic().equals(o)) { return "public "; } if (Model.getVisibilityKind().getPrivate().equals(o)) { return "private "; } if (Model.getVisibilityKind().getProtected().equals(o)) { return "protected "; } if (Model.getVisibilityKind().getPackage().equals(o)) { return ""; } } return ""; }
/* * @see org.argouml.uml.cognitive.critics.CrUML#predicate2( * java.lang.Object, org.argouml.cognitive.Designer) */ public boolean predicate2(Object dm, Designer dsgr) { if (!(Model.getFacade().isAInterface(dm))) { return NO_PROBLEM; } Object inf = dm; Collection bf = Model.getFacade().getFeatures(inf); if (bf == null) { return NO_PROBLEM; } Iterator features = bf.iterator(); while (features.hasNext()) { Object f = features.next(); if (Model.getFacade().getVisibility(f) == null) { return NO_PROBLEM; } if (!Model.getFacade().getVisibility(f).equals(Model.getVisibilityKind().getPublic())) { return PROBLEM_FOUND; } } return NO_PROBLEM; }