Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="repository"></param>
        /// <param name="queryText">The query text is the name of view. Composite of "DesignName/ViewName" </param>
        /// <param name="commandType"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public IEnumerable <IDictionary <string, object> > ExecuteQuery(Models.Repository repository, string queryText, System.Data.CommandType commandType = System.Data.CommandType.Text, params KeyValuePair <string, object>[] parameters)
        {
            if (string.IsNullOrEmpty(queryText))
            {
                throw new Exception("Parameter:queryText is Null Or Empty.");
            }

            string[] paras = queryText.Split('/');
            if (paras.Length != 2)
            {
                throw new Exception("Parameter:queryText format is error.");
            }

            var client = repository.GetClient();
            var view   = client.GetView(paras[0], paras[1]);

            List <Dictionary <string, object> > ret = new List <Dictionary <string, object> >();

            foreach (var row in view)
            {
                var dict = row.Info["value"] as Dictionary <string, object>;
                ret.Add(dict);
            }
            return(ret);
        }
Exemplo n.º 2
0
        public override void Initialize(Models.Repository repository)
        {
            //create bucket
            var bucketName = repository.GetBucketName();

            if (!DatabaseHelper.ExistBucket(bucketName))
            {
                var cf = DatabaseHelper.GetCouchbaseClientConfiguration();

                Bucket bucket = new Bucket();
                bucket.Name       = bucketName;
                bucket.AuthType   = AuthTypes.Sasl;
                bucket.BucketType = BucketTypes.Membase;
                bucket.Quota      = new Quota()
                {
                    RAM = DatabaseSettings.Instance.BucketRAM
                };                                           //RamQuotaMB must be at least 100
                bucket.FlushOption   = FlushOptions.Enabled; //支持清空
                bucket.ReplicaNumber = (ReplicaNumbers)DatabaseSettings.Instance.ReplicaNumber;
                bucket.ReplicaIndex  = DatabaseSettings.Instance.ReplicaIndex;
                DatabaseHelper.CreateBucket(bucket);

                //此处需暂停几秒钟,否则,通过选择模板创建站点的方式,在导入数据时,会出现数据未导入的情况
                //大致原因在于,Couchbae在数据库创建之后,需要几秒钟的初始化过程,在这个过程中插入任何数据都将失败
                System.Threading.Thread.Sleep(3000);
            }
            //always recreate the default view
            repository.CreateDefaultViews();
            base.Initialize(repository);
        }
Exemplo n.º 3
0
        public Models.Repository GetIncomingChanges(Models.Repository repository)
        {
            try
            {
                NGit.Api.Git git  = NGit.Api.Git.Open(repository.Path);
                Repository   repo = git.GetRepository();
                repo.GetIndexFile();

                //Repository repo = new FileRepository(new Sharpen.FilePath(path));
                //NGit.Api.Git git = new NGit.Api.Git(repo);

                //TODO: Find out how git works really, and fix this.
                FetchCommand         fc = git.Fetch();
                FetchResult          fr = fc.Call();
                LogCommand           lc = git.Log();
                Iterable <RevCommit> lr = lc.Call();


                if (git != null && repo != null && fr != null && lr != null)
                {
                    List <Watchtower.Models.Changeset> commits = new List <Watchtower.Models.Changeset>();
                    foreach (RevCommit rc in lr)
                    {
                        //TODO: Find out if these values are right.
                        Watchtower.Models.Changeset c = new Watchtower.Models.Changeset(rc.GetParent(0).GetHashCode().ToString(), rc.GetHashCode().ToString(), rc.GetCommitterIdent().GetEmailAddress(), rc.GetCommitterIdent().GetWhen(), rc.GetCommitterIdent().GetName(), rc.GetFullMessage());
                        commits.Add(c);
                    }
                    repository.IncomingChangesets = commits;
                }
            }
            catch
            {
            }
            return(repository);
        }
Exemplo n.º 4
0
        public void Update(Models.Repository @new, Models.Repository old)
        {
            inner.Update(@new, old);
            var cacheKey = GetCacheKey(@new);

            @new.ObjectCache().Remove(cacheKey);
        }
