﻿/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DotCMIS
{
    public static class SessionParameter
    {
        // ---- general parameter ----
        public const string User = "org.apache.chemistry.dotcmis.user";
        public const string Password = "org.apache.chemistry.dotcmis.password";

        // ---- provider parameter ----
        // Predefined binding types
        public const string BindingType = "org.apache.chemistry.dotcmis.binding.spi.type";

        // Class name of the binding class.
        public const string BindingSpiClass = "org.apache.chemistry.dotcmis.binding.spi.classname";

        // URL of the AtomPub service document.
        public const string AtomPubUrl = "org.apache.chemistry.dotcmis.binding.atompub.url";

        // WSDL URLs for Web Services.
        public const string WebServicesRepositoryService = "org.apache.chemistry.dotcmis.binding.webservices.RepositoryService";
        public const string WebServicesNavigationService = "org.apache.chemistry.dotcmis.binding.webservices.NavigationService";
        public const string WebServicesObjectService = "org.apache.chemistry.dotcmis.binding.webservices.ObjectService";
        public const string WebServicesVersioningService = "org.apache.chemistry.dotcmis.binding.webservices.VersioningService";
        public const string WebServicesDiscoveryService = "org.apache.chemistry.dotcmis.binding.webservices.DiscoveryService";
        public const string WebServicesRelationshipService = "org.apache.chemistry.dotcmis.binding.webservices.RelationshipService";
        public const string WebServicesMultifilingService = "org.apache.chemistry.dotcmis.binding.webservices.MultiFilingService";
        public const string WebServicesPolicyService = "org.apache.chemistry.dotcmis.binding.webservices.PolicyService";
        public const string WebServicesAclService = "org.apache.chemistry.dotcmis.binding.webservices.ACLService";

        // authentication provider
        public const string AuthenticationProviderClass = "org.apache.chemistry.dotcmis.binding.auth.classname";

        // binding caches
        public const string CacheSizeRepositories = "org.apache.chemistry.dotcmis.binding.cache.repositories.size";
        public const string CacheSizeTypes = "org.apache.chemistry.dotcmis.binding.cache.types.size";
        public const string CacheSizeLinks = "org.apache.chemistry.dotcmis.binding.cache.links.size";

        // message size
        public const string MessageSize = "org.apache.chemistry.dotcmis.binding.message.size";

        // session parameter
        public const string ObjectFactoryClass = "org.apache.chemistry.dotcmis.objectfactory.classname";
        public const string CacheClass = "org.apache.chemistry.dotcmis.cache.classname";
        public const string RepositoryId = "org.apache.chemistry.dotcmis.session.repository.id";

        public const string CacheSizeObjects = "org.apache.chemistry.dotcmis.cache.objects.size";
        public const string CacheTTLObjects = "org.apache.chemistry.dotcmis.cache.objects.ttl";
        public const string CacheSizePathToId = "org.apache.chemistry.dotcmis.cache.pathtoid.size";
        public const string CacheTTLPathToId = "org.apache.chemistry.dotcmis.cache.pathtoid.ttl";
        public const string CachePathOmit = "org.apache.chemistry.dotcmis.cache.path.omit";
    }

    public static class BindingType
    {
        public const string AtomPub = "atompub";
        public const string WebServices = "webservices";
        public const string Custom = "custom";
    }

    public static class PropertyIds
    {
        // ---- base ----
        public const string Name = "cmis:name";
        public const string ObjectId = "cmis:objectId";
        public const string ObjectTypeId = "cmis:objectTypeId";
        public const string BaseTypeId = "cmis:baseTypeId";
        public const string CreatedBy = "cmis:createdBy";
        public const string CreationDate = "cmis:creationDate";
        public const string LastModifiedBy = "cmis:lastModifiedBy";
        public const string LastModificationDate = "cmis:lastModificationDate";
        public const string ChangeToken = "cmis:changeToken";

        // ---- document ----
        public const string IsImmutable = "cmis:isImmutable";
        public const string IsLatestVersion = "cmis:isLatestVersion";
        public const string IsMajorVersion = "cmis:isMajorVersion";
        public const string IsLatestMajorVersion = "cmis:isLatestMajorVersion";
        public const string VersionLabel = "cmis:versionLabel";
        public const string VersionSeriesId = "cmis:versionSeriesId";
        public const string IsVersionSeriesCheckedOut = "cmis:isVersionSeriesCheckedOut";
        public const string VersionSeriesCheckedOutBy = "cmis:versionSeriesCheckedOutBy";
        public const string VersionSeriesCheckedOutId = "cmis:versionSeriesCheckedOutId";
        public const string CheckinComment = "cmis:checkinComment";
        public const string ContentStreamLength = "cmis:contentStreamLength";
        public const string ContentStreamMimeType = "cmis:contentStreamMimeType";
        public const string ContentStreamFileName = "cmis:contentStreamFileName";
        public const string ContentStreamId = "cmis:contentStreamId";

        // ---- folder ----
        public const string ParentId = "cmis:parentId";
        public const string AllowedChildObjectTypeIds = "cmis:allowedChildObjectTypeIds";
        public const string Path = "cmis:path";

        // ---- relationship ----
        public const string SourceId = "cmis:sourceId";
        public const string TargetId = "cmis:targetId";

        // ---- policy ----
        public const string PolicyText = "cmis:policyText";
    }

    public static class BasicPermissions
    {
        public const string Read = "cmis:read";
        public const string Write = "cmis:write";
        public const string All = "cmis:all";
    }

    public static class PermissionMappingKeys
    {
        public const string CanGetDescendentsFolder = "canGetDescendents.Folder";
        public const string CanGetChildrenFolder = "canGetChildren.Folder";
        public const string CanGetParentsFolder = "canGetParents.Folder";
        public const string CanGetFolderParentObject = "canGetFolderParent.Object";
        public const string CanCreateDocumentFolder = "canCreateDocument.Folder";
        public const string CanCreateFolderFolder = "canCreateFolder.Folder";
        public const string CanCreateRelationshipSource = "canCreateRelationship.Source";
        public const string CanCreateRelationshipTarget = "canCreateRelationship.Target";
        public const string CanGetPropertiesObject = "canGetProperties.Object";
        public const string CanViewContentObject = "canViewContent.Object";
        public const string CanUpdatePropertiesObject = "canUpdateProperties.Object";
        public const string CanMoveObject = "canMove.Object";
        public const string CanMoveTarget = "canMove.Target";
        public const string CanMoveSource = "canMove.Source";
        public const string CanDeleteObject = "canDelete.Object";
        public const string CanDeleteTreeFolder = "canDeleteTree.Folder";
        public const string CanSetContentDocument = "canSetContent.Document";
        public const string CanDeleteContentDocument = "canDeleteContent.Document";
        public const string CanAddToFolderObject = "canAddToFolder.Object";
        public const string CanAddToFolderFolder = "canAddToFolder.Folder";
        public const string CanRemoveFromFolderObject = "canRemoveFromFolder.Object";
        public const string CanRemoveFromFolderFolder = "canRemoveFromFolder.Folder";
        public const string CanCheckoutDocument = "canCheckout.Document";
        public const string CanCancelCheckoutDocument = "canCancelCheckout.Document";
        public const string CanCheckinDocument = "canCheckin.Document";
        public const string CanGetAllVersionsVersionSeries = "canGetAllVersions.VersionSeries";
        public const string CanGetObjectRelationshipSObject = "canGetObjectRelationships.Object";
        public const string CanAddPolicyObject = "canAddPolicy.Object";
        public const string CanAddPolicyPolicy = "canAddPolicy.Policy";
        public const string CanRemovePolicyObject = "canRemovePolicy.Object";
        public const string CanRemovePolicyPolicy = "canRemovePolicy.Policy";
        public const string CanGetAppliesPoliciesObject = "canGetAppliedPolicies.Object";
        public const string CanGetAclObject = "canGetAcl.Object";
        public const string CanApplyAclObject = "canApplyAcl.Object";
    }

    public static class Actions
    {
        public const string CanDeleteObject = "canDeleteObject";
        public const string CanUpdateProperties = "canUpdateProperties";
        public const string CanGetProperties = "canGetProperties";
        public const string CanGetObjectRelationships = "canGetObjectRelationships";
        public const string CanGetObjectParents = "canGetObjectParents";
        public const string CanGetFolderParent = "canGetFolderParent";
        public const string CanGetFolderTree = "canGetFolderTree";
        public const string CanGetDescendants = "canGetDescendants";
        public const string CanMoveObject = "canMoveObject";
        public const string CanDeleteContentStream = "canDeleteContentStream";
        public const string CanCheckOut = "canCheckOut";
        public const string CanCancelCheckOut = "canCancelCheckOut";
        public const string CanCheckIn = "canCheckIn";
        public const string CanSetContentStream = "canSetContentStream";
        public const string CanGetAllVersions = "canGetAllVersions";
        public const string CanAddObjectToFolder = "canAddObjectToFolder";
        public const string CanRemoveObjectFromFolder = "canRemoveObjectFromFolder";
        public const string CanGetContentStream = "canGetContentStream";
        public const string CanApplyPolicy = "canApplyPolicy";
        public const string CanGetAppliedPolicies = "canGetAppliedPolicies";
        public const string CanRemovePolicy = "canRemovePolicy";
        public const string CanGetChildren = "canGetChildren";
        public const string CanCreateDocument = "canCreateDocument";
        public const string CanCreateFolder = "canCreateFolder";
        public const string CanCreateRelationship = "canCreateRelationship";
        public const string CanDeleteTree = "canDeleteTree";
        public const string CanGetRenditions = "canGetRenditions";
        public const string CanGetAcl = "canGetACL";
        public const string CanApplyAcl = "canApplyACL";
    }

    internal static class AtomPubConstants
    {
        // namespaces
        public const string NamespaceCMIS = "http://docs.oasis-open.org/ns/cmis/core/200908/";
        public const string NamespaceAtom = "http://www.w3.org/2005/Atom";
        public const string NamespaceAPP = "http://www.w3.org/2007/app";
        public const string NamespaceRestAtom = "http://docs.oasis-open.org/ns/cmis/restatom/200908/";
        public const string NamespaceXSI = "http://www.w3.org/2001/XMLSchema-instance";

        // media types
        public const string MediatypeService = "application/atomsvc+xml";
        public const string MediatypeFeed = "application/atom+xml;type=feed";
        public const string MediatypeEntry = "application/atom+xml;type=entry";
        public const string MediatypeChildren = MediatypeFeed;
        public const string MediatypeDescendants = "application/cmistree+xml";
        public const string MediatypeQuery = "application/cmisquery+xml";
        public const string MediatypeAllowableAction = "application/cmisallowableactions+xml";
        public const string MediatypeACL = "application/cmisacl+xml";
        public const string MediatypeCMISAtom = "application/cmisatom+xml";
        public const string MediatypeOctetStream = "application/octet-stream";

        // collections
        public const string CollectionRoot = "root";
        public const string CollectionTypes = "types";
        public const string CollectionQuery = "query";
        public const string CollectionCheckedout = "checkedout";
        public const string CollectionUnfiled = "unfiled";

        // URI templates
        public const string TemplateObjectById = "objectbyid";
        public const string TemplateObjectByPath = "objectbypath";
        public const string TemplateTypeById = "typebyid";
        public const string TemplateQuery = "query";

        // Link rel
        public const string RelSelf = "self";
        public const string RelEnclosure = "enclosure";
        public const string RelService = "service";
        public const string RelDescribedBy = "describedby";
        public const string RelAlternate = "alternate";
        public const string RelDown = "down";
        public const string RelUp = "up";
        public const string RelFirst = "first";
        public const string RelLast = "last";
        public const string RelPrev = "previous";
        public const string RelNext = "next";
        public const string RelVia = "via";
        public const string RelEdit = "edit";
        public const string RelEditMedia = "edit-media";
        public const string RelVersionHistory = "version-history";
        public const string RelCurrentVersion = "current-version";
        public const string RelWorkingCopy = "working-copy";
        public const string RelFolderTree = "http://docs.oasis-open.org/ns/cmis/link/200908/foldertree";
        public const string RelAllowableActions = "http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions";
        public const string RelACL = "http://docs.oasis-open.org/ns/cmis/link/200908/acl";
        public const string RelSource = "http://docs.oasis-open.org/ns/cmis/link/200908/source";
        public const string RelTarget = "http://docs.oasis-open.org/ns/cmis/link/200908/target";
        public const string RelRelationships = "http://docs.oasis-open.org/ns/cmis/link/200908/relationships";
        public const string RelPolicies = "http://docs.oasis-open.org/ns/cmis/link/200908/policies";

        public const string RepRelTypeDesc = "http://docs.oasis-open.org/ns/cmis/link/200908/typedescendants";
        public const string RepRelFolderTree = "http://docs.oasis-open.org/ns/cmis/link/200908/foldertree";
        public const string RepRelRootDesc = "http://docs.oasis-open.org/ns/cmis/link/200908/rootdescendants";
        public const string RepRelChanges = "http://docs.oasis-open.org/ns/cmis/link/200908/changes";

        // parameter
        public const string ParamACL = "includeACL";
        public const string ParamAllowableActions = "includeAllowableActions";
        public const string ParamAllVersions = "allVersions";
        public const string ParamChangeLogToken = "changeLogToken";
        public const string ParamChangeToken = "changeToken";
        public const string ParamCheckinComment = "checkinComment";
        public const string ParamCheckIn = "checkin";
        public const string ParamChildTypes = "childTypes";
        public const string ParamContinueOnFailure = "continueOnFailure";
        public const string ParamDepth = "depth";
        public const string ParamFilter = "filter";
        public const string ParamFolderId = "folderId";
        public const string ParamId = "id";
        public const string ParamMajor = "major";
        public const string ParamMaxItems = "maxItems";
        public const string ParamObjectId = "objectId";
        public const string ParamOnlyBasicPermissions = "onlyBasicPermissions";
        public const string ParamOrderBy = "orderBy";
        public const string ParamOverwriteFlag = "overwriteFlag";
        public const string ParamPath = "path";
        public const string ParamPathSegment = "includePathSegment";
        public const string ParamPolicyId = "policyId";
        public const string ParamPolicyIds = "includePolicyIds";
        public const string ParamProperties = "includeProperties";
        public const string ParamPropertyDefinitions = "includePropertyDefinitions";
        public const string ParamRelationships = "includeRelationships";
        public const string ParamRelationshipDirection = "relationshipDirection";
        public const string ParamRelativePathSegment = "includeRelativePathSegment";
        public const string ParamRemoveFrom = "removeFrom";
        public const string ParamRenditionFilter = "renditionFilter";
        public const string ParamRepositoryId = "repositoryId";
        public const string ParamReturnVersion = "returnVersion";
        public const string ParamSkipCount = "skipCount";
        public const string ParamSourceFolderId = "sourceFolderId";
        public const string ParamStreamId = "streamId";
        public const string ParamSubRelationshipTypes = "includeSubRelationshipTypes";
        public const string ParamTypeId = "typeId";
        public const string ParamUnfildeObjects = "unfileObjects";
        public const string ParamVersioningState = "versioningState";
        public const string ParamQ = "q";
        public const string ParamSearchAllVersions = "searchAllVersions";
        public const string ParamACLPropagation = "ACLPropagation";

        // rendition filter
        public const string RenditionNone = "cmis:none";

        // service doc
        public const string TagService = "service";
        public const string TagWorkspace = "workspace";
        public const string TagRepositoryInfo = "repositoryInfo";
        public const string TagCollection = "collection";
        public const string TagCollectionType = "collectionType";
        public const string TagUriTemplate = "uritemplate";
        public const string TagTemplateTemplate = "template";
        public const string TagTemplateType = "type";
        public const string TagLink = "link";

        // atom
        public const string TagAtomId = "id";
        public const string TagAtomTitle = "title";
        public const string TagAtomUpdated = "updated";

        // feed
        public const string TagFeed = "feed";

        // entry
        public const string TagEntry = "entry";
        public const string TagObject = "object";
        public const string TagNumItems = "numItems";
        public const string TagPathSegment = "pathSegment";
        public const string TagRelativePathSegment = "relativePathSegment";
        public const string TagType = "type";
        public const string TagChildren = "children";
        public const string TagContent = "content";
        public const string TagContentMediatype = "mediatype";
        public const string TagContentBase64 = "base64";

        // allowable actions
        public const string TagAllowableActions = "allowableActions";

        // ACL
        public const string TagACL = "acl";

        // query
        public const string TagQuery = "query";
        public const string TagStatement = "statement";
        public const string TagSearchAllVersions = "searchAllVersions";
        public const string TagIncludeAllowableActions = "includeAllowableActions";
        public const string TagRenditionFilter = "renditionFilter";
        public const string TagIncludeRelationships = "includeRelationships";
        public const string TagMaxItems = "maxItems";
        public const string TagSkipCount = "skipCount";

        // links
        public const string LinkRel = "rel";
        public const string LinkHref = "href";
        public const string LinkType = "type";
        public const string ContentSrc = "src";
        public const string LinkRelContent = "@@content@@";
    }
}
