OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Rev 151 | Rev 174 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 151 Rev 156
Line 1216... Line 1216...
1216
     * @param r the row to be next to.
1216
     * @param r the row to be next to.
1217
     * @param after whether this row will be before or after <code>r</code>.
1217
     * @param after whether this row will be before or after <code>r</code>.
1218
     * @return this.
1218
     * @return this.
1219
     */
1219
     */
1220
    public SQLRowValues setOrder(SQLRow r, boolean after) {
1220
    public SQLRowValues setOrder(SQLRow r, boolean after) {
1221
        return this.setOrder(r, after, ReOrder.DISTANCE.movePointRight(2).intValue(), 0);
1221
        setOrder(Collections.singletonList(this), r, after);
-
 
1222
        return this;
1222
    }
1223
    }
1223
 
1224
 
1224
    private SQLRowValues setOrder(SQLRow r, boolean after, int nbToReOrder, int nbReOrdered) {
1225
    public static void setOrder(final List<SQLRowValues> values, final SQLRow r, boolean after) {
1225
        final BigDecimal freeOrder = r.getOrder(after);
1226
        final int valuesCount = values.size();
1226
        final String orderName = this.getTable().getOrderField().getName();
-
 
1227
        if (freeOrder != null)
-
 
1228
            return this.put(orderName, freeOrder);
1227
        final List<BigDecimal> orders;
1229
        else if (nbReOrdered > r.getTable().getRowCount()) {
-
 
1230
            throw new IllegalStateException("cannot reorder " + r.getTable().getSQLName());
-
 
1231
        } else {
-
 
1232
            // make room
-
 
1233
            try {
1228
        try {
1234
                ReOrder.create(this.getTable(), r.getOrder().intValue() - (nbToReOrder / 2), nbToReOrder).exec();
1229
            orders = ReOrder.getFreeOrderValuesFor(valuesCount, after, r).get0();
1235
            } catch (SQLException e) {
1230
        } catch (SQLException e) {
1236
                throw ExceptionUtils.createExn(IllegalStateException.class, "reorder failed for " + this.getTable() + " at " + r.getOrder(), e);
1231
            throw ExceptionUtils.createExn(IllegalStateException.class, "reorder failed for " + r.getTable() + " at " + r.getOrder(), e);
1237
            }
1232
        }
-
 
1233
        final String orderName = r.getTable().getOrderField().getName();
1238
            r.fetchValues();
1234
        for (int i = 0; i < valuesCount; i++) {
1239
            return this.setOrder(r, after, nbToReOrder * 10, nbToReOrder);
1235
            values.get(i).put(orderName, orders.get(i));
1240
        }
1236
        }
1241
    }
1237
    }
1242
 
1238
 
1243
    public final SQLRowValues setID(Number id) {
1239
    public final SQLRowValues setID(Number id) {
1244
        // faster
1240
        // faster