Exemplo n.º 5
0
        public override NCMIS.ObjectModel.MetaData.TypeDefinition GetTypeDefinition(string repositoryId, string typeId)
        {
            Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
            var schema = ServiceFactory.SchemaManager.All(repository, "").Where(it => string.Compare(it.Name, typeId, true) == 0).FirstOrDefault();

            if (schema != null)
            {
                return(new TypeDocumentDefinition()
                {
                    BaseId = BaseObjectTypeId.CmisDocument,
                    ControllableAcl = false,
                    ControllablePolicy = false,
                    Creatable = true,
                    Description = schema.Name,
                    DisplayName = schema.Name,
                    Fileable = false,
                    FulltextIndexed = false,
                    Id = schema.Name,
                    IncludedInSupertypeQuery = false,
                    LocalName = schema.Name,
                    LocalNamespace = typeof(Schema).ToString(),
                    ParentId = "",
                    Queryable = true,
                    QueryName = "Schema",
                    PropertyDefinitions = schema.AsActual().Columns.Select(c => ColumnDefinition(c)).ToArray()
                });
            }
            return(null);
        }
Exemplo n.º 6
0
        // POST api/<controller>
        //
        // Add user to the database
        //
        public HttpResponseMessage Post([FromBody] JsonUser value)
        {
            if (value == null)
            {
                Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid user information");
            }

            Models.Repository     repository = new Models.Repository();
            Facebook.FacebookUser fbUser     = new Facebook.FacebookUser
            {
                id         = value.UserId,
                email      = value.Email,
                first_name = value.FirstName,
                last_name  = value.LastName,
                name       = value.Name
            };
            var mfUser = repository.CreateUser(fbUser);

            repository.SaveChanges();

            List <GroupMember> membership = repository.UserMembership(mfUser);

            if ((membership == null) || (membership.Count == 0))
            {
                Group defaultGroup = repository.FindGroupByCode("JYMF");
                repository.DefaultGroup(mfUser, defaultGroup, GroupRoleEnum.member);
                repository.SaveChanges();
            }


            return(Request.CreateResponse(HttpStatusCode.Created, "User added to application"));
        }
Exemplo n.º 7
0
        public override void Import(Models.Repository repository, System.IO.Stream zipStream, bool @override)
        {
            List <string> schemaNames = new List <string>();
            Dictionary <string, Schema> oldSchemas = new Dictionary <string, Schema>();

            using (var zipFile = ZipFile.Read(zipStream))
            {
                foreach (var entry in zipFile.Entries)
                {
                    if (entry.FileName.IndexOf('/') == entry.FileName.Length - 1)
                    {
                        var schemaName = entry.FileName.Substring(0, entry.FileName.Length - 1);
                        schemaNames.Add(schemaName);
                        oldSchemas[schemaName] = this.Get(new Schema(repository, schemaName));
                    }
                }
            }
            zipStream.Position = 0;

            base.Import(repository, zipStream, @override);

            foreach (var name in schemaNames)
            {
                var oldSchema = oldSchemas[name];
                var newSchema = this.Get(new Models.Schema(repository, name));
                if (oldSchema != null)
                {
                    SchemaManager.Update(newSchema, oldSchema);
                }
                else
                {
                    Initialize(newSchema);
                }
            }
        }
Exemplo n.º 8
0
        public IEnumerable <NCMIS.ObjectModel.CmisObject> GetChildren(string repositoryId, string objectId, string filter, IncludeRelationships includeRelationships)
        {
            Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
            string folderId;

            TryPraseObjectId(objectId, out folderId);
            switch (CmisFolderHelper.IdentifyFolderType(repository, folderId))
            {
            case FolderType.Root:
                return(new[] {
                    CmisFolderHelper.CreateSystemFolderObject(CmisFolderHelper.Content_Folder_Root, CmisFolderHelper.RootFolderName),
                    CmisFolderHelper.CreateSystemFolderObject(CmisFolderHelper.Media_Folder_Root, CmisFolderHelper.RootFolderName)
                });

            case FolderType.Content_Folder_Root:
                return(ServiceFactory.TextFolderManager.All(repository, filter).Select(it => ObjectConvertor.ToCmis((TextFolder)(it.AsActual()), includeRelationships != IncludeRelationships.None)));

            case FolderType.Media_Folder_Root:
                return(ServiceFactory.MediaFolderManager.All(repository, filter).Select(it => ObjectConvertor.ToCmis((MediaFolder)(it.AsActual()), includeRelationships != IncludeRelationships.None)));

            case FolderType.Content_Folder:
                var textFolder = (TextFolder)CmisFolderHelper.Parse(repository, folderId);
                return(ServiceFactory.TextFolderManager.ChildFolders(textFolder, filter).Select(it => ObjectConvertor.ToCmis((TextFolder)(it.AsActual()), includeRelationships != IncludeRelationships.None)));

            case FolderType.Media_Folder:
                var mediaFolder = (MediaFolder)CmisFolderHelper.Parse(repository, folderId);
                return(ServiceFactory.MediaFolderManager.ChildFolders(mediaFolder, filter).Select(it => ObjectConvertor.ToCmis((MediaFolder)(it.AsActual()), includeRelationships != IncludeRelationships.None)));

            default:
                break;
            }
            return(new[] { ObjectConvertor.EmptyCmisObject() });
        }
