/**
* Container for project information. A Project is capable of notifying
* {@link PropertyChangeListener}s if any of the contained properties change.
- *
+ *
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
*/
public class Project extends AbstractBean {
private String defaultFile;
/** The overrides. */
- private final Map<String, Override> overrides = new HashMap<String, Override>();
+ private final Map<String, FileOverride> fileOverrides = new HashMap<String, FileOverride>();
/**
* Creates a new project.
/**
* Clones the given project.
- *
+ *
* @param project
*/
Project(Project project) {
/**
* Returns the internal ID.
- *
+ *
* @return The internal ID
*/
String getId() {
/**
* Sets the internal ID.
- *
+ *
* @param id
* The internal ID
*/
/**
* Returns the name of the project.
- *
+ *
* @return The name of the project
*/
public String getName() {
/**
* Sets the name of the project.
- *
+ *
* @param name
* The name of the project
*/
/**
* Returns the description of the project.
- *
+ *
* @return The description of the project
*/
public String getDescription() {
/**
* Sets the description of the project
- *
+ *
* @param description
* The description of the project
*/
/**
* Returns the public key of the project.
- *
+ *
* @return The public key of the project
*/
public String getPublicKey() {
/**
* Sets the public key of the project.
- *
+ *
* @param publicKey
* The public key of the project
*/
/**
* Returns the private key of the project.
- *
+ *
* @return The private key of the project
*/
public String getPrivateKey() {
/**
* Sets the private key of the project.
- *
+ *
* @param privateKey
* The private key of the project
*/
/**
* Returns the base path of the project.
- *
+ *
* @return The base path of the project
*/
public String getBasePath() {
/**
* Sets the base path of the project.
- *
+ *
* @param basePath
* The base path of the project
*/
/**
* Returns the default file.
- *
+ *
* @return The default file
*/
public String getDefaultFile() {
/**
* Sets the default file.
- *
+ *
* @param defaultFile
* The default file
*/
}
/**
- * Adds an override for the given file.
- *
+ * Adds a file override for the given file.
+ *
* @param filePath
* The file path
* @param override
* The override for the file
*/
- public void addOverride(String filePath, Override override) {
- overrides.put(filePath, override);
+ public void addFileOverride(String filePath, FileOverride override) {
+ fileOverrides.put(filePath, override);
}
/**
- * Removes the override for the given file.
- *
+ * Removes the file override for the given file.
+ *
* @param filePath
* The file path for which to remove the override
*/
- public void removeOverride(String filePath) {
- overrides.remove(filePath);
+ public void removeFileOverride(String filePath) {
+ fileOverrides.remove(filePath);
}
/**
- * Returns the list of {@link Override}s.
- *
- * @return All overrides
+ * Returns the list of {@link FileOverride}s.
+ *
+ * @return All file overrides
*/
- public Map<String, Override> getOverrides() {
- return overrides;
+ public Map<String, FileOverride> getFileOverrides() {
+ return fileOverrides;
}
/**
* base path. From this file it is possible to reach all files in the base
* path. This method is disk-intensive and may take some time on larger
* directories!
- *
+ *
* @return The file for the base path, or <code>null</code> if the base
* path does not denote an existing directory
*/
if (!basePathFile.exists() || !basePathFile.isDirectory()) {
return null;
}
- ProjectFileImpl rootProjectFile = new ProjectFileImpl(null, "", true, false);
+ ProjectFileImpl rootProjectFile = new ProjectFileImpl(null, "", 0, true, false);
scanDirectory(basePathFile, rootProjectFile);
return rootProjectFile;
}
/**
* Scans the given directory and recreates the file and directory structure
* in the given project file.
- *
+ *
* @param directory
* The directory to scan
* @param projectFile
if (!directory.isDirectory()) {
return;
}
- for (File file: directory.listFiles()) {
- ProjectFileImpl projectFileChild = projectFile.addFile(file.getName(), file.isDirectory(), file.isHidden());
+ for (File file : directory.listFiles()) {
+ ProjectFileImpl projectFileChild = projectFile.addFile(file.getName(), file.length(), file.isDirectory(), file.isHidden());
if (file.isDirectory()) {
scanDirectory(file, projectFileChild);
}
/**
* Implementation of a {@link ProjectFile}.
- *
+ *
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
*/
private static class ProjectFileImpl implements ProjectFile, Comparable<ProjectFileImpl> {
/** The name of this project file. */
private final String name;
+ /** The size of the file. */
+ private final long size;
+
/** Whether this project file is a directory. */
private final boolean directory;
/**
* Creates a new project fie.
- *
+ *
* @param parentProjectFile
* The parent of the project file, or <code>null</code> if
* the new project file does not have a parent
* @param name
* The name of the project file
+ * @param size
+ * The size of the file
* @param isDirectory
* <code>true</code> if this project file is a directory,
* <code>false</code> otherwise
* <code>true</code> if this project file is hidden,
* <code>false</code> otherwise
*/
- ProjectFileImpl(ProjectFileImpl parentProjectFile, String name, boolean isDirectory, boolean isHidden) {
+ ProjectFileImpl(ProjectFileImpl parentProjectFile, String name, long size, boolean isDirectory, boolean isHidden) {
this.parentProjectFile = parentProjectFile;
this.name = name;
+ this.size = size;
this.directory = isDirectory;
this.hidden = isHidden;
}
}
/**
+ * @see net.pterodactylus.jsite.project.ProjectFile#getParent()
+ */
+ public ProjectFile getParent() {
+ return parentProjectFile;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public long getSize() {
+ return size;
+ }
+
+ /**
* @see net.pterodactylus.jsite.project.ProjectFile#getParents()
*/
public List<ProjectFile> getParents() {
public String getCompletePath() {
StringBuilder completePath = new StringBuilder();
ProjectFileImpl currentProjectFile = this;
- do {
- completePath.insert(0, File.separatorChar).insert(0, this.getName());
- } while ((currentProjectFile = currentProjectFile.parentProjectFile) != null);
- return completePath.substring(1);
+ while ((currentProjectFile != null) && (currentProjectFile.parentProjectFile != null)) {
+ completePath.insert(0, currentProjectFile.getName()).insert(0, File.separatorChar);
+ currentProjectFile = currentProjectFile.parentProjectFile;
+ }
+ return completePath.toString();
}
/**
/**
* Adds a new project file as child to this project file.
- *
+ *
* @param name
* The name of the file
+ * @param size
+ * The size of the file
* @param isDirectory
* <code>true</code> if the new file is a directory,
* <code>false</code> otherwise
* <code>false</code> otherwise
* @return The created project file
*/
- public ProjectFileImpl addFile(String name, boolean isDirectory, boolean isHidden) {
- ProjectFileImpl newProjectFile = new ProjectFileImpl(this, name, isDirectory, isHidden);
+ public ProjectFileImpl addFile(String name, long size, boolean isDirectory, boolean isHidden) {
+ ProjectFileImpl newProjectFile = new ProjectFileImpl(this, name, size, isDirectory, isHidden);
childProjectFiles.add(newProjectFile);
return newProjectFile;
}