org.kitodo.production.process.field.AdditionalField.java Source code

Java tutorial

Introduction

Here is the source code for org.kitodo.production.process.field.AdditionalField.java

Source

/*
 * (c) Kitodo. Key to digital objects e. V. <contact@kitodo.org>
 *
 * This file is part of the Kitodo project.
 *
 * It is licensed under GNU General Public License version 3 or later.
 *
 * For the full copyright and license information, please read the
 * GPL3-License.txt file that was distributed with this source code.
 */

package org.kitodo.production.process.field;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

import javax.faces.model.SelectItem;

import org.apache.commons.lang.StringUtils;

public class AdditionalField {

    private String title;
    private String value = "";
    private boolean required = false;
    private String from = "process";
    private List<SelectItem> selectList;
    private boolean ughBinding = false;
    private String docStruct;
    private String metadata;
    private String isDocType = "";
    private String isNotDoctype = "";
    private String initStart = ""; // defined in kitodo_projects.xml
    private String initEnd = "";
    private boolean autogenerated = false;
    private String docType;

    /**
     * Public constructor with setting document type for additional field.
     * 
     * @param docType
     *            document type for additional field
     */
    public AdditionalField(String docType) {
        this.docType = docType;
    }

    /**
     * Get title.
     * 
     * @return title
     */
    public String getTitle() {
        return this.title;
    }

    /**
     * Set title.
     * 
     * @param title
     *            of additional field
     */
    public void setTitle(String title) {
        this.title = title;
    }

    /**
     * Get value.
     * 
     * @return value
     */
    public String getValue() {
        return this.value;
    }

    /**
     * Set value.
     *
     * @param value
     *            String
     */
    public void setValue(String value) {
        if (Objects.isNull(value) || value.equals(this.initStart)) {
            value = "";
        }
        if (value.startsWith(this.initStart)) {
            this.value = value + this.initEnd;
        } else {
            this.value = this.initStart + value + this.initEnd;
        }
    }

    /**
     * Get from.
     * 
     * @return from
     */
    public String getFrom() {
        return this.from;
    }

    /**
     * Set from.
     *
     * @param from
     *            input from as String
     */
    public void setFrom(String from) {
        if (!StringUtils.isEmpty(from)) {
            this.from = from;
        }
    }

    /**
     * Get list of select items.
     * 
     * @return list of select items.
     */
    public List<SelectItem> getSelectList() {
        if (Objects.isNull(this.selectList)) {
            this.selectList = new ArrayList<>();
        }
        return this.selectList;
    }

    /**
     * Set list of select items.
     * 
     * @param selectList
     *            as List of SelectItem objects
     */
    public void setSelectList(List<SelectItem> selectList) {
        this.selectList = selectList;
    }

    /**
     * Get information if additional field is required.
     * 
     * @return true or false
     */
    public boolean isRequired() {
        return this.required;
    }

    /**
     * Set information if additional field is required.
     * 
     * @param required
     *            true or false
     */
    public void setRequired(boolean required) {
        this.required = required;
    }

    /**
     * Get information if additional field is UGH binding.
     * 
     * @return true or false
     */
    public boolean isUghBinding() {
        return this.ughBinding;
    }

    /**
     * Set information if additional field is UGH binding.
     * 
     * @param ughBinding
     *            true or false
     */
    public void setUghBinding(boolean ughBinding) {
        this.ughBinding = ughBinding;
    }

    /**
     * Get document structure.
     * 
     * @return document structure
     */
    public String getDocStruct() {
        return this.docStruct;
    }

    /**
     * Set document structure.
     *
     * @param docStruct
     *            String
     */
    public void setDocStruct(String docStruct) {
        this.docStruct = docStruct;
        if (Objects.isNull(this.docStruct)) {
            this.docStruct = "topstruct";
        }
    }

    /**
     * Get metadata.
     * 
     * @return metadata name
     */
    public String getMetadata() {
        return this.metadata;
    }

    /**
     * Set metadata.
     * 
     * @param metadata
     *            as String name
     */
    public void setMetadata(String metadata) {
        this.metadata = metadata;
    }

    /**
     * Get is document type.
     * 
     * @return types for document
     */
    public String getIsDocType() {
        return this.isDocType;
    }

    /**
     * Set is document type.
     *
     * @param isDocType
     *            String
     */
    public void setIsDocType(String isDocType) {
        this.isDocType = isDocType;
        if (Objects.isNull(this.isDocType)) {
            this.isDocType = "";
        }
    }

    /**
     * Get is not document type.
     * 
     * @return type of documents which this field is not
     */
    public String getIsNotDoctype() {
        return this.isNotDoctype;
    }

    /**
     * Set is not document type.
     *
     * @param isNotDoctype
     *            String with list of not document types
     */
    public void setIsNotDoctype(String isNotDoctype) {
        this.isNotDoctype = isNotDoctype;
        if (Objects.isNull(this.isNotDoctype)) {
            this.isNotDoctype = "";
        }
    }

    /**
     * Get init start.
     * 
     * @return init start
     */
    public String getInitStart() {
        return this.initStart;
    }

    /**
     * Set init start.
     *
     * @param newValue
     *            String
     */
    public void setInitStart(String newValue) {
        this.initStart = newValue;
        if (Objects.isNull(this.initStart)) {
            this.initStart = "";
        }
        this.value = this.initStart + this.value;
    }

    /**
     * Get init end.
     *
     * @return String
     */
    public String getInitEnd() {
        return this.initEnd;
    }

    /**
     * Set init end.
     *
     * @param newValue
     *            String
     */
    public void setInitEnd(String newValue) {
        this.initEnd = newValue;
        if (Objects.isNull(this.initEnd)) {
            this.initEnd = "";
        }
        this.value = this.value + this.initEnd;
    }

    /**
     * Set auto generated.
     *
     * @param autogenerated
     *            the autogenerated to set
     */
    public void setAutogenerated(boolean autogenerated) {
        this.autogenerated = autogenerated;
    }

    /**
     * Get auto generated.
     *
     * @return the autogenerated
     */
    public boolean isAutogenerated() {
        return this.autogenerated;
    }

    /**
     * Get show depending on document type.
     *
     * @return true or false
     */
    public boolean showDependingOnDoctype() {
        // if nothing was specified, then show
        if (this.isDocType.equals("") && this.isNotDoctype.equals("")) {
            return true;
        }

        // if obligatory was specified
        if (!this.isDocType.equals("") && !StringUtils.containsIgnoreCase(this.isDocType, this.docType)) {
            return false;
        }

        // if only "may not" was specified
        return !(!this.isNotDoctype.equals("") && StringUtils.containsIgnoreCase(this.isNotDoctype, this.docType));
    }
}