Exemplo n.º 9
0
        public CmisObject GetObject(string repositoryId, string objectId)
        {
            string folderId;

            TryPraseObjectId(objectId, out folderId);
            Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
            var folder = CmisFolderHelper.Parse(repository, folderId);

            return(ObjectConvertor.ToCmis(folder.AsActual(), false));
        }
Exemplo n.º 10
0
        public void ImportCategoryData(Models.Repository repository, IEnumerable <Models.Category> data)
        {
            var dataCollection = repository.GetCategoriesCollection();
            var docs           = data.Select(it => it.ToBsonDocument()).ToArray();

            if (docs.Length > 0)
            {
                dataCollection.InsertBatch(docs);
            }
        }
Exemplo n.º 11
0
        public void ImportCategoryData(Models.Repository repository, IEnumerable <Models.Category> data)
        {
            var bucket = repository.GetClient();

            ////导入站点不用PersistTo
            data.ForEach((it, index) =>
            {
                bucket.Store(StoreMode.Set, it.GetDocumentKey(), it.ToJson());
            });
        }
Exemplo n.º 12
0
        public virtual IEnumerable <T> All(Models.Repository repository, string filterName)
        {
            var r = Provider.All(repository);

            if (!string.IsNullOrEmpty(filterName))
            {
                r = r.Where(it => it.Name.Contains(filterName, StringComparison.CurrentCultureIgnoreCase));
            }

            return(r);
        }
Exemplo n.º 13
0
 public void Remove(Models.Repository item)
 {
     try
     {
         inner.Remove(item);
     }
     finally
     {
         @item.ClearCache();
     }
 }
Exemplo n.º 14
0
 public void Add(Models.Repository item)
 {
     try
     {
         inner.Add(item);
     }
     finally
     {
         Kooboo.CMS.Caching.CacheManagerFactory.DefaultCacheManager.ClearGlobalObjectCache();
     }
 }
Exemplo n.º 15
0
        public IQueryable <Models.SendingSetting> All(Models.Repository repository)
        {
            var path = new SendingSettingPath(repository);

            return(IO.IOUtility
                   .EnumerateFilesExludeHidden(path.PhysicalPath)
                   .Select(it => new SendingSetting
            {
                Repository = repository,
                Name = Path.GetFileNameWithoutExtension(it.Name)
            }).ToArray().AsQueryable());
        }
Exemplo n.º 16
0
        public override void Remove(Models.Repository item)
        {
            try
            {
                DatabaseHelper.DisposeDatabase(item);
            }
            catch
            {
            }

            base.Remove(item);
        }
Exemplo n.º 17
0
        public ActionResult GetJsonDataModel(string searchText)
        {
            string val         = searchText;
            var    searchText1 = "WordSearch"; //searchText;
            var    webClient   = new WebClient();

            webClient.Headers.Add("user-agent", "Only a test!");
            var json = webClient.DownloadString(@"https://api.github.com/search/repositories?q=" + searchText1);

            Models.Repository objJson = JsonConvert.DeserializeObject <Repository>(json);
            return(View(objJson));
        }
Exemplo n.º 18
0
        /// <summary>
        /// Alls the specified repository.
        /// </summary>
        /// <param name="repository">The repository.</param>
        /// <param name="filterName">Name of the filter.</param>
        /// <returns></returns>
        public override IEnumerable <T> All(Models.Repository repository, string filterName)
        {
            var r = Provider.All(repository).Select(it => it.AsActual());

            if (!string.IsNullOrEmpty(filterName))
            {
                r = r.Where(it => it.Name.Contains(filterName, StringComparison.OrdinalIgnoreCase) ||
                            (!string.IsNullOrEmpty(it.DisplayName) && it.DisplayName.Contains(filterName, StringComparison.OrdinalIgnoreCase)));
            }

            return(r);
        }
