edu.northwestern.bioinformatics.studycalendar.xml.writers.PropertyChangeXmlSerializer.java Source code

Java tutorial

Introduction

Here is the source code for edu.northwestern.bioinformatics.studycalendar.xml.writers.PropertyChangeXmlSerializer.java

Source

/*L
 * Copyright Northwestern University.
 *
 * Distributed under the OSI-approved BSD 3-Clause License.
 * See http://ncip.github.io/psc/LICENSE.txt for details.
 */

package edu.northwestern.bioinformatics.studycalendar.xml.writers;

import edu.northwestern.bioinformatics.studycalendar.domain.delta.Change;
import edu.northwestern.bioinformatics.studycalendar.domain.delta.PropertyChange;
import org.apache.commons.lang.StringUtils;
import org.dom4j.Element;

public class PropertyChangeXmlSerializer extends AbstractChangeXmlSerializer {
    public static final String PROPERTY_CHANGE = "property-change";
    private static final String OLD_VALUE = "old-value";
    private static final String NEW_VALUE = "new-value";
    private static final String PROPERTY_NAME = "property-name";

    protected Change changeInstance() {
        return new PropertyChange();
    }

    protected String elementName() {
        return PROPERTY_CHANGE;
    }

    protected void addAdditionalAttributes(final Change change, Element element) {
        String oldValue = ((PropertyChange) change).getOldValue();
        String newValue = ((PropertyChange) change).getNewValue();
        if (oldValue == null) {
            oldValue = "";
        }
        if (newValue == null) {
            newValue = "";
        }
        element.addAttribute(PROPERTY_NAME, ((PropertyChange) change).getPropertyName());
        element.addAttribute(OLD_VALUE, oldValue);
        element.addAttribute(NEW_VALUE, newValue);
    }

    protected void setAdditionalProperties(final Element element, Change change) {
        ((PropertyChange) change).setPropertyName(element.attributeValue(PROPERTY_NAME));
        String oldValue = element.attributeValue(OLD_VALUE);
        if (oldValue == "") {
            oldValue = null;
        }
        ((PropertyChange) change).setOldValue(oldValue);
        String newValue = element.attributeValue(NEW_VALUE);
        if (newValue == "") {
            newValue = null;
        }
        ((PropertyChange) change).setNewValue(newValue);
    }

    @Override
    public StringBuffer validateElement(Change change, Element eChange) {
        if (change == null && eChange == null) {
            return new StringBuffer("");
        } else if ((change == null && eChange != null) || (change != null && eChange == null)) {
            return new StringBuffer("either change or element is null");
        }

        StringBuffer errorMessageStringBuffer = super.validateElement(change, eChange);

        String expectedPropertyName = ((PropertyChange) change).getPropertyName();
        String oldValue = ((PropertyChange) change).getOldValue();
        String newValue = ((PropertyChange) change).getNewValue();
        if (oldValue == null) {
            oldValue = "";
        }
        if (newValue == null) {
            newValue = "";
        }
        if (!StringUtils.equals(expectedPropertyName, eChange.attributeValue(PROPERTY_NAME))) {
            errorMessageStringBuffer.append(
                    String.format("property name is different. expected:%s , found (in imported document) :%s \n",
                            expectedPropertyName, eChange.attributeValue(PROPERTY_NAME)));
        } else if (!StringUtils.equals(oldValue, eChange.attributeValue(OLD_VALUE))) {
            errorMessageStringBuffer.append(
                    String.format("old value  is different. expected:%s , found (in imported document) :%s \n",
                            oldValue, eChange.attributeValue(OLD_VALUE)));
        } else if (!StringUtils.equals(newValue, eChange.attributeValue(NEW_VALUE))) {
            errorMessageStringBuffer.append(
                    String.format("new value is different. expected:%s , found (in imported document) :%s \n",
                            newValue, eChange.attributeValue(NEW_VALUE)));
        }

        return errorMessageStringBuffer;
    }

}