class ShapeFileConfigurationManager {

    static ShapeFileDataSource convert1to2(final ShapeFileSource sourceV1)
    {
        // Data source fields
        ShapeFileDataSource sourceV2 = new ShapeFileDataSource(new File(sourceV1.getPath()).toURI());
        sourceV2.setActive(sourceV1.isActive());
        sourceV2.setVisible(sourceV1.isVisible());
        sourceV2.setFromState(sourceV1.isFromStateSource());

        // Layer settings fields
        sourceV2.getLayerSettings().setName(sourceV1.getName());
        sourceV2.getLayerSettings().setLoadsTo(sourceV1.getLoadsTo());
        sourceV2.getLayerSettings().setColor(sourceV1.getShapeColor());

        // Parse parameter fields
        sourceV2.getParseParameters().setColumnNames(New.list(sourceV1.getColumnNames()));
        sourceV2.getParseParameters()
                .setColumnsToIgnore(sourceV1.getColumnFilter().stream()
                        .map(columnName -> Integer.valueOf(sourceV1.getColumnNames().indexOf(columnName))).sorted()
                        .collect(Collectors.toList()));

        // Special columns
        addSpecialColumns(sourceV2.getParseParameters().getSpecialColumns(), sourceV1);

        return sourceV2;
    }

    public  ShapeFileConfigurationManager(Preferences shapeFilePreferences);

}