37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos/*
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos *
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * Copyright (c) 2014 ForgeRock AS. All Rights Reserved
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos *
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * The contents of this file are subject to the terms
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * of the Common Development and Distribution License
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * (the License). You may not use this file except in
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * compliance with the License.
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos *
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * You can obtain a copy of the License at
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * http://forgerock.org/license/CDDLv1.0.html
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * See the License for the specific language governing
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * permission and limitations under the License.
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos *
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * When distributing Covered Code, include this CDDL
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * Header Notice in each file and include the License file
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * at http://forgerock.org/license/CDDLv1.0.html
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * If applicable, add the following below the CDDL Header,
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * with the fields enclosed by brackets [] replaced by
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * your own identifying information:
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos * "Portions Copyrighted [year] [name of copyright owner]"
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos */
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosimport org.apache.olingo.client.api.v3.EdmEnabledODataClient
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosimport org.apache.olingo.commons.api.edm.EdmPrimitiveType
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosimport org.apache.olingo.commons.api.edm.EdmProperty
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosimport org.forgerock.openicf.misc.scriptedcommon.OperationType
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosimport org.forgerock.openicf.misc.scriptedcommon.ScriptedConfiguration
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosimport org.identityconnectors.common.logging.Log
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosimport org.identityconnectors.framework.common.FrameworkUtil
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosimport org.identityconnectors.framework.common.objects.AttributeInfo.Flags
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosimport org.identityconnectors.framework.common.objects.AttributeInfoBuilder
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosimport org.identityconnectors.framework.common.objects.Name
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosdef operation = operation as OperationType
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosdef configuration = configuration as ScriptedConfiguration
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosdef client = configuration.propertyBag.get("ODataClient") as EdmEnabledODataClient
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosdef log = log as Log
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos//http://msdn.microsoft.com/en-us/library/azure/hh974483.aspx
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordosbuilder.schema({
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos client.cachedEdm.schemas.each { schema ->
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos schema.entityTypes.each { entityType ->
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos objectClass {
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos type entityType.annotationsTargetFQN.name
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos attribute Name.NAME, String.class, EnumSet.of(Flags.NOT_CREATABLE, Flags.NOT_UPDATEABLE)
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos entityType.properties.each { key, value ->
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos def edmProperty = value as EdmProperty
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos def builder = AttributeInfoBuilder.define(key as String)
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos .setMultiValued(edmProperty.isCollection())
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos //.setRequired(!edmProperty.isNullable())
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos if (edmProperty.isPrimitive()) {
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos def type = edmProperty.getType() as EdmPrimitiveType
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos if (FrameworkUtil.isSupportedAttributeType(type.defaultType)) {
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos builder.setType(type.defaultType)
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos }
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos } else {
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos builder.setType(Map.class)
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos }
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos attribute builder.build()
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos }
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos entityType.navigationPropertyNames.each {
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos def edmProperty = entityType.getNavigationProperty(it)
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos def builder = AttributeInfoBuilder.define(it)
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos .setMultiValued(edmProperty.isCollection())
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos //.setRequired(!edmProperty.isNullable())
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos attribute builder.build()
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos }
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos }
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos }
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos }
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos})
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos
37314e141b6bbe540ce20aab2d651f82cc865a24Laszlo Hordos