in modules/registry/registry-tools/jpa-gen/src/main/java/generators/JPAResourceClassGenerator.java [68:440]
public String generateJPAResourceClass(JPAResourceClassModel model){
String classStr = null;
String className = model.className;
classStr=addLines(classStr,"public class "+className+" extends AbstractResource {");
classStr=addLines(classStr,tabs(1)+"private final static Logger logger = LoggerFactory.getLogger("+className+".class);");
List<String> columnFields=new ArrayList<String>();
List<String> fieldGetters=new ArrayList<String>();
List<String> fieldSetters=new ArrayList<String>();
for (JPAClassField jpaField : model.jpaClassModel.fields) {
String fieldName = jpaField.fieldName;
String dataType = jpaField.fieldDataType;
String fieldTitleString = jpaField.fieldTitle;
String fieldString=tabs(1)+createFieldVarString(dataType, fieldName);
columnFields.add(fieldString);
fieldGetters.add(createGetterString(1, fieldName, dataType, fieldTitleString));
fieldSetters.add(createSetterString(1, fieldName, dataType, fieldTitleString));
if (jpaField.foriegnKey){
fieldName = createVarNameFromClassName(jpaField.foriegnKeyJPAResourceClass);
dataType = jpaField.foriegnKeyJPAResourceClass;
fieldTitleString = jpaField.foriegnKeyJPAResourceClass;
fieldString=tabs(1)+createFieldVarString(dataType ,fieldName);
columnFields.add(fieldString);
fieldGetters.add(createGetterString(1, fieldName,dataType, fieldTitleString));
fieldSetters.add(createSetterString(1, fieldName,dataType, fieldTitleString));
}
}
classStr=addLines(classStr,columnFields.toArray(new String[]{}));
//remove method
classStr=addLines(classStr,tabs(1));
classStr=addLines(classStr,tabs(1)+"@Override");
classStr=addLines(classStr,tabs(1)+"public void remove(Object identifier) throws "+getExceptionClassName()+" {");
if (model.jpaClassModel.generatePKClass){
classStr=addLines(classStr,tabs(2)+"HashMap<String, String> ids;");
classStr=addLines(classStr,tabs(2)+"if (identifier instanceof Map) {");
classStr=addLines(classStr,tabs(3)+"ids = (HashMap<String, String>) identifier;");
classStr=addLines(classStr,tabs(2)+"} else {");
classStr=addLines(classStr,tabs(3)+"logger.error(\"Identifier should be a map with the field name and it's value\");");
classStr=addLines(classStr,tabs(3)+"throw new "+getExceptionClassName()+"(\"Identifier should be a map with the field name and it's value\");");
classStr=addLines(classStr,tabs(2)+"}");
}
classStr=addLines(classStr,tabs(2)+"EntityManager em = null;");
classStr=addLines(classStr,tabs(2)+"try {");
classStr=addLines(classStr,tabs(3)+"em = "+getJpaUtilsClassName()+".getEntityManager();");
classStr=addLines(classStr,tabs(3)+"em.getTransaction().begin();");
classStr=addLines(classStr,tabs(3)+""+getQueryGeneratorClassName()+" generator = new "+getQueryGeneratorClassName()+"("+model.jpaClassModel.classNameConstant+");");
if (model.jpaClassModel.generatePKClass){
for(JPAClassField field:model.jpaClassModel.pkClassModel.pkFields){
classStr=addLines(classStr,tabs(3)+"generator.setParameter("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+", ids.get("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+"));");
}
}else{
for(JPAClassField field:model.jpaClassModel.fields){
if (field.primaryKey){
classStr=addLines(classStr,tabs(3)+"generator.setParameter("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+", identifier);");
}
}
}
classStr=addLines(classStr,tabs(3)+"Query q = generator.deleteQuery(em);");
classStr=addLines(classStr,tabs(3)+"q.executeUpdate();");
classStr=addLines(classStr,tabs(3)+"em.getTransaction().commit();");
classStr=addLines(classStr,tabs(3)+"em.close();");
classStr=addLines(classStr,tabs(2)+"} catch (ApplicationSettingsException e) {");
classStr=addLines(classStr,tabs(3)+"logger.error(e.getMessage(), e);");
classStr=addLines(classStr,tabs(3)+"throw new "+getExceptionClassName()+"(e);");
classStr=addLines(classStr,tabs(2)+"} finally {");
classStr=addLines(classStr,tabs(3)+"if (em != null && em.isOpen()) {");
classStr=addLines(classStr,tabs(4)+"if (em.getTransaction().isActive()) {");
classStr=addLines(classStr,tabs(5)+"em.getTransaction().rollback();");
classStr=addLines(classStr,tabs(4)+"}");
classStr=addLines(classStr,tabs(4)+"em.close();");
classStr=addLines(classStr,tabs(3)+"}");
classStr=addLines(classStr,tabs(2)+"}");
classStr=addLines(classStr,tabs(1)+"}");
//get method for resource class
classStr=addLines(classStr,tabs(1));
classStr=addLines(classStr,tabs(1)+"@Override");
classStr=addLines(classStr,tabs(1)+"public Resource get(Object identifier) throws "+getExceptionClassName()+" {");
if (model.jpaClassModel.generatePKClass){
classStr=addLines(classStr,tabs(2)+"HashMap<String, String> ids;");
classStr=addLines(classStr,tabs(2)+"if (identifier instanceof Map) {");
classStr=addLines(classStr,tabs(3)+"ids = (HashMap<String, String>) identifier;");
classStr=addLines(classStr,tabs(2)+"} else {");
classStr=addLines(classStr,tabs(3)+"logger.error(\"Identifier should be a map with the field name and it's value\");");
classStr=addLines(classStr,tabs(3)+"throw new "+getExceptionClassName()+"(\"Identifier should be a map with the field name and it's value\");");
classStr=addLines(classStr,tabs(2)+"}");
}
classStr=addLines(classStr,tabs(2)+"EntityManager em = null;");
classStr=addLines(classStr,tabs(2)+"try {");
classStr=addLines(classStr,tabs(3)+"em = "+getJpaUtilsClassName()+".getEntityManager();");
classStr=addLines(classStr,tabs(3)+"em.getTransaction().begin();");
classStr=addLines(classStr,tabs(3)+""+getQueryGeneratorClassName()+" generator = new "+getQueryGeneratorClassName()+"("+model.jpaClassModel.classNameConstant+");");
if (model.jpaClassModel.generatePKClass){
for(JPAClassField field:model.jpaClassModel.pkClassModel.pkFields){
classStr=addLines(classStr,tabs(3)+"generator.setParameter("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+", ids.get("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+"));");
}
}else{
for(JPAClassField field:model.jpaClassModel.fields){
if (field.primaryKey){
classStr=addLines(classStr,tabs(3)+"generator.setParameter("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+", identifier);");
}
}
}
classStr=addLines(classStr,tabs(3)+"Query q = generator.selectQuery(em);");
String jpaObjVar=createVarNameFromClassName(model.jpaClassModel.className);
classStr=addLines(classStr,tabs(3)+model.jpaClassModel.className+" "+jpaObjVar+" = ("+model.jpaClassModel.className+") q.getSingleResult();");
String jpaObjVarResource=createVarNameFromClassName(model.className);
classStr=addLines(classStr,tabs(3)+model.className+" "+jpaObjVarResource+" = ("+model.className+") "+getJpaUtilsClassName()+".getResource("+getResourceTypeClassName()+"."+model.jpaClassModel.classNameConstant+", "+jpaObjVar+");");
classStr=addLines(classStr,tabs(3)+"em.getTransaction().commit();");
classStr=addLines(classStr,tabs(3)+"em.close();");
classStr=addLines(classStr,tabs(3)+"return "+jpaObjVarResource+";");
classStr=addLines(classStr,tabs(2)+"} catch (ApplicationSettingsException e) {");
classStr=addLines(classStr,tabs(3)+"logger.error(e.getMessage(), e);");
classStr=addLines(classStr,tabs(3)+"throw new "+getExceptionClassName()+"(e);");
classStr=addLines(classStr,tabs(2)+"} finally {");
classStr=addLines(classStr,tabs(3)+"if (em != null && em.isOpen()) {");
classStr=addLines(classStr,tabs(4)+"if (em.getTransaction().isActive()) {");
classStr=addLines(classStr,tabs(5)+"em.getTransaction().rollback();");
classStr=addLines(classStr,tabs(4)+"}");
classStr=addLines(classStr,tabs(4)+"em.close();");
classStr=addLines(classStr,tabs(3)+"}");
classStr=addLines(classStr,tabs(2)+"}");
classStr=addLines(classStr,tabs(1)+"}");
classStr=addLines(classStr,tabs(1));
classStr=addLines(classStr,tabs(1)+"@Override");
classStr=addLines(classStr,tabs(1)+"public List<Resource> get(String fieldName, Object value) throws "+getExceptionClassName()+" {");
String resultListVarName=createVarNameFromClassName(model.className)+"s";
classStr=addLines(classStr,tabs(2)+"List<Resource> "+resultListVarName+" = new ArrayList<Resource>();");
classStr=addLines(classStr,tabs(2)+"EntityManager em = null;");
classStr=addLines(classStr,tabs(2)+"try {");
classStr=addLines(classStr,tabs(3)+"em = "+getJpaUtilsClassName()+".getEntityManager();");
classStr=addLines(classStr,tabs(3)+"em.getTransaction().begin();");
classStr=addLines(classStr,tabs(3)+""+getQueryGeneratorClassName()+" generator = new "+getQueryGeneratorClassName()+"("+model.jpaClassModel.classNameConstant+");");
classStr=addLines(classStr,tabs(3)+"Query q;");
List<String> fieldNameValidations=new ArrayList<String>();
for(JPAClassField field:model.jpaClassModel.fields){
fieldNameValidations.add("(fieldName.equals("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+"))");
}
String fieldNameValidationLogic = commaSeperatedString(fieldNameValidations, " || ");
classStr=addLines(classStr,tabs(3)+"if ("+fieldNameValidationLogic+") {");
classStr=addLines(classStr,tabs(4)+"generator.setParameter(fieldName, value);");
classStr=addLines(classStr,tabs(4)+"q = generator.selectQuery(em);");
classStr=addLines(classStr,tabs(4)+"List<?> results = q.getResultList();");
classStr=addLines(classStr,tabs(4)+"for (Object result : results) {");
classStr=addLines(classStr,tabs(5)+model.jpaClassModel.className+" "+jpaObjVar+" = ("+model.jpaClassModel.className+") result;");
classStr=addLines(classStr,tabs(5)+model.className+" "+jpaObjVarResource+" = ("+model.className+") "+getJpaUtilsClassName()+".getResource("+getResourceTypeClassName()+"."+model.jpaClassModel.classNameConstant+", "+jpaObjVar+");");
classStr=addLines(classStr,tabs(5)+resultListVarName+".add("+jpaObjVarResource+");");
classStr=addLines(classStr,tabs(4)+"}");
classStr=addLines(classStr,tabs(3)+"} else {");
classStr=addLines(classStr,tabs(4)+"em.getTransaction().commit();");
classStr=addLines(classStr,tabs(5)+"em.close();");
classStr=addLines(classStr,tabs(4)+"logger.error(\"Unsupported field name for "+convertToTitleCaseString(model.className)+".\", new IllegalArgumentException());");
classStr=addLines(classStr,tabs(4)+"throw new IllegalArgumentException(\"Unsupported field name for "+convertToTitleCaseString(model.className)+".\");");
classStr=addLines(classStr,tabs(3)+"}");
classStr=addLines(classStr,tabs(3)+"em.getTransaction().commit();");
classStr=addLines(classStr,tabs(3)+"em.close();");
classStr=addLines(classStr,tabs(2)+"} catch (ApplicationSettingsException e) {");
classStr=addLines(classStr,tabs(3)+"logger.error(e.getMessage(), e);");
classStr=addLines(classStr,tabs(3)+"throw new "+getExceptionClassName()+"(e);");
classStr=addLines(classStr,tabs(2)+"} finally {");
classStr=addLines(classStr,tabs(3)+"if (em != null && em.isOpen()) {");
classStr=addLines(classStr,tabs(4)+"if (em.getTransaction().isActive()) {");
classStr=addLines(classStr,tabs(5)+"em.getTransaction().rollback();");
classStr=addLines(classStr,tabs(4)+"}");
classStr=addLines(classStr,tabs(4)+"em.close();");
classStr=addLines(classStr,tabs(3)+"}");
classStr=addLines(classStr,tabs(2)+"}");
classStr=addLines(classStr,tabs(2)+"return "+resultListVarName+";");
classStr=addLines(classStr,tabs(1)+"}");
//id list method
classStr=addLines(classStr,tabs(1));
classStr=addLines(classStr,tabs(1)+"@Override");
classStr=addLines(classStr,tabs(1)+"public List<String> getIds(String fieldName, Object value) throws "+getExceptionClassName()+" {");
resultListVarName=createVarNameFromClassName(model.className)+"IDs";
classStr=addLines(classStr,tabs(2)+"List<String> "+resultListVarName+" = new ArrayList<String>();");
classStr=addLines(classStr,tabs(2)+"EntityManager em = null;");
classStr=addLines(classStr,tabs(2)+"try {");
classStr=addLines(classStr,tabs(3)+"em = "+getJpaUtilsClassName()+".getEntityManager();");
classStr=addLines(classStr,tabs(3)+"em.getTransaction().begin();");
classStr=addLines(classStr,tabs(3)+""+getQueryGeneratorClassName()+" generator = new "+getQueryGeneratorClassName()+"("+model.jpaClassModel.classNameConstant+");");
classStr=addLines(classStr,tabs(3)+"Query q;");
fieldNameValidations=new ArrayList<String>();
for(JPAClassField field:model.jpaClassModel.fields){
fieldNameValidations.add("(fieldName.equals("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+"))");
}
fieldNameValidationLogic = commaSeperatedString(fieldNameValidations, " || ");
classStr=addLines(classStr,tabs(3)+"if ("+fieldNameValidationLogic+") {");
classStr=addLines(classStr,tabs(4)+"generator.setParameter(fieldName, value);");
classStr=addLines(classStr,tabs(4)+"q = generator.selectQuery(em);");
classStr=addLines(classStr,tabs(4)+"List<?> results = q.getResultList();");
classStr=addLines(classStr,tabs(4)+"for (Object result : results) {");
classStr=addLines(classStr,tabs(5)+model.jpaClassModel.className+" "+jpaObjVar+" = ("+model.jpaClassModel.className+") result;");
classStr=addLines(classStr,tabs(5)+model.className+" "+jpaObjVarResource+" = ("+model.className+") "+getJpaUtilsClassName()+".getResource("+getResourceTypeClassName()+"."+model.jpaClassModel.classNameConstant+", "+jpaObjVar+");");
String idFieldToAdd=null;
if (model.jpaClassModel.generatePKClass){
for (JPAClassField field : model.jpaClassModel.fields) {
if (field.foriegnKey){
idFieldToAdd=jpaObjVarResource+".get"+field.fieldTitle+"()";
break;
}
}
}else{
for (JPAClassField field : model.jpaClassModel.fields) {
if (field.primaryKey){
idFieldToAdd=jpaObjVarResource+".get"+field.fieldTitle+"()";
}
}
}
classStr=addLines(classStr,tabs(5)+resultListVarName+".add("+idFieldToAdd+");");
classStr=addLines(classStr,tabs(4)+"}");
classStr=addLines(classStr,tabs(3)+"} else {");
classStr=addLines(classStr,tabs(4)+"em.getTransaction().commit();");
classStr=addLines(classStr,tabs(5)+"em.close();");
classStr=addLines(classStr,tabs(4)+"logger.error(\"Unsupported field name for "+convertToTitleCaseString(model.className)+".\", new IllegalArgumentException());");
classStr=addLines(classStr,tabs(4)+"throw new IllegalArgumentException(\"Unsupported field name for "+convertToTitleCaseString(model.className)+".\");");
classStr=addLines(classStr,tabs(3)+"}");
classStr=addLines(classStr,tabs(3)+"em.getTransaction().commit();");
classStr=addLines(classStr,tabs(3)+"em.close();");
classStr=addLines(classStr,tabs(2)+"} catch (ApplicationSettingsException e) {");
classStr=addLines(classStr,tabs(3)+"logger.error(e.getMessage(), e);");
classStr=addLines(classStr,tabs(3)+"throw new "+getExceptionClassName()+"(e);");
classStr=addLines(classStr,tabs(2)+"} finally {");
classStr=addLines(classStr,tabs(3)+"if (em != null && em.isOpen()) {");
classStr=addLines(classStr,tabs(4)+"if (em.getTransaction().isActive()) {");
classStr=addLines(classStr,tabs(5)+"em.getTransaction().rollback();");
classStr=addLines(classStr,tabs(4)+"}");
classStr=addLines(classStr,tabs(4)+"em.close();");
classStr=addLines(classStr,tabs(3)+"}");
classStr=addLines(classStr,tabs(2)+"}");
classStr=addLines(classStr,tabs(2)+"return "+resultListVarName+";");
classStr=addLines(classStr,tabs(1)+"}");
//save method
classStr=addLines(classStr,tabs(1));
classStr=addLines(classStr,tabs(1)+"@Override");
classStr=addLines(classStr,tabs(1)+"public void save() throws "+getExceptionClassName()+" {");
classStr=addLines(classStr,tabs(2)+"EntityManager em = null;");
classStr=addLines(classStr,tabs(2)+"try {");
classStr=addLines(classStr,tabs(3)+"em = "+getJpaUtilsClassName()+".getEntityManager();");
String existingJPAObjVar="existing"+model.jpaClassModel.className;
String primaryKeySearchString=null;
if (model.jpaClassModel.generatePKClass){
List<String> fieldStrings=new ArrayList<String>();
for(JPAClassField field:model.jpaClassModel.pkClassModel.pkFields){
fieldStrings.add(field.fieldName);
}
primaryKeySearchString="new "+model.jpaClassModel.pkClassModel.className+"("+commaSeperatedString(fieldStrings, ", ")+")";
}else{
for(JPAClassField field:model.jpaClassModel.fields){
if (field.primaryKey){
primaryKeySearchString=field.fieldName;
}
}
}
classStr=addLines(classStr,tabs(3)+model.jpaClassModel.className+" "+existingJPAObjVar+" = em.find("+model.jpaClassModel.className+".class, "+primaryKeySearchString+");");
classStr=addLines(classStr,tabs(3)+"em.close();");
classStr=addLines(classStr,tabs(3)+model.jpaClassModel.className+" "+jpaObjVar+";");
classStr=addLines(classStr,tabs(3)+"em = "+getJpaUtilsClassName()+".getEntityManager();");
classStr=addLines(classStr,tabs(3)+"em.getTransaction().begin();");
classStr=addLines(classStr,tabs(3)+"if ("+existingJPAObjVar+" == null) {");
classStr=addLines(classStr,tabs(4)+jpaObjVar+" = new "+model.jpaClassModel.className+"();");
classStr=addLines(classStr,tabs(3)+"} else {");
classStr=addLines(classStr,tabs(4)+jpaObjVar+" = "+existingJPAObjVar+";");
classStr=addLines(classStr,tabs(3)+"}");
for (JPAClassField field : model.jpaClassModel.fields) {
classStr=addLines(classStr,tabs(3)+jpaObjVar+".set"+field.fieldTitle+"(get"+field.fieldTitle+"());");
if (field.foriegnKey){
String varNameForForiegnKeyObj = createVarNameFromClassName(field.foriegnKeyJPAClass);
classStr=addLines(classStr,tabs(3)+field.foriegnKeyJPAClass+" "+varNameForForiegnKeyObj+" = em.find("+field.foriegnKeyJPAClass+".class, get"+field.fieldTitle+"());");
classStr=addLines(classStr,tabs(3)+jpaObjVar+".set"+field.foriegnKeyJPAClass+"("+varNameForForiegnKeyObj+");");
}
}
classStr=addLines(classStr,tabs(3)+"if ("+existingJPAObjVar+" == null) {");
classStr=addLines(classStr,tabs(4)+"em.persist("+jpaObjVar+");");
classStr=addLines(classStr,tabs(3)+"} else {");
classStr=addLines(classStr,tabs(4)+"em.merge("+jpaObjVar+");");
classStr=addLines(classStr,tabs(3)+"}");
classStr=addLines(classStr,tabs(3)+"em.getTransaction().commit();");
classStr=addLines(classStr,tabs(3)+"em.close();");
classStr=addLines(classStr,tabs(2)+"} catch (Exception e) {");
classStr=addLines(classStr,tabs(3)+"logger.error(e.getMessage(), e);");
classStr=addLines(classStr,tabs(3)+"throw new "+getExceptionClassName()+"(e);");
classStr=addLines(classStr,tabs(2)+"} finally {");
classStr=addLines(classStr,tabs(3)+"if (em != null && em.isOpen()) {");
classStr=addLines(classStr,tabs(4)+"if (em.getTransaction().isActive()) {");
classStr=addLines(classStr,tabs(5)+"em.getTransaction().rollback();");
classStr=addLines(classStr,tabs(4)+"}");
classStr=addLines(classStr,tabs(4)+"em.close();");
classStr=addLines(classStr,tabs(3)+"}");
classStr=addLines(classStr,tabs(2)+"}");
classStr=addLines(classStr,tabs(1)+"}");
//isexist method
classStr=addLines(classStr,tabs(1));
classStr=addLines(classStr,tabs(1)+"@Override");
classStr=addLines(classStr,tabs(1)+"public boolean isExists(Object identifier) throws "+getExceptionClassName()+" {");
if (model.jpaClassModel.generatePKClass){
classStr=addLines(classStr,tabs(2)+"HashMap<String, String> ids;");
classStr=addLines(classStr,tabs(2)+"if (identifier instanceof Map) {");
classStr=addLines(classStr,tabs(3)+"ids = (HashMap<String, String>) identifier;");
classStr=addLines(classStr,tabs(2)+"} else {");
classStr=addLines(classStr,tabs(3)+"logger.error(\"Identifier should be a map with the field name and it's value\");");
classStr=addLines(classStr,tabs(3)+"throw new "+getExceptionClassName()+"(\"Identifier should be a map with the field name and it's value\");");
classStr=addLines(classStr,tabs(2)+"}");
}
primaryKeySearchString=null;
if (model.jpaClassModel.generatePKClass){
List<String> fieldStrings=new ArrayList<String>();
for(JPAClassField field:model.jpaClassModel.pkClassModel.pkFields){
fieldStrings.add("ids.get("+model.jpaClassConstantClassName+"."+field.fieldNameConstant+")");
}
primaryKeySearchString="new "+model.jpaClassModel.pkClassModel.className+"("+commaSeperatedString(fieldStrings, ", ")+")";
}else{
for(JPAClassField field:model.jpaClassModel.fields){
if (field.primaryKey){
primaryKeySearchString="identifier";
}
}
}
classStr=addLines(classStr,tabs(2)+"EntityManager em = null;");
classStr=addLines(classStr,tabs(2)+"try {");
classStr=addLines(classStr,tabs(3)+"em = "+getJpaUtilsClassName()+".getEntityManager();");
classStr=addLines(classStr,tabs(3)+model.jpaClassModel.className+" "+jpaObjVar+" = em.find("+model.jpaClassModel.className+".class, "+primaryKeySearchString+");");
classStr=addLines(classStr,tabs(3)+"em.close();");
classStr=addLines(classStr,tabs(3)+"return "+jpaObjVar+" != null;");
classStr=addLines(classStr,tabs(2)+"} catch (ApplicationSettingsException e) {");
classStr=addLines(classStr,tabs(3)+"logger.error(e.getMessage(), e);");
classStr=addLines(classStr,tabs(3)+"throw new "+getExceptionClassName()+"(e);");
classStr=addLines(classStr,tabs(2)+"} finally {");
classStr=addLines(classStr,tabs(3)+"if (em != null && em.isOpen()) {");
classStr=addLines(classStr,tabs(4)+"if (em.getTransaction().isActive()) {");
classStr=addLines(classStr,tabs(5)+"em.getTransaction().rollback();");
classStr=addLines(classStr,tabs(4)+"}");
classStr=addLines(classStr,tabs(4)+"em.close();");
classStr=addLines(classStr,tabs(3)+"}");
classStr=addLines(classStr,tabs(2)+"}");
classStr=addLines(classStr,tabs(1)+"}");
classStr=addLines(classStr,fieldGetters.toArray(new String[]{}));
classStr=addLines(classStr,fieldSetters.toArray(new String[]{}));
classStr=addLines(classStr,"}");
return classStr;
}