Modified:
/branches/0.9.7/src/ca/sqlpower/matchmaker/MatchMakerUtils.java
/branches/0.9.7/src/ca/sqlpower/matchmaker/PlFolder.java
=======================================
--- /branches/0.9.7/src/ca/sqlpower/matchmaker/MatchMakerUtils.java Thu Jan
27 10:06:15 2011
+++ /branches/0.9.7/src/ca/sqlpower/matchmaker/MatchMakerUtils.java Fri Jan
28 12:59:01 2011
@@ -131,7 +131,7 @@
ds.setName(project.getName() + "'s graph database");
ds.setUser("");
ds.setPass("");
- ds.setUrl("jdbc:derby:"+System.getProperty("user.home")+"/.mm/" +
project.getName() + ";create=true");
+ ds.setUrl("jdbc:derby:"+ makeGraphDBLocation(project)
+ ";create=true");
// find Derby parent type
JDBCDataSourceType derbyType = null;
@@ -149,5 +149,8 @@
SQLDatabase db = new SQLDatabase(ds);
return db;
}
-
-}
+
+ public static String makeGraphDBLocation(Project project) {
+ return System.getProperty("user.home")+"/.mm/" +
project.getParent().getName() + "/" + project.getName();
+ }
+}
=======================================
--- /branches/0.9.7/src/ca/sqlpower/matchmaker/PlFolder.java Thu Apr 9
19:56:43 2009
+++ /branches/0.9.7/src/ca/sqlpower/matchmaker/PlFolder.java Fri Jan 28
12:59:01 2011
@@ -19,6 +19,12 @@
package ca.sqlpower.matchmaker;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
import edu.umd.cs.findbugs.annotations.SuppressWarnings;
/**
@@ -31,6 +37,8 @@
*/
public class PlFolder<C extends MatchMakerObject>
extends AbstractMatchMakerObject<PlFolder, C> {
+
+ private static final Logger logger = Logger.getLogger(PlFolder.class);
/**
* The object id
@@ -146,4 +154,40 @@
public Long getOid() {
return oid;
}
-}
+
+ public void removeChild(C child) {
+ String fileLocation = null;
+ if (child instanceof Project) {
+ fileLocation = MatchMakerUtils.makeGraphDBLocation((Project) child);
+ }
+ super.removeChild(child);
+ if (child instanceof Project) {
+ File dbLocation = new File(fileLocation);
+ if (dbLocation.exists() && dbLocation.isDirectory()) {
+ //Must clean up files in the directory before we can delete it.
+ List<String> innerFiles = new ArrayList<String>();
+ innerFiles.add(fileLocation);
+ for (File file : dbLocation.listFiles()) {
+ innerFiles.add(0, file.getAbsolutePath());
+ }
+ while (!innerFiles.isEmpty()) {
+ File innerFile = new File(innerFiles.get(0));
+ if (innerFile.isDirectory()) {
+ if (!innerFile.delete()) {
+ for (File file : innerFile.listFiles()) {
+ innerFiles.add(0, file.getAbsolutePath());
+ }
+ } else {
+ innerFiles.remove(0);
+ }
+ } else {
+ if (innerFile.canWrite() && !innerFile.delete()) {
+ logger.error("Cannot clean up file " + innerFile);
+ }
+ innerFiles.remove(0);
+ }
+ }
+ }
+ }
+ };
+}