# GovernanceConstants.java

    /*
     * Copyright (c) 2008-2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
     *
     * Licensed 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.
     */
    package org.wso2.carbon.governance.api.util;

    import org.wso2.carbon.registry.core.RegistryConstants;
    import org.wso2.carbon.registry.extensions.utils.CommonConstants;

    /**
     * Constants used by the governance API.
     */
    public class GovernanceConstants {

        /**
         * Association type for dependencies.
         */
        public static final String DEPENDS = CommonConstants.DEPENDS;

        /**
         * Association type of usages.
         */
        public static final String USED_BY = CommonConstants.USED_BY;

        /**
         * Association type for people owning an artifact.
         */
        public static final String OWNS = CommonConstants.OWNS;

        /**
         * Association type for people owning an artifact.
         */
        public static final String OWNED_BY = CommonConstants.OWNED_BY;

        /**
         * Association type for people consuming a service
         */
        public static final String CONSUMES = CommonConstants.CONSUMES;

        /**
         * Association type for services consumed by people
         */
        public static final String CONSUMED_BY = CommonConstants.CONSUMED_BY;

        /**
         * Association type for a sub-group of another group
         */
        public static final String IS_PART_OF = "isPartOf"; //TODO: Move to CommonConstants??

        /**
         * Association type for a group having a sub-group
         */
        public static final String SUB_GROUP = "subGroup";

        /**
         * The id of the cache that will be used sync RXT configurations
         */
        public static final String RXT_CONFIG_CACHE_ID = "RXT_CONFIG_CACHE";
        /**
         *
         */
        public static final String SERVICE_ARTIFACT_KEY = "service";

        /**
         * This is the character used in configured governance artifact (service, people, sla, etc..)
         * xml content to separate an entry name and a value
         */
        public static final String ENTRY_VALUE_SEPARATOR = ":";

        @Deprecated
        public static final String DOT = ".";

        /**
         * This is the character used in lifecycle property keys
         */
        public static final String LIFECYCLE_PROPERTY_SEPERATOR = ".";

        /**
         * The index path of the governance artifacts.
         */
        public static final String GOVERNANCE_ARTIFACT_INDEX_PATH =
                CommonConstants.GOVERNANCE_ARTIFACT_INDEX_PATH;

        /**
         * The key of the artifact id property.
         */
    //    public static final String ARTIFACT_ID_PROP_KEY =
    //            CommonConstants.ARTIFACT_ID_PROP_KEY;

        ////////////////////////////////////////////////////////
        // Media types
        ////////////////////////////////////////////////////////

        /**
         * Media type of a artifact configuration file.
         */
        public static final String GOVERNANCE_ARTIFACT_CONFIGURATION_MEDIA_TYPE =
                "application/vnd.wso2.registry-ext-type+xml";

        /**
         * Media type of a policy artifact.
         */
        public static final String POLICY_XML_MEDIA_TYPE = "application/policy+xml";

        /**
         * Media type of a WSDL artifact.
         */
        public static final String WSDL_MEDIA_TYPE = "application/wsdl+xml";

        /**
         * Media type of a process artifact.
         */
        public static final String PROCESS_MEDIA_TYPE = "application/vnd.wso2-process+xml";

        /**
         * Media type of a sla artifact.
         */
        public static final String SLA_MEDIA_TYPE = "application/vnd.wso2-sla+xml";

        /**
         * Media type of a service artifact.
         */
        public static final String SERVICE_MEDIA_TYPE = RegistryConstants.SERVICE_MEDIA_TYPE;

        /**
         * Version of a  service artifact.
         */
        public static final String SERVICE_VERSION_ATTRIBUTE = "overview_version";

        /**
         * Media type of a consumer artifact
         */
        public static final String PEOPLE_MEDIA_TYPE = "application/vnd.wso2-people+xml";

        /**
         * Media type of a endpoint artifact.
         */
        public static final String ENDPOINT_MEDIA_TYPE = CommonConstants.ENDPOINT_MEDIA_TYPE;

        /**
         * Media type of a schema artifact.
         */
        public static final String SCHEMA_MEDIA_TYPE = "application/x-xsd+xml";

        ////////////////////////////////////////////////////////
        // Constants related to services
        ////////////////////////////////////////////////////////

        /**
         * The root element of the content of the service artifact.
         */
        public static final String SERVICE_ELEMENT_ROOT = CommonConstants.SERVICE_ELEMENT_ROOT;
        /**
         * The name attribute of the service artifact.
         */
        public static final String SERVICE_NAME_ATTRIBUTE = CommonConstants.SERVICE_NAME_ATTRIBUTE;

        /**
         * The common namespace used by the service artifacts.
         */
        public static final String SERVICE_ELEMENT_NAMESPACE =
                CommonConstants.SERVICE_ELEMENT_NAMESPACE;

        /**
         * The namespace attribute of the service artifact. This is the namespace of the particular
         * service.
         */
        public static final String SERVICE_NAMESPACE_ATTRIBUTE =
                CommonConstants.SERVICE_NAMESPACE_ATTRIBUTE;

        /**
         * The WSDL attribute of the service artifact.
         */
        public static final String SERVICE_WSDL_ATTRIBUTE = CommonConstants.SERVICE_WSDL_ATTRIBUTE;

        /**
         * The owner attribute of the service artifact.
         */
        public static final String SERVICE_OWNERS_ATTRIBUTE = CommonConstants.SERVICE_OWNERS_ATTRIBUTE;

        /**
         * The owner attribute of the service artifact.
         */
        public static final String SERVICE_CONSUMERS_ATTRIBUTE = CommonConstants.SERVICE_CONSUMERS_ATTRIBUTE;
        //TODO: Remove these constants from CommonConstants
        /**
         * The BPEL attribute of the process artifact.
         */
        public static final String PROCESS_BPEL_ATTRIBUTE = CommonConstants.PROCESS_BPEL_ATTRIBUTE;

        ////////////////////////////////////////////////////////
        // Constants related to people
        ////////////////////////////////////////////////////////

        /**
         * The root element of the content of a People artifact.
         */
        public static final String PEOPLE_ELEMENT_ROOT = CommonConstants.PEOPLE_ELEMENT_ROOT;

        /**
         * The group attribute of a people artifact.
         */
        public static final String PEOPLE_GROUP_ATTRIBUTE = "overview_group";

        /**
         * The type attribute of a people artifact.
         */
        public static final String PEOPLE_TYPE_ATTRIBUTE = "overview_type";

        /**
         * The affiliations attribute of a people artifact. (applicable to project groups and persons)
         */
        public static final String AFFILIATIONS_ATTRIBUTE = "affiliations_entry";

        /**
         * The group attribute value for person types.
         */
        public static final String PEOPLE_GROUP_ATTRIBUTE_VALUE_PERSON = "person";
        /**
         * The group attribute value for organization types.
         */
        public static final String PEOPLE_GROUP_ATTRIBUTE_VALUE_ORGANIZATION = "organization";

        /**
         * The group attribute value for department types.
         */
        public static final String PEOPLE_GROUP_ATTRIBUTE_VALUE_DEPARTMENT = "department";

        /**
         * The group attribute value for project group types.
         */
        public static final String PEOPLE_GROUP_ATTRIBUTE_VALUE_PROJECT_GROUP = "project_group";

        /**
         * The person's type attribute for a consumer type person.
         */
        public static final String PEOPLE_TYPE_ATTRIBUTE_VALUE_CONSUMER = "consumer";

    /**
         * The person's type attribute for a internal type person.
         */
        public static final String PEOPLE_TYPE_ATTRIBUTE_VALUE_INTERNAL = "internal";

    /**
         * The person's type attribute for a provider type person.
         */
        public static final String PEOPLE_TYPE_ATTRIBUTE_VALUE_PROVIDER = "provider";
        /*
         This the path which save the content of configurations.
         */
        public static final String ARTIFACT_CONTENT_PATH="/_system/config/repository/components/org.wso2.carbon.governance/configuration/";

       /*
         This is the path which save the rxt config files.
         */
       public static final String RXT_CONFIGS_PATH = RegistryConstants.GOVERNANCE_REGISTRY_BASE_PATH +
               RegistryConstants.GOVERNANCE_COMPONENT_PATH + RegistryConstants.PATH_SEPARATOR + "types";

        /**
         * Defines the environment change of the resource in order to be used in creating notifications
         */
        public static final String REGISTRY_IS_ENVIRONMENT_CHANGE = "registry.is.environment.change.property";
         //Default service name
        public static final String DEFAULT_SERVICE_NAME="C0E6D4A8-C446-4f01-99DB-70E212685A40";
        // Default service namespace
        public static final String DEFAULT_NAMESPACE=".*";

        public static final String PRE_FETCH_TASK = "PRE_FETCH_TASK";

        public static final String PRE_FETCH_TASK_CLASS = "org.wso2.carbon.governance.list.util.task.PreFetchTask";

        public static final String TASK_CLASS = "taskClass";

        public static final String ARTIFACT_TYPE = "artifactType";

        public static final class ArtifactTypes {

            private ArtifactTypes() {
                throw new AssertionError();
            }

            public static String SERVICE = "SERVICE";
            public static String WSDL = "WSDL";
            public static String POLICY = "POLICY";
            public static String SCHEMA = "SCHEMA";
            public static String GENERIC = "GENERIC";
        }

        /**
         * The name attribute.
         */
        public static final String NAME_ATTRIBUTE = "overview_name";

        /**
         * The version attribute.
         */
        public static final String VERSION_ATTRIBUTE = "overview_version";

        //lifecycle history path relative to governace registyr
        // Ex:repository/components/org.wso2.carbon.governance/lifecycles/history
        public static final String LIFECYCLE_HISTORY_PATH = RegistryConstants.GOVERNANCE_COMPONENT_PATH
                                                            + RegistryConstants.PATH_SEPARATOR + "lifecycles/history/";

        /**
         * Defines the prefix of the state property
         */
        public static final String REGISTRY_LIFECYCLE = "registry.lifecycle.";

        /**
         * Defines the lifecycle name property
         */
        public static final String REGISTRY_LIFECYCLE_NAME_PROPERTY = "registry.LC.name";

        /**
         * Defines the registry aspects property
         */
        public static final String REGISTRY_ASPECTS_PROPERTY = "registry.Aspects";

        /**
         * Defines the prefix of the custom lifecycle votes property
         */
        public static final String REGISTRY_CUSTOM_LC_VOTES_PROPERTY = "registry.custom_lifecycle.votes.";

        /**
         * Defines the prefix of the custom lifecycle user property
         */
        public static final String REGISTRY_CUSTOM_LC_USER_PROPERTY = "registry.custom_lifecycle.user.";

        /**
         * Defines the prefix of the custom lifecycle checklist property
         */
        public static final String REGISTRY_CUSTOM_LC_CHECKLIST_PROPERTY = "registry.custom_lifecycle.checklist.";

        /**
         * lifecycle checkpoint boundary lower boundary QName.
         */
        public static final String LIFECYCLE_LOWER_BOUNDARY = "min";

        /**
         * lifecycle checkpoint boundary upper boundary QName.
         */
        public static final String LIFECYCLE_UPPER_BOUNDARY = "max";

        /**
         * lifecycle checkpoint duration colour QName.
         */
        public static final String LIFECYCLE_DURATION_COLOUR = "durationColour";

        /**
         * lifecycle checkpoint duration colour QName.
         */
        public static final String LIFECYCLE_DURATION= "currentStateDuration";

        /**
         * lifecycle checkpoint name QName.
         */
        public static final String LIFECYCLE_CHECKPOINT_ID = "id";

        /**
         * This is the character used in lifecycle checkpoint.
         */
        public static final String CHECKPOINT = ".checkpoint";

        /**
         * This is the character used in lifecycle checkpoint.
         */
        public static final String LAST_UPDATED_TIME = ".lastStateUpdatedTime";

    }