Add temporary force-insert flag.
[jSite.git] / src / de / todesbaum / jsite / application / FileOption.java
index 118eee2..4eec3bf 100644 (file)
@@ -40,9 +40,21 @@ public class FileOption {
        /** The insert state. */
        private boolean insert;
 
+       /** Whether to force an insert. */
+       private boolean forceInsert;
+
        /** Whether to insert a redirect. */
        private boolean insertRedirect;
 
+       /** The hash of the last insert. */
+       private String lastInsertHash;
+
+       /** The edition of the last insert. */
+       private int lastInsertEdition;
+
+       /** The current hash of the file. */
+       private String currentHash;
+
        /** The custom key. */
        private String customKey;
 
@@ -123,6 +135,31 @@ public class FileOption {
        }
 
        /**
+        * Returns whether the insert of this file should be forced, even if its
+        * current hash matches the last insert hash.
+        *
+        * @return {@code true} to force the insert of this file, {@code false}
+        *         otherwise
+        */
+       public boolean isForceInsert() {
+               return forceInsert;
+       }
+
+       /**
+        * Sets whether to force the insert of this file, even if its current hash
+        * matches the last insert hash.
+        *
+        * @param forceInsert
+        *            {@code true} to force the insert of this file, {@code false}
+        *            otherwise
+        * @return These file options
+        */
+       public FileOption setForceInsert(boolean forceInsert) {
+               this.forceInsert = forceInsert;
+               return this;
+       }
+
+       /**
         * Returns whether a redirect to a different key should be inserted. This
         * will only matter if {@link #isInsert()} returns {@code false}. The key
         * that should be redirected to still needs to be specified via
@@ -151,6 +188,72 @@ public class FileOption {
        }
 
        /**
+        * Returns the hash of the file when it was last inserted
+        *
+        * @return The last hash of the file
+        */
+       public String getLastInsertHash() {
+               return lastInsertHash;
+       }
+
+       /**
+        * Sets the hash of the file when it was last inserted.
+        *
+        * @param lastInsertHash
+        *            The last hash of the file
+        * @return These file options
+        */
+       public FileOption setLastInsertHash(String lastInsertHash) {
+               this.lastInsertHash = lastInsertHash;
+               return this;
+       }
+
+       /**
+        * Returns the last edition at which this file was inserted.
+        *
+        * @return The last insert edition of this file
+        */
+       public int getLastInsertEdition() {
+               return lastInsertEdition;
+       }
+
+       /**
+        * Sets the last insert edition of this file.
+        *
+        * @param lastInsertEdition
+        *            The last insert edition of this file
+        * @return These file options
+        */
+       public FileOption setLastInsertEdition(int lastInsertEdition) {
+               this.lastInsertEdition = lastInsertEdition;
+               return this;
+       }
+
+       /**
+        * Returns the current hash of the file. This value is ony a temporary value
+        * that is copied to {@link #getLastInsertHash()} when a project has
+        * finished inserting.
+        *
+        * @see Project#onSuccessfulInsert()
+        * @return The current hash of the file
+        */
+       public String getCurrentHash() {
+               return currentHash;
+       }
+
+       /**
+        * Sets the current hash of the file.
+        *
+        * @param currentHash
+        *            The current hash of the file
+        * @return These file options
+        */
+       public FileOption setCurrentHash(String currentHash) {
+               this.currentHash = currentHash;
+               return this;
+       }
+
+       /**
         * Returns whether this file has a changed name. Use
         * {@link #getChangedName()} is this method returns {@code true}.
         *