use of org.openforis.idm.metamodel.CodeList in project collect by openforis.
the class CSVValueFormatter method format.
public String format(AttributeDefinition defn, Value value) {
if (value == null) {
return "";
} else if (value instanceof BooleanValue) {
return ((BooleanValue) value).getValue().toString();
} else if (value instanceof Code) {
CodeListService codeListService = defn.getSurvey().getContext().getCodeListService();
CodeList list = ((CodeAttributeDefinition) defn).getList();
if (codeListService.hasQualifiableItems(list)) {
return String.format("%s: %s", ((Code) value).getCode(), ((Code) value).getQualifier());
} else {
return ((Code) value).getCode();
}
} else if (value instanceof Coordinate) {
return value.toString();
} else if (value instanceof Date) {
Date date = (Date) value;
return String.format("%d/%d/%d", ((Date) value).getDay(), ((Date) value).getMonth(), date.getYear());
} else if (value instanceof File) {
return ((File) value).getFilename();
} else if (value instanceof NumberValue) {
Number val = ((NumberValue<?>) value).getValue();
NumberFormat numberFormat = NumberFormat.getInstance(Locale.ENGLISH);
String formattedVal = numberFormat.format(val);
return formattedVal;
} else if (value instanceof NumericRange) {
Number from = ((NumericRange<?>) value).getFrom();
Number to = ((NumericRange<?>) value).getFrom();
String format;
if (value instanceof IntegerRange) {
format = "%d-%d";
} else {
format = "%f-%f";
}
String formattedValue = String.format(Locale.ENGLISH, format, from, to);
return formattedValue;
} else if (value instanceof TextValue) {
return ((TextValue) value).getValue();
} else if (value instanceof Time) {
Time time = (Time) value;
return String.format("%d:%d", time.getHour(), time.getMinute());
} else
throw new IllegalArgumentException("Unsupported attribute value type: " + value.getClass().getName());
}
use of org.openforis.idm.metamodel.CodeList in project collect by openforis.
the class CodeColumnProvider method getFieldNames.
@Override
protected String[] getFieldNames() {
List<String> result = new ArrayList<String>();
// code field
result.add(CodeAttributeDefinition.CODE_FIELD);
// qualifier field
CodeList list = attributeDefinition.getList();
if (hasQualifiableItems(list)) {
result.add(CodeAttributeDefinition.QUALIFIER_FIELD);
}
// item position field
if (getConfig().isIncludeCodeItemPositionColumn() && !list.isExternal()) {
result.add(ITEM_POSITION_FIELD_NAME);
}
// label field
if (getConfig().isIncludeCodeItemLabelColumn() && !list.isExternal()) {
result.add(ITEM_LABEL_FIELD_NAME);
}
return result.toArray(new String[result.size()]);
}
use of org.openforis.idm.metamodel.CodeList in project collect by openforis.
the class EnumerableEntityColumnProvider method createProviders.
private static List<ColumnProvider> createProviders(CSVDataExportParameters config, EntityDefinition defn) {
List<ColumnProvider> providers = new ArrayList<ColumnProvider>();
List<AttributeDefinition> keyDefs = defn.getKeyAttributeDefinitions();
CodeAttributeDefinition keyDef = (CodeAttributeDefinition) keyDefs.get(0);
CodeList codeList = keyDef.getList();
SurveyContext context = defn.getSurvey().getContext();
CodeListService codeListService = context.getCodeListService();
List<CodeListItem> items = codeListService.loadRootItems(codeList);
for (CodeListItem item : items) {
String code = item.getCode();
String keyName = keyDef.getName();
EnumeratedCodeItemColumnProvider p = new EnumeratedCodeItemColumnProvider(config, defn, keyName, code);
providers.add(p);
}
return providers;
}
use of org.openforis.idm.metamodel.CodeList in project collect by openforis.
the class CodeListItemDao method update.
@Override
public void update(PersistedCodeListItem item) {
CodeList codeList = item.getCodeList();
JooqDSLContext jf = dsl(codeList);
jf.updateQuery(item).execute();
if (isCacheInUse(codeList)) {
cache.clearItemsByCodeList(codeList);
}
}
use of org.openforis.idm.metamodel.CodeList in project collect by openforis.
the class CodeListItemDao method deleteInvalidCodeListReferenceItems.
public void deleteInvalidCodeListReferenceItems(CollectSurvey survey) {
// create delete where condition
Condition whereCondition = OFC_CODE_LIST.SURVEY_ID.equal(survey.getId());
List<Integer> codeListsIds = new ArrayList<Integer>();
if (!survey.getCodeLists().isEmpty()) {
// include items that belongs to detached code lists
for (CodeList codeList : survey.getCodeLists()) {
codeListsIds.add(codeList.getId());
}
whereCondition = whereCondition.and(OFC_CODE_LIST.CODE_LIST_ID.notIn(codeListsIds));
}
// execute delete
JooqDSLContext jf = dsl(null);
jf.delete(OFC_CODE_LIST).where(whereCondition).execute();
if (isCacheInUse(survey)) {
cache.clearItemsBySurvey(survey.getId());
}
}
Aggregations