Changed so that root folder is not a DB requirement and not created on the fly.

This commit is contained in:
Ziver Koc 2018-08-13 21:10:08 +02:00
parent 5921a08b14
commit 8ea4f0d6d5
4 changed files with 91 additions and 85 deletions

View file

@ -28,19 +28,14 @@ public class Folder extends DBBean {
return load(db, Folder.class, id);
}
public static List<Folder> loadSubFolders(DBConnection db, Folder folder, User requestingUser) throws SQLException {
PreparedStatement sql = db.getPreparedStatement("SELECT * FROM Folder WHERE parent=? AND (isPrivate=0 OR owner=? OR ?)");
public static List<Folder> loadSubFolders(DBConnection db, Folder folder) throws SQLException {
PreparedStatement sql = db.getPreparedStatement("SELECT * FROM Folder WHERE parent=?");
sql.setLong(1, folder.getId());
sql.setLong(2, folder.owner.getId());
sql.setBoolean(3, requestingUser.isSuperUser());
return DBConnection.exec(sql, DBBeanSQLResultHandler.createList(Folder.class, db));
}
public static Folder loadRoot(DBConnection db, User user) throws SQLException {
PreparedStatement sql = db.getPreparedStatement("SELECT * FROM Folder WHERE name=? AND (isPrivate=0 OR owner=? OR ?)");
sql.setString(1, "/");
sql.setLong(2, user.getId());
sql.setBoolean(3, user.isSuperUser());
PreparedStatement sql = db.getPreparedStatement("SELECT * FROM Folder WHERE name='/' AND parent IS NULL LIMIT 1");
return DBConnection.exec(sql, DBBeanSQLResultHandler.create(Folder.class, db));
}
@ -93,16 +88,8 @@ public class Folder extends DBBean {
return dateCreated;
}
public static Folder createRootFolder() {
Folder root = new Folder();
root.parent = null;
root.owner = null;
root.name = "/";
return root;
}
public boolean isEmpty(DBConnection db) throws SQLException {
return Folder.loadSubFolders(db, this, getOwner()).isEmpty() && Media.load(db, this).isEmpty();
return Folder.loadSubFolders(db, this).isEmpty() &&
Media.load(db, this).isEmpty();
}
}

View file

@ -38,15 +38,12 @@ public class GalleryServlet extends ZalleryServlet {
folder = Folder.load(db, Long.parseLong(request.getParameter("folder")));
else {
folder = Folder.loadRoot(db, user);
// Setup new root folder
if (folder == null) {
folder = Folder.createRootFolder();
folder.save(db);
}
if (folder == null)
throw new NullPointerException("No root folder found in DB.");
}
List<Media> list = Media.load(db, folder);
List<Folder> subFolders = Folder.loadSubFolders(db, folder, user);
List<Folder> subFolders = Folder.loadSubFolders(db, folder);
//session.setAttribute("user", user);
request.setAttribute("folder", folder);