/*
* Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* 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";
/** @deprecated since 5.4.2, use {@link #ECM_LOCK_OWNER} instead */
@Deprecated
public static final String ECM_LOCK = "ecm:lock";
/** @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";
/**
* 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
return s.replaceAll("\\\\", "\\\\\\\\").replaceAll("'", "\\\\'");
}
}