private boolean execMakeCollaborativeProfiles(VectorMap queryParam, StringBuffer respBody, DBAccess dbAccess) {
        int clntIdx = queryParam.qpIndexOfKeyNoCase("clnt");
        String clientName = (String) queryParam.getVal(clntIdx);

        int threasholdIdx = queryParam.qpIndexOfKeyNoCase("th");
        if (threasholdIdx == -1) {
            WebServer.win.log.error("-The parameter th is missing: ");
            return false;
        }
        String thStr = (String) queryParam.getVal(threasholdIdx);
        int op = 0;
        boolean avtualDist = true;
        if (thStr.startsWith("<")) {
            avtualDist = false;
            op = 1;
        } else if (thStr.startsWith(">")) {
            op = 2;
        } else {
            WebServer.win.log.error("-The parameter th is starts neither with < nor > ");
            return false;
        }
        float threashold = Float.parseFloat(thStr.substring(1));

        boolean success = true;

        try {
            PCommunityDBAccess pdbAccess = new PCommunityDBAccess(dbAccess);
            pdbAccess.deleteUserAccociations(clientName, DBAccess.RELATION_BINARY_SIMILARITY);
            pdbAccess.generateBinarySimilarities(dbAccess, clientName, op, threashold);

            final int userSize = 1000;
            int offset = 0;
            int i = 0;
            int threadNum = Integer.parseInt(PersServer.pref.getPref("thread_num"));
            ///threadNum = 1;

            Statement stmt = dbAccess.getConnection().createStatement();
            String sql = "DELETE FROM " + DBAccess.CFPROFILE_TABLE + " WHERE " + DBAccess.FIELD_PSCLIENT + "='" + clientName + "'";
            stmt.execute(sql);
            sql = "DELETE FROM " + DBAccess.CFFEATURE_STATISTICS_TABLE + " WHERE " + DBAccess.FIELD_PSCLIENT + "='" + clientName + "'";
            stmt.execute(sql);
            sql = "DELETE FROM " + DBAccess.CFFTRASSOCIATIONS_TABLE + " WHERE " + DBAccess.FIELD_PSCLIENT + "='" + clientName + "'";
            stmt.execute(sql);

            threadNum = 1;
            ExecutorService threadExecutor = Executors.newFixedThreadPool(threadNum);
            do {
                i = 0;
                sql = "SELECT " + DBAccess.USER_TABLE_FIELD_USER + " FROM " + DBAccess.USER_TABLE + " WHERE " + DBAccess.FIELD_PSCLIENT + "='" + clientName + "' LIMIT " + userSize + " OFFSET " + offset;
                ResultSet rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    String user = rs.getString(1);
                    //WebServer.win.log.debug("-Creating collaborative profile for user " + user );
                    threadExecutor.execute(new CollaborativeProfileBuilderThread(dbAccess, user, clientName, avtualDist));
                    i++;
                }
                offset += userSize;
            } while (i == userSize);
            threadExecutor.shutdown();
            while (threadExecutor.isTerminated() == false) {
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException ex) {
                }
            }
            stmt.close();
            return success;

        } catch (SQLException ex) {
            success = false;
            WebServer.win.log.debug("-Problem executing query: " + ex);
        }
        //String query1 = "SELECT uf_feature AS up_feature, uf_numdefvalue AS up_numvalue FROM up_features WHERE uf_feature NOT IN " + " ( SELECT up_feature FROM user_profiles WHERE up_user = '" + userName + "' AND FK_psclient = '" + clientName + "') AND FK_psclient = '" + clientName + "'";
        //String query2 = "SELECT up_feature, up_numvalue AS up_numvalue FROM user_profiles WHERE up_user = '" + userName + "' AND up_feature in " + "(SELECT up_feature FROM user_profiles WHERE FK_psclient='" + clientName + "' ) AND FK_psclient='" + clientName + "'";
        //String sql = " ( " + query1 + " ) UNION ( " + query2 + " ) " + condition;
        return success;
    }