add override
[jSite2.git] / src / net / pterodactylus / jsite / project / AbstractEntry.java
index 74e9076..ff04760 100644 (file)
 
 package net.pterodactylus.jsite.project;
 
+import java.io.File;
+
 import net.pterodactylus.util.beans.AbstractBean;
 
 /**
  * Abstract base implementation of a {@link Entry}.
  * 
  * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
  */
 public abstract class AbstractEntry extends AbstractBean implements Entry {
 
        /** The name of the “name” property. */
        public static final String PROPERTY_NAME = "name";
 
+       /** The name of the “insert” property. */
+       public static final String PROPERTY_INSERT = "insert";
+
        /** The name of the “content type” property. */
        public static final String PROPERTY_CONTENT_TYPE = "contentType";
 
+       /** Whether this entry is virtual. */
+       private final boolean virtual;
+
        /** The name of the file. */
        private String name;
 
+       /** The default insert flag for this entry. */
+       private boolean defaultInsert;
+
+       /** Whether to insert the file. */
+       private boolean insert;
+
+       /** The default content type of this entry. */
+       private String defaultContentType;
+
        /** The content type of the file. */
        private String contentType;
 
        /**
+        * Creates a new entry.
+        * 
+        * @param virtual
+        *            <code>true</code> if this entry is virtual,
+        *            <code>false</code> otherwise
+        */
+       protected AbstractEntry(boolean virtual) {
+               this.virtual = virtual;
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       public boolean isVirtual() {
+               return virtual;
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       public boolean isDefault() {
+               return (insert == defaultInsert) && isDefaultContentType();
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       public boolean isDefaultContentType() {
+               return ((defaultContentType != null) ? defaultContentType.equals(contentType) : (contentType == null));
+       }
+
+       /**
+        * Sets the default insert flag for this entry. The default insert flag is
+        * derived from {@link File#isHidden()}.
+        * 
+        * @param defaultInsert
+        *            <code>true</code> if the default for this entry is to insert
+        *            it, <code>false</code> otherwise
+        */
+       void setDefaultInsert(boolean defaultInsert) {
+               this.defaultInsert = defaultInsert;
+       }
+
+       /**
         * {@inheritDoc}
         */
        public String getName() {
@@ -60,6 +120,22 @@ public abstract class AbstractEntry extends AbstractBean implements Entry {
        /**
         * {@inheritDoc}
         */
+       public boolean isInsert() {
+               return insert;
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       public void setInsert(boolean insert) {
+               boolean oldInsert = this.insert;
+               this.insert = insert;
+               fireIfPropertyChanged(PROPERTY_INSERT, oldInsert, insert);
+       }
+
+       /**
+        * {@inheritDoc}
+        */
        public String getContentType() {
                return contentType;
        }
@@ -73,4 +149,22 @@ public abstract class AbstractEntry extends AbstractBean implements Entry {
                fireIfPropertyChanged(PROPERTY_CONTENT_TYPE, oldContentType, contentType);
        }
 
+       /**
+        * Sets the default content type of the entry. The default content type is
+        * derived from its extension.
+        * 
+        * @param defaultContentType
+        *            The default content type
+        */
+       void setDefaultContentType(String defaultContentType) {
+               this.defaultContentType = defaultContentType;
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       public void restoreDefaultContentType() {
+               this.contentType = defaultContentType;
+       }
+
 }