class GeneralTopologyObjectMapper {

    public GenericResourceApiVfmoduleinformationVfModuleInformation buildVfModuleInformation(VfModule vfModule,
            GenericVnf vnf, ServiceInstance serviceInstance, RequestContext requestContext,
            boolean includeModelInformation) throws MapperException {
        GenericResourceApiVfmoduleinformationVfModuleInformation vfModuleInformation =
                new GenericResourceApiVfmoduleinformationVfModuleInformation();
        if (includeModelInformation) {
            if (vfModule.getModelInfoVfModule() == null) {
                throw new MapperException("VF Module model info is null for " + vfModule.getVfModuleId());
            } else {
                GenericResourceApiOnapmodelinformationOnapModelInformation onapModelInformation =
                        new GenericResourceApiOnapmodelinformationOnapModelInformation();
                onapModelInformation.setModelInvariantUuid(vfModule.getModelInfoVfModule().getModelInvariantUUID());
                onapModelInformation.setModelName(vfModule.getModelInfoVfModule().getModelName());
                onapModelInformation.setModelVersion(vfModule.getModelInfoVfModule().getModelVersion());
                onapModelInformation.setModelUuid(vfModule.getModelInfoVfModule().getModelUUID());
                onapModelInformation
                        .setModelCustomizationUuid(vfModule.getModelInfoVfModule().getModelCustomizationUUID());
                vfModuleInformation.setOnapModelInformation(onapModelInformation);
            }
        }
        if (vfModule.getModelInfoVfModule() != null) {
            vfModuleInformation.setVfModuleType(vfModule.getModelInfoVfModule().getModelName());
        }
        vfModuleInformation.setVfModuleId(vfModule.getVfModuleId());
        if (requestContext != null && requestContext.getRequestParameters() != null) {
            vfModuleInformation.setFromPreload(requestContext.getRequestParameters().getUsePreload());
        } else {
            vfModuleInformation.setFromPreload(true);
        }

        return vfModuleInformation;
    }

}