예제 #1
0
        internal HybridDictionary GetFieldMappers(string businessObjectClassName, ObjectMapperType objectMapperType)
        {
            var fieldMapperKey = string.Format("{0}|{1}", businessObjectClassName, objectMapperType);

            if (!_fieldMapperCollection.Contains(fieldMapperKey))
            {
                var fieldMappers =
                    from businessObjectElement in MapperXml.Elements("BusinessObject")
                    where (string)businessObjectElement.Attribute("BusinessObjectClassName") == businessObjectClassName
                    from objectMapperElement in businessObjectElement.XPathSelectElements(string.Format("ObjectMapper[@Type='{0}']", objectMapperType))
                    from fieldMapperElement in objectMapperElement.Elements("FieldMapper")
                    select new
                {
                    PersistenceFieldName = (string)fieldMapperElement.Attribute("PersistenceFieldName"),
                    ObjectFieldName      = (string)fieldMapperElement.Attribute("ObjectFieldName")
                };
                var mappers = new HybridDictionary();
                foreach (var fieldMapper in fieldMappers)
                {
                    mappers.Add(fieldMapper.ObjectFieldName, fieldMapper.PersistenceFieldName);
                }
                _fieldMapperCollection.Add(fieldMapperKey, mappers);
                return(mappers);
            }
            return((HybridDictionary)_fieldMapperCollection[fieldMapperKey]);
        }
        public IObjectMapper Bootstrap(ObjectMapperType type)
        {
            var modules =
                AssemblyUtility
                .GetInstances <IObjectMapperModule>()
                .ToArray();

            return(Bootstrap(type, modules));
        }
예제 #3
0
        public void Get(IPersistenceObject persistenceObject, ObjectMapperType objectMapperType)
        {
            var persistenceObjectType = persistenceObject.GetType();
            var mapper = MapperFactory.GetInstance().GetObjectMapper(persistenceObjectType.FullName, objectMapperType) as IRecordMapper;

            if (mapper == null)
            {
                throw new ApplicationException(string.Format("Mapper Type {0} is not defined for {1}", objectMapperType, persistenceObjectType.FullName));
            }
            mapper.Get(persistenceObject);
        }
        public IObjectMapperConfig Create(ObjectMapperType type)
        {
            switch (type)
            {
            case ObjectMapperType.AutoMapper:
                return(new AutoMapperObjectMapperConfig());

            case ObjectMapperType.TinyMapper:
                return(new TinyMapperObjectMapperConfig());

            default: throw new NotImplementedException();
            }
        }
        public IObjectMapper Bootstrap(ObjectMapperType type, params IObjectMapperModule[] modules)
        {
            var objectMapper = new ObjectMapperConfigFactory().Create(type);

            if (modules != null)
            {
                foreach (var module in modules)
                {
                    module.Install(objectMapper);
                }
            }

            return(objectMapper);
        }
