Package com.carmanconsulting.cassidy.pojo.assembly.step

Source Code of com.carmanconsulting.cassidy.pojo.assembly.step.FieldModifierStep

package com.carmanconsulting.cassidy.pojo.assembly.step;

import com.carmanconsulting.cassidy.context.CassidyContext;
import com.carmanconsulting.cassidy.pojo.assembly.AssemblyStack;
import com.carmanconsulting.cassidy.pojo.assembly.AssemblyStep;
import com.carmanconsulting.cassidy.util.PersistableField;
import me.prettyprint.cassandra.serializers.StringSerializer;
import org.apache.commons.lang3.Validate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public abstract class FieldModifierStep implements AssemblyStep {
//----------------------------------------------------------------------------------------------------------------------
// Fields
//----------------------------------------------------------------------------------------------------------------------

    private static final Logger LOGGER = LoggerFactory.getLogger(FieldModifierStep.class);
    private String fieldName;

//----------------------------------------------------------------------------------------------------------------------
// Constructors
//----------------------------------------------------------------------------------------------------------------------

    protected FieldModifierStep() {
    }

    protected FieldModifierStep(String fieldName) {
        this.fieldName = Validate.notNull(fieldName, "Field name cannot be null.");
    }

//----------------------------------------------------------------------------------------------------------------------
// Abstract Methods
//----------------------------------------------------------------------------------------------------------------------

    protected abstract Object getValue(AssemblyStack assemblyStack);

//----------------------------------------------------------------------------------------------------------------------
// AssemblyStep Implementation
//----------------------------------------------------------------------------------------------------------------------

    @Override
    @SuppressWarnings("unchecked")
    public void execute(AssemblyStack assemblyStack) {
        Object value = getValue(assemblyStack);
        final Object target = assemblyStack.peek();
        PersistableField field = PersistableField.getPersistableField(target, fieldName);
        if (field != null) {
            field.setValue(target, value);
        } else {
            LOGGER.warn("Persistable field {} not found on object of type {}.", fieldName, target.getClass().getCanonicalName());
        }
    }

    @Override
    public Object getColumnValue() {
        return fieldName;
    }

    @Override
    public void initializeFromColumn(byte[] columnValue, CassidyContext context) {
        this.fieldName = StringSerializer.get().fromBytes(columnValue);
    }
}
TOP

Related Classes of com.carmanconsulting.cassidy.pojo.assembly.step.FieldModifierStep

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.