
package usda.weru.remoteDataAccess.jdbc.soil;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import usda.weru.remoteDataAccess.exceptions.RdaConnectException;
import usda.weru.util.ConfigData;

/**
 *
 * @author mhaas
 */
public class JdbcSoilInterfaceLegend extends JdbcSoilInterface {

    public JdbcSoilInterfaceLegend(SoilCatParms parms) {
        super(parms);
    }

    public JdbcSoilInterfaceLegend(JdbcSoilInterface parent, SoilCatParms parms) {
        super(parent, parms);
    }

    //
    // Catalog items from a legend node are new mapunit items.
    //
    @Override
    protected ArrayList<SoilCatParms> callSoilCatalog() throws RdaConnectException {
        ArrayList<SoilCatParms> temp = new ArrayList<>();

        try {

            // from LegendNode.createChildren()
            Statement stmt = soilsDbConnection.createStatement();
            String queryStr = "SELECT mukey,musym,muname,lkey FROM mapunit WHERE lkey = '"
                    + parms.c_lkey + "' ORDER BY musym";
            if (ConfigData.checkParmValue(ConfigData.SDMSoilSortOrder, "SoilName")) {
                queryStr = "SELECT mukey,musym,muname,lkey FROM mapunit WHERE lkey = '"
                        + parms.c_lkey + "' ORDER BY muname";
            }
            ResultSet rs = stmt.executeQuery(queryStr);

            while (rs.next()) {
                temp.add(
                        new SoilCatParms(getString(rs, "musym") + " - " + getString(rs, "muname")).
                                setMapunitVals(getString(rs, "lkey"), getString(rs, "mukey"), getString(rs, "muname"), getString(rs, "musym"))
                );
            }

//                Collections.sort(temp, c_sorter);  // From previous implementation.  Needed?
            return temp;

        } catch (SQLException e) {
            throw (new RdaConnectException("Unable to get soil legend data", e, this.interfaceName));
        }
    }
}
