Search in sources :

Example 31 with Mapper

use of com.axelor.db.mapper.Mapper in project axelor-open-suite by axelor.

the class ConvertLeadWizardService method createPartner.

/**
 * Create a partner from a lead
 *
 * @param lead
 * @return
 * @throws AxelorException
 */
public Partner createPartner(Map<String, Object> context, Address primaryAddress) throws AxelorException {
    Mapper mapper = Mapper.of(Partner.class);
    Partner partner = Mapper.toBean(Partner.class, null);
    partner = (Partner) convertWizardService.createObject(context, partner, mapper);
    this.setEmailAddress(partner);
    if (appBaseService.getAppBase().getGeneratePartnerSequence()) {
        partner.setPartnerSeq(leadService.getSequence());
    }
    partnerService.setPartnerFullName(partner);
    this.setAddress(partner, primaryAddress);
    Company activeCompany = Optional.ofNullable(AuthUtils.getUser()).map(User::getActiveCompany).orElse(null);
    if (activeCompany != null) {
        partner.addCompanySetItem(activeCompany);
        if (partner.getCurrency() == null) {
            partner.setCurrency(activeCompany.getCurrency());
        }
    }
    return partner;
}
Also used : Mapper(com.axelor.db.mapper.Mapper) Company(com.axelor.apps.base.db.Company) Partner(com.axelor.apps.base.db.Partner)

Example 32 with Mapper

use of com.axelor.db.mapper.Mapper in project axelor-open-suite by axelor.

the class ConfiguratorServiceImpl method fixRelationalField.

protected void fixRelationalField(Model parentModel, Model value, MetaField metaField) throws AxelorException {
    if (value != null) {
        Mapper mapper = Mapper.of(parentModel.getClass());
        try {
            String className = MetaTool.computeFullClassName(metaField);
            Model manyToOneDbValue = JPA.find((Class<Model>) Class.forName(className), value.getId());
            mapper.set(parentModel, metaField.getName(), manyToOneDbValue);
        } catch (Exception e) {
            throw new AxelorException(Configurator.class, TraceBackRepository.CATEGORY_CONFIGURATION_ERROR, e.getMessage());
        }
    }
}
Also used : Mapper(com.axelor.db.mapper.Mapper) AxelorException(com.axelor.exception.AxelorException) Configurator(com.axelor.apps.sale.db.Configurator) Model(com.axelor.db.Model) AxelorException(com.axelor.exception.AxelorException) MissingPropertyException(groovy.lang.MissingPropertyException) InvocationTargetException(java.lang.reflect.InvocationTargetException)

Example 33 with Mapper

use of com.axelor.db.mapper.Mapper in project axelor-open-suite by axelor.

the class DmnServiceImpl method mapToMetaModelFields.

private String mapToMetaModelFields(List<String> fields, String modelName, String searchOperator, boolean multiple, String resultVar) throws ClassNotFoundException {
    StringBuilder scriptBuilder = new StringBuilder();
    Mapper mapper = Mapper.of(EntityHelper.getEntityClass(Class.forName(modelName)));
    String varName = Beans.get(WkfCommonService.class).getVarName(modelName);
    scriptBuilder.append("def _query = null\n");
    for (String field : fields) {
        String resultField = resultVar + "?." + field;
        String targetField = varName + "." + field;
        Property property = mapper.getProperty(field);
        if (property == null) {
            MetaJsonField jsonField = Beans.get(MetaJsonFieldRepository.class).all().filter("self.model = ?1 and self.name = ?2", modelName, field).fetchOne();
            if (jsonField != null) {
                addJsonField(searchOperator, multiple, resultVar, scriptBuilder, varName, jsonField);
            }
            continue;
        }
        if (property.getTarget() != null) {
            addRelationalField(searchOperator, multiple, scriptBuilder, targetField, resultField, property.getTarget().getSimpleName(), property.getTargetName());
        } else {
            scriptBuilder.append(targetField + " = " + resultField);
        }
        scriptBuilder.append("\n");
    }
    return scriptBuilder.toString();
}
Also used : Mapper(com.axelor.db.mapper.Mapper) MetaJsonFieldRepository(com.axelor.meta.db.repo.MetaJsonFieldRepository) MetaJsonField(com.axelor.meta.db.MetaJsonField) Property(com.axelor.db.mapper.Property) WkfCommonService(com.axelor.apps.bpm.service.WkfCommonService)

Example 34 with Mapper

use of com.axelor.db.mapper.Mapper in project axelor-open-suite by axelor.

the class ReportBuilderService method getNameColumn.

/**
 * Get nameColumn for given relational metaField.
 *
 * @param name Field name
 * @param metaField MetaField to check.
 * @return Name column of field.
 */
private String getNameColumn(String name, MetaField metaField) {
    String refModel = getRefModel(metaField.getTypeName());
    try {
        Mapper mapper = Mapper.of(Class.forName(refModel));
        boolean nameField = false;
        boolean codeField = false;
        for (Property property : Arrays.asList(mapper.getProperties())) {
            if (property.isNameColumn()) {
                return name + "." + property.getName();
            } else if (property.getName().equals("name")) {
                nameField = true;
            } else if (property.getName().equals("code")) {
                codeField = true;
            }
        }
        if (nameField) {
            return name + ".name";
        }
        if (codeField) {
            return name + ".code";
        }
        return name + "." + "id";
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    return name;
}
Also used : Mapper(com.axelor.db.mapper.Mapper) Property(com.axelor.db.mapper.Property)

Example 35 with Mapper

use of com.axelor.db.mapper.Mapper in project axelor-open-suite by axelor.

the class StudioMetaService method trackingFields.

@Transactional
public void trackingFields(AuditableModel auditableModel, String messageBody, String messageSubject) {
    User user = AuthUtils.getUser();
    MailMessage message = new MailMessage();
    Mapper mapper = Mapper.of(auditableModel.getClass());
    message.setSubject(messageSubject);
    message.setAuthor(user);
    message.setBody(messageBody);
    message.setRelatedId(auditableModel.getId());
    message.setRelatedModel(EntityHelper.getEntityClass(auditableModel).getName());
    message.setType(MailConstants.MESSAGE_TYPE_NOTIFICATION);
    message.setRelatedName(mapper.getNameField().get(auditableModel).toString());
    Beans.get(MailMessageRepository.class).save(message);
}
Also used : MailMessageRepository(com.axelor.mail.db.repo.MailMessageRepository) MailMessage(com.axelor.mail.db.MailMessage) Mapper(com.axelor.db.mapper.Mapper) User(com.axelor.auth.db.User) Transactional(com.google.inject.persist.Transactional)

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