package de.unioninvestment.eai.portal.portlet.crud.scripting.domain.container.rest;
import groovy.lang.GroovyShell;
import de.unioninvestment.eai.portal.portlet.crud.config.GroovyScript;
import de.unioninvestment.eai.portal.portlet.crud.config.ReSTAttributeConfig;
import de.unioninvestment.eai.portal.portlet.crud.config.ReSTChangeConfig;
import de.unioninvestment.eai.portal.portlet.crud.config.ReSTContainerConfig;
import de.unioninvestment.eai.portal.portlet.crud.config.ReSTDeleteConfig;
import de.unioninvestment.eai.portal.portlet.crud.config.ReSTQueryConfig;
public class RestTestConfig {
public static ReSTContainerConfig readonlyConfig() {
ReSTAttributeConfig idAttribute = new ReSTAttributeConfig();
idAttribute.setName("id");
idAttribute.setPrimaryKey(true);
ReSTAttributeConfig anAttribute = new ReSTAttributeConfig();
anAttribute.setName("a");
ReSTQueryConfig queryConfig = new ReSTQueryConfig();
queryConfig.getAttribute().add(idAttribute);
queryConfig.getAttribute().add(anAttribute);
queryConfig.setUrl(createGroovyScript("http://test.de/path",
"{-> \"http://test.de/path\"}"));
ReSTContainerConfig containerConfig = new ReSTContainerConfig();
containerConfig.setQuery(queryConfig);
return containerConfig;
}
public static ReSTContainerConfig readwriteConfig() {
ReSTContainerConfig config = readonlyConfig();
ReSTChangeConfig insert = new ReSTChangeConfig();
insert.setUrl(createGroovyScript("http://test.de/insertpath",
"{ -> \"http://test.de/insertpath\" }"));
insert.setValue(createGroovyScript("['a': row.values.a ]",
"{ row -> ['a': row.values.a ] }"));
config.setInsert(insert);
ReSTChangeConfig update = new ReSTChangeConfig();
update.setUrl(createGroovyScript("http://test.de/updatepath",
"{ -> \"http://test.de/updatepath\" }"));
update.setValue(createGroovyScript("['a': row.values.a ]",
"{ row -> ['a': row.values.a ] }"));
config.setUpdate(update);
ReSTDeleteConfig delete = new ReSTDeleteConfig();
delete.setUrl(createGroovyScript("http://test.de/deletepath",
"{ -> \"http://test.de/deletepath\" }"));
config.setDelete(delete);
return config;
}
public static GroovyScript createGroovyScript(String source,
String scriptSource) {
GroovyScript script = new GroovyScript(source);
script.setClazz(new GroovyShell().parse(scriptSource).getClass());
return script;
}
public static GroovyScript createGStringScript(String source,
String... argNames) {
GroovyScript script = new GroovyScript(source);
script.setClazz(new GroovyShell().parse(
"{ -> \"\"\"" + source + "\"\"\"}").getClass());
return script;
}
}