use of com.axelor.db.mapper.Mapper in project axelor-open-suite by axelor.
the class DataBackupCreateService method getCsvInputForDateorDateTime.
protected void getCsvInputForDateorDateTime(MetaModel metaModel, CSVInput csvInput) {
try {
Mapper metaModelMapper = Mapper.of(Class.forName(metaModel.getFullName()));
Property[] properties = metaModelMapper.getProperties();
for (Property property : properties) {
String propertyType = property.getType().toString();
if ((propertyType.equals("DATE") || propertyType.equals("DATETIME")) && !property.getName().equals("createdOn") && !property.getName().equals("updatedOn")) {
getDateOrDateTimeHeader(property, csvInput);
}
}
} catch (ClassNotFoundException e) {
TraceBackService.trace(e);
}
}
use of com.axelor.db.mapper.Mapper in project axelor-open-suite by axelor.
the class DataBackupCreateService method writeCSVData.
protected CSVInput writeCSVData(MetaModel metaModel, CSVWriter csvWriter, DataBackup dataBackup, long totalRecord, List<String> subClasses, String dirPath) {
CSVInput csvInput = new CSVInput();
boolean headerFlag = true;
List<String> dataArr;
List<String> headerArr = new ArrayList<>();
List<Model> dataList;
try {
Mapper metaModelMapper = Mapper.of(Class.forName(metaModel.getFullName()));
Property[] pro = metaModelMapper.getProperties();
Integer fetchLimit = dataBackup.getFetchLimit();
boolean isRelativeDate = dataBackup.getIsRelativeDate();
boolean updateImportId = dataBackup.getUpdateImportId();
csvInput.setFileName(metaModel.getName() + ".csv");
csvInput.setTypeName(metaModel.getFullName());
csvInput.setBindings(new ArrayList<>());
for (int i = 0; i < totalRecord; i = i + fetchLimit) {
dataList = getMetaModelDataList(metaModel, i, fetchLimit, subClasses);
if (dataList != null && !dataList.isEmpty()) {
for (Object dataObject : dataList) {
dataArr = new ArrayList<>();
for (Property property : pro) {
if (isPropertyExportable(property)) {
if (headerFlag) {
String headerStr = getMetaModelHeader(property, csvInput, isRelativeDate);
headerArr.add(headerStr);
}
dataArr.add(getMetaModelData(metaModel.getName(), metaModelMapper, property, dataObject, dirPath, isRelativeDate, updateImportId));
}
}
if (headerFlag) {
if (byteArrFieldFlag) {
csvInput.setCallable("com.axelor.apps.base.service.app.DataBackupRestoreService:importObjectWithByteArray");
byteArrFieldFlag = false;
}
csvWriter.writeNext(headerArr.toArray(new String[headerArr.size()]), true);
headerFlag = false;
}
csvWriter.writeNext(dataArr.toArray(new String[dataArr.size()]), true);
}
}
}
if (AutoImportModelMap.containsKey(csvInput.getTypeName())) {
csvInput.setSearch(AutoImportModelMap.get(csvInput.getTypeName()).toString());
} else if (Class.forName(metaModel.getFullName()).getSuperclass() == App.class) {
csvInput.setSearch("self.code = :code");
} else {
csvInput.setSearch("self.importId = :importId");
}
} catch (ClassNotFoundException e) {
}
return csvInput;
}
use of com.axelor.db.mapper.Mapper in project axelor-open-suite by axelor.
the class DmnServiceImpl method addJsonField.
private void addJsonField(String searchOperator, boolean multiple, String resultVar, StringBuilder scriptBuilder, String varName, MetaJsonField field) throws ClassNotFoundException {
String resultField = resultVar + "?." + field.getName();
String targetField = varName + "." + field.getName();
String type = field.getType();
switch(type) {
case ("many-to-one"):
case ("one-to-many"):
case ("many-to-many"):
Class<?> klass = Class.forName(field.getTargetModel());
Mapper mapper = Mapper.of(EntityHelper.getEntityClass(klass));
addRelationalField(searchOperator, multiple, scriptBuilder, targetField, resultField, klass.getSimpleName(), mapper.getNameField().getName());
break;
case ("json-many-to-one"):
case ("json-many-to-many"):
case ("json-one-to-many"):
MetaJsonModel targetModel = field.getTargetJsonModel();
String nameField = targetModel.getNameField() != null ? targetModel.getNameField() : "id";
String targetName = "jsonModel = '" + targetModel.getName() + "' AND json_extract(self." + field.getModelField() + ", '" + nameField + "')";
addRelationalField(searchOperator, multiple, scriptBuilder, targetField, resultField, MetaJsonRecord.class.getSimpleName(), targetName);
break;
default:
scriptBuilder.append(targetField + " = " + resultField);
break;
}
}
use of com.axelor.db.mapper.Mapper in project axelor-open-suite by axelor.
the class ObjectDataAnonymizeServiceImpl method anonymize.
public void anonymize(ObjectDataConfig objectDataConfig, Long recordId) throws AxelorException {
try {
String rootModel = objectDataConfig.getModelSelect();
for (DataConfigLine line : objectDataConfig.getDataConfigLineList()) {
String path = line.getTypeSelect() == DataConfigLineRepository.TYPE_PATH ? line.getMetaFieldPath().getName() : line.getPath();
Class<? extends Model> modelClass = ObjectDataCommonService.findModelClass(line.getMetaModel());
Query<? extends Model> query = ObjectDataCommonService.createQuery(recordId, line, modelClass);
List<? extends Model> data = query.fetch();
Mapper mapper = Mapper.of(modelClass);
int reset = line.getResetPathSelect();
if (reset != DataConfigLineRepository.RESET_NONE && line.getTypeSelect() == DataConfigLineRepository.TYPE_PATH) {
if (reset == DataConfigLineRepository.RESET_DELETE) {
deleteLink(mapper, path, data);
} else {
replaceLink(mapper, path, data, rootModel, line.getRecordSelectId());
}
}
deleteFields(line.getToDeleteMetaFieldSet(), mapper, data);
}
} catch (Exception e) {
TraceBackService.trace(e);
throw new AxelorException(TraceBackRepository.CATEGORY_CONFIGURATION_ERROR, e.getMessage());
}
}
use of com.axelor.db.mapper.Mapper in project axelor-open-suite by axelor.
the class AdvancedExportController method getModelAllFields.
public void getModelAllFields(ActionRequest request, ActionResponse response) throws ClassNotFoundException {
AdvancedExport advancedExport = request.getContext().asType(AdvancedExport.class);
inflector = Inflector.getInstance();
if (advancedExport.getMetaModel() != null) {
List<Map<String, Object>> allFieldList = new ArrayList<>();
MetaModelRepository metaModelRepository = Beans.get(MetaModelRepository.class);
MetaFieldRepository metaFieldRepository = Beans.get(MetaFieldRepository.class);
for (MetaField field : advancedExport.getMetaModel().getMetaFields()) {
Map<String, Object> allFieldMap = new HashMap<>();
allFieldMap.put("currentDomain", advancedExport.getMetaModel().getName());
Class<?> modelClass = Class.forName(advancedExport.getMetaModel().getFullName());
Mapper modelMapper = Mapper.of(modelClass);
if (modelMapper.getProperty(field.getName()) == null || modelMapper.getProperty(field.getName()).isTransient()) {
continue;
}
if (!Strings.isNullOrEmpty(field.getRelationship())) {
MetaModel metaModel = metaModelRepository.all().filter("self.name = ?", field.getTypeName()).fetchOne();
Class<?> klass = Class.forName(metaModel.getFullName());
Mapper mapper = Mapper.of(klass);
String fieldName = mapper.getNameField() == null ? "id" : mapper.getNameField().getName();
MetaField metaField = metaFieldRepository.all().filter("self.name = ?1 AND self.metaModel = ?2", fieldName, metaModel).fetchOne();
allFieldMap.put("metaField", metaField);
allFieldMap.put("targetField", field.getName() + "." + metaField.getName());
} else {
allFieldMap.put("metaField", field);
allFieldMap.put("targetField", field.getName());
}
if (Strings.isNullOrEmpty(field.getLabel())) {
allFieldMap.put("title", this.getFieldTitle(inflector, field.getName()));
} else {
allFieldMap.put("title", field.getLabel());
}
allFieldList.add(allFieldMap);
}
response.setAttr("advancedExportLineList", "value", allFieldList);
}
}
Aggregations