public ComponentEntityModeToTuplizerMapping(Mapping.Component component)
		{
			PersistentClass owner = component.Owner;

			// create our own copy of the user-supplied tuplizer impl map
			Dictionary<EntityMode, string> userSuppliedTuplizerImpls;
			if (component.TuplizerMap != null)
				userSuppliedTuplizerImpls = new Dictionary<EntityMode, string>(component.TuplizerMap);
			else
				userSuppliedTuplizerImpls = new Dictionary<EntityMode, string>();

			// Build the dynamic-map tuplizer...
			ITuplizer dynamicMapTuplizer;
			string tuplizerImpl;
			if (!userSuppliedTuplizerImpls.TryGetValue(EntityMode.Map,out tuplizerImpl))
			{
				dynamicMapTuplizer = new DynamicMapComponentTuplizer(component);
			}
			else
			{
				dynamicMapTuplizer = BuildComponentTuplizer(tuplizerImpl, component);
				userSuppliedTuplizerImpls.Remove(EntityMode.Map);
			}

			// then the pojo tuplizer, using the dynamic-map tuplizer if no pojo representation is available
			ITuplizer pojoTuplizer;
			string tempObject2;
			userSuppliedTuplizerImpls.TryGetValue(EntityMode.Poco, out tempObject2);
			userSuppliedTuplizerImpls.Remove(EntityMode.Poco);
			tuplizerImpl = tempObject2;
			if (owner.HasPocoRepresentation && component.HasPocoRepresentation)
			{
				if (tuplizerImpl == null)
				{
					pojoTuplizer = new PocoComponentTuplizer(component);
				}
				else
				{
					pojoTuplizer = BuildComponentTuplizer(tuplizerImpl, component);
				}
			}
			else
			{
				pojoTuplizer = dynamicMapTuplizer;
			}

			// put the "standard" tuplizers into the tuplizer map first
			if (pojoTuplizer != null)
			{
				AddTuplizer(EntityMode.Poco, pojoTuplizer);
			}
			if (dynamicMapTuplizer != null)
			{
				AddTuplizer(EntityMode.Map, dynamicMapTuplizer);
			}

			// then handle any user-defined entity modes..
			foreach (KeyValuePair<EntityMode, string> entry in userSuppliedTuplizerImpls)
			{
				IComponentTuplizer tuplizer = BuildComponentTuplizer(entry.Value, component);
				AddTuplizer(entry.Key, tuplizer);
			}
		}
Ejemplo n.º 2
0
        public ComponentEntityModeToTuplizerMapping(Mapping.Component component)
        {
            PersistentClass owner = component.Owner;

            // create our own copy of the user-supplied tuplizer impl map
            Dictionary <EntityMode, string> userSuppliedTuplizerImpls;

            if (component.TuplizerMap != null)
            {
                userSuppliedTuplizerImpls = new Dictionary <EntityMode, string>(component.TuplizerMap);
            }
            else
            {
                userSuppliedTuplizerImpls = new Dictionary <EntityMode, string>();
            }

            // Build the dynamic-map tuplizer...
            ITuplizer dynamicMapTuplizer;
            string    tuplizerImpl;

            if (!userSuppliedTuplizerImpls.TryGetValue(EntityMode.Map, out tuplizerImpl))
            {
                dynamicMapTuplizer = new DynamicMapComponentTuplizer(component);
            }
            else
            {
                dynamicMapTuplizer = BuildComponentTuplizer(tuplizerImpl, component);
                userSuppliedTuplizerImpls.Remove(EntityMode.Map);
            }

            // then the pojo tuplizer, using the dynamic-map tuplizer if no pojo representation is available
            ITuplizer pojoTuplizer;
            string    tempObject2;

            userSuppliedTuplizerImpls.TryGetValue(EntityMode.Poco, out tempObject2);
            userSuppliedTuplizerImpls.Remove(EntityMode.Poco);
            tuplizerImpl = tempObject2;
            if (owner.HasPocoRepresentation && component.HasPocoRepresentation)
            {
                if (tuplizerImpl == null)
                {
                    pojoTuplizer = new PocoComponentTuplizer(component);
                }
                else
                {
                    pojoTuplizer = BuildComponentTuplizer(tuplizerImpl, component);
                }
            }
            else
            {
                pojoTuplizer = dynamicMapTuplizer;
            }

            // put the "standard" tuplizers into the tuplizer map first
            if (pojoTuplizer != null)
            {
                AddTuplizer(EntityMode.Poco, pojoTuplizer);
            }
            if (dynamicMapTuplizer != null)
            {
                AddTuplizer(EntityMode.Map, dynamicMapTuplizer);
            }

            // then handle any user-defined entity modes..
            foreach (KeyValuePair <EntityMode, string> entry in userSuppliedTuplizerImpls)
            {
                IComponentTuplizer tuplizer = BuildComponentTuplizer(entry.Value, component);
                AddTuplizer(entry.Key, tuplizer);
            }
        }