﻿/*
 * 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.
 */

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";

        public const string WebServicesWCFBinding = "org.apache.chemistry.dotcmis.binding.webservices.wcfbinding";
        public const string WebServicesOpenTimeout = "org.apache.chemistry.dotcmis.binding.webservices.openTimeout";
        public const string WebServicesCloseTimeout = "org.apache.chemistry.dotcmis.binding.webservices.closeTimeout";
        public const string WebServicesSendTimeout = "org.apache.chemistry.dotcmis.binding.webservices.sendTimeout";
        public const string WebServicesReceiveTimeout = "org.apache.chemistry.dotcmis.binding.webservices.receiveTimeout";

        public const string WebServicesEnableUnsecuredResponse = "org.apache.chemistry.dotcmis.binding.webservices.enableUnsecuredResponse"; // requires hotfix 971493 or the .NET framework 4 

        // authentication provider
        public const string AuthenticationProviderClass = "org.apache.chemistry.dotcmis.binding.auth.classname";

        // compression flag
        public const string Compression = "org.apache.chemistry.dotcmis.binding.compression";

        // 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@@";
    }
}