Exemplo n.º 19
0
 public ActionResult saveBookmark(string repoId, string avatar, string repoName)
 {
     if (String.IsNullOrEmpty(repoId) || String.IsNullOrEmpty(avatar) || String.IsNullOrEmpty(repoName))
     {
         return(Json(new { Message = "ERROR in input values.", JsonRequestBehavior.AllowGet }));
     }
     if (Session[repoId] != null)
     {
         return(Json(new { Message = "This Repository was bookmarked already!", JsonRequestBehavior.AllowGet }));
     }
     Session[repoId] = new Models.Repository(avatar, repoName, repoId);
     return(Json(new { Message = "Bookmark was saved SUCCESSFULLY!", JsonRequestBehavior.AllowGet }));
 }
Exemplo n.º 20
0
 public ActionResult GetJsonDataModel(string searchText)
 {
     if (searchText.Length < 1)
     {
         return(View("SearchForRepository"));
     }
     else
     {
         var webClient = new WebClient();
         webClient.Headers.Add("user-agent", "repository");
         var json = webClient.DownloadString(ConfigurationManager.AppSettings["API_URL"].ToString() + searchText);
         Models.Repository objJson = JsonConvert.DeserializeObject <Repository>(json);
         return(View(objJson));
     }
 }
Exemplo n.º 21
0
 public async Task <ActionResult <bool> > CheckImage([FromBody] Models.Repository repository)
 {
     try
     {
         return(await _containerService.CheckImageAsync(repository));
     }
     catch (InvalidRepositoryName ex)
     {
         return(BadRequest(ex.Message));
     }
     catch (AmazonECRException ex)
     {
         return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
     }
 }
Exemplo n.º 22
0
        public virtual void Remove(Models.Repository repository, T item)
        {
            if (string.IsNullOrEmpty(item.Name))
            {
                throw new NameIsReqiredException();
            }
            var dbProvider = Provider;

            item.Repository = repository;
            if (dbProvider.Get(item) == null)
            {
                throw new ItemDoesNotExistException();
            }

            dbProvider.Remove(item);
        }
Exemplo n.º 23
0
        public virtual void Update(Models.Repository repository, T @new, T old)
        {
            if (string.IsNullOrEmpty(@new.Name))
            {
                throw new NameIsReqiredException();
            }
            var dbProvider = Provider;

            old.Repository  = repository;
            @new.Repository = repository;
            if (dbProvider.Get(old) == null)
            {
                throw new ItemDoesNotExistException();
            }
            dbProvider.Update(@new, @old);
        }
Exemplo n.º 24
0
        public async Task <Repository> AddRepositoryAsync(string repositoryName)
        {
            var repo = dbContext.Repositories?.Where(x => x.Name == repositoryName).FirstOrDefault();

            if (repo == null)
            {
                repo = new Models.Repository()
                {
                    Name = repositoryName
                };
                await dbContext.Repositories.AddAsync(repo);

                await dbContext.SaveChangesAsync();
            }
            return(repo);
        }
Exemplo n.º 25
0
        public Models.Repository Get(Models.Repository dummy)
        {
            var cacheKey = GetCacheKey(dummy);
            var o        = (Repository)dummy.ObjectCache().Get(cacheKey);

            if (o == null)
            {
                o = inner.Get(dummy);
                if (o == null)
                {
                    return(o);
                }
                dummy.ObjectCache().Add(cacheKey, o, Kooboo.CMS.Caching.ObjectCacheExtensions.DefaultCacheItemPolicy);
            }
            return(o);
        }
Exemplo n.º 26
0
        public Models.Repository Get(Models.Repository dummy)
        {
            var cacheKey = GetCacheKey(dummy);
            var o        = (Repository)dummy.ObjectCache().Get(cacheKey);

            if (o == null)
            {
                o = inner.Get(dummy);
                if (o == null)
                {
                    return(o);
                }
                dummy.ObjectCache().Add(cacheKey, o, CacheProviderFactory.DefaultCacheItemPolicy);
            }
            return(o);
        }
Exemplo n.º 27
0
        public void DeleteObject(string repositoryId, string objectId)
        {
            string folderId;
            TryPraseObjectId(objectId, out folderId);
            Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
            var folder = CmisFolderHelper.Parse(repository, folderId);

            if (folder is TextFolder)
            {
                ServiceFactory.TextFolderManager.Remove(repository, (TextFolder)folder);
            }
            else
            {
                ServiceFactory.MediaFolderManager.Remove(repository, (MediaFolder)folder);
            }
        }
