/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.sa.api.mapper; import java.util.Collection; import java.util.List; import com.emc.sa.descriptor.ServiceDescriptor; import com.emc.sa.descriptor.ServiceField; import com.emc.sa.descriptor.ServiceFieldGroup; import com.emc.sa.descriptor.ServiceFieldModal; import com.emc.sa.descriptor.ServiceFieldTable; import com.emc.sa.descriptor.ServiceItem; import com.emc.vipr.model.catalog.Option; import com.emc.vipr.model.catalog.ServiceDescriptorRestRep; import com.emc.vipr.model.catalog.ServiceFieldGroupRestRep; import com.emc.vipr.model.catalog.ServiceFieldModalRestRep; import com.emc.vipr.model.catalog.ServiceFieldRestRep; import com.emc.vipr.model.catalog.ServiceFieldTableRestRep; import com.emc.vipr.model.catalog.ServiceItemRestRep; import com.google.common.collect.Lists; public class ServiceDescriptorMapper { public static ServiceDescriptorRestRep map(ServiceDescriptor from) { if (from == null) { return null; } ServiceDescriptorRestRep to = new ServiceDescriptorRestRep(); to.setCategory(from.getCategory()); to.setDescription(from.getDescription()); to.setDestructive(from.isDestructive()); to.setUseModal(from.isUseModal()); to.setModalTitle(from.getModalTitle()); to.setServiceId(from.getServiceId()); to.setTitle(from.getTitle()); to.setRoles(from.getRoles()); to.getItems().addAll(map(from.getItems().values())); return to; } public static ServiceFieldRestRep map(ServiceField from) { if (from == null) { return null; } ServiceFieldRestRep to = new ServiceFieldRestRep(); mapServiceItemCommon(to, from); to.setFailureMessage(from.getValidation().getError()); to.setInitialValue(from.getInitialValue()); to.setLockable(from.isLockable()); to.setMax(from.getValidation().getMax()); to.setMin(from.getValidation().getMin()); to.setRegEx(from.getValidation().getRegEx()); to.setRequired(from.isRequired()); to.setOmitNone(from.isOmitNone()); to.setModalField(from.isModalField()); to.setSelect(from.getSelect()); for (String key : from.getOptions().keySet()) { to.getOptions().add(new Option(key, from.getOptions().get(key))); } return to; } public static ServiceFieldGroupRestRep map(ServiceFieldGroup from) { if (from == null) { return null; } ServiceFieldGroupRestRep to = new ServiceFieldGroupRestRep(); mapServiceItemCommon(to, from); to.setCollapsed(from.isCollapsed()); to.setCollapsible(from.isCollapsible()); to.getItems().addAll(map(from.getItems().values())); return to; } public static ServiceFieldTableRestRep map(ServiceFieldTable from) { if (from == null) { return null; } ServiceFieldTableRestRep to = new ServiceFieldTableRestRep(); mapServiceItemCommon(to, from); to.getItems().addAll((List<ServiceFieldRestRep>) map(from.getItems().values())); return to; } public static ServiceFieldModalRestRep map(ServiceFieldModal from) { if (from == null) { return null; } ServiceFieldModalRestRep to = new ServiceFieldModalRestRep(); mapServiceItemCommon(to, from); to.getItems().addAll(map(from.getItems().values())); return to; } public static List<? extends ServiceItemRestRep> map(Collection<? extends ServiceItem> items) { List<ServiceItemRestRep> itemRestReps = Lists.newArrayList(); for (ServiceItem item : items) { if (item instanceof ServiceField) { itemRestReps.add(map((ServiceField) item)); } else if (item instanceof ServiceFieldGroup) { itemRestReps.add(map((ServiceFieldGroup) item)); } else if (item instanceof ServiceFieldTable) { itemRestReps.add(map((ServiceFieldTable) item)); } else if (item instanceof ServiceFieldModal) { itemRestReps.add(map((ServiceFieldModal) item)); } } return itemRestReps; } private static <T extends ServiceItemRestRep> T mapServiceItemCommon(T restRep, ServiceItem serviceItem) { restRep.setDescription(serviceItem.getDescription()); restRep.setLabel(serviceItem.getLabel()); restRep.setName(serviceItem.getName()); restRep.setType(serviceItem.getType()); return restRep; } }