/*
* Copyright (C) 2010-2012 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 org.waterforpeople.mapping.domain.AccessPoint;
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 == AccessPoint.Status.class) {
return AccessPoint.Status.valueOf(value.toString());
} else if (type == AccessPoint.AccessPointType.class) {
return AccessPoint.AccessPointType.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;
}
}