Exemplo n.º 28
0
        public void DeleteObject(string repositoryId, string objectId)
        {
            string folderId;

            TryPraseObjectId(objectId, out folderId);
            Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
            var folder = CmisFolderHelper.Parse(repository, folderId);

            if (folder is TextFolder)
            {
                ServiceFactory.TextFolderManager.Remove(repository, (TextFolder)folder);
            }
            else
            {
                ServiceFactory.MediaFolderManager.Remove(repository, (MediaFolder)folder);
            }
        }
Exemplo n.º 29
0
        public virtual void Add(Models.Repository repository, T item)
        {
            if (string.IsNullOrEmpty(item.Name))
            {
                throw new NameIsReqiredException();
            }

            var dbProvider = Provider;

            item.Repository = repository;
            if (dbProvider.Get(item) != null)
            {
                throw new ItemAlreadyExistsException();
            }

            dbProvider.Add(item);
        }
Exemplo n.º 30
0
        public NCMIS.ObjectModel.CmisObject GetParent(string repositoryId, string objectId)
        {
            Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
            string folderId;

            if (!IsSystemFolder(objectId) && TryPraseObjectId(objectId, out folderId))
            {
                var folder = CmisFolderHelper.Parse(repository, folderId);

                if (folder.Parent != null)
                {
                    return(ObjectConvertor.ToCmis(folder.Parent.AsActual(), false));
                }
            }

            return(ObjectConvertor.EmptyCmisObject());
        }
Exemplo n.º 31
0
        private async Task <Models.RepositoryStatInfo> LoadRepositoryStatisticsAsync(Models.Repository repository)
        {
            if (string.IsNullOrEmpty(repository.Owner?.Login) ||
                string.IsNullOrEmpty(repository.Name))
            {
                throw new InvalidOperationException("Invalid GitHub response");
            }

            var contributors       = new List <Models.Contributor>();
            var contributorsLoader = _dataLoaderFactory.GetContributorDataLoader(repository.Owner.Login, repository.Name);

            await foreach (var contributorsPage in GetPagedEntitiesAsync(contributorsLoader))
            {
                contributors.AddRange(contributorsPage);
            }

            return(new Models.RepositoryStatInfo(repository, contributors));
        }
Exemplo n.º 32
0
 public override NCMIS.Produce.RepositoryInfo GetRepositoryInfo(string repositoryId)
 {
     var repositoryEntry = GetRepository(repositoryId);
     if (repositoryEntry != null)
     {
         Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId).AsActual();
         return new RepositoryInfo()
         {
             RepositoryId = repository.Name,
             RepositoryName = repository.Name,
             RepositoryDescription = repository.DisplayName,
             VendorName = "Kooboo CMS",
             ProductName = "Kooboo CMS",
             ProductVersion = "1.0",
             RootFolderId = CmisFolderHelper.RootFolderName,
             LatestChangeLogToken = DateTime.UtcNow.ToString(),
             // Define repository capabilities (see section 2.1.1.1 in CMIS spec)
             Capabilities = new RepositoryCapabilities()
             {
                 Acl = CapabilityAcl.Manage,
                 AllVersionsSearchable = false,
                 Changes = CapabilityChanges.All,
                 ContentStreamUpdatability = CapabilityContentStreamUpdates.Anytime,
                 GetDescendants = false,
                 GetFolderTree = false,
                 Multifiling = false,
                 PwcSearchable = true,
                 PwcUpdatable = true,
                 Query = CapabilityQuery.BothCombined,
                 Renditions = CapabilityRendition.Read,
                 Unfiling = false,
                 VersionSpecificFiling = false,
                 Join = CapabilityJoin.InnerAndOuter
             },
             CmisVersionSupported = 1.0m
         };
     }
     return null;
 }
Exemplo n.º 33
0
        public CmisObject CreateFolder(string repositoryId, NCMIS.ObjectModel.CmisProperties properties, string folderId)
        {
            Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
            Folder parent = null;
            var objectId = folderId;

            var values = properties.ToNameValueCollection();
            if (string.IsNullOrEmpty(values["name"]))
            {
                throw new Exception("The property \"Name\" is required.");
            }
            if (TryPraseObjectId(objectId, out folderId))
            {
                var folderType = CmisFolderHelper.IdentifyFolderType(repository, folderId);
                switch (folderType)
                {
                    case FolderType.Root:
                        throw new Exception("Could not create folder under root folder.");
                    case FolderType.Content_Folder_Root:
                        parent = null;
                        return AddContentFolder(repository, parent, values);

                    case FolderType.Media_Folder_Root:
                        parent = null;
                        return AddMediaFolder(repository, parent, values);

                    case FolderType.Content_Folder:
                        parent = CmisFolderHelper.Parse(repository, folderId);
                        return AddContentFolder(repository, parent, values);

                    case FolderType.Media_Folder:
                        parent = CmisFolderHelper.Parse(repository, folderId);
                        return AddMediaFolder(repository, parent, values);
                    default:
                        break;
                }
            }
            throw new InvalidOperationException("Create folder failed.");
        }
