package com.sap.core.odata.processor.core.jpa.mock.data; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.TimeZone; import java.util.UUID; import org.easymock.EasyMock; import com.sap.core.odata.api.ep.entry.ODataEntry; import com.sap.core.odata.api.ep.feed.ODataFeed; import com.sap.core.odata.processor.core.jpa.mock.data.JPATypeMock.JPARelatedTypeMock; import com.sap.core.odata.processor.core.jpa.mock.data.JPATypeMock.JPATypeEmbeddableMock; import com.sap.core.odata.processor.core.jpa.mock.data.JPATypeMock.JPATypeEmbeddableMock2; public class ODataEntryMockUtil { public static final int VALUE_MINT = 20; public static Calendar VALUE_DATE_TIME = null; public static final String VALUE_MSTRING = "Mock"; public static final long VALUE_MLONG = 1234567890L; public static final double VALUE_MDOUBLE = 20.12; public static final byte VALUE_MBYTE = 0XA; public static final byte[] VALUE_MBYTEARRAY = { 0XA, 0XB }; public static final float VALUE_MFLOAT = 2.00F; public static final UUID VALUE_UUID = UUID.fromString("38400000-8cf0-11bd-b23e-10b96e4ef00d"); public static final short VALUE_SHORT = 2; public static ODataEntry mockODataEntry(final String entityName) { ODataEntry oDataEntry = EasyMock.createMock(ODataEntry.class); EasyMock.expect(oDataEntry.getProperties()).andReturn(mockODataEntryProperties(entityName)).anyTimes(); EasyMock.expect(oDataEntry.containsInlineEntry()).andReturn(false); EasyMock.replay(oDataEntry); return oDataEntry; } public static ODataEntry mockODataEntryWithComplexType(final String entityName) { ODataEntry oDataEntry = EasyMock.createMock(ODataEntry.class); EasyMock.expect(oDataEntry.getProperties()).andReturn(mockODataEntryPropertiesWithComplexType(entityName)).anyTimes(); EasyMock.expect(oDataEntry.containsInlineEntry()).andReturn(false); EasyMock.replay(oDataEntry); return oDataEntry; } public static Map<String, Object> mockODataEntryProperties(final String entityName) { Map<String, Object> propertyMap = new HashMap<String, Object>(); if (entityName.equals(JPATypeMock.ENTITY_NAME)) { propertyMap.put(JPATypeMock.PROPERTY_NAME_MINT, VALUE_MINT); VALUE_DATE_TIME = Calendar.getInstance(TimeZone.getDefault()); VALUE_DATE_TIME.set(2013, 1, 1, 1, 1, 1); propertyMap.put(JPATypeMock.PROPERTY_NAME_MDATETIME, VALUE_DATE_TIME); propertyMap.put(JPATypeMock.PROPERTY_NAME_MSTRING, VALUE_MSTRING); } else if (entityName.equals(JPARelatedTypeMock.ENTITY_NAME)) { propertyMap.put(JPARelatedTypeMock.PROPERTY_NAME_MLONG, VALUE_MLONG); propertyMap.put(JPARelatedTypeMock.PROPERTY_NAME_MDOUBLE, VALUE_MDOUBLE); propertyMap.put(JPARelatedTypeMock.PROPERTY_NAME_MBYTE, VALUE_MBYTE); propertyMap.put(JPARelatedTypeMock.PROPERTY_NAME_MBYTEARRAY, VALUE_MBYTEARRAY); } else if (entityName.equals(JPATypeEmbeddableMock.ENTITY_NAME)) { propertyMap.put(JPATypeEmbeddableMock.PROPERTY_NAME_MSHORT, VALUE_SHORT); propertyMap.put(JPATypeEmbeddableMock.PROPERTY_NAME_MEMBEDDABLE, mockODataEntryProperties(JPATypeEmbeddableMock2.ENTITY_NAME)); } else if (entityName.equals(JPATypeEmbeddableMock2.ENTITY_NAME)) { propertyMap.put(JPATypeEmbeddableMock2.PROPERTY_NAME_MFLOAT, VALUE_MFLOAT); propertyMap.put(JPATypeEmbeddableMock2.PROPERTY_NAME_MUUID, VALUE_UUID); } return propertyMap; } public static Map<String, Object> mockODataEntryPropertiesWithComplexType(final String entityName) { Map<String, Object> propertyMap = mockODataEntryProperties(entityName); propertyMap.put(JPATypeMock.PROPERTY_NAME_MCOMPLEXTYPE, mockODataEntryProperties(JPATypeEmbeddableMock.ENTITY_NAME)); return propertyMap; } public static Map<String, Object> mockODataEntryPropertiesWithInline(final String entityName) { Map<String, Object> propertyMap = mockODataEntryProperties(entityName); List<ODataEntry> relatedEntries = new ArrayList<ODataEntry>(); relatedEntries.add(mockODataEntry(JPARelatedTypeMock.ENTITY_NAME)); ODataFeed feed = EasyMock.createMock(ODataFeed.class); EasyMock.expect(feed.getEntries()).andReturn(relatedEntries); EasyMock.replay(feed); propertyMap.put(JPATypeMock.NAVIGATION_PROPERTY_X, feed); return propertyMap; } public static ODataEntry mockODataEntryWithInline(final String entityName) { ODataEntry oDataEntry = EasyMock.createMock(ODataEntry.class); EasyMock.expect(oDataEntry.getProperties()).andReturn(mockODataEntryPropertiesWithInline(entityName)).anyTimes(); if (entityName.equals(JPATypeMock.ENTITY_NAME)) { EasyMock.expect(oDataEntry.containsInlineEntry()).andReturn(true); } else { EasyMock.expect(oDataEntry.containsInlineEntry()).andReturn(false); } EasyMock.replay(oDataEntry); return oDataEntry; } }