package usda.weru.gis.data;

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import org.geotools.data.FeatureSource;
import org.opengis.feature.Feature;

/**
 *
 * @author Joseph A. Levin <joelevin@weru.ksu.edu>
 */
public class CropManagementZoneLookup extends AbstractLookup<CropManagementZone> {

    private static final String COLUMN_CMZ = "CMZ";
    private final NumberFormat c_format = new DecimalFormat("0.###");

    /**
     *
     * @return
     */
    @Override
    protected Class<CropManagementZone> getSupportedClass() {
        return CropManagementZone.class;
    }

    @Override
    protected boolean supports(FeatureSource<?, ?> source) {
        return hasColumn(source, COLUMN_CMZ, String.class);
    }

    /**
     *
     * @param source
     * @param feature
     * @return
     */
    @Override
    protected CropManagementZone create(FeatureSource<?, ?> source, Feature feature) {
        try {
            String cmzString = getValue(feature, COLUMN_CMZ, String.class);

            cmzString = cmzString != null ? cmzString.toUpperCase().replace("CMZ", "").trim() : null;
            if (cmzString != null && cmzString.length() > 0) {
                float cmzFloat = c_format.parse(cmzString).floatValue();
                CropManagementZone cmz = new CropManagementZone(cmzFloat);
                return cmz;
            }
        } catch (ParseException | ClassCastException pe) {
            pe.printStackTrace();
            return null;
        }

        return null;
    }

}