Exemplo n.º 34
0
        public override NCMIS.ObjectModel.MetaData.TypeDefinitionList GetTypeChildren(string repositoryId, string typeId, bool includePropertyDefinitions, int? maxItems, int skipCount)
        {
            var list = new NCMIS.ObjectModel.MetaData.TypeDefinitionList() { Types = new TypeDefinition[0] };

            if (string.IsNullOrEmpty(typeId))
            {
                Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
                var schemas = ServiceFactory.SchemaManager.All(repository, "").Select(it => new TypeDocumentDefinition()
                {
                    Versionable = false,
                    ContentStreamAllowed = NCMIS.ObjectModel.MetaData.ContentStreamAllowed.Allowed,

                    BaseId = BaseObjectTypeId.CmisDocument,
                    ControllableAcl = false,
                    ControllablePolicy = false,
                    Creatable = true,
                    Description = it.Name,
                    DisplayName = it.Name,
                    Fileable = false,
                    FulltextIndexed = false,
                    Id = it.Name,
                    IncludedInSupertypeQuery = false,
                    LocalName = it.Name,
                    LocalNamespace = typeof(Schema).ToString(),
                    ParentId = "",
                    Queryable = true,
                    QueryName = "Schema",
                    PropertyDefinitions = includePropertyDefinitions ? null : it.AsActual().Columns.Select(c => ColumnDefinition(c)).ToArray()
                }).Skip(skipCount);
                var count = schemas.Count();
                var take = maxItems.HasValue ? maxItems.Value : count;
                list.NumItems = count.ToString();
                list.HasMoreItems = count > count + take;
                list.Types = schemas.Take(take).ToArray();
            }
            return list;
        }
Exemplo n.º 35
0
 public IEnumerable<NCMIS.ObjectModel.CmisObject> GetChildren(string repositoryId, string objectId, string filter, IncludeRelationships includeRelationships)
 {
     Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
     string folderId;
     TryPraseObjectId(objectId, out folderId);
     switch (CmisFolderHelper.IdentifyFolderType(repository, folderId))
     {
         case FolderType.Root:
             return new[] {
             CmisFolderHelper.CreateSystemFolderObject(CmisFolderHelper.Content_Folder_Root,CmisFolderHelper.RootFolderName),
            CmisFolderHelper.CreateSystemFolderObject(CmisFolderHelper.Media_Folder_Root,CmisFolderHelper.RootFolderName)
             };
         case FolderType.Content_Folder_Root:
             return ServiceFactory.TextFolderManager.All(repository, filter).Select(it => ObjectConvertor.ToCmis((TextFolder)(it.AsActual()), includeRelationships != IncludeRelationships.None));
         case FolderType.Media_Folder_Root:
             return ServiceFactory.MediaFolderManager.All(repository, filter).Select(it => ObjectConvertor.ToCmis((MediaFolder)(it.AsActual()), includeRelationships != IncludeRelationships.None));
         case FolderType.Content_Folder:
             var textFolder = (TextFolder)CmisFolderHelper.Parse(repository, folderId);
             return ServiceFactory.TextFolderManager.ChildFolders(textFolder, filter).Select(it => ObjectConvertor.ToCmis((TextFolder)(it.AsActual()), includeRelationships != IncludeRelationships.None));
         case FolderType.Media_Folder:
             var mediaFolder = (MediaFolder)CmisFolderHelper.Parse(repository, folderId);
             return ServiceFactory.MediaFolderManager.ChildFolders(mediaFolder, filter).Select(it => ObjectConvertor.ToCmis((MediaFolder)(it.AsActual()), includeRelationships != IncludeRelationships.None));
         default:
             break;
     }
     return new[] { ObjectConvertor.EmptyCmisObject() };
 }
