/** * Returns the list of the profiles which are already imported * * @return the list of the profiles which are already imported */ protected Collection<IRegisteredProfile> getImportedProfiles() { List<IRegisteredProfile> profiles = new ArrayList<IRegisteredProfile>(); IRegisteredProfile[] allLibraries = Registry.getRegisteredProfiles().toArray(new IRegisteredProfile[0]); for (int i = 0; i < allLibraries.length; i++) { IRegisteredProfile registeredProfile = allLibraries[i]; List<String> importedPackageNames = PackageUtil.getImportedPackagesNames((Package) getSelectedElement()); // problem: name of library might be different from name of top-level package if (importedPackageNames.contains(registeredProfile.getName())) { profiles.add(registeredProfile); } } return profiles; }
/** * Import the profiles in the model. * * @param profilesToImport the profiles to import */ protected void importProfiles(IRegisteredProfile[] profilesToImport) { // create a temporary resource set. Be sure to unload it so that we don't leak models in the // CacheAdapter! ResourceSet resourceSet = Util.createTemporaryResourceSet(); try { for (int i = 0; i < profilesToImport.length; i++) { IRegisteredProfile currentLibrary = (profilesToImport[i]); URI modelUri = currentLibrary.getUri(); Resource modelResource = resourceSet.getResource(modelUri, true); // PackageImportTreeSelectionDialog dialog = new // PackageImportTreeSelectionDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), ((Package)modelResource.getContents().get(0))); ProfileTreeSelectionDialog dialog = new ProfileTreeSelectionDialog( PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), ((Package) modelResource.getContents().get(0))); int ret = dialog.open(); if (ret == Window.OK) { Collection<ImportSpec<Profile>> result = dialog.getResult(); Iterator<ImportSpec<Profile>> resultIter = result.iterator(); while (resultIter.hasNext()) { Package element = resultIter.next().getElement(); PackageImport ei = UMLFactory.eINSTANCE.createPackageImport(); ei.setImportedPackage(element); // we import only once an element : List<Package> importedPackages = ((Package) getSelectedElement()).getImportedPackages(); if (!importedPackages.contains(element)) { ((Package) getSelectedElement()).getPackageImports().add(ei); } } } } } finally { EMFHelper.unload(resourceSet); } }