org.psikeds.resolutionengine.transformer.impl.Vo2PojoTransformer.java Source code

Java tutorial

Introduction

Here is the source code for org.psikeds.resolutionengine.transformer.impl.Vo2PojoTransformer.java

Source

/*******************************************************************************
 * psiKeds :- ps induced knowledge entity delivery system
 *
 * Copyright (c) 2013, 2014 Karsten Reincke, Marco Juliano, Deutsche Telekom AG
 *
 * This file is free software: you can redistribute
 * it and/or modify it under the terms of the
 * [x] GNU Affero General Public License
 * [ ] GNU General Public License
 * [ ] GNU Lesser General Public License
 * [ ] Creatice Commons ShareAlike License
 *
 * For details see file LICENSING in the top project directory
 *******************************************************************************/
package org.psikeds.resolutionengine.transformer.impl;

import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.apache.commons.lang.StringUtils;

import org.psikeds.resolutionengine.interfaces.pojos.Metadata;
import org.psikeds.resolutionengine.transformer.Transformer;

/**
 * Helper for transforming Value-Objects from the Datalayer
 * into POJOs of the RE-Interface.
 * 
 * Note: For Safety-Reasons we will never transform POJOs
 * (from the Client!) back into Value-Objects (Server-Data!)
 * 
 * @author marco@juliano.de
 */
public class Vo2PojoTransformer implements Transformer {

    private static final Logger LOGGER = LoggerFactory.getLogger(Vo2PojoTransformer.class);

    // ----------------------------------------------------------------

    @Override
    public Metadata valueObject2Pojo(final org.psikeds.resolutionengine.datalayer.vo.MetaData vo) {
        Metadata pojo = null;
        if (vo != null) {
            pojo = new Metadata();
            final Calendar created = (vo.getLastmodified() == null ? vo.getCreated() : vo.getLastmodified());
            if (created != null) {
                pojo.addInfo(Metadata.KB_CREATED, DateFormat.getDateTimeInstance().format(created.getTime()));
            }
            if (vo.getLoaded() != null) {
                pojo.addInfo(Metadata.KB_LOADED, DateFormat.getDateTimeInstance().format(vo.getLoaded().getTime()));
            }
            if (!StringUtils.isEmpty(vo.getLanguage())) {
                pojo.addInfo(Metadata.KB_LANGUAGE, vo.getLanguage());
            }
            if (!StringUtils.isEmpty(vo.getRelease())) {
                pojo.addInfo(Metadata.KB_VERSION, vo.getRelease());
            }
            if (!StringUtils.isEmpty(vo.getName())) {
                pojo.addInfo(Metadata.KB_NAME, vo.getName());
            }
            if (!StringUtils.isEmpty(vo.getId())) {
                pojo.addInfo(Metadata.KB_NAME, vo.getId());
            }
            pojo.addInfo(vo.getAdditionalInfo());
            LOGGER.trace("valueObject2Pojo: vo = {}\n--> pojo = {}", vo, pojo);
        }
        return pojo;
    }

