/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2013, MPL CodeInside http://codeinside.ru */ package ru.codeinside.gses.activiti.ftarchive; import com.vaadin.ui.Field; import org.activiti.engine.impl.context.Context; import org.activiti.engine.impl.interceptor.CommandContext; import ru.codeinside.adm.AdminService; import ru.codeinside.adm.database.ClientRequestEntity; import ru.codeinside.adm.database.InfoSystemService; import ru.codeinside.gses.activiti.Activiti; import ru.codeinside.gses.activiti.ReadOnly; import ru.codeinside.gses.activiti.SmevRequestField; import ru.codeinside.gses.activiti.SmevRequestValue; import ru.codeinside.gses.webui.Flash; import java.util.List; public class SmevRequestFFT { private static final long serialVersionUID = 1L; //@Override public Field createField(String taskId, String fieldId, String name, String value, boolean writable, boolean required) { if (value == null) { return new ReadOnly("Ошибочный запрос в СМЭВ", false); } // TODO: преобразовать в атомарную операцию final AdminService adminService = Flash.flash().getAdminService(); long id = Long.parseLong(value); final ClientRequestEntity entity = adminService.getClientRequestEntity(id); final List<InfoSystemService> services = adminService.getInfoSystemServiceBySName(entity.name); final String label = services.get(0).getName(); return new SmevRequestField(label, id); } //@Override public String convertModelValueToFormValue(Object modelValue) { final CommandContext ctx = Context.getCommandContext(); if (ctx != null) { // Activiti if (modelValue instanceof ClientRequestEntity) { return ((ClientRequestEntity) modelValue).getId().toString(); } } else { // UI if (modelValue instanceof SmevRequestValue) { return Long.toString(((SmevRequestValue) modelValue).id); } } return null; } //@Override public Object convertFormValueToModelValue(String propertyValue) { final CommandContext ctx = Context.getCommandContext(); final long id = Long.parseLong(propertyValue); if (ctx != null) { // Activiti return Activiti.getEm().getReference(ClientRequestEntity.class, id); } else { throw new UnsupportedOperationException(); } } }