コード例 #1
0
 /**
  * Handle the case when a stereotype application is added : - Inspect controlled sub-packages -
  * Duplicate profile applicationss on these - Create eAnnotation for duplicated profiles
  *
  * @param packageElement the package on which stereotype application has been added
  * @param profileAppl the added profile application
  * @return whether addition is allowed
  */
 private boolean stereotypeApplicationAdded(
     Package packageElement, ProfileApplication profileAppl) {
   // Inspect controlled sub-packages
   Set<Package> controlledPack = getControlledSubPackages(packageElement);
   boolean update = checkControlledPackagesUpdateable(controlledPack);
   if (update) {
     for (Package pack : controlledPack) {
       ProfileApplicationHelper.duplicateProfileApplication(pack, profileAppl.getAppliedProfile());
     }
     return true;
   } else {
     return false;
   }
 }
コード例 #2
0
 /**
  * Handle the case when a stereotype application is removed : - Forbid direct removal of a
  * duplicated profile application (with eAnnotation) - Inspect controlled sub-packages - Remove
  * duplicated profile applications on these (with eAnnotation)
  *
  * @param packageElement the package from which stereotype application has been removed
  * @param profileAppl the removed profile application
  * @param profile the unapplied profile
  * @return whether removal is allowed
  */
 private boolean stereotypeApplicationRemoved(
     Package packageElement, ProfileApplication profileAppl, Profile profile) {
   // Forbid direct removal of a duplicated profile application (with eAnnotation)
   if (ProfileApplicationHelper.isDuplicatedProfileApplication(profileAppl)) {
     Package parentPack =
         ProfileApplicationHelper.getParentPackageWithProfile(packageElement, profile, true);
     // restore stereotype application when it is called from parent intermediate package
     ProfileApplicationHelper.duplicateProfileApplication(packageElement, profile);
     String msg;
     if (parentPack != null) {
       msg =
           NLS.bind(
               Messages.warning_cannot_delete_duplicated,
               EMFCoreUtil.getQualifiedName(packageElement, true),
               EMFCoreUtil.getQualifiedName(parentPack, true));
     } else {
       // parent package can not be reached as it is in a different maybe not accessible resource
       // (working on controlled resource)
       msg =
           NLS.bind(
               Messages.warning_cannot_delete_duplicated_alt,
               EMFCoreUtil.getQualifiedName(packageElement, true));
     }
     NotificationBuilder notifBuild = NotificationBuilder.createAsyncPopup(msg);
     notifBuild.run();
     return true;
   }
   // Inspect controlled sub-packages
   Set<Package> controlledPack = getControlledSubPackages(packageElement);
   boolean update = checkControlledPackagesUpdateable(controlledPack);
   if (update) {
     for (Package pack : controlledPack) {
       ProfileApplicationHelper.removeProfileApplicationDuplication(pack, profile, false);
     }
     return true;
   } else {
     return false;
   }
 }