    // ----------------------------------------------------------------

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.Purpose valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Purpose vo) {
        return (vo == null ? null
                : new org.psikeds.resolutionengine.interfaces.pojos.Purpose(vo.getLabel(), vo.getDescription(),
                        vo.getPurposeID(), vo.isRoot()));
    }

    @Override
    public List<org.psikeds.resolutionengine.interfaces.pojos.Purpose> valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Purposes vo) {
        List<org.psikeds.resolutionengine.interfaces.pojos.Purpose> pojo = null;
        if (vo != null) {
            pojo = new ArrayList<org.psikeds.resolutionengine.interfaces.pojos.Purpose>();
            final List<org.psikeds.resolutionengine.datalayer.vo.Purpose> lst = vo.getPurpose();
            for (final org.psikeds.resolutionengine.datalayer.vo.Purpose p : lst) {
                pojo.add(valueObject2Pojo(p));
            }
        }
        return pojo;
    }

    // ----------------------------------------------------------------

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.Variant valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Variant vo) {
        return valueObject2Pojo(vo, (org.psikeds.resolutionengine.interfaces.pojos.Features) null,
                (org.psikeds.resolutionengine.interfaces.pojos.Concepts) null);
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.Variant valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Variant vo,
            final org.psikeds.resolutionengine.datalayer.vo.Features features,
            final org.psikeds.resolutionengine.datalayer.vo.Concepts concepts) {
        return valueObject2Pojo(vo, valueObject2Pojo(features), valueObject2Pojo(concepts));
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.Variant valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Variant vo,
            final org.psikeds.resolutionengine.interfaces.pojos.Features features,
            final org.psikeds.resolutionengine.interfaces.pojos.Concepts concepts) {
        org.psikeds.resolutionengine.interfaces.pojos.Variant pojo = null;
        if (vo != null) {
            pojo = new org.psikeds.resolutionengine.interfaces.pojos.Variant(vo.getLabel(), vo.getDescription(),
                    vo.getVariantID(), features, concepts);
            LOGGER.trace("valueObject2Pojo: vo = {}\n--> pojo = {}", vo, pojo);
        }
        return pojo;
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.Variants valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Variants vo) {
        org.psikeds.resolutionengine.interfaces.pojos.Variants pojo = null;
        if (vo != null) {
            pojo = new org.psikeds.resolutionengine.interfaces.pojos.Variants();
            final List<org.psikeds.resolutionengine.datalayer.vo.Variant> lst = vo.getVariant();
            for (final org.psikeds.resolutionengine.datalayer.vo.Variant v : lst) {
                pojo.add(valueObject2Pojo(v));
            }
        }
        return pojo;
    }

    // ----------------------------------------------------------------

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.Concept valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Concept vo) {
        org.psikeds.resolutionengine.interfaces.pojos.Concept pojo = null;
        if (vo != null) {
            pojo = new org.psikeds.resolutionengine.interfaces.pojos.Concept(vo.getLabel(), vo.getDescription(),
                    vo.getConceptID(), null, valueObject2Pojo(vo.getValues()));
            pojo.addFeatureIds(vo.getFeatureIds()); // need a copy, not a reference!
            LOGGER.trace("valueObject2Pojo: vo = {}\n--> pojo = {}", vo, pojo);
        }
        return pojo;
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.Concepts valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Concepts vo) {
        org.psikeds.resolutionengine.interfaces.pojos.Concepts pojo = null;
        if (vo != null) {
            pojo = new org.psikeds.resolutionengine.interfaces.pojos.Concepts();
            final List<org.psikeds.resolutionengine.datalayer.vo.Concept> lst = vo.getConcept();
            for (final org.psikeds.resolutionengine.datalayer.vo.Concept c : lst) {
                pojo.add(valueObject2Pojo(c));
            }
        }
        return pojo;
    }

    // ----------------------------------------------------------------

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.FeatureValue valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.FeatureValue vo) {
        return (vo == null ? null
                : new org.psikeds.resolutionengine.interfaces.pojos.FeatureValue(vo.getFeatureID(),
                        vo.getFeatureValueID(), vo.getValue()));
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.FeatureValues valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.FeatureValues vo) {
        return (vo == null ? null : valueObject2Pojo(vo.getValue()));
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.FeatureValues valueObject2Pojo(
            final List<org.psikeds.resolutionengine.datalayer.vo.FeatureValue> vo) {
        org.psikeds.resolutionengine.interfaces.pojos.FeatureValues pojo = null;
        if (vo != null) {
            pojo = new org.psikeds.resolutionengine.interfaces.pojos.FeatureValues();
            for (final org.psikeds.resolutionengine.datalayer.vo.FeatureValue fv : vo) {
                pojo.add(valueObject2Pojo(fv));
            }
            LOGGER.trace("valueObject2Pojo: vo = {}\n--> pojo = {}", vo, pojo);
        }
        return pojo;
    }

    // ----------------------------------------------------------------

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.Feature valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Feature vo) {
        // IF and DL currently use the same Constants for Types, so we can just use it without conversion
        return (vo == null ? null
                : new org.psikeds.resolutionengine.interfaces.pojos.Feature(vo.getLabel(), vo.getDescription(),
                        vo.getFeatureID(), vo.getType(), vo.getUnit()));
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.Features valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Features vo) {
        org.psikeds.resolutionengine.interfaces.pojos.Features pojo = null;
        if (vo != null) {
            pojo = new org.psikeds.resolutionengine.interfaces.pojos.Features();
            final List<org.psikeds.resolutionengine.datalayer.vo.Feature> lst = vo.getFeature();
            for (final org.psikeds.resolutionengine.datalayer.vo.Feature f : lst) {
                pojo.add(valueObject2Pojo(f));
            }
            LOGGER.trace("valueObject2Pojo: vo = {}\n--> pojo = {}", vo, pojo);
        }
        return pojo;
    }

    // ----------------------------------------------------------------

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.FeatureChoice valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Variant parent,
            final org.psikeds.resolutionengine.datalayer.vo.FeatureValue value) {
        return ((parent == null) ? null : valueObject2Pojo(parent.getVariantID(), value));
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.FeatureChoice valueObject2Pojo(
            final String parentVariantID, final org.psikeds.resolutionengine.datalayer.vo.FeatureValue value) {
        org.psikeds.resolutionengine.interfaces.pojos.FeatureChoice pojo = null;
        if (!StringUtils.isEmpty(parentVariantID) && (value != null)) {
            pojo = new org.psikeds.resolutionengine.interfaces.pojos.FeatureChoice(parentVariantID,
                    valueObject2Pojo(value));
            LOGGER.trace("valueObject2Pojo: parentVariantID = {}\nvalue = {}\n--> pojo = {}", parentVariantID,
                    value, pojo);
        }
        return pojo;
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.FeatureChoice valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Variant parent,
            final org.psikeds.resolutionengine.datalayer.vo.FeatureValues values) {
        return ((values == null) ? null : valueObject2Pojo(parent, values.getValue()));
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.FeatureChoice valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Variant parent,
            final List<org.psikeds.resolutionengine.datalayer.vo.FeatureValue> values) {
        return ((parent == null) ? null : valueObject2Pojo(parent.getVariantID(), values));
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.FeatureChoice valueObject2Pojo(
            final String parentVariantID, final org.psikeds.resolutionengine.datalayer.vo.FeatureValues values) {
        return ((values == null) ? null : valueObject2Pojo(parentVariantID, values.getValue()));
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.FeatureChoice valueObject2Pojo(
            final String parentVariantID,
            final List<org.psikeds.resolutionengine.datalayer.vo.FeatureValue> values) {
        org.psikeds.resolutionengine.interfaces.pojos.FeatureChoice pojo = null;
        if (!StringUtils.isEmpty(parentVariantID) && (values != null)) {
            pojo = new org.psikeds.resolutionengine.interfaces.pojos.FeatureChoice(parentVariantID);
            pojo.addPossibleValues(valueObject2Pojo(values));
            LOGGER.trace("valueObject2Pojo: parentVariantID = {}\nvalues = {}\n--> pojo = {}", parentVariantID,
                    values, pojo);
        }
        return pojo;
    }

    // ----------------------------------------------------------------

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.VariantChoice valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Purpose p,
            final org.psikeds.resolutionengine.interfaces.pojos.Variants variants, final long qty) {
        return valueObject2Pojo(null, p, variants, qty);
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.VariantChoice valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Purpose p,
            final org.psikeds.resolutionengine.datalayer.vo.Variants variants, final long qty) {
        return valueObject2Pojo(p, valueObject2Pojo(variants), qty);
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.VariantChoice valueObject2Pojo(
            final String parentVariantID, final org.psikeds.resolutionengine.datalayer.vo.Purpose p,
            final org.psikeds.resolutionengine.interfaces.pojos.Variants variants, final long qty) {
        org.psikeds.resolutionengine.interfaces.pojos.VariantChoice pojo = null;
        if ((p != null) && (variants != null)) {
            pojo = new org.psikeds.resolutionengine.interfaces.pojos.VariantChoice(parentVariantID,
                    valueObject2Pojo(p), variants, qty);
            LOGGER.trace("valueObject2Pojo: parentVariantID = {}\nPurpose = {}\nVariants = {}\n--> pojo = {}",
                    parentVariantID, p, variants, pojo);
        }
        return pojo;
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.VariantChoice valueObject2Pojo(
            final String parentVariantID, final org.psikeds.resolutionengine.datalayer.vo.Purpose p,
            final org.psikeds.resolutionengine.datalayer.vo.Variants variants, final long qty) {
        return valueObject2Pojo(parentVariantID, p, valueObject2Pojo(variants), qty);
    }

    // ----------------------------------------------------------------

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.ConceptChoice valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Variant parent,
            final org.psikeds.resolutionengine.datalayer.vo.Concept con) {
        return (parent == null ? null : valueObject2Pojo(parent.getVariantID(), con));
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.ConceptChoice valueObject2Pojo(
            final org.psikeds.resolutionengine.datalayer.vo.Variant parent,
            final org.psikeds.resolutionengine.datalayer.vo.Concepts cons) {
        return (parent == null ? null : valueObject2Pojo(parent.getVariantID(), cons));
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.ConceptChoice valueObject2Pojo(
            final String parentVariantID, final org.psikeds.resolutionengine.datalayer.vo.Concept con) {
        return ((StringUtils.isEmpty(parentVariantID) || (con == null)) ? null
                : new org.psikeds.resolutionengine.interfaces.pojos.ConceptChoice(parentVariantID,
                        valueObject2Pojo(con)));
    }

    @Override
    public org.psikeds.resolutionengine.interfaces.pojos.ConceptChoice valueObject2Pojo(
            final String parentVariantID, final org.psikeds.resolutionengine.datalayer.vo.Concepts cons) {
        return ((StringUtils.isEmpty(parentVariantID) || (cons == null)) ? null
                : new org.psikeds.resolutionengine.interfaces.pojos.ConceptChoice(parentVariantID,
                        valueObject2Pojo(cons)));
    }
}