[exo-jcr-commits] exo-jcr SVN: r4681 - jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Jul 27 09:44:30 EDT 2011
Author: sergiykarpenko
Date: 2011-07-27 09:44:30 -0400 (Wed, 27 Jul 2011)
New Revision: 4681
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MSSQLMultiDbJDBCConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MSSQLSingleDbJDBCConnection.java
Log:
EXOJCR-1393: mssql range pattern symbols escape added
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MSSQLMultiDbJDBCConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MSSQLMultiDbJDBCConnection.java 2011-07-26 11:44:20 UTC (rev 4680)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MSSQLMultiDbJDBCConnection.java 2011-07-27 13:44:30 UTC (rev 4681)
@@ -75,7 +75,7 @@
+ " from JCR_SITEM I where I.I_CLASS=1) as A where A.r__ <= ? and A.r__ > ?) J on P.PARENT_ID = J.ID"
+ " where P.I_CLASS=2 and V.PROPERTY_ID=P.ID order by J.ID";
}
-
+
/**
* {@inheritDoc}
*/
@@ -95,5 +95,36 @@
findNodesAndProperties.setInt(2, offset);
return findNodesAndProperties.executeQuery();
- }
+ }
+
+ /**
+ * Replace underscore in pattern with escaped symbol. Replace jcr-wildcard '*' with sql-wildcard '%'.
+ * <p>
+ * MSSQL have a range pattern '[..]' so we need to escape it too.
+ *
+ * @param pattern
+ * @return pattern with escaped underscore and fixed wildcard symbols
+ */
+ protected String fixEscapeSymbols(String pattern)
+ {
+ char[] chars = pattern.toCharArray();
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < chars.length; i++)
+ {
+ switch (chars[i])
+ {
+ case '*' :
+ sb.append('%');
+ break;
+ case '_' :
+ case '%' :
+ case '[' :
+ case ']' :
+ sb.append(getWildcardEscapeSymbold());
+ default :
+ sb.append(chars[i]);
+ }
+ }
+ return sb.toString();
+ }
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MSSQLSingleDbJDBCConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MSSQLSingleDbJDBCConnection.java 2011-07-26 11:44:20 UTC (rev 4680)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MSSQLSingleDbJDBCConnection.java 2011-07-27 13:44:30 UTC (rev 4681)
@@ -78,7 +78,7 @@
+ " ) J on P.PARENT_ID = J.ID"
+ " where P.I_CLASS=2 and P.CONTAINER_NAME=? and V.PROPERTY_ID=P.ID order by J.ID";
}
-
+
/**
* {@inheritDoc}
*/
@@ -100,5 +100,37 @@
findNodesAndProperties.setString(4, containerName);
return findNodesAndProperties.executeQuery();
- }
+ }
+
+ /**
+ * Replace underscore in pattern with escaped symbol. Replace jcr-wildcard '*' with sql-wildcard '%'.
+ * <p>
+ * MSSQL have a range pattern '[..]' so we need to escape it too.
+ *
+ * @param pattern
+ * @return pattern with escaped underscore and fixed wildcard symbols
+ */
+ protected String fixEscapeSymbols(String pattern)
+ {
+ char[] chars = pattern.toCharArray();
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < chars.length; i++)
+ {
+ switch (chars[i])
+ {
+ case '*' :
+ sb.append('%');
+ break;
+ case '_' :
+ case '%' :
+ case '[' :
+ case ']' :
+ sb.append(getWildcardEscapeSymbold());
+ default :
+ sb.append(chars[i]);
+ }
+ }
+ return sb.toString();
+ }
+
}
More information about the exo-jcr-commits
mailing list