Move configuration customization into SpatialSupport

This commit is contained in:
Timo Westkämper 2014-09-25 21:48:51 +03:00
parent 14ada024b7
commit 9e403bd85d
2 changed files with 56 additions and 19 deletions

View File

@ -22,9 +22,7 @@ import java.lang.annotation.Annotation;
import java.util.*;
import com.google.common.base.Strings;
import com.google.common.collect.Maps;
import com.mysema.codegen.model.ClassType;
import com.mysema.codegen.model.SimpleType;
import com.mysema.query.annotations.Config;
import com.mysema.query.annotations.QueryProjection;
import com.mysema.query.annotations.QueryType;
@ -181,23 +179,7 @@ public class DefaultConfiguration implements Configuration {
try {
// register additional mappings, if querydsl-spatial is on the classpath
Class.forName("com.mysema.query.spatial.GeometryExpression");
TypeMappings typeMappings = module.get(TypeMappings.class);
Map<String, String> additions = Maps.newHashMap();
additions.put("Geometry", "GeometryPath");
additions.put("GeometryCollection", "GeometryCollectionPath");
additions.put("LinearRing", "LinearRingPath");
additions.put("LineString", "LineStringPath");
additions.put("MultiLineString", "MultiLineStringPath");
additions.put("MultiPoint", "MultiPointPath");
additions.put("MultiPolygon", "MultiPolygonPath");
additions.put("Point", "PointPath");
additions.put("Polygon", "PolygonPath");
additions.put("PolyHedralSurface", "PolyhedralSurfacePath");
for (Map.Entry<String, String> entry : additions.entrySet()) {
typeMappings.register(
new SimpleType("org.geolatte.geom."+ entry.getKey()),
new SimpleType("com.mysema.query.spatial.path." + entry.getValue()));
}
SpatialSupport.addSupport(module);
} catch (Exception e) {
// do nothing
}

View File

@ -0,0 +1,55 @@
package com.mysema.query.apt;
import java.util.Map;
import java.util.Set;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.mysema.codegen.model.SimpleType;
import com.mysema.query.codegen.AbstractModule;
import com.mysema.query.codegen.CodegenModule;
import com.mysema.query.codegen.TypeMappings;
public final class SpatialSupport {
private static void registerTypes(TypeMappings typeMappings) {
Map<String, String> additions = Maps.newHashMap();
additions.put("Geometry", "GeometryPath");
additions.put("GeometryCollection", "GeometryCollectionPath");
additions.put("LinearRing", "LinearRingPath");
additions.put("LineString", "LineStringPath");
additions.put("MultiLineString", "MultiLineStringPath");
additions.put("MultiPoint", "MultiPointPath");
additions.put("MultiPolygon", "MultiPolygonPath");
additions.put("Point", "PointPath");
additions.put("Polygon", "PolygonPath");
additions.put("PolyHedralSurface", "PolyhedralSurfacePath");
for (Map.Entry<String, String> entry : additions.entrySet()) {
typeMappings.register(
new SimpleType("org.geolatte.geom."+ entry.getKey()),
new SimpleType("com.mysema.query.spatial.path." + entry.getValue()));
}
}
private static void addImports(AbstractModule module) {
Set<String> imports = module.get(Set.class, CodegenModule.IMPORTS);
String packageName = "com.mysema.query.spatial.path";
if (imports.isEmpty()) {
imports = ImmutableSet.of(packageName);
} else {
Set<String> old = imports;
imports = Sets.newHashSet();
imports.addAll(old);
imports.add(packageName);
}
module.bind(CodegenModule.IMPORTS, imports);
}
public static void addSupport(AbstractModule module) {
registerTypes(module.get(TypeMappings.class));
addImports(module);
}
private SpatialSupport() {}
}