X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fproject%2FProject.java;h=51ec2d323669c7508972e8f900806f16712a5ba3;hb=80e93840dac03f7775bdf3053e04639e45cfcf91;hp=5a3b848c0da9cb822de233d6380794cb85a7f3bc;hpb=d3f2f9e164ee7a71aca4297742ca871274af1cc3;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/project/Project.java b/src/net/pterodactylus/jsite/project/Project.java index 5a3b848..51ec2d3 100644 --- a/src/net/pterodactylus/jsite/project/Project.java +++ b/src/net/pterodactylus/jsite/project/Project.java @@ -20,6 +20,9 @@ package net.pterodactylus.jsite.project; import java.beans.PropertyChangeListener; +import java.io.File; +import java.util.ArrayList; +import java.util.List; import net.pterodactylus.util.beans.AbstractBean; @@ -65,6 +68,9 @@ public class Project extends AbstractBean { /** The base path of the project. */ private String basePath; + /** The list of files from the base path. */ + private List basePathEntries = new ArrayList(); + /** * Returns the internal ID. * @@ -141,7 +147,7 @@ public class Project extends AbstractBean { * @param publicKey * The public key of the project */ - public void setPublicKey(String publicKey) { + void setPublicKey(String publicKey) { String oldPublicKey = this.publicKey; this.publicKey = publicKey; fireIfPropertyChanged(PROPERTY_PUBLIC_KEY, oldPublicKey, publicKey); @@ -162,7 +168,7 @@ public class Project extends AbstractBean { * @param privateKey * The private key of the project */ - public void setPrivateKey(String privateKey) { + void setPrivateKey(String privateKey) { String oldPrivateKey = this.privateKey; this.privateKey = privateKey; fireIfPropertyChanged(PROPERTY_PRIVATE_KEY, oldPrivateKey, privateKey); @@ -189,4 +195,53 @@ public class Project extends AbstractBean { fireIfPropertyChanged(PROPERTY_BASE_PATH, oldBasePath, basePath); } + /** + * Rescans the base path for new or changed files. + */ + public void rescanBasePath() { + List entries = new ArrayList(); + scanPath("", entries); + } + + /** + * Returns the list of files from the base path. + * + * @return The list of files from the base path + */ + public List getBasePathEntries() { + return basePathEntries; + } + + // + // PRIVATE METHODS + // + + /** + * Scans the given path relative to {@link #basePath} for files and adds + * them to the given list of entries. + * + * @param currentPath + * The current path, relative to the base path + * @param entries + * The list of entries + */ + private void scanPath(String currentPath, List entries) { + File currentDirectory = new File(basePath + File.separatorChar + currentPath); + if (!currentDirectory.isDirectory()) { + return; + } + for (File file: currentDirectory.listFiles()) { + String fileName = currentPath + file.getName(); + if (file.isDirectory()) { + scanPath(fileName + File.separatorChar, entries); + continue; + } + PhysicalEntry entry = new PhysicalEntry(); + entry.setName(fileName); + entry.setPath(file.getPath()); + entry.setInsert(!file.isHidden()); + entries.add(entry); + } + } + }