Désactiver dynamiquement la création d'un objet lié

Bonjour,
j’ai un objet “Survey” qui en plus d’avoir ses propres attributs, contient un lien 1-n vers des critères.
Voici mon objet “Survey” en édition.


Je souhaiterai que lorsque mon “Survey” a un certain statuts, il soit impossible pour l’utilisateur de le compléter.
J’ai utilisé la méthode initUpdate du “Survey” pour mettre les attributs en readOnly mais je n’arrive pas à désactiver la création des critères.

J’ai bien trouvé setAssociable sur la classe Link qui permet de masquer le bouton d’association.
J’ai aussi trouvé setCreateOnLinks sur la classe Object mais elle ne semble avoir aucun effet. (J’avoue ne la pas comprendre exactement :s)
Je cherche l’équivalent du setSave mais il ne semble pas exister.

Comment puis-je faire ?

Merci d’avance
Amandine TRIDOU

[Platform]
Status=OK
Version=4.0.P24
BuiltOn=2020-08-02 16:23 (revision 8d432f4360f9e23e117498e97c0caec8ba8931ae)
Encoding=UTF-8
EndpointIP=21.0.9.3
EndpointURL=http://6ea4a8b67504:8080
TimeZone=Europe/Paris
SystemDate=2020-08-06 14:59:20

2 possibilités :

  • soit retirer/remettre les droits de mise à jour à l’utilisateur sur le initUpdate de l’objet père X.
Grant g = getGrant();
if (g.hasResponsibility("GROUP_USER") {
  //ObjectDB ref = g.getPanelObject("objetY", "foreignKeyField");
  if ("read".equals(getStatus())) { // no rights
    g.delAccessCreate("objetY");
    g.delAccessUpdate("objetY");
    g.delAccessDelete("objetY");
  }
  else { // restore rights
    g.addAccessCreate("objetY");
    g.addAccessUpdate("objetY");
    g.addAccessDelete("objetY");
  }
}
  • ou mieux implémenter les hooks isCreateEnable/isUpdateEnable/isDeleteEnable sur l’objet fils Y, sans changer les droits de session de l’utilisateur connecté.
public boolean isUpdateEnable(String[] row)
  Grant g = getGrant();
  ObjectDB parent = getParentObject(); // Parent in case of Panel instance
  if (isPanelInstance() 
  && parent!=null && parent.getName().equals("objetX") 
  && g.hasResponsibility("GROUP_USER") {
    return !"read".equals(parent.getStatus());
  }
  return super.isUpdateEnable(row);
}