Exemplo n.º 36
0
 public override NCMIS.ObjectModel.MetaData.TypeDefinition GetTypeDefinition(string repositoryId, string typeId)
 {
     Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
     var schema = ServiceFactory.SchemaManager.All(repository, "").Where(it => string.Compare(it.Name, typeId, true) == 0).FirstOrDefault();
     if (schema != null)
     {
         return new TypeDocumentDefinition()
         {
             BaseId = BaseObjectTypeId.CmisDocument,
             ControllableAcl = false,
             ControllablePolicy = false,
             Creatable = true,
             Description = schema.Name,
             DisplayName = schema.Name,
             Fileable = false,
             FulltextIndexed = false,
             Id = schema.Name,
             IncludedInSupertypeQuery = false,
             LocalName = schema.Name,
             LocalNamespace = typeof(Schema).ToString(),
             ParentId = "",
             Queryable = true,
             QueryName = "Schema",
             PropertyDefinitions = schema.AsActual().Columns.Select(c => ColumnDefinition(c)).ToArray()
         };
     }
     return null;
 }
Exemplo n.º 37
0
        public HttpResponseMessage GetPostFileDetails(int fileId, int repositoryId)
        {
            Func<DM.File, bool> fileByFileIdAndUserIdFilter = f => f.FileId == fileId && f.CreatedBy == this.user.UserId && (f.isDeleted == null || f.isDeleted == false);
            DM.File file = fileService.GetFiles(fileByFileIdAndUserIdFilter).FirstOrDefault();
            if (file == null)
            {
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, MessageStrings.FileNotFound);
            }

            bool isAdmin = this.user.UserRoles.Any(ur => ur.Role.Name.Equals(Roles.Administrator.ToString(), StringComparison.OrdinalIgnoreCase));
            string fileExtension = Path.GetExtension(file.Name).Replace(".", string.Empty);
            IEnumerable<DM.Repository> repositoryList = this.repositoryService.GetRepositoriesByRoleAndFileExtension(isAdmin, fileExtension);
            if (repositoryList.FirstOrDefault(r => r.RepositoryId == repositoryId) == null)
            {
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, MessageStrings.Repository_Not_Found);
            }

            PostPageViewModel postPageViewModel = new PostPageViewModel();
            postPageViewModel.FileId = fileId;
            postPageViewModel.FileName = file.Name;
            postPageViewModel.RepositoryId = repositoryId;
            foreach (DM.Repository dmRepository in repositoryList)
            {
                Models.Repository repository = new Models.Repository()
                {
                    Id = dmRepository.RepositoryId,
                    Name = dmRepository.Name,
                    BaseRepositoryId = dmRepository.BaseRepositoryId,
                    IsImpersonating = dmRepository.IsImpersonating.HasValue && dmRepository.IsImpersonating.Value == true,
                    UserAgreement = dmRepository.UserAgreement
                };

                postPageViewModel.RepositoryList.Add(repository);
            }

            return Request.CreateResponse<PostPageViewModel>(HttpStatusCode.OK, postPageViewModel);
        }
Exemplo n.º 38
0
        public override NCMIS.ObjectModel.PathedCmisObjectList GetChildren(string repositoryId, string folderId, int? maxItems, int skipCount, string orderBy, string filter, IncludeRelationships includeRelationships, string renditionFilter, bool includeAllowableActions, bool includePathSegment)
        {
            Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
            IObjectService folderService = ObjectService.GetService(typeof(Folder));
            string objectId = folderId;
            folderService.TryPraseObjectId(objectId, out folderId);

            FolderType folderType = CmisFolderHelper.IdentifyFolderType(repository, folderId);

            PathedCmisObjectList pathedList = new PathedCmisObjectList();
            IEnumerable<PathedCmisObject> children = folderService.GetChildren(repositoryId, objectId, filter, includeRelationships)
                .Select(it => new PathedCmisObject() { Object = it });

            var count = children.Count();
            pathedList.NumItems = count.ToString();
            pathedList.HasMoreItems = false;

            //IEnumerable<ContentBase> contents = new ContentBase[0];
            if (folderType == FolderType.Content_Folder || folderType == FolderType.Media_Folder)
            {
                var folder = CmisFolderHelper.Parse(repository, folderId).AsActual();
                IContentQuery<ContentBase> contentQuery = null;
                if (folder is TextFolder)
                {
                    var textFolder = (TextFolder)folder;
                    var schema = new Schema(repository, textFolder.SchemaName).AsActual();
                    contentQuery = textFolder.CreateQuery();
                    if (!string.IsNullOrEmpty(filter))
                    {
                        foreach (var item in schema.Columns)
                        {
                            contentQuery = contentQuery.Or(new WhereContainsExpression(null, item.Name, filter));
                        }
                    }
                }
                else
                {
                    var mediaFolder = (TextFolder)folder;
                    contentQuery = mediaFolder.CreateQuery();
                    if (!string.IsNullOrEmpty(filter))
                    {
                        contentQuery = contentQuery.WhereContains("FileName", filter);
                    }
                }
                if (!string.IsNullOrEmpty(orderBy))
                {
                    contentQuery = contentQuery.OrderBy(orderBy);
                }

                count = contentQuery.Count();
                var take = maxItems.HasValue ? maxItems.Value : count;
                pathedList.NumItems = count.ToString();
                pathedList.HasMoreItems = count > count + take;

                children = children.Concat(contentQuery.Select(it => new PathedCmisObject()
                {
                    Object = ObjectConvertor.ToCmis((TextContent)(it), includeRelationships != IncludeRelationships.None)
                }).Take(take));
            }

            pathedList.Objects = children.ToArray();

            return pathedList;
        }
