Search in sources :

Example 31 with Model

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;
}
Also used : MetaModelRepository(com.axelor.meta.db.repo.MetaModelRepository) Filter(com.axelor.rpc.filter.Filter) ActionView(com.axelor.meta.schema.actions.ActionView) LoggerFactory(org.slf4j.LoggerFactory) HashMap(java.util.HashMap) Mapper(com.axelor.db.mapper.Mapper) AdvancedExportLine(com.axelor.apps.base.db.AdvancedExportLine) ArrayList(java.util.ArrayList) Strings(com.google.common.base.Strings) AdvancedExport(com.axelor.apps.base.db.AdvancedExport) AxelorException(com.axelor.exception.AxelorException) ActionResponse(com.axelor.rpc.ActionResponse) Map(java.util.Map) I18n(com.axelor.i18n.I18n) Inflector(com.axelor.common.Inflector) AdvancedExportRepository(com.axelor.apps.base.db.repo.AdvancedExportRepository) ActionRequest(com.axelor.rpc.ActionRequest) Splitter(com.google.common.base.Splitter) MetaFiles(com.axelor.meta.MetaFiles) Logger(org.slf4j.Logger) Model(com.axelor.db.Model) MetaField(com.axelor.meta.db.MetaField) MethodHandles(java.lang.invoke.MethodHandles) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) TraceBackService(com.axelor.exception.service.TraceBackService) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) Collectors(java.util.stream.Collectors) File(java.io.File) AdvancedExportService(com.axelor.apps.base.service.advancedExport.AdvancedExportService) MetaFile(com.axelor.meta.db.MetaFile) MetaModel(com.axelor.meta.db.MetaModel) List(java.util.List) Stream(java.util.stream.Stream) Beans(com.axelor.inject.Beans) MetaFieldRepository(com.axelor.meta.db.repo.MetaFieldRepository) IExceptionMessage(com.axelor.apps.base.exceptions.IExceptionMessage) Context(com.axelor.rpc.Context) Joiner(com.google.common.base.Joiner) Singleton(com.google.inject.Singleton) ActionRequest(com.axelor.rpc.ActionRequest) Filter(com.axelor.rpc.filter.Filter) Model(com.axelor.db.Model) MetaModel(com.axelor.meta.db.MetaModel) AdvancedExportService(com.axelor.apps.base.service.advancedExport.AdvancedExportService) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper)

Example 32 with Model

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());
}
Also used : Company(com.axelor.apps.base.db.Company) BirtTemplate(com.axelor.apps.base.db.BirtTemplate) Templates(com.axelor.text.Templates) StringTemplates(com.axelor.text.StringTemplates) StringTemplates(com.axelor.text.StringTemplates) PrintingSettings(com.axelor.apps.base.db.PrintingSettings) Model(com.axelor.db.Model)

Example 33 with Model

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;
}
Also used : SimpleBindings(javax.script.SimpleBindings) Model(com.axelor.db.Model) BamlModel(com.axelor.apps.bpm.db.BamlModel) Bindings(javax.script.Bindings) SimpleBindings(javax.script.SimpleBindings) GroovyScriptHelper(com.axelor.script.GroovyScriptHelper) WkfCommonService(com.axelor.apps.bpm.service.WkfCommonService) Transactional(com.google.inject.persist.Transactional)

Example 34 with Model

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

Example 35 with Model

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());
        }
    }
}
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) HashSet(java.util.HashSet)

Aggregations

Model (com.axelor.db.Model)77 MetaModel (com.axelor.meta.db.MetaModel)22 AxelorException (com.axelor.exception.AxelorException)19 ArrayList (java.util.ArrayList)18 HashMap (java.util.HashMap)16 Context (com.axelor.rpc.Context)15 Transactional (com.google.inject.persist.Transactional)15 List (java.util.List)14 Mapper (com.axelor.db.mapper.Mapper)13 IOException (java.io.IOException)13 File (java.io.File)12 Map (java.util.Map)12 Property (com.axelor.db.mapper.Property)11 MetaJsonRecord (com.axelor.meta.db.MetaJsonRecord)9 JsonContext (com.axelor.rpc.JsonContext)8 MetaModelRepository (com.axelor.meta.db.repo.MetaModelRepository)7 Strings (com.google.common.base.Strings)7 HashSet (java.util.HashSet)7 FullContext (com.axelor.apps.tool.context.FullContext)6 Beans (com.axelor.inject.Beans)6