Ejemplo n.º 1
0
        protected override void ProcessElement(BookVersion bookVersion, XmlReader xmlReader)
        {
            var responsible = new Responsible();

            while (xmlReader.Read())
            {
                if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.IsStartElement() &&
                    xmlReader.LocalName.Equals("resp"))
                {
                    xmlReader.Read(); //read text value
                    var responsibleTypeText = xmlReader.Value;
                    var responsibleTypeType = ParseEnum <ResponsibleTypeEnum>(responsibleTypeText);
                    var tmpResponsibleType  = new ResponsibleType
                    {
                        Text = responsibleTypeText,
                        Type = responsibleTypeType
                    };

                    m_bookVersionRepository.CreateResponsibleTypeIfNotExist(tmpResponsibleType);
                    responsible.ResponsibleType = m_bookVersionRepository.FindResponsibleType(responsibleTypeText, responsibleTypeType);
                }

                if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.IsStartElement() &&
                    xmlReader.LocalName.Equals("name"))
                {
                    responsible.Text = GetInnerContentAsString(xmlReader);
                }
            }

            responsible = m_bookVersionRepository.FindResponsible(responsible.Text, responsible.ResponsibleType) ??
                          responsible;
            bookVersion.Responsibles.Add(responsible);
        }
        private List <ResponsibleType> GetOrCreateResponsibleType(string text)
        {
            var resultList = new List <ResponsibleType>();
            var typeTexts  = text.Split(',');

            foreach (var typeText in typeTexts)
            {
                var trimmedTypeText = typeText.Trim();
                var responsibleType = m_personRepository.GetResponsibleTypeByName(trimmedTypeText);

                if (responsibleType != null)
                {
                    resultList.Add(responsibleType);
                    continue;
                }

                ResponsibleTypeEnum typeEnum;
                Enum.TryParse(trimmedTypeText, true, out typeEnum);

                responsibleType = new ResponsibleType
                {
                    Text = trimmedTypeText,
                    Type = typeEnum
                };
                m_projectRepository.Create(responsibleType);
                resultList.Add(responsibleType);
            }

            return(resultList);
        }
Ejemplo n.º 3
0
        protected override int ExecuteWorkImplementation()
        {
            var typeEnum        = Mapper.Map <ResponsibleTypeEnum>(m_data.Type);
            var responsibleType = new ResponsibleType
            {
                Text = m_data.Text,
                Type = typeEnum
            };

            return((int)m_personRepository.Create(responsibleType));
        }
Ejemplo n.º 4
0
 public virtual void CreateResponsibleTypeIfNotExist(ResponsibleType responsibleType)
 {
     using (var session = GetSession())
     {
         var tmpResponsibleType = FindResponsibleType(responsibleType.Text, responsibleType.Type);
         if (tmpResponsibleType == null)
         {
             session.Save(responsibleType);
         }
     }
 }
Ejemplo n.º 5
0
 public virtual Responsible FindResponsible(string text, ResponsibleType respType)
 {
     using (var session = GetSession())
     {
         var responsibleType = FindResponsibleType(respType.Text, respType.Type) ?? respType;
         return
             (session.QueryOver <Responsible>()
              .Where(
                  responsible =>
                  responsible.Text == text && responsible.ResponsibleType.Id == responsibleType.Id)
              .SingleOrDefault <Responsible>());
     }
 }
Ejemplo n.º 6
0
        public virtual MetadataResource GetMetadataWithDetail(long projectId)
        {
            Resource resourceAlias = null;
            Project  projectAlias  = null;
            Snapshot snapshotAlias = null;
            BookType bookTypeAlias = null;
            ProjectOriginalAuthor    projectOriginalAuthorAlias    = null;
            OriginalAuthor           originalAuthorAlias           = null;
            ProjectResponsiblePerson projectResponsiblePersonAlias = null;
            ResponsiblePerson        responsiblePersonAlias        = null;
            ResponsibleType          responsibleTypeAlias          = null;

            var session = GetSession();

            var result = session.QueryOver <MetadataResource>()
                         .JoinAlias(x => x.Resource, () => resourceAlias)
                         .JoinAlias(() => resourceAlias.Project, () => projectAlias)
                         .JoinAlias(() => projectAlias.LatestPublishedSnapshot, () => snapshotAlias, JoinType.LeftOuterJoin)
                         .JoinAlias(() => snapshotAlias.DefaultBookType, () => bookTypeAlias, JoinType.LeftOuterJoin)
                         .Where(x => x.Id == resourceAlias.LatestVersion.Id && !resourceAlias.IsRemoved && resourceAlias.Project.Id == projectId && projectAlias.IsRemoved == false)
                         .FutureValue();

            session.QueryOver <Project>()
            .Where(x => x.Id == projectId)
            .Fetch(SelectMode.Fetch, x => x.Keywords)
            .Future();

            session.QueryOver <Project>()
            .Where(x => x.Id == projectId)
            .Fetch(SelectMode.Fetch, x => x.LiteraryGenres)
            .Future();

            session.QueryOver <Project>()
            .Where(x => x.Id == projectId)
            .Fetch(SelectMode.Fetch, x => x.LiteraryKinds)
            .Future();

            session.QueryOver <Project>()
            .Where(x => x.Id == projectId)
            .Fetch(SelectMode.Fetch, x => x.LiteraryOriginals)
            .Future();

            session.QueryOver <Project>()
            .Where(x => x.Id == projectId)
            .JoinAlias(x => x.Authors, () => projectOriginalAuthorAlias, JoinType.LeftOuterJoin)
            .JoinAlias(() => projectOriginalAuthorAlias.OriginalAuthor, () => originalAuthorAlias, JoinType.LeftOuterJoin)
            .Fetch(SelectMode.Fetch, x => x.Authors)
            .Fetch(SelectMode.Fetch, x => x.Authors[0].OriginalAuthor)
            .OrderBy(() => projectOriginalAuthorAlias.Sequence).Asc
            .Future();

            session.QueryOver <Project>()
            .Where(x => x.Id == projectId)
            .JoinAlias(x => x.ResponsiblePersons, () => projectResponsiblePersonAlias, JoinType.LeftOuterJoin)
            .JoinAlias(() => projectResponsiblePersonAlias.ResponsiblePerson, () => responsiblePersonAlias, JoinType.LeftOuterJoin)
            .JoinAlias(() => projectResponsiblePersonAlias.ResponsibleType, () => responsibleTypeAlias, JoinType.LeftOuterJoin)
            .Fetch(SelectMode.Fetch, x => x.ResponsiblePersons)
            .Fetch(SelectMode.Fetch, x => x.ResponsiblePersons[0].ResponsiblePerson)
            .Fetch(SelectMode.Fetch, x => x.ResponsiblePersons[0].ResponsibleType)
            .OrderBy(() => projectResponsiblePersonAlias.Sequence).Asc
            .Future();

            return(result.Value);
        }