Exemplo n.º 39
0
        private List<Models.Node> parseRepositories(string xml)
        {
            List<Models.Node> repositories = new List<Models.Node>();

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(xml);

            XmlNodeList children = xmlDoc.GetElementsByTagName("repositories").Item(0).ChildNodes;
            foreach (XmlNode child in children)
            {
                Models.Repository repository = new Models.Repository();
                bool add = false;
                foreach (XmlAttribute attribute in child.Attributes)
                {
                    if (attribute.Name.Equals("access_type") && attribute.Value.Equals("fs"))
                    {
                        add = true;
                    }

                    if (attribute.Name.Equals("repositorySlug"))
                    {
                        repository.Id = attribute.Value;
                    }
                    System.Diagnostics.Debug.WriteLine("child:" + child.Name);
                }

                //Getting the label
                if (add)
                {
                    //System.Diagnostics.Debug.WriteLine("Label:" + child.FirstChild.InnerXml);

                    repository.Label = child.FirstChild.InnerXml;
                    repositories.Add(repository);
                }


            }
            return repositories;

        }
Exemplo n.º 40
0
        public CmisObject GetObject(string repositoryId, string objectId)
        {
            string folderId;
            TryPraseObjectId(objectId, out folderId);
            Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
            var folder = CmisFolderHelper.Parse(repository, folderId);

            return ObjectConvertor.ToCmis(folder.AsActual(), false);
        }
Exemplo n.º 41
0
        public void UpdateProperties(string repositoryId, string objectId, CmisProperties properties)
        {
            Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
            string folderId;
            TryPraseObjectId(objectId, out folderId);
            var folder = CmisFolderHelper.Parse(repository, folderId);

            var values = properties.ToNameValueCollection();
            if (folder is TextFolder)
            {
                var textFolder = (TextFolder)folder;

                if (values["DisplayName"] != null)
                {
                    textFolder.DisplayName = values["DisplayName"];
                }
                if (values["SchemaName"] != null)
                {
                    textFolder.SchemaName = values["SchemaName"];
                }
                if (values["CategoryFolders"] != null)
                {
                    textFolder.CategoryFolders = values["CategoryFolders"].Split(",".ToArray(), StringSplitOptions.RemoveEmptyEntries);
                }
                ServiceFactory.TextFolderManager.Update(repository, textFolder, textFolder);
            }
            else
            {
                var mediaFolder = (MediaFolder)folder;
                if (values["DisplayName"] != null)
                {
                    mediaFolder.DisplayName = values["DisplayName"];
                }
                if (values["AllowedExtensions"] != null)
                {
                    mediaFolder.AllowedExtensions = values["AllowedExtensions"].Split(",".ToArray(), StringSplitOptions.RemoveEmptyEntries);
                }
                ServiceFactory.MediaFolderManager.Update(repository, mediaFolder, mediaFolder);
            }
        }
Exemplo n.º 42
0
        public NCMIS.ObjectModel.CmisObject GetParent(string repositoryId, string objectId)
        {
            Kooboo.CMS.Content.Models.Repository repository = new Models.Repository(repositoryId);
            string folderId;

            if (!IsSystemFolder(objectId) && TryPraseObjectId(objectId, out folderId))
            {
                var folder = CmisFolderHelper.Parse(repository, folderId);

                if (folder.Parent != null)
                {
                    return ObjectConvertor.ToCmis(folder.Parent.AsActual(), false);
                }
            }

            return ObjectConvertor.EmptyCmisObject();
        }