svn commit: r15252 - branches/gsoc2008/work_midterm_maurelio1234: src/org/argouml/profile src/org/argouml/profile/internal tests/org/argouml/profile

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: maurelio1234
Date: 2008-07-13 08:33:41-0700
New Revision: 15252

Modified:
   branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/Profile.java
   branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/ProfileManager.java
   branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java
   branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java
   branches/gsoc2008/work_midterm_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java

Log:
solving problem with dependencies being loaded in unexpected order

Modified: branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/Profile.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/Profile.java?view=diff&rev=15252&p1=branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/Profile.java&p2=branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/Profile.java&r1=15251&r2=15252
==============================================================================
--- branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/Profile.java	(original)
+++ branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/Profile.java	2008-07-13 08:33:41-0700
@@ -40,8 +40,7 @@
  */
 public abstract class Profile {
     
-    private Set<Profile> importedProfiles  = new HashSet<Profile>();
-    private Set<Profile> importingProfiles = new HashSet<Profile>();
+    private Set<String> dependencies  = new HashSet<String>();
     protected Set<CrUML> critics = new HashSet<CrUML>();
         
     /**
@@ -50,31 +49,51 @@
      * @param p
      *                the profile
      * @throws IllegalArgumentException
-     *                 if there is some cycle on the dependency graph
+     *                 never thrown
      */
     protected final void addProfileDependency(Profile p)
         throws IllegalArgumentException {
-        
-        if (importingProfiles.contains(p)) {
-            throw new IllegalArgumentException("This profile causes a cycle "
-                    + "in the profile dependency graph!");
-        } else {
-            importedProfiles.add(p);
-            importedProfiles.addAll(p.importedProfiles);
-
-            for (Profile importedProfile : importedProfiles) {
-                importedProfile.importingProfiles.add(this);
-            }
-        }
+        addProfileDependency(p.getProfileIdentifier());
     }    
 
     /**
+     * Add a dependency on the given profile from this profile.
+     * 
+     * @param p
+     *                the profile identifier
+     *                
+     * @param profileIdentifier 
+     */
+    protected void addProfileDependency(String profileIdentifier) {
+        dependencies.add(profileIdentifier);
+    }
+
+    /**
      * @return the dependencies
      */
     public final Set<Profile> getDependencies() {
-        return importedProfiles;
+        if (ProfileFacade.isInitiated()) {
+            Set<Profile> ret = new HashSet<Profile>();
+            for (String pid : dependencies) {
+                Profile p = ProfileFacade.getManager().lookForRegisteredProfile(pid);
+                if (p!=null) {
+                    ret.add(p);
+                    ret.addAll(p.getDependencies());
+                }
+            }
+            return ret;            
+        } else {
+            return new HashSet<Profile>();
+        }
     }
-    
+
+    /**
+     * @return the ids of the dependencies
+     */
+    public final Set<String> getDependenciesID() {
+        return dependencies;
+    }
+
     /**
      * @return the name for this profile 
      */
@@ -126,4 +145,11 @@
     public Set<CrUML> getCritics() {
         return critics;
     }
+
+    /**
+     * @return a unique identifier for this profile
+     */
+    public String getProfileIdentifier() {
+        return getDisplayName();
+    }
 }

Modified: branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/ProfileManager.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/ProfileManager.java?view=diff&rev=15252&p1=branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/ProfileManager.java&p2=branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/ProfileManager.java&r1=15251&r2=15252
==============================================================================
--- branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/ProfileManager.java	(original)
+++ branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/ProfileManager.java	2008-07-13 08:33:41-0700
@@ -117,7 +117,7 @@
     /**
      * Looks for registered Profile
      * 
-     * @param profile name
+     * @param profile identifier
      * @return profile
      */
     Profile lookForRegisteredProfile(String profile);

Modified: branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java?view=diff&rev=15252&p1=branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java&p2=branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java&r1=15251&r2=15252
==============================================================================
--- branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java	(original)
+++ branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java	2008-07-13 08:33:41-0700
@@ -150,7 +150,7 @@
      * @throws ProfileException if the model cannot be loaded
      */
     public UserDefinedProfile(String displayName, URL url, Set<CrUML> critics,
-            Set<Profile> dependencies) throws ProfileException {
+            Set<String> dependencies) throws ProfileException {
         LOG.info("load " + url);
 
         this.displayName = displayName;
@@ -164,8 +164,8 @@
 
         this.critics = critics;
 
-        for (Profile profile : dependencies) {
-            addProfileDependency(profile);
+        for (String profileID : dependencies) {
+            addProfileDependency(profileID);
         }
         
         finishLoading();

Modified: branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java?view=diff&rev=15252&p1=branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java&p2=branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java&r1=15251&r2=15252
==============================================================================
--- branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java	(original)
+++ branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java	2008-07-13 08:33:41-0700
@@ -339,7 +339,7 @@
         List<Profile> registeredProfiles = getRegisteredProfiles();
 
         for (Profile profile : registeredProfiles) {
-            if (profile.getDisplayName().equalsIgnoreCase(value)) {
+            if (profile.getProfileIdentifier().equalsIgnoreCase(value)) {
                 return profile;
             }
         }

Modified: branches/gsoc2008/work_midterm_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_midterm_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java?view=diff&rev=15252&p1=branches/gsoc2008/work_midterm_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java&p2=branches/gsoc2008/work_midterm_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java&r1=15251&r2=15252
==============================================================================
--- branches/gsoc2008/work_midterm_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java	(original)
+++ branches/gsoc2008/work_midterm_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java	2008-07-13 08:33:41-0700
@@ -50,6 +50,8 @@
     protected void setUp() throws Exception {
         super.setUp();
         InitializeModel.initializeDefault();
+        ProfileFacade.setManager(new ProfileManagerImpl());
+        
         testDir = FileHelper.setUpDir4Test(getClass());
     }
     
@@ -84,7 +86,7 @@
      * @throws Exception if something goes wrong
      */
     public void testLoadingAsFromJar() throws Exception {
-        ProfileManager pm = new ProfileManagerImpl();
+        ProfileManager pm = ProfileFacade.getManager();
         
         // create profile model
         ProfileMother profileMother = new ProfileMother();
@@ -97,8 +99,8 @@
         Set<CrUML> critics = new HashSet<CrUML>();
         critics.add(critic);
         
-        Set<Profile> profiles = new HashSet<Profile>();
-        profiles.add(pm.getUMLProfile());
+        Set<String> profiles = new HashSet<String>();
+        profiles.add(pm.getUMLProfile().getProfileIdentifier());
         
         Profile profile = new UserDefinedProfile("displayName", profileFile
                 .toURI().toURL(), critics, profiles);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.