All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cool.pandora.modeller.ProfileField Maven / Gradle / Ivy

The newest version!
/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package cool.pandora.modeller;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONWriter;

import java.io.Serializable;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;

/**
 * ProfileField
 *
 * @author gov.loc
 */
public class ProfileField implements Serializable {
    private static final long serialVersionUID = 1L;

    private String fieldName = "";
    private String fieldValue = "";
    private String fieldType = "";
    private boolean isReadOnly = false;
    private List elements = new ArrayList<>();
    private boolean isRequired;
    private boolean isValueRequired;

    private final static String FIELD_REQUIRED_VALUE = "requiredValue";
    private final static String FIELD_REQUIRED = "fieldRequired";
    private final static String FIELD_TYPE = "fieldType";
    private final static String FIELD_READ_ONLY = "isReadOnly";
    private final static String FIELD_DEFAULT_VALUE = "defaultValue";
    private final static String FIELD_VALUE_LIST = "valueList";

    void setFieldName(final String s) {
        this.fieldName = s;
    }

    /**
     * @return fieldName
     */
    public String getFieldName() {
        return this.fieldName;
    }

    /**
     * @param b boolean
     */
    private void setIsRequired(final boolean b) {
        this.isRequired = b;
    }

    /**
     * @return isRequired
     */
    public boolean getIsRequired() {
        return this.isRequired;
    }

    /**
     * @param s String
     */
    public void setFieldValue(final String s) {
        this.fieldValue = s;
    }

    /**
     * @return fieldValue
     */
    public String getFieldValue() {
        return this.fieldValue;
    }

    /**
     * @param s List
     */
    private void setElements(final List s) {
        this.elements = s;
    }

    /**
     * @return elements
     */
    public List getElements() {
        return this.elements;
    }

    /**
     * @param s String
     */
    private void setFieldType(final String s) {
        this.fieldType = s;
    }

    /**
     * @return fieldType
     */
    public String getFieldType() {
        return this.fieldType;
    }

    /**
     * @param b boolean
     */
    public void setIsValueRequired(final boolean b) {
        this.isValueRequired = b;
    }

    /**
     * @return isValueRequired
     */
    public boolean getIsValueRequired() {
        return this.isValueRequired;
    }

    @Override
    public String toString() {
        return (this.fieldName + '=' + this.fieldValue) + '\n';
    }

    /**
     * @param isReadOnly boolean
     */
    private void setReadOnly(final boolean isReadOnly) {
        this.isReadOnly = isReadOnly;
    }

    /**
     * @return isReadOnly
     */
    public boolean isReadOnly() {
        return isReadOnly;
    }

    /**
     * @param profileFieldJson JSONObject
     * @param name             String
     * @return profileField
     * @throws JSONException exception
     */
    static ProfileField createProfileField(final JSONObject profileFieldJson, final String name) throws JSONException {
        final ProfileField profileField = new ProfileField();
        profileField.setFieldName(name);
        if (profileFieldJson != null) {
            if (profileFieldJson.has(FIELD_TYPE)) {
                final String fieldType = (String) profileFieldJson.get(FIELD_TYPE);
                profileField.setFieldType(fieldType);
            }

            if (profileFieldJson.has(FIELD_REQUIRED_VALUE)) {
                final String fieldValue = (String) profileFieldJson.get(FIELD_REQUIRED_VALUE);
                profileField.setFieldValue(fieldValue);
            }

            if (profileFieldJson.has(FIELD_READ_ONLY)) {
                final boolean isreadOnly = (Boolean) profileFieldJson.get(FIELD_READ_ONLY);
                profileField.setReadOnly(isreadOnly);
            }

            if (profileFieldJson.has(FIELD_VALUE_LIST)) {
                final JSONArray jsonArray = (JSONArray) profileFieldJson.get(FIELD_VALUE_LIST);
                final List valueList = new ArrayList<>();
                for (int i = 0; i < jsonArray.length(); i++) {
                    final String value = (String) jsonArray.get(i);
                    valueList.add(value);
                }
                profileField.setElements(valueList);
                profileField.setFieldValue(valueList.get(0));
            }
            // Default value selected from value list
            if (profileFieldJson.has(FIELD_DEFAULT_VALUE)) {
                final String defaultValue = (String) profileFieldJson.get(FIELD_DEFAULT_VALUE);
                profileField.setFieldValue(defaultValue);
            }

            if (profileFieldJson.has(FIELD_REQUIRED)) {
                final boolean isRequired = (Boolean) profileFieldJson.get(FIELD_REQUIRED);
                profileField.setIsRequired(isRequired);
            }
        }
        return profileField;
    }

    /**
     * @param name  String
     * @param value String
     * @return profileField
     */
    public static ProfileField createProfileField(final String name, final String value) {
        final ProfileField profileField = new ProfileField();
        profileField.setFieldName(name);
        profileField.setFieldValue(value);
        return profileField;
    }

    /**
     * @return String
     * @throws JSONException RuntimeException
     */
    String serialize() throws JSONException {
        final StringWriter writer = new StringWriter();
        final JSONWriter profileWriter = new JSONWriter(writer);
        profileWriter.object().key(FIELD_REQUIRED_VALUE).value(this.getFieldValue());
        profileWriter.key(FIELD_REQUIRED).value(getIsRequired());
        profileWriter.key(FIELD_TYPE).value(getFieldType());
        profileWriter.key(FIELD_READ_ONLY).value(isReadOnly());
        if (this.getElements().size() > 0) {
            profileWriter.key(FIELD_VALUE_LIST).value(this.getElements());
        }
        profileWriter.endObject();
        return writer.toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy