/* * (C) Copyright 2006-2016 Nuxeo SA (http://nuxeo.com/) and others. * * 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. * * Contributors: * Florent Guillaume */ package org.nuxeo.ecm.core.query.sql; /** * This defines the constants for NXQL queries. * * @author Florent Guillaume */ public class NXQL { // constant utility class private NXQL() { } /** The NXQL query type. */ public static final String NXQL = "NXQL"; public static final String ECM_PREFIX = "ecm:"; public static final String ECM_UUID = "ecm:uuid"; public static final String ECM_PATH = "ecm:path"; public static final String ECM_NAME = "ecm:name"; public static final String ECM_POS = "ecm:pos"; public static final String ECM_PARENTID = "ecm:parentId"; public static final String ECM_MIXINTYPE = "ecm:mixinType"; public static final String ECM_PRIMARYTYPE = "ecm:primaryType"; public static final String ECM_ISPROXY = "ecm:isProxy"; public static final String ECM_ISVERSION = "ecm:isVersion"; /** * @since 5.7.3 */ public static final String ECM_ISVERSION_OLD = "ecm:isCheckedInVersion"; public static final String ECM_LIFECYCLESTATE = "ecm:currentLifeCycleState"; public static final String ECM_VERSIONLABEL = "ecm:versionLabel"; public static final String ECM_FULLTEXT = "ecm:fulltext"; public static final String ECM_FULLTEXT_JOBID = "ecm:fulltextJobId"; /** * @since 6.0 */ public static final String ECM_FULLTEXT_SCORE = "ecm:fulltextScore"; /** * @since 5.4.2 */ public static final String ECM_LOCK_OWNER = "ecm:lockOwner"; /** * @since 5.4.2 */ public static final String ECM_LOCK_CREATED = "ecm:lockCreated"; /** * @since 5.7 */ public static final String ECM_TAG = "ecm:tag"; /** * @since 5.7 */ public static final String ECM_PROXY_TARGETID = "ecm:proxyTargetId"; /** * @since 5.7 */ public static final String ECM_PROXY_VERSIONABLEID = "ecm:proxyVersionableId"; /** * @since 5.7.3 */ public static final String ECM_ISCHECKEDIN = "ecm:isCheckedIn"; /** * @since 5.7.3 */ public static final String ECM_ISLATESTVERSION = "ecm:isLatestVersion"; /** * @since 5.7.3 */ public static final String ECM_ISLATESTMAJORVERSION = "ecm:isLatestMajorVersion"; /** * @since 5.7.3 */ public static final String ECM_VERSIONCREATED = "ecm:versionCreated"; /** * @since 5.7.3 */ public static final String ECM_VERSIONDESCRIPTION = "ecm:versionDescription"; /** * @since 5.7.3 */ public static final String ECM_VERSION_VERSIONABLEID = "ecm:versionVersionableId"; /** * @since 6.0 */ public static final String ECM_ANCESTORID = "ecm:ancestorId"; /** * @since 6.0-HF06, 7.2 */ public static final String ECM_ACL = "ecm:acl"; /** * Suffix for ecm:acl, like in {@code ecm:acl/}{@code *}{@code /principal} * * @since 6.0-HF06, 7.2 */ public static final String ECM_ACL_PRINCIPAL = "principal"; /** * Suffix for ecm:acl, like in {@code ecm:acl/}{@code *}{@code /permission} * * @since 6.0-HF06, 7.2 */ public static final String ECM_ACL_PERMISSION = "permission"; /** * Suffix for ecm:acl, like in {@code ecm:acl/}{@code *}{@code /grant} * * @since 6.0-HF06, 7.2 */ public static final String ECM_ACL_GRANT = "grant"; /** * Suffix for ecm:acl, like in {@code ecm:acl/}{@code *}{@code /name} * * @since 6.0-HF06, 7.2 */ public static final String ECM_ACL_NAME = "name"; /** * Suffix for ecm:acl, like in {@code ecm:acl/}{@code *}{@code /pos} * * @since 6.0-HF06, 7.2 */ public static final String ECM_ACL_POS = "pos"; /** * Suffix for ecm:acl, like in {@code ecm:acl/}{@code *}{@code /creator} * * @since 7.4 */ public static final String ECM_ACL_CREATOR = "creator"; /** * Suffix for ecm:acl, like in {@code ecm:acl/}{@code *}{@code /begin} * * @since 7.4 */ public static final String ECM_ACL_BEGIN = "begin"; /** * Suffix for ecm:acl, like in {@code ecm:acl/}{@code *}{@code /end} * * @since 7.4 */ public static final String ECM_ACL_END = "end"; /** * Suffix for ecm:acl, like in {@code ecm:acl/}{@code *}{@code /status} * * @since 7.4 */ public static final String ECM_ACL_STATUS = "status"; /** * Escapes a string into a single-quoted string for NXQL. * <p> * Any single quote or backslash characters are escaped with a backslash. * * @param s the string to escape * @return the escaped string * @since 5.7, 5.6.0-HF08 */ public static String escapeString(String s) { return "'" + escapeStringInner(s) + "'"; } /** * Escapes a string (assumed to be single quoted) for NXQL. * <p> * Any single quote or backslash characters are escaped with a backslash. * * @param s the string to escape * @return the escaped string, without external quotes * @since 5.7, 5.6.0-HF08 */ public static String escapeStringInner(String s) { // backslash -> backslash backslash // quote -> backslash quote // newline -> backslash n return s.replaceAll("\\\\", "\\\\\\\\").replaceAll("'", "\\\\'").replaceAll("\n", "\\\\n"); } }