All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bitbucket.bradleysmithllc.etlunit.feature.database.DDLReferenceNameExpression Maven / Gradle / Ivy

There is a newer version: 4.6.0-eu
Show newest version
package org.bitbucket.bradleysmithllc.etlunit.feature.database;

/*

		Regular expression class compiled by the Regular Expression Compiler 1.5.0-SNAPSHOT

*/

import java.util.Map;
import java.util.HashMap;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public final class DDLReferenceNameExpression
{
	public static final String PATTERN_RAW_TEXT = "([\\s]*[\\s]*/[\\s]*[\\s]*(?'dbImplementationId'[^/]+)[\\s]*[\\s]*/[\\s]*)?[\\s]*([\\s]*[\\s]*(?'dbId'[^/]+)[\\s]*[\\s]*/[\\s]*)?[\\s]*([\\s]*[\\s]*(?'absolute'/)?[\\s]*[\\s]*(?'ddlReference'[\\w_\\-\\.]+)[\\s]*)";
	public static final String PATTERN_TEXT;
	public static final Pattern pattern;
	private static final Map groupOffsets = new HashMap();

	private final Matcher matcher;
	private final CharSequence matchText;

	public static interface RegExpIterator
	{
		String replaceMatch(DDLReferenceNameExpression e);
	}

	static
	{
		PATTERN_TEXT = PATTERN_RAW_TEXT.replaceAll("\\(\\?'[^']+'", "(");

		Pattern cpattern = Pattern.compile("(\\\\)?\\((\\?'([^']+)')?");

		Matcher matcher = cpattern.matcher(PATTERN_RAW_TEXT);

		int groupCount = 1;

		while (matcher.find())
		{
			if (matcher.group(1) != null)
			{
				continue;
			}

			String groupName = matcher.group(3);

			if (groupName != null)
			{
				groupOffsets.put(groupName, new Integer(groupCount));
			}

			groupCount++;
		}

		pattern = Pattern.compile(PATTERN_TEXT, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
	}


	private DDLReferenceNameExpression(Matcher pMatcher, CharSequence ch)
	{
		matcher = pMatcher;
		matchText = ch;
	}

	public DDLReferenceNameExpression(CharSequence ch)
	{
		this(pattern.matcher(ch), ch);
	}

	public static DDLReferenceNameExpression match(CharSequence pText)
	{
		return new DDLReferenceNameExpression(pText);
	}

	public int end()
	{
		return matcher.end();
	}

	public int end(int group)
	{
		return matcher.end(group);
	}

	public int start()
	{
		return matcher.start();
	}

	public int start(int group)
	{
		return matcher.start(group);
	}

	public String replaceAll(String replacement)
	{
		return matcher.replaceAll(replacement);
	}

	public String replaceAll(RegExpIterator it)
	{
		String match = matchText.toString();
		String str = "";
		int end = -1;

		while (hasNext())
		{
			str += match.substring(end == -1 ? 0 : end, start());
			str += it.replaceMatch(this);
			end = end();
		}

		str += match.substring(end == -1 ? 0 : end, match.length());
		return str;
	}

	public boolean matches()
	{
		return matcher.matches();
	}

	public boolean hasNext()
	{
		return matcher.find();
	}

	public int groupCount()
	{
		return matcher.groupCount();
	}

	public String group()
	{
		return matcher.group();
	}

	public String group(int i)
	{
		return matcher.group(i);
	}

	public DDLReferenceNameExpression resetMatch(CharSequence seq)
	{
		return match(seq);
	}

	public String group(String name)
	{
		return matcher.group(groupOffsets.get(name).intValue());
	}

	private static String scope(String text, String name)
	{
		return text.replaceAll("(\\(\\?')(\\w+')", "$1" + name + ".$2");
	}


	public boolean hasDbImplementationId()
	{
		return group("dbImplementationId") != null;
	}

	public String getDbImplementationId()
	{
		if (!hasDbImplementationId())
		{
			throw new IllegalArgumentException("Property not defined: DbImplementationId");
		}
		return group("dbImplementationId");
	}

	public boolean hasDbId()
	{
		return group("dbId") != null;
	}

	public String getDbId()
	{
		if (!hasDbId())
		{
			throw new IllegalArgumentException("Property not defined: DbId");
		}
		return group("dbId");
	}

	public boolean hasAbsolute()
	{
		return group("absolute") != null;
	}

	public String getAbsolute()
	{
		if (!hasAbsolute())
		{
			throw new IllegalArgumentException("Property not defined: Absolute");
		}
		return group("absolute");
	}

	public boolean hasDdlReference()
	{
		return group("ddlReference") != null;
	}

	public String getDdlReference()
	{
		if (!hasDdlReference())
		{
			throw new IllegalArgumentException("Property not defined: DdlReference");
		}
		return group("ddlReference");
	}

	public String toString()
	{
		return "{DDLReferenceNameExpression, matchText='" + matchText + "'}[" + "(dbImplementationId)=" + (hasDbImplementationId() ? getDbImplementationId() : "null") + ", (dbId)=" + (hasDbId() ? getDbId() : "null") + ", (absolute)=" + (hasAbsolute() ? getAbsolute() : "null") + ", (ddlReference)=" + (hasDdlReference() ? getDdlReference() : "null") + "]";
	}

	public static void main(String [] argv)
	{
		System.out.println(PATTERN_TEXT);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy