X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fde%2Ftodesbaum%2Fjsite%2Fapplication%2FFileOption.java;h=71809c96fe1c4808b88bbdc76f24ba7997f85b36;hb=a6bda7a82aa1b2cfd0313fb28d3dcca68ca516c5;hp=c1d201a7e2892229bf2c9bbad906caead7972d0d;hpb=bbfa208695e2a7f1bb555f841623945767f296e7;p=jSite.git diff --git a/src/de/todesbaum/jsite/application/FileOption.java b/src/de/todesbaum/jsite/application/FileOption.java index c1d201a..71809c9 100644 --- a/src/de/todesbaum/jsite/application/FileOption.java +++ b/src/de/todesbaum/jsite/application/FileOption.java @@ -1,20 +1,19 @@ /* - * jSite - a tool for uploading websites into Freenet - * Copyright (C) 2006 David Roden + * jSite - FileOption.java - Copyright © 2006–2011 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 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. + * 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. + * 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 de.todesbaum.jsite.application; @@ -29,9 +28,15 @@ public class FileOption { /** The default for the insert state. */ private static final boolean DEFAULT_INSERT = true; + /** The default for the insert redirect state. */ + private static final boolean DEFAULT_INSERT_REDIRECT = true; + /** The default for the custom key. */ private static final String DEFAULT_CUSTOM_KEY = "CHK@"; + /** The default changed name. */ + private static final String DEFAULT_CHANGED_NAME = null; + /** The default container. */ private static final String DEFAULT_CONTAINER = ""; @@ -44,9 +49,15 @@ public class FileOption { /** The insert state. */ private boolean insert; + /** Whether to insert a redirect. */ + private boolean insertRedirect; + /** The custom key. */ private String customKey; + /** The changed name. */ + private String changedName; + /** The default MIME type. */ private final String defaultMimeType; @@ -70,7 +81,9 @@ public class FileOption { */ public FileOption(String defaultMimeType) { insert = DEFAULT_INSERT; + insertRedirect = DEFAULT_INSERT_REDIRECT; customKey = DEFAULT_CUSTOM_KEY; + changedName = DEFAULT_CHANGED_NAME; this.defaultMimeType = defaultMimeType; mimeType = defaultMimeType; container = DEFAULT_CONTAINER; @@ -80,7 +93,8 @@ public class FileOption { /** * Returns the custom key. The custom key is only used when - * {@link #isInsert()} returns true. + * {@link #isInsert()} and {@link #isInsertRedirect()} both return {@code + * true}. * * @return The custom key */ @@ -90,21 +104,23 @@ public class FileOption { /** * Sets the custom key. The custom key is only used when {@link #isInsert()} - * returns true. + * and {@link #isInsertRedirect()} both return {@code true}. * * @param customKey * The custom key */ public void setCustomKey(String customKey) { if (customKey == null) { - customKey = ""; + this.customKey = ""; + } else { + this.customKey = customKey; } - this.customKey = customKey; } /** - * Returns whether the file should be inserted. If a file is not inserted, a - * custom key has to be specified for it. + * Returns whether the file should be inserted. If a file is not inserted + * and {@link #isInsertRedirect()} is also {@code false}, the file will not + * be inserted at all. * * @see #setCustomKey(String) * @return true if the file should be inserted, @@ -115,8 +131,9 @@ public class FileOption { } /** - * Sets whether the file should be inserted. If a file is not inserted, a - * custom key has to be specified for it. + * Sets whether the file should be inserted. If a file is not inserted and + * {@link #isInsertRedirect()} is also {@code false}, the file will not be + * inserted at all. * * @param insert * true if the file should be inserted, @@ -127,6 +144,67 @@ public class FileOption { } /** + * 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 + * {@link #setCustomKey(String)}. + * + * @return {@code true} if a redirect should be inserted, {@code false} + * otherwise + */ + public boolean isInsertRedirect() { + return insertRedirect; + } + + /** + * Sets whether a redirect should be inserted. This will only matter if + * {@link #isInsert()} returns {@code false}, i.e. it has been + * {@link #setInsert(boolean)} to {@code false}. The key that should be + * redirected to still needs to be specified via + * {@link #setCustomKey(String)}. + * + * @param insertRedirect + * {@code true} if a redirect should be inserted, {@code false} + * otherwise + */ + public void setInsertRedirect(boolean insertRedirect) { + this.insertRedirect = insertRedirect; + } + + /** + * Returns whether this file has a changed name. Use + * {@link #getChangedName()} is this method returns {@code true}. + * + * @return {@code true} if this file has a changed name, {@code false} + * otherwise + */ + public boolean hasChangedName() { + return (changedName != null) && (changedName.length() > 0); + } + + /** + * Returns the changed name for this file. This method will return {@code + * null} or an empty {@link String} if this file should not be renamed. + * + * @return The changed name, or {@code null} if this file should not be + * renamed + */ + public String getChangedName() { + return changedName; + } + + /** + * Sets the changed name for this file. Setting the changed file to {@code + * null} or an empty {@link String} will disable renaming. + * + * @param changedName + * The new changed name for this file + */ + public void setChangedName(String changedName) { + this.changedName = changedName; + } + + /** * Sets the MIME type of the file. Setting the MIME type to * null will set the MIME type to the default MIME type. * @@ -135,9 +213,10 @@ public class FileOption { */ public void setMimeType(String mimeType) { if (mimeType == null) { - mimeType = defaultMimeType; + this.mimeType = defaultMimeType; + } else { + this.mimeType = mimeType; } - this.mimeType = mimeType; } /** @@ -167,28 +246,28 @@ public class FileOption { */ public void setContainer(String container) { if (container == null) { - container = DEFAULT_CONTAINER; + this.container = DEFAULT_CONTAINER; + } else { + this.container = container; } - this.container = container; } /** * Sets whether the file should have “$[EDITION+n]” tags replaced. * * @param replaceEdition - * true to replace tags, false not - * to replace + * true to replace tags, false not to + * replace */ public void setReplaceEdition(boolean replaceEdition) { this.replaceEdition = replaceEdition; } /** - * Returns whether the file should have “$[EDITION+n]” tags - * replaced. + * Returns whether the file should have “$[EDITION+n]” tags replaced. * - * @return true if tags should be replaced, - * false otherwise + * @return true if tags should be replaced, false + * otherwise */ public boolean getReplaceEdition() { return replaceEdition; @@ -227,6 +306,9 @@ public class FileOption { if (!customKey.equals(DEFAULT_CUSTOM_KEY)) { return true; } + if (((changedName != null) && !changedName.equals(DEFAULT_CHANGED_NAME)) || ((DEFAULT_CHANGED_NAME != null) && !DEFAULT_CHANGED_NAME.equals(changedName))) { + return true; + } if (!defaultMimeType.equals(mimeType)) { return true; } @@ -239,7 +321,10 @@ public class FileOption { if (editionRange != DEFAULT_EDITION_RANGE) { return true; } + if (insertRedirect != DEFAULT_INSERT_REDIRECT) { + return true; + } return false; } -} \ No newline at end of file +}