![JAR search and dependency download from the Maven repository](/logo.png)
com.zvoykish.restdl.generator.java.impl.ComplexObjectGenerator Maven / Gradle / Ivy
package com.zvoykish.restdl.generator.java.impl;
import com.zvoykish.restdl.generator.ContentGenerator;
import com.zvoykish.restdl.generator.java.JavaWriter;
import com.zvoykish.restdl.objects.AnObject;
import com.zvoykish.restdl.objects.ComplexObject;
import com.zvoykish.restdl.objects.GenericDeclarationObject;
import com.zvoykish.restdl.objects.TypedObject;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Created with IntelliJ IDEA.
* User: Zvoykish
* Date: 1/11/14
* Time: 20:31
*/
public class ComplexObjectGenerator implements ContentGenerator {
private final JavaWriter writer;
public ComplexObjectGenerator(JavaWriter writer) {
this.writer = writer;
}
@Override
public String generateContent(ComplexObject object, String className, Map typeMap) {
Template template = Velocity.getTemplate("templates/object_class.vm");
StringWriter stringWriter = new StringWriter();
VelocityContext context = new VelocityContext();
List fields = object.getFields();
context.put("className", getClassName(className, fields));
context.put("fields", fields);
context.put("writer", writer);
context.put("types", typeMap);
template.merge(context, stringWriter);
return stringWriter.toString();
}
private String getClassName(String className, List fields) {
List genericObjects = new ArrayList<>();
for (AnObject field : fields) {
TypedObject fieldType = field.getType();
if (fieldType instanceof GenericDeclarationObject) {
genericObjects.add(fieldType.getClassName());
}
}
StringBuilder sb = new StringBuilder();
sb.append(className);
if (!genericObjects.isEmpty()) {
sb.append('<');
for (int i = 0; i < genericObjects.size(); i++) {
sb.append(genericObjects.get(i));
if (i < genericObjects.size() - 1) {
sb.append(", ");
}
}
sb.append('>');
}
return sb.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy