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

com.dslplatform.compiler.client.parameters.DatabaseInfo Maven / Gradle / Ivy

package com.dslplatform.compiler.client.parameters;

import com.dslplatform.compiler.client.Context;
import com.dslplatform.compiler.client.ExitException;

import java.util.LinkedHashMap;
import java.util.Map;

class DatabaseInfo {
	final String database;
	final String compilerVersion;
	final String dbVersion;
	final Map dsl;

	DatabaseInfo(final String database, final String compilerVersion, final String dbVersion, final Map dsl) {
		this.database = database;
		this.compilerVersion = compilerVersion;
		this.dbVersion = dbVersion;
		this.dsl = dsl;
	}

	private static String unescape(final String element) {
		return element.replace("\\\"", "\"").replace("\\\\", "\\");
	}

	static Map convertToMap(final String dsls, final Context context) throws ExitException {
		final Map tuples = new LinkedHashMap();
		if (dsls == null || dsls.length() == 0) {
			return tuples;
		}
		final int endLength = dsls.length() - 1;
		if (dsls.charAt(0) != '"' || dsls.charAt(endLength) != '"') {
			context.error("Invalid DSL found in database. Unable to parse it as map: " + dsls);
			throw new ExitException();
		}
		final String[] pairs = dsls.substring(1, endLength).split("\", ?\"", -1);
		for (final String pair : pairs) {
			final String[] kv = pair.split("\"=>\"", -1);
			if (kv.length != 2) {
				context.error("Invalid DSL found in database. Unable to parse it as map: " + dsls);
				throw new ExitException();
			}
			tuples.put(unescape(kv[0]), unescape(kv[1]));
		}
		return tuples;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy