db-ddlutils-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From to...@apache.org
Subject svn commit: r635262 - in /db/ddlutils/trunk: ./ lib/ src/java/org/apache/ddlutils/io/converters/ src/java/org/apache/ddlutils/platform/db2/ src/java/org/apache/ddlutils/platform/mssql/ src/java/org/apache/ddlutils/platform/oracle/ src/java/org/apache/d...
Date Sun, 09 Mar 2008 15:40:50 GMT
Author: tomdz
Date: Sun Mar  9 08:40:47 2008
New Revision: 635262

URL: http://svn.apache.org/viewvc?rev=635262&view=rev
Log:
Implementation of DDLUTILS-198: Replace Jakarta ORO regular expressions with Java 1.4 regular
expressions

Removed:
    db/ddlutils/trunk/lib/jakarta-oro-2.0.8.jar
Modified:
    db/ddlutils/trunk/.classpath
    db/ddlutils/trunk/src/java/org/apache/ddlutils/io/converters/DateConverter.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/io/converters/TimeConverter.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/db2/Db2ModelReader.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlModelReader.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8Builder.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8ModelReader.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java
    db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java

Modified: db/ddlutils/trunk/.classpath
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/.classpath?rev=635262&r1=635261&r2=635262&view=diff
==============================================================================
--- db/ddlutils/trunk/.classpath (original)
+++ db/ddlutils/trunk/.classpath Sun Mar  9 08:40:47 2008
@@ -10,7 +10,6 @@
 	<classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.7.0.jar"/>
 	<classpathentry exported="true" kind="lib" path="lib/commons-lang-2.1.jar"/>
 	<classpathentry exported="true" kind="lib" path="lib/commons-codec-1.3.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/jakarta-oro-2.0.8.jar"/>
 	<classpathentry kind="lib" path="lib/build-only/ant-1.6.5.jar"/>
 	<classpathentry kind="lib" path="lib/build-only/junit-3.8.2.jar"/>
 	<classpathentry kind="lib" path="lib/stax-api-1.0.1.jar"/>

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/io/converters/DateConverter.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/io/converters/DateConverter.java?rev=635262&r1=635261&r2=635262&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/io/converters/DateConverter.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/io/converters/DateConverter.java Sun Mar
 9 08:40:47 2008
@@ -22,14 +22,11 @@
 import java.sql.Date;
 import java.sql.Types;
 import java.util.Calendar;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
 
 import org.apache.ddlutils.DdlUtilsException;
-import org.apache.oro.text.regex.MalformedPatternException;
-import org.apache.oro.text.regex.MatchResult;
-import org.apache.oro.text.regex.Pattern;
-import org.apache.oro.text.regex.PatternCompiler;
-import org.apache.oro.text.regex.Perl5Compiler;
-import org.apache.oro.text.regex.Perl5Matcher;
 
 /**
  * Converts between {@link java.sql.Date} and {@link java.lang.String} using the standard
@@ -49,13 +46,11 @@
 	 */
 	public DateConverter()
 	{
-        PatternCompiler compiler = new Perl5Compiler();
-
         try
         {
-            _datePattern = compiler.compile("(\\d{2,4})(?:\\-(\\d{2}))?(?:\\-(\\d{2}))?.*");
+            _datePattern = Pattern.compile("(\\d{2,4})(?:\\-(\\d{2}))?(?:\\-(\\d{2}))?.*");
         }
-        catch (MalformedPatternException ex)
+        catch (PatternSyntaxException ex)
         {
             throw new DdlUtilsException(ex);
         }
@@ -77,26 +72,25 @@
         {
             // we're not using {@link java.sql.Date#valueOf(String)} as this method is too
strict
             // it only parses the full spec "yyyy-mm-dd"
-            Perl5Matcher matcher = new Perl5Matcher();
-            int          year    = 1970;
-            int          month   = 1;
-            int          day     = 1;
+            Matcher matcher = _datePattern.matcher(textRep);
+            int     year    = 1970;
+            int     month   = 1;
+            int     day     = 1;
 
-            if (matcher.matches(textRep, _datePattern))
+            if (matcher.matches())
             {
-                MatchResult match     = matcher.getMatch();
-                int         numGroups = match.groups();
+                int numGroups = matcher.groupCount();
 
                 try
                 {
-                    year = Integer.parseInt(match.group(1));
-                    if ((numGroups > 2) && (match.group(2) != null))
+                    year = Integer.parseInt(matcher.group(1));
+                    if ((numGroups >= 2) && (matcher.group(2) != null))
                     {
-                        month = Integer.parseInt(match.group(2));
+                        month = Integer.parseInt(matcher.group(2));
                     }
-                    if ((numGroups > 3) && (match.group(3) != null))
+                    if ((numGroups >= 3) && (matcher.group(3) != null))
                     {
-                        day = Integer.parseInt(match.group(3));
+                        day = Integer.parseInt(matcher.group(3));
                     }
                 }
                 catch (NumberFormatException ex)

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/io/converters/TimeConverter.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/io/converters/TimeConverter.java?rev=635262&r1=635261&r2=635262&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/io/converters/TimeConverter.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/io/converters/TimeConverter.java Sun Mar
 9 08:40:47 2008
@@ -22,14 +22,11 @@
 import java.sql.Time;
 import java.sql.Types;
 import java.util.Calendar;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
 
 import org.apache.ddlutils.DdlUtilsException;
-import org.apache.oro.text.regex.MalformedPatternException;
-import org.apache.oro.text.regex.MatchResult;
-import org.apache.oro.text.regex.Pattern;
-import org.apache.oro.text.regex.PatternCompiler;
-import org.apache.oro.text.regex.Perl5Compiler;
-import org.apache.oro.text.regex.Perl5Matcher;
 
 /**
  * Converts between {@link java.sql.Time} and {@link java.lang.String} using the standard
@@ -49,13 +46,11 @@
 	 */
 	public TimeConverter()
 	{
-        PatternCompiler compiler = new Perl5Compiler();
-
         try
         {
-            _timePattern = compiler.compile("(?:\\d{4}\\-\\d{2}\\-\\d{2}\\s)?(\\d{2})(?::(\\d{2}))?(?::(\\d{2}))?(?:\\..*)?");
+            _timePattern = Pattern.compile("(?:\\d{4}\\-\\d{2}\\-\\d{2}\\s)?(\\d{2})(?::(\\d{2}))?(?::(\\d{2}))?(?:\\..*)?");
         }
-        catch (MalformedPatternException ex)
+        catch (PatternSyntaxException ex)
         {
             throw new DdlUtilsException(ex);
         }
@@ -77,26 +72,25 @@
         {
             // we're not using {@link java.sql.Time#valueOf(String)} as this method is too
strict
             // it only parses the full spec "hh:mm:ss"
-            Perl5Matcher matcher = new Perl5Matcher();
-            int          hours   = 0;
-            int          minutes = 0;
-            int          seconds = 0;
+            Matcher matcher = _timePattern.matcher(textRep);
+            int     hours   = 0;
+            int     minutes = 0;
+            int     seconds = 0;
 
-            if (matcher.matches(textRep, _timePattern))
+            if (matcher.matches())
             {
-                MatchResult match     = matcher.getMatch();
-                int         numGroups = match.groups();
+                int numGroups = matcher.groupCount();
 
                 try
                 {
-                    hours = Integer.parseInt(match.group(1));
-                    if ((numGroups > 2) && (match.group(2) != null))
+                    hours = Integer.parseInt(matcher.group(1));
+                    if ((numGroups >= 2) && (matcher.group(2) != null))
                     {
-                        minutes = Integer.parseInt(match.group(2));
+                        minutes = Integer.parseInt(matcher.group(2));
                     }
-                    if ((numGroups > 3) && (match.group(3) != null))
+                    if ((numGroups >= 3) && (matcher.group(3) != null))
                     {
-                        seconds = Integer.parseInt(match.group(3));
+                        seconds = Integer.parseInt(matcher.group(3));
                     }
                 }
                 catch (NumberFormatException ex)

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/db2/Db2ModelReader.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/db2/Db2ModelReader.java?rev=635262&r1=635261&r2=635262&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/db2/Db2ModelReader.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/db2/Db2ModelReader.java Sun Mar
 9 08:40:47 2008
@@ -25,6 +25,9 @@
 import java.sql.Types;
 import java.util.HashSet;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
 
 import org.apache.ddlutils.DdlUtilsException;
 import org.apache.ddlutils.Platform;
@@ -34,12 +37,6 @@
 import org.apache.ddlutils.model.TypeMap;
 import org.apache.ddlutils.platform.DatabaseMetaDataWrapper;
 import org.apache.ddlutils.platform.JdbcModelReader;
-import org.apache.oro.text.regex.MalformedPatternException;
-import org.apache.oro.text.regex.Pattern;
-import org.apache.oro.text.regex.PatternCompiler;
-import org.apache.oro.text.regex.PatternMatcher;
-import org.apache.oro.text.regex.Perl5Compiler;
-import org.apache.oro.text.regex.Perl5Matcher;
 
 /**
  * Reads a database model from a Db2 UDB database.
@@ -66,14 +63,12 @@
         setDefaultCatalogPattern(null);
         setDefaultSchemaPattern(null);
 
-        PatternCompiler compiler = new Perl5Compiler();
-
     	try
     	{
-    		_db2TimePattern      = compiler.compile("'(\\d{2}).(\\d{2}).(\\d{2})'");
-    		_db2TimestampPattern = compiler.compile("'(\\d{4}\\-\\d{2}\\-\\d{2})\\-(\\d{2}).(\\d{2}).(\\d{2})(\\.\\d{1,8})?'");
+    		_db2TimePattern      = Pattern.compile("'(\\d{2}).(\\d{2}).(\\d{2})'");
+    		_db2TimestampPattern = Pattern.compile("'(\\d{4}\\-\\d{2}\\-\\d{2})\\-(\\d{2}).(\\d{2}).(\\d{2})(\\.\\d{1,8})?'");
         }
-    	catch (MalformedPatternException ex)
+    	catch (PatternSyntaxException ex)
         {
         	throw new DdlUtilsException(ex);
         }
@@ -115,22 +110,22 @@
 		{
 			if (column.getTypeCode() == Types.TIME)
 			{
-				PatternMatcher matcher = new Perl5Matcher();
+				Matcher matcher = _db2TimePattern.matcher(column.getDefaultValue());
 
 				// Db2 returns "HH24.MI.SS"
-				if (matcher.matches(column.getDefaultValue(), _db2TimePattern))
+				if (matcher.matches())
 				{
 					StringBuffer newDefault = new StringBuffer();
 
 					newDefault.append("'");
 					// the hour
-					newDefault.append(matcher.getMatch().group(1));
+					newDefault.append(matcher.group(1));
 					newDefault.append(":");
 					// the minute
-					newDefault.append(matcher.getMatch().group(2));
+					newDefault.append(matcher.group(2));
 					newDefault.append(":");
 					// the second
-					newDefault.append(matcher.getMatch().group(3));
+					newDefault.append(matcher.group(3));
 					newDefault.append("'");
 
 					column.setDefaultValue(newDefault.toString());
@@ -138,29 +133,29 @@
 			}
 			else if (column.getTypeCode() == Types.TIMESTAMP)
 			{
-				PatternMatcher matcher = new Perl5Matcher();
+                Matcher matcher = _db2TimestampPattern.matcher(column.getDefaultValue());
 
 				// Db2 returns "YYYY-MM-DD-HH24.MI.SS.FF"
-				if (matcher.matches(column.getDefaultValue(), _db2TimestampPattern))
+				if (matcher.matches())
 				{
 					StringBuffer newDefault = new StringBuffer();
 
 					newDefault.append("'");
 					// group 1 is the date which has the correct format
-					newDefault.append(matcher.getMatch().group(1));
+					newDefault.append(matcher.group(1));
 					newDefault.append(" ");
 					// the hour
-					newDefault.append(matcher.getMatch().group(2));
+					newDefault.append(matcher.group(2));
 					newDefault.append(":");
 					// the minute
-					newDefault.append(matcher.getMatch().group(3));
+					newDefault.append(matcher.group(3));
 					newDefault.append(":");
 					// the second
-					newDefault.append(matcher.getMatch().group(4));
+					newDefault.append(matcher.group(4));
 					// optionally, the fraction
-					if ((matcher.getMatch().groups() > 4) && (matcher.getMatch().group(4) !=
null))
+					if ((matcher.groupCount() >= 5) && (matcher.group(5) != null))
 					{
-						newDefault.append(matcher.getMatch().group(5));
+						newDefault.append(matcher.group(5));
 					}
 					newDefault.append("'");
 

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlModelReader.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlModelReader.java?rev=635262&r1=635261&r2=635262&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlModelReader.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlModelReader.java Sun
Mar  9 08:40:47 2008
@@ -26,6 +26,9 @@
 import java.sql.Timestamp;
 import java.sql.Types;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
 
 import org.apache.ddlutils.DdlUtilsException;
 import org.apache.ddlutils.Platform;
@@ -35,12 +38,6 @@
 import org.apache.ddlutils.model.TypeMap;
 import org.apache.ddlutils.platform.DatabaseMetaDataWrapper;
 import org.apache.ddlutils.platform.JdbcModelReader;
-import org.apache.oro.text.regex.MalformedPatternException;
-import org.apache.oro.text.regex.Pattern;
-import org.apache.oro.text.regex.PatternCompiler;
-import org.apache.oro.text.regex.PatternMatcher;
-import org.apache.oro.text.regex.Perl5Compiler;
-import org.apache.oro.text.regex.Perl5Matcher;
 
 /**
  * Reads a database model from a Microsoft Sql Server database.
@@ -68,14 +65,12 @@
         setDefaultSchemaPattern(null);
         setDefaultTablePattern("%");
 
-        PatternCompiler compiler = new Perl5Compiler();
-
     	try
     	{
-            _isoDatePattern = compiler.compile("'(\\d{4}\\-\\d{2}\\-\\d{2})'");
-            _isoTimePattern = compiler.compile("'(\\d{2}:\\d{2}:\\d{2})'");
+            _isoDatePattern = Pattern.compile("'(\\d{4}\\-\\d{2}\\-\\d{2})'");
+            _isoTimePattern = Pattern.compile("'(\\d{2}:\\d{2}:\\d{2})'");
         }
-    	catch (MalformedPatternException ex)
+    	catch (PatternSyntaxException ex)
         {
         	throw new DdlUtilsException(ex);
         }
@@ -189,16 +184,21 @@
 			{
 				// Sql Server maintains the default values for DATE/TIME jdbc types, so we have to
 				// migrate the default value to TIMESTAMP
-				PatternMatcher matcher   = new Perl5Matcher();
-				Timestamp      timestamp = null;
+				Matcher   matcher   = _isoDatePattern.matcher(defaultValue);
+				Timestamp timestamp = null;
 	
-				if (matcher.matches(defaultValue, _isoDatePattern))
+				if (matcher.matches())
 				{
-					timestamp = new Timestamp(Date.valueOf(matcher.getMatch().group(1)).getTime());
+					timestamp = new Timestamp(Date.valueOf(matcher.group(1)).getTime());
 				}
-				else if (matcher.matches(defaultValue, _isoTimePattern))
+				else
 				{
-					timestamp = new Timestamp(Time.valueOf(matcher.getMatch().group(1)).getTime());
+	                matcher = _isoTimePattern.matcher(defaultValue);
+
+	                if (matcher.matches())
+	                {
+	                    timestamp = new Timestamp(Time.valueOf(matcher.group(1)).getTime());
+	                }
 				}
 				if (timestamp != null)
 				{

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8Builder.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8Builder.java?rev=635262&r1=635261&r2=635262&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8Builder.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8Builder.java Sun
Mar  9 08:40:47 2008
@@ -22,6 +22,8 @@
 import java.io.IOException;
 import java.sql.Types;
 import java.util.Map;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
 
 import org.apache.ddlutils.DdlUtilsException;
 import org.apache.ddlutils.Platform;
@@ -33,11 +35,6 @@
 import org.apache.ddlutils.model.TypeMap;
 import org.apache.ddlutils.platform.SqlBuilder;
 import org.apache.ddlutils.util.StringUtilsExt;
-import org.apache.oro.text.regex.MalformedPatternException;
-import org.apache.oro.text.regex.Pattern;
-import org.apache.oro.text.regex.PatternCompiler;
-import org.apache.oro.text.regex.Perl5Compiler;
-import org.apache.oro.text.regex.Perl5Matcher;
 
 /**
  * The SQL Builder for Oracle.
@@ -63,15 +60,13 @@
         super(platform);
         addEscapedCharSequence("'", "''");
 
-        PatternCompiler compiler = new Perl5Compiler();
-
     	try
     	{
-            _isoDatePattern      = compiler.compile("\\d{4}\\-\\d{2}\\-\\d{2}");
-            _isoTimePattern      = compiler.compile("\\d{2}:\\d{2}:\\d{2}");
-            _isoTimestampPattern = compiler.compile("\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}[\\.\\d{1,8}]?");
+            _isoDatePattern      = Pattern.compile("\\d{4}\\-\\d{2}\\-\\d{2}");
+            _isoTimePattern      = Pattern.compile("\\d{2}:\\d{2}:\\d{2}");
+            _isoTimestampPattern = Pattern.compile("\\d{4}\\-\\d{2}\\-\\d{2} \\d{2}:\\d{2}:\\d{2}[\\.\\d{1,8}]?");
         }
-    	catch (MalformedPatternException ex)
+    	catch (PatternSyntaxException ex)
         {
         	throw new DdlUtilsException(ex);
         }
@@ -294,21 +289,21 @@
     	// and thus the user has to ensure that it is correct
         else if (column.getTypeCode() == Types.DATE)
         {
-            if (new Perl5Matcher().matches(column.getDefaultValue(), _isoDatePattern))
+            if (_isoDatePattern.matcher(column.getDefaultValue()).matches())
             {
             	return "TO_DATE('"+column.getDefaultValue()+"', 'YYYY-MM-DD')";
             }
         }
         else if (column.getTypeCode() == Types.TIME)
         {
-            if (new Perl5Matcher().matches(column.getDefaultValue(), _isoTimePattern))
+            if (_isoTimePattern.matcher(column.getDefaultValue()).matches())
             {
             	return "TO_DATE('"+column.getDefaultValue()+"', 'HH24:MI:SS')";
             }
         }
         else if (column.getTypeCode() == Types.TIMESTAMP)
         {
-            if (new Perl5Matcher().matches(column.getDefaultValue(), _isoTimestampPattern))
+            if (_isoTimestampPattern.matcher(column.getDefaultValue()).matches())
             {
             	return "TO_DATE('"+column.getDefaultValue()+"', 'YYYY-MM-DD HH24:MI:SS')";
             }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8ModelReader.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8ModelReader.java?rev=635262&r1=635261&r2=635262&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8ModelReader.java
(original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8ModelReader.java
Sun Mar  9 08:40:47 2008
@@ -30,6 +30,9 @@
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
 
 import org.apache.commons.collections.map.ListOrderedMap;
 import org.apache.ddlutils.DdlUtilsException;
@@ -39,12 +42,6 @@
 import org.apache.ddlutils.model.TypeMap;
 import org.apache.ddlutils.platform.DatabaseMetaDataWrapper;
 import org.apache.ddlutils.platform.JdbcModelReader;
-import org.apache.oro.text.regex.MalformedPatternException;
-import org.apache.oro.text.regex.Pattern;
-import org.apache.oro.text.regex.PatternCompiler;
-import org.apache.oro.text.regex.PatternMatcher;
-import org.apache.oro.text.regex.Perl5Compiler;
-import org.apache.oro.text.regex.Perl5Matcher;
 
 /**
  * Reads a database model from an Oracle 8 database.
@@ -72,15 +69,13 @@
         setDefaultSchemaPattern(null);
         setDefaultTablePattern("%");
 
-        PatternCompiler compiler = new Perl5Compiler();
-
     	try
     	{
-    		_oracleIsoDatePattern      = compiler.compile("TO_DATE\\('([^']*)'\\, 'YYYY\\-MM\\-DD'\\)");
-    		_oracleIsoTimePattern      = compiler.compile("TO_DATE\\('([^']*)'\\, 'HH24:MI:SS'\\)");
-    		_oracleIsoTimestampPattern = compiler.compile("TO_DATE\\('([^']*)'\\, 'YYYY\\-MM\\-DD
HH24:MI:SS'\\)");
+    		_oracleIsoDatePattern      = Pattern.compile("TO_DATE\\('([^']*)'\\, 'YYYY\\-MM\\-DD'\\)");
+    		_oracleIsoTimePattern      = Pattern.compile("TO_DATE\\('([^']*)'\\, 'HH24:MI:SS'\\)");
+    		_oracleIsoTimestampPattern = Pattern.compile("TO_DATE\\('([^']*)'\\, 'YYYY\\-MM\\-DD
HH24:MI:SS'\\)");
         }
-    	catch (MalformedPatternException ex)
+    	catch (PatternSyntaxException ex)
         {
         	throw new DdlUtilsException(ex);
         }
@@ -189,26 +184,34 @@
 			// we also reverse the ISO-format adaptation, and adjust the default value to timestamp
 			if (column.getDefaultValue() != null)
 			{
-				PatternMatcher matcher   = new Perl5Matcher();
-				Timestamp      timestamp = null;
+				Matcher   matcher   = _oracleIsoTimestampPattern.matcher(column.getDefaultValue());
+				Timestamp timestamp = null;
 	
-				if (matcher.matches(column.getDefaultValue(), _oracleIsoTimestampPattern))
+				if (matcher.matches())
 				{
-					String timestampVal = matcher.getMatch().group(1);
+					String timestampVal = matcher.group(1);
 
 					timestamp = Timestamp.valueOf(timestampVal);
 				}
-				else if (matcher.matches(column.getDefaultValue(), _oracleIsoDatePattern))
+				else
 				{
-					String dateVal = matcher.getMatch().group(1);
-
-					timestamp = new Timestamp(Date.valueOf(dateVal).getTime());
-				}
-				else if (matcher.matches(column.getDefaultValue(), _oracleIsoTimePattern))
-				{
-					String timeVal = matcher.getMatch().group(1);
-
-					timestamp = new Timestamp(Time.valueOf(timeVal).getTime());
+				    matcher = _oracleIsoDatePattern.matcher(column.getDefaultValue());
+	                if (matcher.matches())
+	                {
+	                    String dateVal = matcher.group(1);
+
+	                    timestamp = new Timestamp(Date.valueOf(dateVal).getTime());
+	                }
+	                else
+	                {
+	                    matcher = _oracleIsoTimePattern.matcher(column.getDefaultValue());
+	                    if (matcher.matches())
+	                    {
+	                        String timeVal = matcher.group(1);
+
+	                        timestamp = new Timestamp(Time.valueOf(timeVal).getTime());
+	                    }
+	                }
 				}
 				if (timestamp != null)
 				{
@@ -306,7 +309,7 @@
 		    "a.TABLE_NAME=? AND a.GENERATED=? AND a.TABLE_TYPE=? AND a.TABLE_NAME=b.TABLE_NAME
AND a.INDEX_NAME=b.INDEX_NAME AND " +
 		    "a.INDEX_NAME NOT IN (SELECT DISTINCT c.CONSTRAINT_NAME FROM USER_CONSTRAINTS c WHERE
c.CONSTRAINT_TYPE=? AND c.TABLE_NAME=a.TABLE_NAME)";
 		final String queryWithSchema =
-		    query.substring(query.length() - 1) + " AND c.OWNER LIKE ?) AND a.TABLE_OWNER LIKE
?";
+		    query.substring(0, query.length() - 1) + " AND c.OWNER LIKE ?) AND a.TABLE_OWNER LIKE
?";
 
         Map               indices = new ListOrderedMap();
 		PreparedStatement stmt    = null;

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java?rev=635262&r1=635261&r2=635262&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java
(original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java
Sun Mar  9 08:40:47 2008
@@ -29,6 +29,9 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
 
 import org.apache.ddlutils.DdlUtilsException;
 import org.apache.ddlutils.Platform;
@@ -40,12 +43,6 @@
 import org.apache.ddlutils.model.TypeMap;
 import org.apache.ddlutils.platform.DatabaseMetaDataWrapper;
 import org.apache.ddlutils.platform.JdbcModelReader;
-import org.apache.oro.text.regex.MalformedPatternException;
-import org.apache.oro.text.regex.Pattern;
-import org.apache.oro.text.regex.PatternCompiler;
-import org.apache.oro.text.regex.PatternMatcher;
-import org.apache.oro.text.regex.Perl5Compiler;
-import org.apache.oro.text.regex.Perl5Matcher;
 
 /**
  * Reads a database model from a Sybase database.
@@ -71,14 +68,12 @@
         setDefaultSchemaPattern(null);
         setDefaultTablePattern("%");
 
-        PatternCompiler compiler = new Perl5Compiler();
-
     	try
     	{
-            _isoDatePattern = compiler.compile("'(\\d{4}\\-\\d{2}\\-\\d{2})'");
-            _isoTimePattern = compiler.compile("'(\\d{2}:\\d{2}:\\d{2})'");
+            _isoDatePattern = Pattern.compile("'(\\d{4}\\-\\d{2}\\-\\d{2})'");
+            _isoTimePattern = Pattern.compile("'(\\d{2}:\\d{2}:\\d{2})'");
         }
-    	catch (MalformedPatternException ex)
+    	catch (PatternSyntaxException ex)
         {
         	throw new DdlUtilsException(ex);
         }
@@ -117,17 +112,21 @@
     		{
     			// Sybase maintains the default values for DATE/TIME jdbc types, so we have to
     			// migrate the default value to TIMESTAMP
-    			PatternMatcher matcher   = new Perl5Matcher();
-    			Timestamp      timestamp = null;
+    			Matcher   matcher   = _isoDatePattern.matcher(column.getDefaultValue());
+    			Timestamp timestamp = null;
     
-    			if (matcher.matches(column.getDefaultValue(), _isoDatePattern))
-    			{
-    				timestamp = new Timestamp(Date.valueOf(matcher.getMatch().group(1)).getTime());
-    			}
-    			else if (matcher.matches(column.getDefaultValue(), _isoTimePattern))
+    			if (matcher.matches())
     			{
-    				timestamp = new Timestamp(Time.valueOf(matcher.getMatch().group(1)).getTime());
+    				timestamp = new Timestamp(Date.valueOf(matcher.group(1)).getTime());
     			}
+    			else
+			    {
+    			    matcher = _isoTimePattern.matcher(column.getDefaultValue());
+    			    if (matcher.matches())
+                    {
+                        timestamp = new Timestamp(Time.valueOf(matcher.group(1)).getTime());
+                    }
+			    }
     			if (timestamp != null)
     			{
     				column.setDefaultValue(timestamp.toString());

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java?rev=635262&r1=635261&r2=635262&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java Sun Mar
 9 08:40:47 2008
@@ -19,14 +19,11 @@
  * under the License.
  */
 
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 import org.apache.ddlutils.TestPlatformBase;
 import org.apache.ddlutils.platform.mssql.MSSqlPlatform;
-import org.apache.oro.text.regex.MatchResult;
-import org.apache.oro.text.regex.Pattern;
-import org.apache.oro.text.regex.PatternMatcher;
-import org.apache.oro.text.regex.PatternMatcherInput;
-import org.apache.oro.text.regex.Perl5Compiler;
-import org.apache.oro.text.regex.Perl5Matcher;
 
 /**
  * Tests the Microsoft SQL Server platform.
@@ -52,15 +49,15 @@
 
         // Since we have no way of knowing the auto-generated variables in the SQL,
         // we simply try to extract it from the SQL
-        Pattern        declarePattern    = new Perl5Compiler().compile("DECLARE @([\\S]+)
[^@]+@([\\S]+)");
-        PatternMatcher matcher           = new Perl5Matcher();
-        String         tableNameVar      = "tablename";
-        String         constraintNameVar = "constraintname";
+        Pattern declarePattern    = Pattern.compile("DECLARE @([\\S]+) [^@]+@([\\S]+)");
+        Matcher matcher           = declarePattern.matcher(sql);
+        String  tableNameVar      = "tablename";
+        String  constraintNameVar = "constraintname";
 
-        if (matcher.contains(sql, declarePattern))
+        if (matcher.find())
         {
-            tableNameVar      = matcher.getMatch().group(1);
-            constraintNameVar = matcher.getMatch().group(2);
+            tableNameVar      = matcher.group(1);
+            constraintNameVar = matcher.group(2);
         }
         assertEqualsIgnoringWhitespaces(
             "SET quoted_identifier on;\n"+
@@ -130,15 +127,15 @@
 
         // Since we have no way of knowing the auto-generated variables in the SQL,
         // we simply try to extract it from the SQL
-        Pattern        declarePattern    = new Perl5Compiler().compile("DECLARE @([\\S]+)
[^@]+@([\\S]+)");
-        PatternMatcher matcher           = new Perl5Matcher();
-        String         tableNameVar      = "tablename";
-        String         constraintNameVar = "constraintname";
+        Pattern declarePattern    = Pattern.compile("DECLARE @([\\S]+) [^@]+@([\\S]+)");
+        Matcher matcher           = declarePattern.matcher(sql);
+        String  tableNameVar      = "tablename";
+        String  constraintNameVar = "constraintname";
 
-        if (matcher.contains(sql, declarePattern))
+        if (matcher.find())
         {
-            tableNameVar      = matcher.getMatch().group(1);
-            constraintNameVar = matcher.getMatch().group(2);
+            tableNameVar      = matcher.group(1);
+            constraintNameVar = matcher.group(2);
         }
         // Note that this is not valid SQL as a table can have only one identity column at
most 
         assertEqualsIgnoringWhitespaces(
@@ -184,19 +181,17 @@
 
         // Since we have no way of knowing the auto-generated variables in the SQL,
         // we simply try to extract it from the SQL
-        Pattern             declarePattern     = new Perl5Compiler().compile("DECLARE @([\\S]+)
[^@]+@([\\S]+)");
-        PatternMatcherInput input              = new PatternMatcherInput(sql);
-        PatternMatcher      matcher            = new Perl5Matcher();
-        String[]            tableNameVars      = { "tablename", "tablename", "tablename"
};
-        String[]            constraintNameVars = { "constraintname", "constraintname", "constraintname"
};
+        Pattern  declarePattern     = Pattern.compile("DECLARE @([\\S]+) [^@]+@([\\S]+)");
+        Matcher  matcher            = declarePattern.matcher(sql);
+        int      startPos           = 0;
+        String[] tableNameVars      = { "tablename", "tablename", "tablename" };
+        String[] constraintNameVars = { "constraintname", "constraintname", "constraintname"
};
 
-        for (int idx = 0; (idx < 3) && matcher.contains(input, declarePattern);
idx++)
+        for (int idx = 0; (idx < 3) && matcher.find(startPos); idx++)
         {
-            MatchResult result = matcher.getMatch();
-
-            tableNameVars[idx]      = result.group(1);
-            constraintNameVars[idx] = result.group(2);
-            input.setCurrentOffset(result.endOffset(2));
+            tableNameVars[idx]      = matcher.group(1);
+            constraintNameVars[idx] = matcher.group(2);
+            startPos                = matcher.end();
         }
         assertEqualsIgnoringWhitespaces(
             "SET quoted_identifier on;\n"+
@@ -301,15 +296,15 @@
 
         // Since we have no way of knowing the auto-generated variables in the SQL,
         // we simply try to extract it from the SQL
-        Pattern        declarePattern    = new Perl5Compiler().compile("DECLARE @([\\S]+)
[^@]+@([\\S]+)");
-        PatternMatcher matcher           = new Perl5Matcher();
-        String         tableNameVar      = "tablename";
-        String         constraintNameVar = "constraintname";
+        Pattern declarePattern    = Pattern.compile("DECLARE @([\\S]+) [^@]+@([\\S]+)");
+        Matcher matcher           = declarePattern.matcher(sql);
+        String  tableNameVar      = "tablename";
+        String  constraintNameVar = "constraintname";
 
-        if (matcher.contains(sql, declarePattern))
+        if (matcher.find())
         {
-            tableNameVar      = matcher.getMatch().group(1);
-            constraintNameVar = matcher.getMatch().group(2);
+            tableNameVar      = matcher.group(1);
+            constraintNameVar = matcher.group(2);
         }
         assertEqualsIgnoringWhitespaces(
             "SET quoted_identifier on;\n"+



Mime
View raw message