Package org.vosao.business.impl.imex

Source Code of org.vosao.business.impl.imex.FormExporterImpl

/**
* Vosao CMS. Simple CMS for Google App Engine.
*
* Copyright (C) 2009-2010 Vosao development team.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*
* email: vosao.dev@gmail.com
*/

package org.vosao.business.impl.imex;

import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.vosao.business.imex.FormExporter;
import org.vosao.dao.DaoTaskException;
import org.vosao.entity.FieldEntity;
import org.vosao.entity.FormConfigEntity;
import org.vosao.entity.FormEntity;
import org.vosao.enums.FieldType;
import org.vosao.utils.XmlUtil;

public class FormExporterImpl extends AbstractExporter
    implements FormExporter {

  public FormExporterImpl(ExporterFactoryImpl factory) {
    super(factory);
  }
 
  @Override
  public String createFormsXML() {
    Document doc = DocumentHelper.createDocument();
    Element formsElement = doc.addElement("forms");
    createFormsXML(formsElement);
    return doc.asXML();
  }

  private void createFormsXML(Element formsElement) {
    createFormConfigXML(formsElement);
    List<FormEntity> list = getDao().getFormDao().select();
    for (FormEntity form : list) {
      createFormXML(formsElement, form);
    }
  }
 
  private void createFormConfigXML(Element formsElement) {
    FormConfigEntity config = getDao().getFormConfigDao().getConfig();
    Element configElement = formsElement.addElement("form-config");
    Element formTemplateElement = configElement.addElement("formTemplate");
    formTemplateElement.setText(config.getFormTemplate());
    Element formLetterElement = configElement.addElement("letterTemplate");
    formLetterElement.setText(config.getLetterTemplate());
  }

  private void createFormXML(Element formsElement, final FormEntity form) {
    Element formElement = formsElement.addElement("form");
    formElement.addAttribute("name", form.getName());
    formElement.addAttribute("title", form.getTitle());
    formElement.addAttribute("email", form.getEmail());
    formElement.addAttribute("letterSubject", form.getLetterSubject());
    formElement.addAttribute("sendButtonTitle", form.getSendButtonTitle());
    formElement.addAttribute("showResetButton", String.valueOf(
        form.isShowResetButton()));
    formElement.addAttribute("enableCaptcha", String.valueOf(
        form.isEnableCaptcha()));
    formElement.addAttribute("enableSave", String.valueOf(
        form.isEnableSave()));
    formElement.addAttribute("resetButtonTitle", form.getResetButtonTitle());
    List<FieldEntity> fields = getDao().getFieldDao().getByForm(form);
    for (FieldEntity field : fields) {
      createFieldXML(formElement, field);
    }
  }
 
  public void readForms(Element formsElement) throws DaoTaskException {
    for (Iterator<Element> i = formsElement.elementIterator();
        i.hasNext(); ) {
            Element element = i.next();
            if (element.getName().equals("form")) {
              String name = element.attributeValue("name");
              String title = element.attributeValue("title");
              String email = element.attributeValue("email");
              String letterSubject = element.attributeValue("letterSubject");
              FormEntity form = new FormEntity(name, email, title,
                  letterSubject);
              form.setSendButtonTitle(element.attributeValue("sendButtonTitle"));
              form.setShowResetButton(XmlUtil.readBooleanAttr(element,
                  "showResetButton", false));
              form.setEnableCaptcha(XmlUtil.readBooleanAttr(element,
                  "enableCaptcha", false));
              form.setEnableSave(XmlUtil.readBooleanAttr(element,
                  "enableSave", false));
              form.setResetButtonTitle(element.attributeValue("resetButtonTitle"));
              getDaoTaskAdapter().formSave(form);
              readFields(element, form);
            }
            if (element.getName().equals("form-config")) {
              readFormConfig(element);
            }
    }   
  }

  private void createFieldXML(Element formElement, FieldEntity field) {
    Element fieldElement = formElement.addElement("field");
    fieldElement.addAttribute("name", field.getName());
    fieldElement.addAttribute("title", field.getTitle());
    fieldElement.addAttribute("fieldType", field.getFieldType().name());
    fieldElement.addAttribute("mandatory", String.valueOf(field.isMandatory()));
    fieldElement.addAttribute("values", field.getValues());
    fieldElement.addAttribute("defaultValue", field.getDefaultValue());
    fieldElement.addAttribute("height", String.valueOf(field.getHeight()));
    fieldElement.addAttribute("width", String.valueOf(field.getWidth()));
    fieldElement.addAttribute("index", String.valueOf(field.getIndex()));
  }
 
  public void readFields(Element formElement, FormEntity form)
      throws DaoTaskException {
    for (Iterator<Element> i = formElement.elementIterator(); i.hasNext(); ) {
            Element element = i.next();
            if (element.getName().equals("field")) {
              FieldEntity field = new FieldEntity();
              field.setFormId(form.getId());
              field.setName(element.attributeValue("name"));
              field.setTitle(element.attributeValue("title"));
              try {
                  field.setFieldType(FieldType.valueOf(element
                      .attributeValue("fieldType")));
              }
              catch (Exception e) {
                field.setFieldType(FieldType.TEXT);
              }
              field.setMandatory(XmlUtil.readBooleanAttr(element,
                  "mandatory", false));
              field.setValues(element.attributeValue("values"));
              field.setDefaultValue(element.attributeValue("defaultValue"));
              field.setHeight(XmlUtil.readIntAttr(element, "height", 0));
              field.setWidth(XmlUtil.readIntAttr(element, "width", 20));
              field.setIndex(XmlUtil.readIntAttr(element, "index", 0));
              getDaoTaskAdapter().fieldSave(field);
            }
    }   
  }

  public void readFormConfig(Element configElement) throws DaoTaskException {
    FormConfigEntity config = getDao().getFormConfigDao().getConfig();
    for (Iterator<Element> i = configElement.elementIterator();
        i.hasNext(); ) {
            Element element = i.next();
            if (element.getName().equals("formTemplate")) {
              config.setFormTemplate(element.getText());
            }
            if (element.getName().equals("letterTemplate")) {
              config.setLetterTemplate(element.getText());
            }
    }
    getDaoTaskAdapter().formConfigSave(config);
  }
 
  /**
   * Read and import data from _forms.xml file.
   * @param xml - _forms.xml content.
   * @throws DocumentException
   * @throws DaoTaskException
   */
  public void readFormsFile(String xml) throws DocumentException,
      DaoTaskException {
    Document doc = DocumentHelper.parseText(xml);
    readForms(doc.getRootElement());
  }
}
TOP

Related Classes of org.vosao.business.impl.imex.FormExporterImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.