content: /*
   *  Copyright (C) 2010-2012,2018 Stichting Akvo (Akvo Foundation)
   *
   *  This file is part of Akvo FLOW.
   *
   *  Akvo FLOW is free software: you can redistribute it and modify it under the terms of
   *  the GNU Affero General Public License (AGPL) as published by the Free Software Foundation,
   *  either version 3 of the License or any later version.
   *
   *  Akvo FLOW 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 Affero General Public License included below for more details.
   *
   *  The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>.
   */
  
  package org.waterforpeople.mapping.app.util;
  
  import org.apache.commons.beanutils.converters.AbstractConverter;
  import org.waterforpeople.mapping.app.gwt.client.survey.QuestionDto;
  import org.waterforpeople.mapping.app.gwt.client.survey.QuestionDto.QuestionType;
  import org.waterforpeople.mapping.app.gwt.client.survey.QuestionHelpDto;
  import org.waterforpeople.mapping.app.web.dto.OGRFeatureDto;
  
  import com.gallatinsystems.survey.domain.Question;
  import com.gallatinsystems.survey.domain.QuestionHelpMedia;
  import com.gallatinsystems.survey.domain.Survey;
  import com.gallatinsystems.weightsmeasures.domain.UnitOfMeasure;
  
  /**
   * converts enumerated types
   * 
   * @author Christopher Fagiani
   */
  @SuppressWarnings("rawtypes")
  public class TypeEnumConverter extends AbstractConverter {
  
      @Override
      protected Object convertToType(Class type, Object value) throws Throwable {
          if (value != null) {
              if (type == Question.Type.class) {
  
                  return Question.Type.valueOf(value.toString());
  
              } else if (type == QuestionDto.QuestionType.class) {
  
                  return QuestionDto.QuestionType.valueOf(value.toString());
  
              } else if (type == UnitOfMeasure.UnitOfMeasureSystem.class) {
                  return UnitOfMeasure.UnitOfMeasureSystem.valueOf(value
                          .toString());
              } else if (type == UnitOfMeasure.UnitOfMeasureType.class) {
                  return UnitOfMeasure.UnitOfMeasureType
                          .valueOf(value.toString());
              } else if (type == QuestionHelpMedia.Type.class) {
                  return QuestionHelpMedia.Type.valueOf(value.toString());
              } else if (type == QuestionHelpDto.Type.class) {
                  return QuestionHelpDto.Type.valueOf(value.toString());
              } else if (type == OGRFeatureDto.FeatureType.class) {
                  return OGRFeatureDto.FeatureType.valueOf(value.toString());
              } else if (type == Survey.Status.class) {
                  return Survey.Status.valueOf(value.toString());
              }
          }
          return null;
      }
  
      @Override
      public Object handleMissing(Class type) {
          return null;
      }
  
      @Override
      protected Class getDefaultType() {
          return QuestionType.class;
      }
  
  }
  