Ejemplo n.º 7
0
        public virtual BookVersion GetBookVersionDetailByBookId(long bookId)
        {
            using (var session = GetSession())
            {
                Book             bookAlias             = null;
                BookVersion      bookVersionAlias      = null;
                Responsible      responsibleAlias      = null;
                ResponsibleType  responsibleTypeAlias  = null;
                LiteraryOriginal literaryOriginalAlias = null;
                LiteraryKind     literaryKindAlias     = null;
                LiteraryGenre    genreAlias            = null;

                var query = session.QueryOver(() => bookVersionAlias)
                            .JoinAlias(x => x.Book, () => bookAlias)
                            .Where(() => bookAlias.LastVersion.Id == bookVersionAlias.Id)
                            .And(x => bookAlias.Id == bookId);

                var futureResult = query
                                   .Fetch(x => x.Book).Eager
                                   .Fetch(x => x.Publisher).Eager
                                   .Fetch(x => x.DefaultBookType).Eager
                                   .FutureValue <BookVersion>();

                session.QueryOver(() => bookVersionAlias)
                .JoinAlias(x => x.Book, () => bookAlias)
                .Where(() => bookAlias.LastVersion.Id == bookVersionAlias.Id)
                .And(x => bookAlias.Id == bookId)
                .Fetch(x => x.ManuscriptDescriptions).Eager
                .FutureValue <BookVersion>();

                session.QueryOver(() => bookVersionAlias)
                .JoinAlias(x => x.Book, () => bookAlias)
                .Where(() => bookAlias.LastVersion.Id == bookVersionAlias.Id)
                .And(x => bookAlias.Id == bookId)
                .Fetch(x => x.Authors).Eager
                .FutureValue <BookVersion>();

                session.QueryOver(() => bookVersionAlias)
                .JoinAlias(x => x.Book, () => bookAlias)
                .Where(() => bookAlias.LastVersion.Id == bookVersionAlias.Id)
                .And(x => bookAlias.Id == bookId)
                .Fetch(x => x.Keywords).Eager
                .FutureValue <BookVersion>();

                session.QueryOver(() => bookVersionAlias)
                .JoinAlias(x => x.Book, () => bookAlias)
                .Where(() => bookAlias.LastVersion.Id == bookVersionAlias.Id)
                .And(x => bookAlias.Id == bookId)
                .Fetch(x => x.FullBookRecordings).Eager
                .FutureValue <BookVersion>();

                session.QueryOver(() => bookVersionAlias)
                .JoinAlias(x => x.Book, () => bookAlias)
                .Where(() => bookAlias.LastVersion.Id == bookVersionAlias.Id)
                .And(x => bookAlias.Id == bookId)
                .Left.JoinAlias(() => bookVersionAlias.Responsibles, () => responsibleAlias)
                .Left.JoinAlias(() => responsibleAlias.ResponsibleType, () => responsibleTypeAlias)
                .FutureValue <BookVersion>();

                session.QueryOver(() => bookVersionAlias)
                .JoinAlias(x => x.Book, () => bookAlias)
                .Where(() => bookAlias.LastVersion.Id == bookVersionAlias.Id)
                .And(x => bookAlias.Id == bookId)
                .Left.JoinAlias(() => bookVersionAlias.LiteraryOriginals, () => literaryOriginalAlias)
                .Fetch(x => x.LiteraryOriginals).Eager
                .FutureValue <BookVersion>();

                session.QueryOver(() => bookVersionAlias)
                .JoinAlias(x => x.Book, () => bookAlias)
                .Where(() => bookAlias.LastVersion.Id == bookVersionAlias.Id)
                .And(x => bookAlias.Id == bookId)
                .Left.JoinAlias(() => bookVersionAlias.LiteraryKinds, () => literaryKindAlias)
                .Fetch(x => x.LiteraryKinds).Eager
                .FutureValue <BookVersion>();

                session.QueryOver(() => bookVersionAlias)
                .JoinAlias(x => x.Book, () => bookAlias)
                .Where(() => bookAlias.LastVersion.Id == bookVersionAlias.Id)
                .And(x => bookAlias.Id == bookId)
                .Left.JoinAlias(() => bookVersionAlias.LiteraryGenres, () => genreAlias)
                .Fetch(x => x.LiteraryGenres).Eager
                .FutureValue <BookVersion>();

                var result = futureResult.Value;
                return(result);
            }
        }