예제 #6
0
        internal object GetObjectMapper(string businessObjectClassName, ObjectMapperType objectMapperType)
        {
            var    objectMapperKey = string.Format("{0}|{1}", businessObjectClassName, objectMapperType);
            object objectMapper    = null;

            if (!_objectMapperCollection.Contains(objectMapperKey))
            {
                var mapperObject =
                    (from businessObjectElement in MapperXml.Elements("BusinessObject")
                     where (string)businessObjectElement.Attribute("BusinessObjectClassName") == businessObjectClassName
                     from objectMapperElement in businessObjectElement.XPathSelectElements(string.Format("ObjectMapper[@Type='{0}']", objectMapperType))
                     select objectMapperElement).FirstOrDefault();

                object[] args = null;
                var      objectMapperClassName = (string)((IEnumerable)MapperXml.XPathEvaluate("MapperClasses/Mapper[@Type='" + objectMapperType.GetStringValue() + "']/@MapperClassName")).Cast <XAttribute>().FirstOrDefault();
                switch (objectMapperType)
                {
                case ObjectMapperType.RdbRecord:
                case ObjectMapperType.RdbSet:
                    if (mapperObject != null)
                    {
                        args = new object[] {
                            new RdbObjectMapperInfo
                            {
                                MethodNameDelete = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Delete']/@MethodName")).Cast <XAttribute>().FirstOrDefault(),
                                MethodNameInsert = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Insert']/@MethodName")).Cast <XAttribute>().FirstOrDefault(),
                                MethodNameSelect = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Select']/@MethodName")).Cast <XAttribute>().FirstOrDefault(),
                                MethodNameUpdate = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Update']/@MethodName")).Cast <XAttribute>().FirstOrDefault(),
                                RdbConnectionKey = (string)mapperObject.Attribute("RdbConnectionKey"),
                                RdbEntityName    = (string)mapperObject.Attribute("RdbEntityName")
                            }
                        }
                    }
                    ;
                    break;

                case ObjectMapperType.WsRecord:
                case ObjectMapperType.WsSet:
                    if (mapperObject != null)
                    {
                        args = new object[] {
                            new WsObjectMapperInfo
                            {
                                MethodNameDelete                = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Delete']/@MethodName")).Cast <XAttribute>().FirstOrDefault(),
                                MethodNameInsert                = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Insert']/@MethodName")).Cast <XAttribute>().FirstOrDefault(),
                                MethodNameSelect                = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Select']/@MethodName")).Cast <XAttribute>().FirstOrDefault(),
                                MethodNameUpdate                = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Update']/@MethodName")).Cast <XAttribute>().FirstOrDefault(),
                                ProxyClassNameDelete            = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Delete']/@ProxyClassName")).Cast <XAttribute>().FirstOrDefault(),
                                ProxyClassNameInsert            = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Insert']/@ProxyClassName")).Cast <XAttribute>().FirstOrDefault(),
                                ProxyClassNameSelect            = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Select']/@ProxyClassName")).Cast <XAttribute>().FirstOrDefault(),
                                ProxyClassNameUpdate            = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Update']/@ProxyClassName")).Cast <XAttribute>().FirstOrDefault(),
                                ProxyCallbackClassNameDelete    = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Delete']/@ProxyCallbackClassName")).Cast <XAttribute>().FirstOrDefault(),
                                ProxyCallbackClassNameInsert    = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Insert']/@ProxyCallbackClassName")).Cast <XAttribute>().FirstOrDefault(),
                                ProxyCallbackClassNameSelect    = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Select']/@ProxyCallbackClassName")).Cast <XAttribute>().FirstOrDefault(),
                                ProxyCallbackClassNameUpdate    = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Update']/@ProxyCallbackClassName")).Cast <XAttribute>().FirstOrDefault(),
                                ProxyCallbackPropertyNameDelete = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Delete']/@ProxyCallbackPropertyName")).Cast <XAttribute>().FirstOrDefault(),
                                ProxyCallbackPropertyNameInsert = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Insert']/@ProxyCallbackPropertyName")).Cast <XAttribute>().FirstOrDefault(),
                                ProxyCallbackPropertyNameSelect = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Select']/@ProxyCallbackPropertyName")).Cast <XAttribute>().FirstOrDefault(),
                                ProxyCallbackPropertyNameUpdate = (string)((IEnumerable)mapperObject.XPathEvaluate("MethodMapper[@Type='Update']/@ProxyCallbackPropertyName")).Cast <XAttribute>().FirstOrDefault()
                            }
                        }
                    }
                    ;
                    break;

                case ObjectMapperType.Obj:
                    break;
                }
                if (objectMapperClassName != null)
                {
                    var type = Type.GetType(objectMapperClassName);
                    if (type != null)
                    {
                        objectMapper = type.InvokeMember(null, BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.Public, null, null, args);
                    }
                    _objectMapperCollection.Add(objectMapperKey, objectMapper);
                }
                return(objectMapper);
            }
            return(_objectMapperCollection[objectMapperKey]);
        }
예제 #7
0
 public void Load(ObjectMapperType objectMapperType)
 {
     throw new NotImplementedException();
 }
예제 #8
0
 public virtual void Load(ObjectMapperType objectMapperType)
 {
     PersistenceFacade.GetInstance().Get(this, objectMapperType);
     MarkOldClean();
 }