}
}
public String getDataFieldValue(UUID dataId, UUID templateId, UUID fieldId, DataAccessSession das)
{
Data data = das.queryData(dataId,templateId);
if(data == null)
return null;
Field field = das.queryField(fieldId , data.getTemplateId());
if(field == null)
return null;
if(field.getType().equals(Field.Type.t_selection))
{
if(field.getDataType().equals(Field.DataType.dt_single))
{
UUID optionId = data.getSingleSelection(fieldId);
if(optionId == null)
return null;
Option option = field.getOption(optionId);
if(option != null)
return "[" + option.getName() + "]";
}
else if(field.getDataType().equals(Field.DataType.dt_multiple))
{
UUID[] optionIdArray = data.getMultiSelection(fieldId);
if(optionIdArray == null || optionIdArray.length == 0)
return null;
StringBuffer valueStrb = new StringBuffer();
for(UUID optionId : optionIdArray)
{
Option option = field.getOption(optionId);
if(option == null)
continue;
if(valueStrb.length() > 0)
valueStrb.append(",");
valueStrb.append("[").append(option.getName()).append("]");
}
return valueStrb.toString();
}
}
else if(field.getType().equals(Field.Type.t_reference))
{
if(field.getDataType().equals(Field.DataType.dt_single))
{
UUID referenceId = data.getSingleReference(fieldId);
if(referenceId == null)
return null;
String[] referTitleArray = new DataAccessSessionMySQL().queryFieldByIds(new UUID[]{referenceId}, "title", templateId);
if(referTitleArray != null && referTitleArray.length > 0)
return "[" + referTitleArray[0] + "]";
}
else if(field.getDataType().equals(Field.DataType.dt_multiple))
{
UUID[] referenceIdArray = data.getMultiReference(fieldId);
if(referenceIdArray == null || referenceIdArray.length == 0)
return null;
StringBuffer valueStrb = new StringBuffer();
String[] referTitleArray = new DataAccessSessionMySQL().queryFieldByIds(referenceIdArray, "title", templateId);
for(String title : referTitleArray)
{
if(title == null)
continue;
if(valueStrb.length() > 0)
valueStrb.append(",");
valueStrb.append("[").append(title).append("]");
}
return valueStrb.toString();
}
}
else if(field.getType().equals(Field.Type.t_attachment))
{
UUID[] attachmentIdArray = data.getAttachments(fieldId);
if(attachmentIdArray == null || attachmentIdArray.length == 0)
return null;
StringBuffer valueStrb = new StringBuffer();
Attachment[] attachmentArray = das.queryAttachments(attachmentIdArray, false);
for(Attachment attachment : attachmentArray)
{
if(valueStrb.length() > 0)
valueStrb.append(",");
valueStrb.append("[").append(attachment.getName()).append("]");
}
return valueStrb.toString();
}
else if(field.getType().equals(Field.Type.t_input))
{
Object value = null;
if(field.getDataType().equals(Field.DataType.dt_integer))
value = data.getInteger(fieldId);
else if(field.getDataType().equals(Field.DataType.dt_long))
value = data.getLong(fieldId);
else if(field.getDataType().equals(Field.DataType.dt_float))
value = data.getFloat(fieldId);
else if(field.getDataType().equals(Field.DataType.dt_double))
value = data.getDouble(fieldId);
else if(field.getDataType().equals(Field.DataType.dt_string) || field.getDataType().equals(Field.DataType.dt_text))
value = data.getString(fieldId);
else if(field.getDataType().equals(Field.DataType.dt_timestamp))
value = data.getDate(fieldId);
if(value != null)
return value.toString();
}