use of com.axelor.db.Model in project axelor-open-suite by axelor.
the class AdvancedExportController method createCriteria.
@SuppressWarnings("unchecked")
private List<Long> createCriteria(ActionRequest request, AdvancedExport advancedExport) {
if (request.getContext().get("_criteria") != null) {
if (request.getContext().get("_criteria").toString().startsWith("[")) {
String ids = request.getContext().get("_criteria").toString();
return Splitter.on(", ").splitToList(ids.substring(1, ids.length() - 1)).stream().map(id -> Long.valueOf(id.toString())).collect(Collectors.toList());
} else {
ObjectMapper mapper = new ObjectMapper();
ActionRequest parentRequest = mapper.convertValue(request.getContext().get("_criteria"), ActionRequest.class);
Class<? extends Model> klass = (Class<? extends Model>) parentRequest.getBeanClass();
Filter filter = Beans.get(AdvancedExportService.class).getJpaSecurityFilter(advancedExport.getMetaModel());
Stream<? extends Model> listObj = parentRequest.getCriteria().createQuery(klass, filter).fetchSteam(advancedExport.getMaxExportLimit());
return listObj.map(it -> it.getId()).collect(Collectors.toList());
}
}
return null;
}
use of com.axelor.db.Model in project axelor-open-suite by axelor.
the class MessageServiceBaseImpl method printMessage.
@SuppressWarnings("unchecked")
@Override
public String printMessage(Message message) throws AxelorException {
Company company = message.getCompany();
if (company == null) {
return null;
}
PrintingSettings printSettings = company.getPrintingSettings();
if (printSettings == null || printSettings.getDefaultMailBirtTemplate() == null) {
return null;
}
BirtTemplate birtTemplate = printSettings.getDefaultMailBirtTemplate();
logger.debug("Default BirtTemplate : {}", birtTemplate);
Templates templates = new StringTemplates('$', '$');
Map<String, Object> templatesContext = Maps.newHashMap();
try {
Class<? extends Model> className = (Class<? extends Model>) Class.forName(message.getClass().getName());
templatesContext.put("Message", JPA.find(className, message.getId()));
} catch (ClassNotFoundException e) {
TraceBackService.trace(e);
}
String fileName = "Message " + message.getSubject() + "-" + appBaseService.getTodayDate(company).format(DateTimeFormatter.BASIC_ISO_DATE);
return Beans.get(TemplateMessageServiceBaseImpl.class).generateBirtTemplateLink(templates, templatesContext, fileName, birtTemplate.getTemplateLink(), birtTemplate.getFormat(), birtTemplate.getBirtTemplateParameterList());
}
use of com.axelor.db.Model in project axelor-open-suite by axelor.
the class BamlServiceImpl method execute.
@Override
@Transactional
public Model execute(BamlModel bamlModel, Model entity) {
Bindings bindings = new SimpleBindings();
if (entity != null) {
String varName = Beans.get(WkfCommonService.class).getVarName(entity);
bindings.put(varName, entity);
}
bindings.put("$ctx", WkfContextHelper.class);
GroovyScriptHelper helper = new GroovyScriptHelper(bindings);
Object object = helper.eval(bamlModel.getResultScript());
if (object != null && object instanceof Model) {
return JpaRepository.of(EntityHelper.getEntityClass((Model) object)).save((Model) object);
}
return null;
}
use of com.axelor.db.Model in project axelor-open-suite by axelor.
the class ForecastRecapServiceImpl method populateWithForecastLineType.
protected void populateWithForecastLineType(ForecastRecap forecastRecap, ForecastRecapLineType forecastRecapLineType) throws AxelorException {
List<Integer> statusSelectList = StringTool.getIntegerList(forecastRecapLineType.getStatusSelect());
if (statusSelectList.isEmpty()) {
statusSelectList.add(0);
}
Query<? extends Model> modelQuery = JPA.all(getModel(forecastRecapLineType)).filter(getFilter(forecastRecapLineType)).bind("company", forecastRecap.getCompany()).bind("fromDate", forecastRecap.getFromDate()).bind("toDate", forecastRecap.getToDate()).bind("statusSelectList", statusSelectList).bind("bankDetails", forecastRecap.getBankDetails()).bind("operationTypeSelect", forecastRecapLineType.getOperationTypeSelect()).bind("fromDateMinusDuration", forecastRecap.getFromDate().minusDays(forecastRecapLineType.getEstimatedDuration())).bind("toDateMinusDuration", forecastRecap.getToDate().minusDays(forecastRecapLineType.getEstimatedDuration())).order("id");
final int FETCH_LIMIT = 10;
int offset = 0;
List<? extends Model> modelList;
while (!(modelList = modelQuery.fetch(FETCH_LIMIT, offset)).isEmpty()) {
for (Model model : modelList) {
offset++;
createForecastRecapLines(forecastRecap, model, forecastRecapLineType);
}
JPA.clear();
forecastRecap = forecastRecapRepo.find(forecastRecap.getId());
forecastRecapLineType = forecastRecapLineTypeRepo.find(forecastRecapLineType.getId());
}
}
use of com.axelor.db.Model in project axelor-open-suite by axelor.
the class ConfiguratorServiceImpl method fetchManyToManyField.
protected void fetchManyToManyField(Model parentModel, Set<? extends Model> values, MetaField metaField) throws AxelorException {
if (values != null) {
Mapper mapper = Mapper.of(parentModel.getClass());
try {
String className = MetaTool.computeFullClassName(metaField);
Set<Model> dbValues = new HashSet<>();
for (Model value : values) {
Model dbValue = JPA.find((Class<Model>) Class.forName(className), value.getId());
dbValues.add(dbValue);
}
mapper.set(parentModel, metaField.getName(), dbValues);
} catch (Exception e) {
throw new AxelorException(Configurator.class, TraceBackRepository.CATEGORY_CONFIGURATION_ERROR, e.getMessage());
}
}
}
Aggregations