OpenConcerto

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

svn://code.openconcerto.org/openconcerto

Rev

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

Rev 144 Rev 156
Line 22... Line 22...
22
import org.openconcerto.sql.model.SQLRowAccessor;
22
import org.openconcerto.sql.model.SQLRowAccessor;
23
import org.openconcerto.sql.model.SQLRowListRSH;
23
import org.openconcerto.sql.model.SQLRowListRSH;
24
import org.openconcerto.sql.model.SQLRowValues;
24
import org.openconcerto.sql.model.SQLRowValues;
25
import org.openconcerto.sql.model.SQLRowValuesListFetcher;
25
import org.openconcerto.sql.model.SQLRowValuesListFetcher;
26
import org.openconcerto.sql.model.SQLSelect;
26
import org.openconcerto.sql.model.SQLSelect;
-
 
27
import org.openconcerto.sql.model.SQLSelectJoin;
27
import org.openconcerto.sql.model.SQLTable;
28
import org.openconcerto.sql.model.SQLTable;
28
import org.openconcerto.sql.model.Where;
29
import org.openconcerto.sql.model.Where;
29
import org.openconcerto.utils.CompareUtils;
30
import org.openconcerto.utils.CompareUtils;
30
import org.openconcerto.utils.ListMap;
31
import org.openconcerto.utils.ListMap;
31
import org.openconcerto.utils.cc.ITransformer;
32
import org.openconcerto.utils.cc.ITransformer;
Line 299... Line 300...
299
 
300
 
300
    private void addSelectOrder(final SQLTable tableForeign, final String orderBy, SQLSelect sel) {
301
    private void addSelectOrder(final SQLTable tableForeign, final String orderBy, SQLSelect sel) {
301
        if (orderBy != null && orderBy.contains(".")) {
302
        if (orderBy != null && orderBy.contains(".")) {
302
            String fieldRefTable = orderBy.substring(0, orderBy.indexOf('.'));
303
            String fieldRefTable = orderBy.substring(0, orderBy.indexOf('.'));
303
            String field = orderBy.substring(orderBy.indexOf('.') + 1, orderBy.length());
304
            String field = orderBy.substring(orderBy.indexOf('.') + 1, orderBy.length());
-
 
305
            if (sel.getJoin(tableForeign.getField(fieldRefTable)) == null) {
304
            sel.addJoin("LEFT", sel.getAlias(tableForeign).getField(fieldRefTable));
306
                sel.addJoin("LEFT", sel.getAlias(tableForeign).getField(fieldRefTable));
-
 
307
            }
-
 
308
            SQLSelectJoin join = sel.getJoin(tableForeign.getField(fieldRefTable));
305
            sel.addFieldOrder(sel.getAlias(tableForeign.getForeignTable(fieldRefTable)).getField(field));
309
            sel.addFieldOrder(join.getJoinedTable().getField(field));
306
        } else {
310
        } else {
307
            sel.addFieldOrder(tableForeign.getOrderField());
311
            sel.addFieldOrder(tableForeign.getOrderField());
308
        }
312
        }
309
    }
313
    }
310
 
314