package org.gcube.accounting.utility.postgresql; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.gcube.documentstore.records.Record; public class RecordToDBFields { protected static String getKey(String fieldName) { StringBuffer stringBuffer = new StringBuffer(); int lenght = fieldName.length(); boolean lastLowerCase = true; for (int i=0; i clz; protected final String typeName; protected final String tableName; protected final Map tableFieldToRecordField; protected final Map recordFieldToTableField; public RecordToDBFields(String typeName, Class clz) throws Exception { this.clz = clz; this.typeName = typeName; this.tableName = typeName.toLowerCase(); this.tableFieldToRecordField = new HashMap<>(); this.recordFieldToTableField = new HashMap<>(); mapFields(); } protected void mapFields() throws Exception { Set requiredFields = clz.newInstance().getRequiredFields(); for(String usageRecordField : requiredFields) { String dbField = getKey(usageRecordField); tableFieldToRecordField.put(dbField, usageRecordField); recordFieldToTableField.put(usageRecordField, dbField); } } public String getTableField(String recordField) { return recordFieldToTableField.get(recordField); } public String getRecordField(String tableField) { String ret = tableFieldToRecordField.get(tableField); if(ret==null && recordFieldToTableField.keySet().contains(tableField)) { ret = tableField; } return ret; } public String getTypeName() { return typeName; } public String getTableName() { return tableName; } }