private void run_old(){
            
            // for each point:
            int i=0; // an index on pointsQueue
            while (i < pointsQueue_old.size())
            {
                // ArrayList for starting points to be passed to getMultiTrace()
//                ArrayList<GeoTag> startingPoints = new ArrayList<GeoTag>();
                
                // ArrayList of geo-tags to be passed to getMultiTrace() [4/3/2012]
                ArrayList<GeoTag> geoTags = new ArrayList<GeoTag>();
                
                // Mapping geo-tags to point-tags [25/6/2012] to fix the re-mapping bug
                Map<GeoTag, PointTag> tagMap = new HashMap<GeoTag, PointTag>();
                
                for (int s=0; s < loader.multiStatementLength; s++)
                {
                    // get next point tag from queue:
                    PointTag pointTag = pointsQueue_old.get(i++);
                    
                    // map point to LOD0:
                    PointTag lod0Tag = FESVo.mapPointToLOD0(pointTag, lod);

                    // now map local points of LOD0 to geo-location (x,y)
                    int x = (lod0Tag.x * FESVo.getLodUnitWidth()) + FESVo.xMin();
                    int y = (lod0Tag.y * FESVo.getLodUnitDepth()) + FESVo.yMin();
                    
                    // create a GeoTag and add it the array list
//                    startingPoints.add(new GeoTag(x,y,loader.srdsDataSrcID));
                    
                    // get exact coordinate of data which lies in this LOD unit: [4/3/2012]
                    Point point = FESVo.getDataCoordinate(new Point(x,y), loader.tracesSourceID);
                    
                    // if no trace lies there: increment empty cells count,
                    // break and decrement s counter:
                    if (point == null){
                        loader.incrementEmptyUnitsCount();
                        s--;
                        //break; // [BUG] chenged to continue on [18/6/2012]
                    }
                    else{
                        // add tag to array to be searched in DB:
                        GeoTag gt = new GeoTag(point, loader.srdsSource.srdsSrcID);
                        geoTags.add(gt);
                        
                        // map this geo-tag to the local tag [25/6/2012]
                        tagMap.put(gt, pointTag);
                    }
                    
                    // break if reached end of pointsQueue
                    if (i == pointsQueue_old.size()) break;
                }//for
                    
                // look for traces in multi locations:
//                Trace [] traces = db.getMultiTraces(startingPoints.toArray(new GeoTag[startingPoints.size()]));
                Trace [] traces = db.getMultiTraces_v2(geoTags.toArray(new GeoTag[geoTags.size()]));//[4/3/2012]

                // loop through traces
                for (int p=0; p < traces.length; p++){
                    
                    // increment db visit count:
                    loader.incrementDbVisitCount();
                
                    // [28/5/2012] Note: if knowing data coordinates in advance, then all returned data units are non-null:
                    
                    if (traces[p] != null)
                    {
                        
                        ///////////////////////////////////////////////////////
                        //  __________________________________________________
                        // |                                                  |
                        // | BUG  BUG  BUG  BUG  BUG  BUG  BUG  BUG  BUG  BUG |
                        // |__________________________________________________|
                        //
                        ///////////////////////////////////////////////////////
                        //  __________________________________________________
                        // |                                                  |
                        // |       FIXED ON [25/6/2012] by adding tagMap      |
                        // |__________________________________________________|
                        //
                        ///////////////////////////////////////////////////////
                        
                        
                        // current associated tag:
                        PointTag tag;
//                        tag = pointsQueue_old.get(i-traces.length+p); // [BUG]
                        tag = tagMap.get(traces[p].geoTag); // to fix the bug
                        
                        // compute location of trace in texture (s,t):
                        int s = tag.x - this.xLRef;
                        int t = tag.y - this.yLRef;

                        // [TEST]
    //                    FESVoSystem.out.println(Thread.currentThread().getName() + ": Trace found for ( " + s + " , " + t + " ), LOD0 Location ( " + lod0Tag.x + " , " + lod0Tag.y + " )");
    //                    FESVoSystem.out2.println(Thread.currentThread().getName() + ": " + trace.toString());

                        // upload texture buffer:
                        if (loader.loadAtLowerResolution)
                            loader.uploadTextureBufferAtLowerResolution(s, t, lod, traces[p]);
                        else
                            loader.uploadTextureBuffer(s, t, traces[p]);

                        // put trace into FESVo:
                        FESVo.putTrace(traces[p], tag, lod);
                    }//if

                    // if not, increment empty cells count:
                    else
                        loader.incrementEmptyUnitsCount();
                        
                }//for

            }//while
                
        }//run()