    001package org.apache.turbine.services.schedule;
    002
    003import java.sql.ResultSet;
    004import java.sql.SQLException;
    005import java.util.List;
    006
    007import org.apache.commons.logging.Log;
    008import org.apache.commons.logging.LogFactory;
    009import org.apache.torque.Column;
    010import org.apache.torque.TorqueException;
    011import org.apache.torque.criteria.CriteriaInterface;
    012import org.apache.torque.om.mapper.RecordMapper;
    013
    014
    015/**
    016 * Maps ResultSet rows into JobEntryTorque objects.
    017 *
    018 * The skeleton for this class was autogenerated by Torque on:
    019 *
    020 * [Mon Dec 21 20:40:21 CET 2015]
    021 *
    022 */
    023public class BaseJobEntryTorqueRecordMapper implements RecordMapper<JobEntryTorque>
    024{
    025
    026    /** The class log. */
    027    private static Log log
    028            = LogFactory.getLog(BaseJobEntryTorqueRecordMapper.class);
    029
    030    /**
    031     * Constructs the object from the current row in the resultSet.
    032     *
    033     * @param resultSet the resultSet to operate on, already pointing
    034     *        to the correct row. Not null.
    035     * @param a possible offset in the columns to be considered
    036     *        (if previous columns contain other objects),
    037     *        or 0 for no offset.
    038     * @param criteria The criteria which created the result set.
    039     *        If set, the attributes to set in the data object
    040     *        are determined from the select columns in the criteria;
    041     *        if no matching column can be found, null is returned.
    042     *        If not set, all of the table's columns are read from the
    043     *        result set in the order defined in the table definition.
    044     *
    045     * @return the mapped object, not null.
    046     *
    047     * @throws TorqueException when reading fields from the RecordSet fails
    048     *         or if a Criteria is passed which contains select columns other
    049     *         than the columns in the TURBINE_SCHEDULED_JOB table.
    050     */
    051    public JobEntryTorque processRow(
    052                ResultSet resultSet,
    053                int offset,
    054                CriteriaInterface<?> criteria)
    055            throws TorqueException
    056    {
    057        JobEntryTorque jobEntryTorque = new JobEntryTorque();
    058
    059        try
    060        {
    061            jobEntryTorque.setLoading(true);
    062            if (criteria == null)
    063            {
    064                jobEntryTorque.setJobId(
    065                        getJobId(resultSet, offset + 1));
    066                jobEntryTorque.setSecond(
    067                        getSecond(resultSet, offset + 2));
    068                jobEntryTorque.setMinute(
    069                        getMinute(resultSet, offset + 3));
    070                jobEntryTorque.setHour(
    071                        getHour(resultSet, offset + 4));
    072                jobEntryTorque.setWeekDay(
    073                        getWeekDay(resultSet, offset + 5));
    074                jobEntryTorque.setDayOfMonth(
    075                        getDayOfMonth(resultSet, offset + 6));
    076                jobEntryTorque.setTask(
    077                        getTask(resultSet, offset + 7));
    078                jobEntryTorque.setEmail(
    079                        getEmail(resultSet, offset + 8));
    080                jobEntryTorque.setProperty(
    081                        getProperty(resultSet, offset + 9));
    082            }
    083            else
    084            {
    085                // try to get columns to be mapped
    086                // from criteria's select columns
    087                boolean columnMapped = false;
    088                int totalOffset = offset + 1;
    089                List<Column> selectColumns = criteria.getSelectColumns();
    090                List<Column> columnsWithoutOffset = selectColumns.subList(
    091                        offset,
    092                        selectColumns.size());
    093                for (Column column : columnsWithoutOffset)
    094                {
    095                    if (BaseJobEntryTorquePeer.JOB_ID.getSqlExpression().equals(
    096                            column.getSqlExpression()))
    097                    {
    098                        jobEntryTorque.setJobId(
    099                            getJobId(resultSet, totalOffset));
    100                        columnMapped = true;
    101                    }
    102                    else if (BaseJobEntryTorquePeer.SECOND.getSqlExpression().equals(
    103                            column.getSqlExpression()))
    104                    {
    105                        jobEntryTorque.setSecond(
    106                            getSecond(resultSet, totalOffset));
    107                        columnMapped = true;
    108                    }
    109                    else if (BaseJobEntryTorquePeer.MINUTE.getSqlExpression().equals(
    110                            column.getSqlExpression()))
    111                    {
    112                        jobEntryTorque.setMinute(
    113                            getMinute(resultSet, totalOffset));
    114                        columnMapped = true;
    115                    }
    116                    else if (BaseJobEntryTorquePeer.HOUR.getSqlExpression().equals(
    117                            column.getSqlExpression()))
    118                    {
    119                        jobEntryTorque.setHour(
    120                            getHour(resultSet, totalOffset));
    121                        columnMapped = true;
    122                    }
    123                    else if (BaseJobEntryTorquePeer.WEEK_DAY.getSqlExpression().equals(
    124                            column.getSqlExpression()))
    125                    {
    126                        jobEntryTorque.setWeekDay(
    127                            getWeekDay(resultSet, totalOffset));
    128                        columnMapped = true;
    129                    }
    130                    else if (BaseJobEntryTorquePeer.DAY_OF_MONTH.getSqlExpression().equals(
    131                            column.getSqlExpression()))
    132                    {
    133                        jobEntryTorque.setDayOfMonth(
    134                            getDayOfMonth(resultSet, totalOffset));
    135                        columnMapped = true;
    136                    }
    137                    else if (BaseJobEntryTorquePeer.TASK.getSqlExpression().equals(
    138                            column.getSqlExpression()))
    139                    {
    140                        jobEntryTorque.setTask(
    141                            getTask(resultSet, totalOffset));
    142                        columnMapped = true;
    143                    }
    144                    else if (BaseJobEntryTorquePeer.EMAIL.getSqlExpression().equals(
    145                            column.getSqlExpression()))
    146                    {
    147                        jobEntryTorque.setEmail(
    148                            getEmail(resultSet, totalOffset));
    149                        columnMapped = true;
    150                    }
    151                    else if (BaseJobEntryTorquePeer.PROPERTY.getSqlExpression().equals(
    152                            column.getSqlExpression()))
    153                    {
    154                        jobEntryTorque.setProperty(
    155                            getProperty(resultSet, totalOffset));
    156                        columnMapped = true;
    157                    }
    158                    totalOffset++;
    159                }
    160                if (!columnMapped)
    161                {
    162                    log.debug("no columns to map found in criteria, "
    163                        + "returning null");
    164                    return null;
    165                }
    166            }
    167            jobEntryTorque.setNew(false);
    168            jobEntryTorque.setModified(false);
    169        }
    170        finally
    171        {
    172            jobEntryTorque.setLoading(false);
    173        }
    174        return jobEntryTorque;
    175    }
    176
    177        /**
    178         * Reads the value of the <code>columnIndex</code>'th column
    179         * in the <code>resultSet</code> so that it can be used to set
    180         * the field jobId in JobEntryTorque.
    181         *
    182         * @param dbObject the database object to fill, not null.
    183         * @param resultSet the ResultSet to read from, not null.
    184         * @param columnIndex the index in the resultSet which should be read.
    185         *
    186         * @return the content of the column.
    187         *
    188         * @throws SQLException if a problem occurs when reading
    189         *         from the resultSet.
    190         */
    191        protected int getJobId(
    192                    ResultSet resultSet,
    193                    int columnIndex)
    194                throws TorqueException
    195        {
    196            try
    197            {
    198                return resultSet.getInt(columnIndex);
    199            }
    200            catch (SQLException e)
    201            {
    202                throw new TorqueException(e);
    203            }
    204        }
    205
    206        /**
    207         * Reads the value of the <code>columnIndex</code>'th column
    208         * in the <code>resultSet</code> so that it can be used to set
    209         * the field second in JobEntryTorque.
    210         *
    211         * @param dbObject the database object to fill, not null.
    212         * @param resultSet the ResultSet to read from, not null.
    213         * @param columnIndex the index in the resultSet which should be read.
    214         *
    215         * @return the content of the column.
    216         *
    217         * @throws SQLException if a problem occurs when reading
    218         *         from the resultSet.
    219         */
    220        protected int getSecond(
    221                    ResultSet resultSet,
    222                    int columnIndex)
    223                throws TorqueException
    224        {
    225            try
    226            {
    227                return resultSet.getInt(columnIndex);
    228            }
    229            catch (SQLException e)
    230            {
    231                throw new TorqueException(e);
    232            }
    233        }
    234
    235        /**
    236         * Reads the value of the <code>columnIndex</code>'th column
    237         * in the <code>resultSet</code> so that it can be used to set
    238         * the field minute in JobEntryTorque.
    239         *
    240         * @param dbObject the database object to fill, not null.
    241         * @param resultSet the ResultSet to read from, not null.
    242         * @param columnIndex the index in the resultSet which should be read.
    243         *
    244         * @return the content of the column.
    245         *
    246         * @throws SQLException if a problem occurs when reading
    247         *         from the resultSet.
    248         */
    249        protected int getMinute(
    250                    ResultSet resultSet,
    251                    int columnIndex)
    252                throws TorqueException
    253        {
    254            try
    255            {
    256                return resultSet.getInt(columnIndex);
    257            }
    258            catch (SQLException e)
    259            {
    260                throw new TorqueException(e);
    261            }
    262        }
    263
    264        /**
    265         * Reads the value of the <code>columnIndex</code>'th column
    266         * in the <code>resultSet</code> so that it can be used to set
    267         * the field hour in JobEntryTorque.
    268         *
    269         * @param dbObject the database object to fill, not null.
    270         * @param resultSet the ResultSet to read from, not null.
    271         * @param columnIndex the index in the resultSet which should be read.
    272         *
    273         * @return the content of the column.
    274         *
    275         * @throws SQLException if a problem occurs when reading
    276         *         from the resultSet.
    277         */
    278        protected int getHour(
    279                    ResultSet resultSet,
    280                    int columnIndex)
    281                throws TorqueException
    282        {
    283            try
    284            {
    285                return resultSet.getInt(columnIndex);
    286            }
    287            catch (SQLException e)
    288            {
    289                throw new TorqueException(e);
    290            }
    291        }
    292
    293        /**
    294         * Reads the value of the <code>columnIndex</code>'th column
    295         * in the <code>resultSet</code> so that it can be used to set
    296         * the field weekDay in JobEntryTorque.
    297         *
    298         * @param dbObject the database object to fill, not null.
    299         * @param resultSet the ResultSet to read from, not null.
    300         * @param columnIndex the index in the resultSet which should be read.
    301         *
    302         * @return the content of the column.
    303         *
    304         * @throws SQLException if a problem occurs when reading
    305         *         from the resultSet.
    306         */
    307        protected int getWeekDay(
    308                    ResultSet resultSet,
    309                    int columnIndex)
    310                throws TorqueException
    311        {
    312            try
    313            {
    314                return resultSet.getInt(columnIndex);
    315            }
    316            catch (SQLException e)
    317            {
    318                throw new TorqueException(e);
    319            }
    320        }
    321
    322        /**
    323         * Reads the value of the <code>columnIndex</code>'th column
    324         * in the <code>resultSet</code> so that it can be used to set
    325         * the field dayOfMonth in JobEntryTorque.
    326         *
    327         * @param dbObject the database object to fill, not null.
    328         * @param resultSet the ResultSet to read from, not null.
    329         * @param columnIndex the index in the resultSet which should be read.
    330         *
    331         * @return the content of the column.
    332         *
    333         * @throws SQLException if a problem occurs when reading
    334         *         from the resultSet.
    335         */
    336        protected int getDayOfMonth(
    337                    ResultSet resultSet,
    338                    int columnIndex)
    339                throws TorqueException
    340        {
    341            try
    342            {
    343                return resultSet.getInt(columnIndex);
    344            }
    345            catch (SQLException e)
    346            {
    347                throw new TorqueException(e);
    348            }
    349        }
    350
    351        /**
    352         * Reads the value of the <code>columnIndex</code>'th column
    353         * in the <code>resultSet</code> so that it can be used to set
    354         * the field task in JobEntryTorque.
    355         *
    356         * @param dbObject the database object to fill, not null.
    357         * @param resultSet the ResultSet to read from, not null.
    358         * @param columnIndex the index in the resultSet which should be read.
    359         *
    360         * @return the content of the column.
    361         *
    362         * @throws SQLException if a problem occurs when reading
    363         *         from the resultSet.
    364         */
    365        protected String getTask(
    366                    ResultSet resultSet,
    367                    int columnIndex)
    368                throws TorqueException
    369        {
    370            try
    371            {
    372                return resultSet.getString(columnIndex);
    373            }
    374            catch (SQLException e)
    375            {
    376                throw new TorqueException(e);
    377            }
    378        }
    379
    380        /**
    381         * Reads the value of the <code>columnIndex</code>'th column
    382         * in the <code>resultSet</code> so that it can be used to set
    383         * the field email in JobEntryTorque.
    384         *
    385         * @param dbObject the database object to fill, not null.
    386         * @param resultSet the ResultSet to read from, not null.
    387         * @param columnIndex the index in the resultSet which should be read.
    388         *
    389         * @return the content of the column.
    390         *
    391         * @throws SQLException if a problem occurs when reading
    392         *         from the resultSet.
    393         */
    394        protected String getEmail(
    395                    ResultSet resultSet,
    396                    int columnIndex)
    397                throws TorqueException
    398        {
    399            try
    400            {
    401                return resultSet.getString(columnIndex);
    402            }
    403            catch (SQLException e)
    404            {
    405                throw new TorqueException(e);
    406            }
    407        }
    408
    409        /**
    410         * Reads the value of the <code>columnIndex</code>'th column
    411         * in the <code>resultSet</code> so that it can be used to set
    412         * the field property in JobEntryTorque.
    413         *
    414         * @param dbObject the database object to fill, not null.
    415         * @param resultSet the ResultSet to read from, not null.
    416         * @param columnIndex the index in the resultSet which should be read.
    417         *
    418         * @return the content of the column.
    419         *
    420         * @throws SQLException if a problem occurs when reading
    421         *         from the resultSet.
    422         */
    423        protected byte[] getProperty(
    424                    ResultSet resultSet,
    425                    int columnIndex)
    426                throws TorqueException
    427        {
    428            try
    429            {
    430                byte[] value = resultSet.getBytes(columnIndex);
    431                if (resultSet.wasNull())
    432                {
    433                    value = null;
    434                }
    435                return value;
    436            }
    437            catch (SQLException e)
    438            {
    439                throw new TorqueException(e);
    440            }
    441        }
    442
    443
    444}