import java.util.List;
import net.pterodactylus.util.beans.AbstractBean;
+import net.pterodactylus.util.io.MimeTypes;
/**
* 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>
- * @version $Id$
*/
public class Project extends AbstractBean {
/** The list of files from the base path. */
private List<Entry> basePathEntries = new ArrayList<Entry>();
+ /** The list of virtual files. */
+ private List<Entry> virtualEntries = new ArrayList<Entry>();
+
+ /**
+ * Creates a new project.
+ */
+ public Project() {
+ /* do nothing. */
+ }
+
+ /**
+ * Clones the given project.
+ *
+ * @param project
+ */
+ Project(Project project) {
+ this.name = project.name;
+ this.description = project.description;
+ this.publicKey = project.publicKey;
+ this.privateKey = project.privateKey;
+ this.basePath = project.basePath;
+ this.basePathEntries.addAll(project.basePathEntries);
+ this.virtualEntries.addAll(project.virtualEntries);
+ }
+
/**
* Returns the internal ID.
*
return basePathEntries;
}
+ /**
+ * Returns the list of visual entries.
+ *
+ * @return The visual entries
+ */
+ public List<Entry> getVirtualEntries() {
+ return virtualEntries;
+ }
+
+ /**
+ * Adds a virtual entry that redirects to the given target.
+ *
+ * @param name
+ * The name of the entry
+ * @param contentType
+ * The content type of the entry, or <code>null</code> for
+ * auto-detection
+ * @param target
+ * The target URI of the redirect
+ */
+ public void addVirtualEntry(String name, String contentType, String target) {
+ RedirectEntry redirectEntry = new RedirectEntry();
+ redirectEntry.setName(name);
+ redirectEntry.setContentType(contentType);
+ redirectEntry.setTarget(target);
+ redirectEntry.setInsert(true);
+ }
+
//
// PRIVATE METHODS
//
PhysicalEntry entry = new PhysicalEntry();
entry.setName(fileName);
entry.setPath(file.getPath());
+ entry.setDefaultInsert(!file.isHidden());
entry.setInsert(!file.isHidden());
+ String extension = fileName.substring(fileName.lastIndexOf('.') + 1);
+ List<String> mimeTypes = MimeTypes.getMimeTypes(extension);
+ if (!mimeTypes.isEmpty()) {
+ entry.setDefaultContentType(mimeTypes.get(0));
+ entry.setContentType(mimeTypes.get(0));
+ }
entries.add(entry);
}
}