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;
}
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());
}
}
}
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();
}
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;
}
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);
}
Aggregations