org.mayocat.addons.StringAddonTransformer.java Source code

Java tutorial

Introduction

Here is the source code for org.mayocat.addons.StringAddonTransformer.java

Source

/*
 * Copyright (c) 2012, Mayocat <hello@mayocat.org>
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */
package org.mayocat.addons;

import java.util.List;
import java.util.Map;

import org.mayocat.addons.model.AddonFieldDefinition;
import org.mayocat.addons.web.AddonFieldValueWebObject;
import org.mayocat.entity.EntityData;
import org.xwiki.component.annotation.Component;

import com.google.common.base.Optional;
import com.google.common.base.Strings;

import static org.mayocat.addons.util.AddonUtils.emptyToNull;
import static org.mayocat.addons.util.AddonUtils.getListValues;
import static org.mayocat.addons.util.AddonUtils.isListWithKeyAndDisplayValues;

/**
 * @version $Id: 52f5efa79226dddf0c178a84b2a25dd146f309ef $
 */
@Component("string")
public class StringAddonTransformer implements AddonFieldTransformer {
    public Optional<AddonFieldValueWebObject> toWebView(EntityData<?> entityData, AddonFieldDefinition addonField,
            Object fieldValue) {
        if (isListWithKeyAndDisplayValues(addonField)) {
            List<Map<String, Object>> listValues = getListValues(addonField);
            Object displayValue = null;
            for (Map<String, Object> entry : listValues) {
                if (entry.containsKey("key") && fieldValue != null
                        && entry.get("key").equals(fieldValue.toString())) {
                    displayValue = entry.get("name");
                    break;
                }
            }
            return Optional.of(new AddonFieldValueWebObject(fieldValue,
                    displayValue == null ? emptyToNull(fieldValue) : displayValue));
        } else {
            return Optional.of(new AddonFieldValueWebObject(emptyToNull(fieldValue), emptyToNull(fieldValue)));
        }
    }
}