Search in sources :

Example 11 with Mapper

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);
    }
}
Also used : Mapper(com.axelor.db.mapper.Mapper) Property(com.axelor.db.mapper.Property)

Example 12 with Mapper

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;
}
Also used : App(com.axelor.apps.base.db.App) ArrayList(java.util.ArrayList) CSVInput(com.axelor.data.csv.CSVInput) Mapper(com.axelor.db.mapper.Mapper) MetaModel(com.axelor.meta.db.MetaModel) AuditableModel(com.axelor.auth.db.AuditableModel) Model(com.axelor.db.Model) Property(com.axelor.db.mapper.Property)

Example 13 with Mapper

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;
    }
}
Also used : Mapper(com.axelor.db.mapper.Mapper) MetaJsonModel(com.axelor.meta.db.MetaJsonModel) MetaJsonRecord(com.axelor.meta.db.MetaJsonRecord)

Example 14 with Mapper

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());
    }
}
Also used : Mapper(com.axelor.db.mapper.Mapper) AxelorException(com.axelor.exception.AxelorException) DataConfigLine(com.axelor.apps.base.db.DataConfigLine) AxelorException(com.axelor.exception.AxelorException)

Example 15 with Mapper

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);
    }
}
Also used : MetaModelRepository(com.axelor.meta.db.repo.MetaModelRepository) MetaField(com.axelor.meta.db.MetaField) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) MetaFieldRepository(com.axelor.meta.db.repo.MetaFieldRepository) Mapper(com.axelor.db.mapper.Mapper) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) MetaModel(com.axelor.meta.db.MetaModel) AdvancedExport(com.axelor.apps.base.db.AdvancedExport) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

Mapper (com.axelor.db.mapper.Mapper)44 Property (com.axelor.db.mapper.Property)19 AxelorException (com.axelor.exception.AxelorException)13 Model (com.axelor.db.Model)12 MetaField (com.axelor.meta.db.MetaField)10 ArrayList (java.util.ArrayList)10 MetaModel (com.axelor.meta.db.MetaModel)7 File (java.io.File)6 IOException (java.io.IOException)6 FileField (com.axelor.apps.base.db.FileField)5 Transactional (com.google.inject.persist.Transactional)5 TraceBackService (com.axelor.exception.service.TraceBackService)4 MetaFiles (com.axelor.meta.MetaFiles)4 MetaModelRepository (com.axelor.meta.db.repo.MetaModelRepository)4 List (java.util.List)4 Inflector (com.axelor.common.Inflector)3 MetaFile (com.axelor.meta.db.MetaFile)3 MetaJsonField (com.axelor.meta.db.MetaJsonField)3 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)3 Strings (com.google.common.base.Strings)3