From: David ‘Bombe’ Roden Date: Wed, 21 May 2008 20:56:10 +0000 (+0000) Subject: add file handling basics X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=d64b8b897d20351ff657f03c4fd9911d69932260;p=jSite2.git add file handling basics git-svn-id: http://trooper/svn/projects/jSite/trunk@926 c3eda9e8-030b-0410-8277-bc7414b0a119 --- diff --git a/src/net/pterodactylus/jsite/project/AbstractFile.java b/src/net/pterodactylus/jsite/project/AbstractFile.java new file mode 100644 index 0000000..f30d324 --- /dev/null +++ b/src/net/pterodactylus/jsite/project/AbstractFile.java @@ -0,0 +1,76 @@ +/* + * jSite2 - AbstractFile.java - + * Copyright © 2008 David Roden + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package net.pterodactylus.jsite.project; + +import net.pterodactylus.util.beans.AbstractBean; + +/** + * Abstract base implementation of a {@link File}. + * + * @author David ‘Bombe’ Roden <bombe@freenetproject.org> + * @version $Id$ + */ +public abstract class AbstractFile extends AbstractBean implements File { + + /** The name of the “name” property. */ + public static final String PROPERTY_NAME = "name"; + + /** The name of the “content type” property. */ + public static final String PROPERTY_CONTENT_TYPE = "contentType"; + + /** The name of the file. */ + private String name; + + /** The content type of the file. */ + private String contentType; + + /** + * {@inheritDoc} + */ + public String getName() { + return name; + } + + /** + * {@inheritDoc} + */ + public void setName(String name) { + String oldName = this.name; + this.name = name; + fireIfPropertyChanged(PROPERTY_NAME, oldName, name); + } + + /** + * {@inheritDoc} + */ + public String getContentType() { + return contentType; + } + + /** + * {@inheritDoc} + */ + public void setContentType(String contentType) { + String oldContentType = this.contentType; + this.contentType = contentType; + fireIfPropertyChanged(PROPERTY_CONTENT_TYPE, oldContentType, contentType); + } + +} diff --git a/src/net/pterodactylus/jsite/project/File.java b/src/net/pterodactylus/jsite/project/File.java new file mode 100644 index 0000000..e55e132 --- /dev/null +++ b/src/net/pterodactylus/jsite/project/File.java @@ -0,0 +1,65 @@ +/* + * jSite2 - File.java - + * Copyright © 2008 David Roden + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package net.pterodactylus.jsite.project; + +/** + * A file is an entry in a directory. Its name can contain multiple components + * (separated by a slash, ‘/’). + * + * @author David ‘Bombe’ Roden <bombe@freenetproject.org> + * @version $Id$ + */ +public interface File { + + /** + * Returns the name of the file. The name can contain multiple path + * components, separated by a slash (‘/’). It will never start with a slash, + * though. + * + * @return The name of the file + */ + public String getName(); + + /** + * Sets the name of the file. + * + * @param name + * The name of the file + */ + public void setName(String name); + + /** + * Returns the content type of the file. If the content type is + * null, the node will auto-detect the content type based on + * the filename. The content type is given as a MIME type. + * + * @return The content of the file + */ + public String getContentType(); + + /** + * Sets the content type of the file. + * + * @param contentType + * The content type of the file + */ + public void setContentType(String contentType); + +} diff --git a/src/net/pterodactylus/jsite/project/PhysicalFile.java b/src/net/pterodactylus/jsite/project/PhysicalFile.java new file mode 100644 index 0000000..f06d2ca --- /dev/null +++ b/src/net/pterodactylus/jsite/project/PhysicalFile.java @@ -0,0 +1,57 @@ +/* + * jSite2 - PhysicalFile.java - + * Copyright © 2008 David Roden + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package net.pterodactylus.jsite.project; + +/** + * A physical file represents a file on the disk. + * + * @author David ‘Bombe’ Roden <bombe@freenetproject.org> + * @version $Id$ + */ +public class PhysicalFile extends AbstractFile { + + /** The name of the “path” property. */ + public static final String PROPERTY_PATH = "path"; + + /** The path of the file. */ + private String path; + + /** + * Returns the path of the file. + * + * @return The path of the file + */ + public String getPath() { + return path; + } + + /** + * Sets the path of the file. + * + * @param path + * The path of the file + */ + public void setPath(String path) { + String oldPath = this.path; + this.path = path; + fireIfPropertyChanged(PROPERTY_PATH, oldPath, path); + } + +} diff --git a/src/net/pterodactylus/jsite/project/RedirectFile.java b/src/net/pterodactylus/jsite/project/RedirectFile.java new file mode 100644 index 0000000..d257437 --- /dev/null +++ b/src/net/pterodactylus/jsite/project/RedirectFile.java @@ -0,0 +1,58 @@ +/* + * jSite2 - RedirectFile.java - + * Copyright © 2008 David Roden + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package net.pterodactylus.jsite.project; + +/** + * A redirect is a file that is not really inserted, instead it just points to + * another file on freenet. + * + * @author David ‘Bombe’ Roden <bombe@freenetproject.org> + * @version $Id$ + */ +public class RedirectFile extends AbstractFile { + + /** The name of the “target” property. */ + public static final String PROPERTY_TARGET = "target"; + + /** The target of the redirect. */ + private String target; + + /** + * Returns the target of the redirect. + * + * @return The target of the redirect + */ + public String getTarget() { + return target; + } + + /** + * Sets the target of the redirect. + * + * @param target + * The target of the redirect + */ + public void setTarget(String target) { + String oldTarget = target; + this.target = target; + fireIfPropertyChanged(PROPERTY_TARGET, oldTarget, target); + } + +}