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.