/* * 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.webui.form; import com.vaadin.ui.Form; import ru.codeinside.gses.API; import ru.codeinside.gses.activiti.forms.FormID; import ru.codeinside.gses.activiti.forms.api.definitions.PropertyNode; import ru.codeinside.gses.activiti.forms.api.values.PropertyValue; import ru.codeinside.gses.webui.wizard.TransitionAction; import java.io.UnsupportedEncodingException; import java.util.List; import java.util.logging.Logger; final class JsonFormBuilder extends AbstractFormSeq { String templateRef; String valueId; PropertyNode node; String value; JsonForm jsonForm; public JsonFormBuilder(List<PropertyValue<?>> propertyValues) { for (PropertyValue<?> propertyValue : propertyValues) { if (propertyValue.getId().equals(API.JSON_FORM)) { templateRef = (String) propertyValue.getValue(); } else { valueId = propertyValue.getId(); if (propertyValue.getValue() == null) { value = "{}"; } else { try { value = new String((byte[]) propertyValue.getValue(), "UTF-8"); } catch (UnsupportedEncodingException e) { Logger.getAnonymousLogger().info("can't decode model!"); } } node = propertyValue.getNode(); } } } @Override public String getCaption() { return "";//"Ввод данных"; } @Override public List<FormField> getFormFields() { return jsonForm.getFormFields(); } @Override public Form getForm(FormID formId, FormSeq previous) { if (jsonForm == null) { jsonForm = new JsonForm(formId, templateRef, valueId, node, value); templateRef = null; valueId = null; node = null; value = null; } return jsonForm; } /** * Получить действие перехода */ @Override public TransitionAction getTransitionAction() { return new EmptyAction(); } }