Author: paperwing
Date: 2012-12-19 14:57:53 -0800 (Wed, 19 Dec 2012)
New Revision: 31022

Added:
   
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppDependencyNode.java
Modified:
   
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppManager.java
   
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppParser.java
Log:
Added class for inter-app dependency management for issue #1644

Added: 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppDependencyNode.java
===================================================================
--- 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppDependencyNode.java
                           (rev 0)
+++ 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppDependencyNode.java
   2012-12-19 22:57:53 UTC (rev 31022)
@@ -0,0 +1,73 @@
+package org.cytoscape.app.internal.manager;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+
+public class AppDependencyNode {
+       
+       private Set<AppDependencyNode> dependencies = new 
HashSet<AppDependencyNode>();
+       private Set<AppDependencyNode> parents = new 
HashSet<AppDependencyNode>();
+       
+       private String currentAppName;
+       private String currentAppVersion;
+       
+       private App currentApp;
+       
+       public AppDependencyNode(String appName, String appVersion) {
+               this.currentAppName = appName;
+               this.currentAppVersion = appVersion;
+       }
+       
+       public void setCurrentApp(App app) {
+               this.currentApp = app;
+       }
+       
+       public Set<AppDependencyNode> getDependencies() { return dependencies; }
+       public Set<AppDependencyNode> getParents() { return parents; }
+       
+       
+       public void addDependency(AppDependencyNode dependency) {
+               dependencies.add(dependency);
+       }
+       
+       public void addParent(AppDependencyNode parent) {
+               parents.add(parent);
+       }
+       
+       public List<String> getMissingDependencies(AppManager appManager) {
+               
+               // Hash current apps into slots
+               Map<String, App> currentApps = new HashMap<String, App>();
+               
+               for (App app : appManager.getApps()) {
+//                     currentApps.put(app.getAppName() + " " + app.get)
+               }
+               
+               Queue<AppDependencyNode> dependenciesToCheck = new 
LinkedList<AppDependencyNode>();
+               
+               for (AppDependencyNode node : dependencies) {
+                       dependenciesToCheck.add(node);  
+               }
+               
+               while (!dependenciesToCheck.isEmpty()) {
+                       AppDependencyNode current = 
dependenciesToCheck.remove();
+                       
+                       if (current.getDependencies().size() != 0) {
+                               for (AppDependencyNode node : 
current.getDependencies()) {
+                                       dependenciesToCheck.add(node);
+                               }
+                       } else {
+                               // Leaf
+//                             AppManager appManager;
+//                             if (appManager.getApps())
+                       }
+               }
+               
+               return null;
+       }
+}

Modified: 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppManager.java
===================================================================
--- 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppManager.java
  2012-12-19 01:08:40 UTC (rev 31021)
+++ 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppManager.java
  2012-12-19 22:57:53 UTC (rev 31022)
@@ -227,7 +227,6 @@
                }
                
                Set<App> installedFolderApps = obtainAppsFromDirectory(new 
File(getInstalledAppsPath()), false);
-               DebugHelper.print(this, "Initializing.. obtained " + 
installedFolderApps.size() + " apps from apps directory.");
                for (App app: installedFolderApps) {
                        try {
                                boolean appRegistered = false;
@@ -248,13 +247,6 @@
                        }
                }
                
-               //installAppsInDirectory(new File(getKarafDeployDirectory()), 
false);
-               //installAppsInDirectory(new File(getInstalledAppsPath()), 
true);
-               
-               // Load apps from the "uninstalled apps" directory
-               //Set<App> uninstalledApps = obtainAppsFromDirectory(new 
File(getUninstalledAppsPath()), true);
-               //apps.addAll(uninstalledApps);
-               
                DebugHelper.print(this, "config dir: " + 
applicationConfiguration.getConfigurationDirectoryLocation());
        }
        
@@ -274,33 +266,26 @@
                installAlterationObserver.addListener(new 
FileAlterationListenerAdaptor() {
                        @Override
                        public void onFileCreate(File file) {
-                               DebugHelper.print("Install directory file 
created");
-                               
                                App parsedApp = null;
                                try {
-                                       parsedApp = appParser.parseApp(file);
+                                       parsedApp = appParser
+                                                       .parseApp(file);
                                } catch (AppParsingException e) {
-                                       logger.warn(e.getMessage());
                                        return;
                                }
                                
-                               DebugHelper.print(this + " 
installObserverCreate", parsedApp.getAppName() + " parsed");
-                               
                                App registeredApp = null;
                                for (App app : apps) {
                                        if (parsedApp.heuristicEquals(app)) {
                                                registeredApp = app;
                                                
                                                // Delete old file if it was 
still there
-                                               // TODO: Possible rename from 
filename-2 to filename?
-                                               File oldFile = 
registeredApp.getAppFile();
+                                               File oldFile = registeredApp
+                                                               .getAppFile();
                                                
-                                               if (oldFile.exists() && 
!registeredApp.getAppFile().equals(parsedApp.getAppFile())) {
-                                                       DebugHelper.print(this 
+ " installObserverCreate", 
-                                                                       
registeredApp.getAppName() + " moved from " 
-                                                                       + 
registeredApp.getAppFile().getAbsolutePath() + " to " 
-                                                                       + 
parsedApp.getAppFile().getAbsolutePath() + ". deleting: " + oldFile);
-                                                       
+                                               if (oldFile.exists() && 
!registeredApp
+                                                               
.getAppFile().equals(parsedApp
+                                                                               
.getAppFile())) {
                                                        
FileUtils.deleteQuietly(oldFile);
                                                }
                                                
@@ -314,9 +299,11 @@
                                                apps.add(parsedApp);
                                                parsedApp.install(appManager);
                                        } else {
-                                               
registeredApp.install(appManager);
+                                               registeredApp.install(
+                                                               appManager);
                                        }
                                } catch (AppInstallException e) {
+                                       logger.warn(e.getLocalizedMessage());
                                }
 
                                fireAppsChangedEvent();
@@ -338,9 +325,8 @@
                                DebugHelper.print(this + " 
installObserverDelete", file.getAbsolutePath() + " deleted.");
                                
                                for (App app : apps) {
-                                       // System.out.println("checking " + 
app.getAppFile().getAbsolutePath());
+
                                        if (app.getAppFile().equals(file)) {
-                                               // System.out.println(app + " 
moved");
                                                
app.setStatus(AppStatus.FILE_MOVED);
                                        }
                                }
@@ -353,17 +339,19 @@
                                getDisabledAppsPath(), new 
SingleLevelFileFilter(new File(getDisabledAppsPath())), IOCase.SYSTEM);
                
                // Listen for events on the "disabled apps" folder
-               disableAlterationObserver.addListener(new 
FileAlterationListenerAdaptor() {
+               disableAlterationObserver.addListener( new 
FileAlterationListenerAdaptor() {
                        @Override
                        public void onFileCreate(File file) {
                                App parsedApp = null;
                                try {
                                        parsedApp = appParser.parseApp(file);
                                } catch (AppParsingException e) {
+                                       logger.warn(e
+                                                       .getLocalizedMessage());
                                        return;
                                }
                                
-                               DebugHelper.print(this + " 
disableObserverCreate", parsedApp.getAppName() + " parsed");
+                               DebugHelper.print(this + " disableObserver 
Create", parsedApp.getAppName() + " parsed");
                                
                                App registeredApp = null;
                                for (App app : apps) {

Modified: 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppParser.java
===================================================================
--- 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppParser.java
   2012-12-19 01:08:40 UTC (rev 31021)
+++ 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/manager/AppParser.java
   2012-12-19 22:57:53 UTC (rev 31022)
@@ -265,9 +265,9 @@
                return parsedApp;
        }
 
-    private static List<KarafArchiveApp.KarafFeature> 
getFeaturesXmlFromJar(final JarFile jarFile) throws AppParsingException
+    private static List<__Unused__KarafArchiveApp.KarafFeature> 
getFeaturesXmlFromJar(final JarFile jarFile) throws AppParsingException
     {
-        final List<KarafArchiveApp.KarafFeature> featuresList = new 
LinkedList<KarafArchiveApp.KarafFeature>();
+        final List<__Unused__KarafArchiveApp.KarafFeature> featuresList = new 
LinkedList<__Unused__KarafArchiveApp.KarafFeature>();
                final Enumeration<JarEntry> entries = jarFile.entries();
                while (entries.hasMoreElements()) {
                        JarEntry jarEntry = entries.nextElement();
@@ -296,7 +296,7 @@
                                                                        && 
qNames.get(0).equalsIgnoreCase("features")
                                                                        && 
qNames.get(1).equalsIgnoreCase("feature")) {
                                                                
-                                                               
KarafArchiveApp.KarafFeature feature = new KarafArchiveApp.KarafFeature();
+                                                               
__Unused__KarafArchiveApp.KarafFeature feature = new 
__Unused__KarafArchiveApp.KarafFeature();
                                                                
                                                                // Obtain the 
feature name and version
                                                                
feature.featureName = atts.getValue("name");

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to