2
0
Fork 0

Small refactor for comming converters

This commit is contained in:
Willem Cazander 2012-01-22 08:16:15 +01:00
parent 75b3d5e0a0
commit 1c308a684a
178 changed files with 5865 additions and 1531 deletions

View file

@ -22,11 +22,12 @@
package net.forwardfire.vasc.xpql.impl.x4o;
import java.util.Locale;
import net.forwardfire.vasc.xpql.query.QueryParameterValue.QueryParameterType;
import org.x4o.xml.element.AbstractElementAttributeConverter;
import org.x4o.xml.element.Element;
import org.x4o.xml.element.ElementAttributeConverterException;
import org.x4o.xml.converters.ObjectConverter;
import org.x4o.xml.converters.ObjectConverterException;
/**
@ -34,16 +35,21 @@ import org.x4o.xml.element.ElementAttributeConverterException;
* @author Willem Cazander
* @version 1.0 Jan 21, 2007
*/
public class ParameterTypeAttributeConverter extends AbstractElementAttributeConverter {
public class ParameterTypeObjectConverter implements ObjectConverter {
public Class<?> getObjectClass() {
return QueryParameterType.class;
}
/**
* @see org.x4o.xml.element.AbstractElementClassParameterConverter#doConvertAttribute(org.x4o.xml.element.Element, java.lang.Object)
*/
public Object doConvertAttribute(Element arg0, Object value) throws ElementAttributeConverterException {
public String convertToString(Object obj, Locale locale) {
return ((QueryParameterType)obj).name();
}
public Object convertToObject(String str, Locale locale) throws ObjectConverterException {
try {
return QueryParameterType.valueOf(""+value);
return QueryParameterType.valueOf(""+str);
} catch (Exception ex) {
throw new ElementAttributeConverterException(this,"Could not convert to QueryParameterType value="+value,ex);
throw new ObjectConverterException(this,"Could not convert to QueryParameterType value="+str,ex);
}
}
}

View file

@ -22,28 +22,33 @@
package net.forwardfire.vasc.xpql.impl.x4o;
import java.util.Locale;
import net.forwardfire.vasc.xpql.query.Query.QueryType;
import org.x4o.xml.element.AbstractElementAttributeConverter;
import org.x4o.xml.element.Element;
import org.x4o.xml.element.ElementAttributeConverterException;
import org.x4o.xml.converters.ObjectConverter;
import org.x4o.xml.converters.ObjectConverterException;
/**
*
* @author Willem Cazander
* @version 1.0 Jan 21, 2007
*/
public class QueryTypeAttributeConverter extends AbstractElementAttributeConverter {
public class QueryTypeObjectConverter implements ObjectConverter {
public Class<?> getObjectClass() {
return QueryType.class;
}
/**
* @see org.x4o.xml.element.AbstractElementClassParameterConverter#doConvertAttribute(org.vasc.x4o.element.Element, java.lang.Object)
*/
public Object doConvertAttribute(Element arg0, Object value) throws ElementAttributeConverterException {
public String convertToString(Object obj, Locale locale) {
return ((QueryType)obj).name();
}
public Object convertToObject(String str, Locale locale) throws ObjectConverterException {
try {
return QueryType.valueOf(""+value);
return QueryType.valueOf(""+str);
} catch (Exception ex) {
throw new ElementAttributeConverterException(this,"Could not convert to QueryType value="+value,ex);
}
throw new ObjectConverterException(this,"Could not convert to QueryType value="+str,ex);
}
}
}

View file

@ -0,0 +1,49 @@
package net.forwardfire.vasc.xpql.x4o;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
import net.forwardfire.vasc.xpql.QueryStore;
import net.forwardfire.vasc.xpql.XPQLParser;
import net.forwardfire.vasc.xpql.query.Query;
import org.x4o.xml.element.AbstractElement;
import org.x4o.xml.element.ElementException;
public class XpqlLoadQueriesElement extends AbstractElement {
private Logger logger = Logger.getLogger(XpqlLoadQueriesElement.class.getName());
@Override
public void doElementEnd() throws ElementException {
// set queries map to element object
Map<String,Query> queries = new HashMap<String,Query>(100);
setElementObject(queries);
String resource = getAttributes().get("resource");
if (resource==null) {
throw new ElementException("No 'resource' attributes defined.");
}
if (resource.isEmpty()) {
throw new ElementException("Empty 'resource' attributes can't load.");
}
// load queries from attributes
XPQLParser parser = new XPQLParser();
logger.fine("Try loading: "+resource);
try {
parser.parseResource(resource);
} catch (Exception e) {
throw new RuntimeException("Could not load xpql resource: "+resource+" error: "+e.getMessage(),e);
}
QueryStore store = parser.getQueryStore();
for (String key:store.getQueryNames()) {
Query q = store.getQuery(key);
queries.put(q.getName(),q);
}
logger.info("Loaded xpql queries: "+store.getQueryNames().size());
}
}

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>
Vasc namespace for the vasc-xpql backend
</comment>
<entry key="eld.http://vasc.forwardfire.net/eld/vasc-xpql.eld">vasc-xpql.eld</entry>
</properties>

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<eld:root xmlns:eld="http://eld.x4o.org/eld/eld-lang.eld">
<eld:elementClass tag="xpqlLoadQueries" elementClassName="net.forwardfire.vasc.xpql.x4o.XpqlLoadQueriesElement"/>
</eld:root>

View file

@ -6,8 +6,9 @@
<eld:elementClass tag="xpql" objectClassName="java.lang.Object"/>
<eld:elementClass tag="query" objectClassName="net.forwardfire.vasc.xpql.impl.DefaultQuery">
<eld:elementClassAttributeConverter attributeName="type" bean.class="net.forwardfire.vasc.xpql.impl.x4o.QueryTypeAttributeConverter"/>
<eld:elementObjectDefaultValue attributeName="type" value="sql"/>
<eld:elementClassAttribute attributeName="type" defaultValue="sql">
<eld:attributeBeanConverter bean.class="net.forwardfire.vasc.xpql.impl.x4o.QueryTypeObjectConverter"/>
</eld:elementClassAttribute>
<eld:elementConfigurator configAction="true" bean.class="net.forwardfire.vasc.xpql.impl.x4o.QueryElementConfigurator"/>
</eld:elementClass>
<eld:elementClass tag="sql" elementClassName="net.forwardfire.vasc.xpql.impl.x4o.SQLElement"/>
@ -15,9 +16,12 @@
<eld:elementClass tag="include" objectClassName="net.forwardfire.vasc.xpql.impl.QueryInclude" elementClassName="net.forwardfire.vasc.xpql.impl.x4o.QueryIncludeElement"/>
<eld:elementClass tag="comment" elementClassName="net.forwardfire.vasc.xpql.impl.x4o.CommentElement"/>
<eld:elementClass tag="parameterValue" objectClassName="net.forwardfire.vasc.xpql.impl.DefaultQueryParameterValue">
<eld:elementClassAttributeConverter attributeName="type" bean.class="net.forwardfire.vasc.xpql.impl.x4o.ParameterTypeAttributeConverter"/>
<eld:elementObjectDefaultValue attributeName="type" value="parameter"/>
<eld:elementClassAttributeConverter attributeName="valueType" bean.class="org.x4o.xml.impl.lang.ClassConverter"/>
<eld:elementClassAttribute attributeName="type" defaultValue="parameter">
<eld:attributeBeanConverter bean.class="net.forwardfire.vasc.xpql.impl.x4o.ParameterTypeObjectConverter"/>
</eld:elementClassAttribute>
<eld:elementClassAttribute attributeName="valueType">
<eld:attributeClassConverter/>
</eld:elementClassAttribute>
</eld:elementClass>
</eld:root>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<xtes xmlns="http://xpql.vasc.forwardfire.net/eld/xpql-lang.eld"
<xpql xmlns="http://xpql.vasc.forwardfire.net/eld/xpql-lang.eld"
xmlns:x4o="http://eld.x4o.org/eld/x4o-lang.eld"
>
<query name="limit">
@ -84,4 +84,4 @@
<parameterValue name="limit" value="15"/>
<parameterValue name="offset" value="25"/>
</query>
</xtes>
</xpql>

View file

@ -1,4 +1,4 @@
<xtes xmlns:meta="iets" xmlns="iets1">
<xpql xmlns:meta="iets" xmlns="iets1">
<meta:query>
<meta:fromItem data="schema.table['products']" alias="p"/>
<meta:select data="schema.table['products'].column['product_type']"/>
@ -9,4 +9,4 @@
<meta:where />
<meta:orderBy />
</meta:query>
</xtes>
</xpql>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<xtes xmlns="http://xpql.vasc.forwardfire.net/eld/xpql-lang.eld"
<xpql xmlns="http://xpql.vasc.forwardfire.net/eld/xpql-lang.eld"
xmlns:x4o="http://eld.x4o.org/eld/x4o-lang.eld"
>
<query name="limit">
@ -44,4 +44,4 @@
<parameterValue name="limit" value="15"/>
<parameterValue name="offset" value="25"/>
</query>
</xtes>
</xpql>