Changeset 1303

Show
Ignore:
Timestamp:
12.03.2012 14:28:58 (3 years ago)
Author:
raido
Message:

StringBuilder? fix

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • backoffice/trunk/src/main/java/ee/tlu/htk/dippler/managers/ListingManager.java

    r1287 r1303  
    293293 
    294294    public String listCourses(Integer offset, Integer limit) { 
    295         String xml = ""; 
     295        StringBuilder xml = new StringBuilder(); 
    296296        try { 
    297297            Query listing = em.createNativeQuery("SELECT * FROM Course c WHERE c.approved", Course.class); 
     
    300300            List<Course> courses = (List<Course>) listing.getResultList(); 
    301301            for(Course course : courses ){ 
    302                 xml = xml + "<id>"+course.getId()+"</id>"; 
    303             } 
    304         } catch (Exception e) { 
    305  
    306         } 
    307         return xml; 
     302                xml.append("<id>").append(course.getId()).append("</id>"); 
     303            } 
     304        } catch (Exception e) { 
     305 
     306        } 
     307        return xml.toString(); 
    308308    } 
    309309 
    310310    public String listEnrolledCourses(User user, Integer offset, Integer limit) { 
    311         String xml = ""; 
     311        StringBuilder xml = new StringBuilder(); 
    312312        try { 
    313313            Query listing = em.createNativeQuery("SELECT * FROM Learner l WHERE l.learner=?1", Learner.class); 
     
    317317            List<Learner> learners = (List<Learner>) listing.getResultList(); 
    318318            for(Learner learner : learners ){ 
    319                 xml = xml + "<id>"+learner.getCourse().getId()+"</id>"; 
    320             } 
    321         } catch (Exception e) { 
    322  
    323         } 
    324         return xml; 
     319                xml.append("<id>").append(learner.getCourse().getId()).append("</id>"); 
     320            } 
     321        } catch (Exception e) { 
     322 
     323        } 
     324        return xml.toString(); 
    325325    } 
    326326 
    327327    public String listEnrollableCourses(User user, Integer offset, Integer limit) { 
    328         String xml = ""; 
     328        StringBuilder xml = new StringBuilder(); 
    329329        try { 
    330330            Query listing = em.createNativeQuery("SELECT * FROM Course c WHERE c.approved AND c.enrollment<3 AND (SELECT count(course) FROM Learner l WHERE l.learner=?1 AND l.course=c.id)<1", Course.class); 
     
    334334            List<Course> courses = (List<Course>) listing.getResultList(); 
    335335            for(Course course : courses ){ 
    336                 xml = xml + "<id>"+course.getId()+"</id>"; 
    337             } 
    338         } catch (Exception e) { 
    339  
    340         } 
    341         return xml; 
     336                xml.append("<id>").append(course.getId()).append("</id>"); 
     337            } 
     338        } catch (Exception e) { 
     339 
     340        } 
     341        return xml.toString(); 
    342342    } 
    343343 
    344344    public String listOrganizationCourses(Long org_id, Integer offset, Integer limit) { 
    345         String xml = ""; 
     345        StringBuilder xml = new StringBuilder(); 
    346346        try { 
    347347            Query listing = em.createNativeQuery("SELECT * FROM Course c WHERE c.approved AND c.organization=?1", Course.class); 
     
    351351            List<Course> courses = (List<Course>) listing.getResultList(); 
    352352            for(Course course : courses ){ 
    353                 xml = xml + "<id>"+course.getId()+"</id>"; 
    354             } 
    355         } catch (Exception e) { 
    356  
    357         } 
    358         return xml; 
     353                xml.append("<id>").append(course.getId()).append("</id>"); 
     354            } 
     355        } catch (Exception e) { 
     356 
     357        } 
     358        return xml.toString(); 
    359359    } 
    360360 
    361361    public String listMyOrganizationCourses(Long org_id, Integer offset, Integer limit, User user) { 
    362         String xml = ""; 
     362        StringBuilder xml = new StringBuilder(); 
    363363        try { 
    364364            Query listing = em.createNativeQuery("SELECT * FROM Course c WHERE c.owner=?1 AND c.organization=?2", Course.class); 
     
    369369            List<Course> courses = (List<Course>) listing.getResultList(); 
    370370            for(Course course : courses ){ 
    371                 xml = xml + "<id>"+course.getId()+"</id>"; 
    372             } 
    373         } catch (Exception e) { 
    374  
    375         } 
    376         return xml; 
     371                xml.append("<id>").append(course.getId()).append("</id>"); 
     372            } 
     373        } catch (Exception e) { 
     374 
     375        } 
     376        return xml.toString(); 
    377377    } 
    378378 
    379379    public String listUnapprovedOrganizationCourses(Long org_id, Integer offset, Integer limit) { 
    380         String xml = ""; 
     380        StringBuilder xml = new StringBuilder(); 
    381381        try { 
    382382            Query listing = em.createNativeQuery("SELECT * FROM Course c WHERE !c.approved AND c.organization=?1", Course.class); 
     
    386386            List<Course> courses = (List<Course>) listing.getResultList(); 
    387387            for(Course course : courses ){ 
    388                 xml = xml + "<id>"+course.getId()+"</id>"; 
    389             } 
    390         } catch (Exception e) { 
    391  
    392         } 
    393         return xml; 
     388                xml.append("<id>").append(course.getId()).append("</id>"); 
     389            } 
     390        } catch (Exception e) { 
     391 
     392        } 
     393        return xml.toString(); 
    394394    } 
    395395 
    396396    public String listLearners(Long course_id, Integer status) { 
    397         String xml = ""; 
     397        StringBuilder xml = new StringBuilder(); 
    398398        try { 
    399399            Query listing = em.createNativeQuery("SELECT * FROM Learner l WHERE l.status>=?1 AND l.course=?2", Learner.class); 
     
    402402            List<Learner> learners = (List<Learner>) listing.getResultList(); 
    403403            for(Learner learner : learners ){ 
    404                 xml = xml + "<id>"+learner.getId()+"</id>"; 
    405             } 
    406         } catch (Exception e) { 
    407  
    408         } 
    409         return xml; 
     404                xml.append("<id>").append(learner.getId()).append("</id>"); 
     405            } 
     406        } catch (Exception e) { 
     407 
     408        } 
     409        return xml.toString(); 
    410410    } 
    411411 
     
    422422            List<Assignment> assignments = (List<Assignment>) listing.getResultList(); 
    423423            for(Assignment assignment : assignments ){ 
    424                 xml.append("<id>"+assignment.getId()+"</id>"); 
     424                xml.append("<id>").append(assignment.getId()).append("</id>"); 
    425425            } 
    426426        } catch (Exception e) { 
     
    431431 
    432432    public String listAssignmentsFull(Long course_id, Integer offset, Integer limit) { 
    433         String xml = "<assignments>"; 
     433        StringBuilder xml = new StringBuilder("<assignments>"); 
    434434        try { 
    435435            Query find_course = em.createNamedQuery("Course.findById"); 
     
    443443            for(Assignment assignment : assignments ){ 
    444444                try { 
    445                     xml += assignmentManager.marshal(assignment); 
     445                    xml.append(assignmentManager.marshal(assignment)); 
    446446                } catch (Throwable ex) { 
    447447                    Logger.getLogger(ListingManager.class.getName()).log(Level.SEVERE, null, ex); 
     
    451451 
    452452        } 
    453         xml += "</assignments>"; 
    454         return xml; 
     453        xml.append("</assignments>"); 
     454        return xml.toString(); 
    455455    } 
    456456 
    457457    public String listAnswers(Long assignment_id, Integer offset, Integer limit) { 
    458         String xml = ""; 
     458        StringBuilder xml = new StringBuilder(); 
    459459        try { 
    460460            Query find_assignment = em.createNamedQuery("Assignment.findById"); 
     
    467467            List<Answer> answers = (List<Answer>) listing.getResultList(); 
    468468            for(Answer answer : answers ){ 
    469                 xml = xml + "<id>"+answer.getId()+"</id>"; 
    470             } 
    471         } catch (Exception e) { 
    472  
    473         } 
    474         return xml; 
     469                xml.append("<id>").append(answer.getId()).append("</id>"); 
     470            } 
     471        } catch (Exception e) { 
     472 
     473        } 
     474        return xml.toString(); 
    475475    } 
    476476 
    477477    public String listGroups(Long course_id, Integer offset, Integer limit, String sorter) { 
    478         String xml = ""; 
     478        StringBuilder xml = new StringBuilder(); 
    479479        ArrayList<String> sorter_al = Sorter.parseSorted(sorter, "coursegroup"); 
    480480        try { 
     
    497497            List<Coursegroup> groups = (List<Coursegroup>) listing.getResultList(); 
    498498            for(Coursegroup group : groups ){ 
    499                 xml = xml + "<id>"+group.getId()+"</id>"; 
     499                xml.append("<id>").append(group.getId()).append("</id>"); 
    500500            } 
    501501        } catch (Exception e) { 
    502502            e.printStackTrace(System.err); 
    503503        } 
    504         return xml; 
     504        return xml.toString(); 
    505505    } 
    506506 
    507507    public String listGroupMembers(Long group_id, Integer offset, Integer limit) { 
    508         String xml = ""; 
     508        StringBuilder xml = new StringBuilder(); 
    509509        try { 
    510510            Query find = em.createNamedQuery("Coursegroup.findById"); 
     
    513513            Collection<Learner> members = group.getMembers(); 
    514514            for(Learner member : members ){ 
    515                 xml = xml + "<id>"+member.getId()+"</id>"; 
    516             } 
    517         } catch (Exception e) { 
    518  
    519         } 
    520         return xml; 
     515                xml.append("<id>").append(member.getId()).append("</id>"); 
     516            } 
     517        } catch (Exception e) { 
     518 
     519        } 
     520        return xml.toString(); 
    521521    } 
    522522 
    523523    public String listCourseblogPosts(Long course, Integer offset, Integer limit) { 
    524         String xml = ""; 
     524        StringBuilder xml = new StringBuilder(); 
    525525        try { 
    526526            Query listing = em.createNativeQuery("SELECT * FROM Courseblog_Post c WHERE c.course=?1 AND !c.hidden ORDER BY c.created DESC", CourseblogPost.class); 
     
    530530            List<CourseblogPost> posts = (List<CourseblogPost>) listing.getResultList(); 
    531531            for(CourseblogPost post : posts ){ 
    532                 xml = xml + "<id>"+post.getId()+"</id>"; 
    533             } 
    534         } catch (Exception e) { 
    535  
    536         } 
    537         return xml; 
     532                xml.append("<id>").append(post.getId()).append("</id>"); 
     533            } 
     534        } catch (Exception e) { 
     535 
     536        } 
     537        return xml.toString(); 
    538538    } 
    539539 
    540540    public String listCourseblogComments(Long post, Integer offset, Integer limit) { 
    541         String xml = ""; 
     541        StringBuilder xml = new StringBuilder(); 
    542542        try { 
    543543            Query listing = em.createNativeQuery("SELECT * FROM Courseblog_Comment c WHERE c.courseblog_post=?1 AND !c.hidden", CourseblogComment.class); 
     
    547547            List<CourseblogComment> comments = (List<CourseblogComment>) listing.getResultList(); 
    548548            for(CourseblogComment comment : comments ){ 
    549                 xml = xml + "<id>"+comment.getId()+"</id>"; 
    550             } 
    551         } catch (Exception e) { 
    552  
    553         } 
    554         return xml; 
     549                 xml.append("<id>").append(comment.getId()).append("</id>"); 
     550            } 
     551        } catch (Exception e) { 
     552 
     553        } 
     554        return xml.toString(); 
    555555    } 
    556556 
    557557    public String listCourseComments(Long course_id, Integer offset, Integer limit) { 
    558         String xml = ""; 
     558        StringBuilder xml = new StringBuilder(); 
    559559        try { 
    560560            Query listing = em.createNativeQuery("SELECT * FROM Courseblog_Comment c WHERE c.course=?1 AND !c.hidden", CourseblogComment.class); 
     
    564564            List<CourseblogComment> comments = (List<CourseblogComment>) listing.getResultList(); 
    565565            for(CourseblogComment comment : comments ){ 
    566                 xml = xml + "<id>"+comment.getId()+"</id>"; 
     566                 xml.append("<id>").append(comment.getId()).append("</id>"); 
    567567            } 
    568568        } catch (Exception e) { 
    569569             
    570570        } 
    571         return xml; 
     571        return xml.toString(); 
    572572    } 
    573573 
    574574    public String listTags(Long parent_id, Integer offset, Integer limit) { 
    575         String xml = ""; 
     575        StringBuilder xml = new StringBuilder(); 
    576576        try { 
    577577            Query listing = em.createNativeQuery("SELECT * FROM tag t", Tag.class); 
     
    581581            List<Tag> tags = (List<Tag>) listing.getResultList(); 
    582582            for(Tag tag : tags ){ 
    583                 xml = xml + "<id>"+tag.getId()+"</id>"; 
    584             } 
    585         } catch (Exception e) { 
    586  
    587         } 
    588         return xml; 
     583                xml.append("<id>").append(tag.getId()).append("</id>"); 
     584            } 
     585        } catch (Exception e) { 
     586 
     587        } 
     588        return xml.toString(); 
    589589    } 
    590590 
    591591    public String listCategories(Long parent_id, Integer offset, Integer limit) { 
    592         String xml = ""; 
     592        StringBuilder xml = new StringBuilder(); 
    593593        try { 
    594594            Query listing = em.createNativeQuery("SELECT * FROM category c WHERE c.parent=?1", Category.class); 
     
    598598            List<Category> categories = (List<Category>) listing.getResultList(); 
    599599            for(Category cat : categories ){ 
    600                 xml = xml + "<id>"+cat.getId()+"</id>"; 
    601             } 
    602         } catch (Exception e) { 
    603  
    604         } 
    605         return xml; 
     600                xml.append("<id>").append(cat.getId()).append("</id>"); 
     601            } 
     602        } catch (Exception e) { 
     603 
     604        } 
     605        return xml.toString(); 
    606606    } 
    607607     
    608608    public String listNotApprovedUsers(Long org, Integer offset, Integer limit) { 
    609         String xml = ""; 
     609        StringBuilder xml = new StringBuilder(); 
    610610        try { 
    611611            Query listing = em.createNativeQuery("SELECT * FROM User u LEFT JOIN user_organization uo ON u.id=uo.user WHERE !u.approved AND uo.organization=?1", User.class); 
     
    615615            List<User> users = (List<User>) listing.getResultList(); 
    616616            for(User user : users ){ 
    617                 xml = xml + "<id>"+user.getId()+"</id>"; 
     617                xml.append("<id>").append(user.getId()).append("</id>"); 
    618618            } 
    619619        } catch (Exception e) { 
    620620             
    621621        } 
    622         return xml; 
     622        return xml.toString(); 
    623623    } 
    624624 
    625625    public String listApprovedUsers(Long org, Integer offset, Integer limit) { 
    626         String xml = ""; 
     626        StringBuilder xml = new StringBuilder(); 
    627627        try { 
    628628            Query listing = em.createNativeQuery("SELECT * FROM User u LEFT JOIN user_organization uo ON u.id=uo.user WHERE u.approved AND uo.organization=?1", User.class); 
     
    632632            List<User> users = (List<User>) listing.getResultList(); 
    633633            for(User user : users ){ 
    634                 xml = xml + "<id>"+user.getId()+"</id>"; 
    635             } 
    636         } catch (Exception e) { 
    637  
    638         } 
    639         return xml; 
     634                xml.append("<id>").append(user.getId()).append("</id>"); 
     635            } 
     636        } catch (Exception e) { 
     637 
     638        } 
     639        return xml.toString(); 
    640640    } 
    641641     
    642642    public String listComboboxResourceFolders(Long course_id, Integer offset, Integer limit) { 
    643         String xml = ""; 
     643        StringBuilder xml = new StringBuilder(); 
    644644        try { 
    645645            Query folderListing = em.createNativeQuery("SELECT * FROM resource_folder f WHERE f.course=?1 AND f.parent IS NULL ORDER BY f.position ASC", ResourceFolder.class); 
     
    650650            List<ResourceFolder> folders = (List<ResourceFolder>) folderListing.getResultList(); 
    651651            // TODO list according to weight 
    652             xml = xml + "<foldertree>"; 
     652            xml.append("<foldertree>"); 
    653653            for(ResourceFolder folder : folders){ 
    654                 xml = xml + "<folder>"; 
    655                 xml = xml + "<id>"+folder.getId()+"</id>"; 
    656                 xml = xml + "<title>"+folder.getTitle()+"</title>"; 
     654                xml.append("<folder>"); 
     655                xml.append("<id>").append(folder.getId()).append("</id>"); 
     656                xml.append("<title>").append(folder.getTitle()).append("</title>"); 
    657657                // xml = xml + "<description>"+folder.getDescription()+"</description>"; 
    658                 xml = xml + listSubfolders(folder.getId(), offset, limit); 
    659                 xml = xml + "</folder>"; 
    660             } 
    661             xml = xml + "</foldertree>"; 
    662         } catch (Exception e) { 
    663  
    664         } 
    665         return xml; 
     658                xml.append(listSubfolders(folder.getId(), offset, limit)); 
     659                xml.append("</folder>"); 
     660            } 
     661            xml.append("</foldertree>"); 
     662        } catch (Exception e) { 
     663 
     664        } 
     665        return xml.toString(); 
    666666    } 
    667667     
    668668    public String listSubfolders(Long folder_id, Integer offset, Integer limit) { 
    669         String xml = ""; 
     669        StringBuilder xml = new StringBuilder(); 
    670670        try { 
    671671            Query listing = em.createNativeQuery("SELECT * FROM resource_folder f WHERE f.parent=?1 ORDER BY f.position ASC", ResourceFolder.class); 
     
    674674            listing.setMaxResults(limit); 
    675675            if(listing.getResultList().isEmpty()) { 
    676                 return xml; 
     676                return ""; 
    677677            } 
    678678            List<ResourceFolder> folders = (List<ResourceFolder>) listing.getResultList(); 
    679             xml = xml + "<folders>"; 
     679            xml.append("<folders>"); 
    680680            for(ResourceFolder folder : folders){ 
    681                 xml = xml + "<folder>"; 
    682                 xml = xml + "<id>"+folder.getId()+"</id>"; 
    683                 xml = xml + "<title>"+folder.getTitle()+"</title>"; 
    684                 xml = xml + listSubfolders(folder.getId(), offset, limit); 
    685                 xml = xml + "</folder>"; 
    686             } 
    687         xml = xml + "</folders>"; 
    688         } catch (Exception e) { 
    689  
    690         } 
    691         return xml; 
     681                xml.append("<folder>"); 
     682                xml.append("<id>").append(folder.getId()).append("</id>"); 
     683                xml.append("<title>").append(folder.getTitle()).append("</title>"); 
     684                // xml = xml + "<description>"+folder.getDescription()+"</description>"; 
     685                xml.append(listSubfolders(folder.getId(), offset, limit)); 
     686                xml.append("</folder>"); 
     687            } 
     688        xml.append("</folders>"); 
     689        } catch (Exception e) { 
     690 
     691        } 
     692        return xml.toString(); 
    692693    } 
    693694         
    694695        // TODO EMPTY QUERY CHECKS 
    695696    public String listResourceFolders(Long course_id, Integer offset, Integer limit) { 
    696         String xml = ""; 
     697        StringBuilder xml = new StringBuilder(); 
    697698        try { 
    698699            Query listing = em.createNativeQuery("SELECT * FROM resource_folder f WHERE f.course=?1 AND f.parent IS NULL ORDER BY f.position ASC", ResourceFolder.class); 
     
    702703            if(listing.getResultList().isEmpty()) { 
    703704                // return resources/folders with appropriate course_id? 
    704                 return xml; 
     705                return xml.toString(); 
    705706            } 
    706707            List<ResourceFolder> folders = (List<ResourceFolder>) listing.getResultList(); 
    707708            for(ResourceFolder folder : folders){ 
    708                 xml = xml + "<folder>"; 
    709                 xml = xml + "<id>"+folder.getId()+"</id>"; 
    710                 xml = xml + "<title>"+folder.getTitle()+"</title>"; 
     709                xml.append("<folder>"); 
     710                xml.append("<id>").append(folder.getId()).append("</id>"); 
     711                xml.append("<title>").append(folder.getTitle()).append("</title>"); 
    711712                // SUBFOLDERS 
    712713                Query sublisting = em.createNativeQuery("SELECT * FROM resource_folder f WHERE f.parent=?1 ORDER BY f.position ASC", ResourceFolder.class); 
     
    715716                sublisting.setMaxResults(limit); 
    716717                List<ResourceFolder> subfolders = (List<ResourceFolder>) sublisting.getResultList(); 
    717                 xml = xml + "<folders>"; 
     718                xml.append("<folders>"); 
    718719                for(ResourceFolder subfolder : subfolders){ 
    719                     xml = xml + "<folder>"; 
    720                     xml = xml + "<id>"+subfolder.getId()+"</id>"; 
    721                     xml = xml + "<title>"+subfolder.getTitle()+"</title>"; 
    722                     xml = xml + "</folder>"; 
    723                 } 
    724                 xml = xml + "</folders>"; 
     720                    xml.append("<folder>"); 
     721                    xml.append("<id>").append(subfolder.getId()).append("</id>"); 
     722                    xml.append("<title>").append(subfolder.getTitle()).append("</title>"); 
     723                    xml.append("</folder>"); 
     724                } 
     725                xml.append("</folders>"); 
    725726  
    726727                Query resourceListing = em.createNativeQuery("SELECT * FROM learning_resource r WHERE r.folder=?1 ORDER BY f.position ASC", LearningResource.class); 
     
    731732                List<LearningResource> resources = (List<LearningResource>) resourceListing.getResultList(); 
    732733                for(LearningResource resource : resources){ 
    733                     xml = xml + "<resource>"; 
    734                     xml = xml + "<id>"+resource.getId()+"</id>"; 
    735                     xml = xml + "<title>"+resource.getTitle()+"</title>"; 
    736                     xml = xml + "<description>"+resource.getDescription()+"</description>"; 
    737                     xml = xml + "<type>"+resource.getType()+"</type>"; 
    738                     xml = xml + "<author>"+resource.getAuthor()+"</author>"; 
    739                     xml = xml + "<published>"+resource.getPublished()+"</published>"; 
     734                    xml.append("<resource>"); 
     735                    xml.append("<id>").append(resource.getId()).append("</id>"); 
     736                    xml.append("<title>").append(resource.getTitle()).append("</title>"); 
     737                    xml.append("<description>").append(resource.getDescription()).append("</description>"); 
     738                    xml.append("<type>").append(resource.getType()).append("</type>"); 
     739                    xml.append("<author>").append(resource.getAuthor()).append("</author>"); 
     740                    xml.append("<published>").append(resource.getPublished()).append("</published>"); 
    740741                    // add author? 
    741                     xml = xml + "</resource>"; 
    742                 } 
    743                 xml = xml + "</folder>"; 
    744             } 
    745         } catch (Exception e) { 
    746  
    747         } 
    748         return xml; 
     742                    xml.append("</resource>"); 
     743                } 
     744                xml.append("</folder>"); 
     745            } 
     746        } catch (Exception e) { 
     747 
     748        } 
     749        return xml.toString(); 
    749750    } 
    750751 
     
    776777     
    777778    public String listLearnersFull(Long course_id, Integer status) { 
    778         String xml = "<learners>"; 
     779        StringBuilder xml = new StringBuilder("<learners>"); 
    779780        try { 
    780781            Query listing = em.createNativeQuery("SELECT * FROM Learner l WHERE l.status>=?1 AND l.course=?2", Learner.class); 
     
    784785            for(Learner learner : learners ) { 
    785786                try { 
    786                     xml += learnerManager.marshal(learner); 
     787                    xml.append(learnerManager.marshal(learner)); 
    787788                } catch (Throwable t) { 
    788789                     
     
    792793 
    793794        } 
    794         xml += "</learners>"; 
    795         return xml; 
     795        xml.append("</learners>"); 
     796        return xml.toString(); 
    796797    } 
    797798 
    798799    public String listFacilitatorsFull(Long course_id, Integer status) { 
    799         String xml = "<facilitators>"; 
     800        StringBuilder xml = new StringBuilder("<facilitators>"); 
    800801        try { 
    801802            Query listing = em.createNativeQuery("SELECT * FROM Facilitator l WHERE l.status>=?1 AND l.course=?2", Facilitator.class); 
     
    805806            for(Facilitator facilitator : facilitators ) { 
    806807                try { 
    807                     xml += facilitatorManager.marshal(facilitator); 
     808                    xml.append(facilitatorManager.marshal(facilitator)); 
    808809                } catch (Throwable t) { 
    809810 
     
    813814 
    814815        } 
    815         xml += "</facilitators>"; 
    816         return xml; 
     816        xml.append("</facilitators>"); 
     817        return xml.toString(); 
    817818    } 
    818819 
    819820    public String listOutcomesFull(Long course_id) { 
    820         String xml = "<learningoutcomes>"; 
     821        StringBuilder xml = new StringBuilder("<learningoutcomes>"); 
    821822        try { 
    822823            Query listing = em.createNativeQuery("SELECT * FROM learning_outcome l WHERE l.course=?1", LearningOutcome.class); 
     
    825826            for(LearningOutcome outcome : outcomes ) { 
    826827                try { 
    827                     xml += outcomeManager.marshal(outcome); 
     828                    xml.append(outcomeManager.marshal(outcome)); 
    828829                } catch (Throwable t) { 
    829830 
     
    833834 
    834835        } 
    835         xml += "</learningoutcomes>"; 
    836         return xml; 
     836        xml.append("</learningoutcomes>"); 
     837        return xml.toString(); 
    837838    } 
    838839 
    839840    public String listCategoriesFull(Long course_id) { 
    840         String xml = "<categories>"; 
     841        StringBuilder xml = new StringBuilder("<categories>"); 
    841842        try { 
    842843            Query listing = em.createNativeQuery("SELECT * FROM category c WHERE c.course=?1", Category.class); 
     
    848849                    parent = category.getParentCategory().getId().toString(); 
    849850                } catch (Exception e) {} 
    850                 xml += "<category>"+ 
    851                        "<id>"+category.getId()+"</id>"+ 
    852                        "<name><![CDATA["+category.getName()+"]]></name>"+ 
    853                        "<slug><![CDATA["+category.getSlug()+"]]></slug>"+ 
    854                        "<count>"+category.getCount()+"</count>"+ 
    855                        "<parent>"+parent+"</parent>"+ 
    856                        "<course>"+category.getCourse().getId().toString()+"</course>"+ 
    857                        "<categories></categories>"+ 
    858                        "</category>"; 
    859             } 
    860         } catch (Exception e) { 
    861  
    862         } 
    863         xml += "</categories>"; 
    864         return xml; 
     851                xml.append("<category>"); 
     852                       xml.append("<id>").append(category.getId()).append("</id>"); 
     853                       xml.append("<name><![CDATA[").append(category.getName()).append("]]></name>"); 
     854                       xml.append("<slug><![CDATA[").append(category.getSlug()).append("]]></slug>"); 
     855                       xml.append("<count>").append(category.getCount()).append("</count>"); 
     856                       xml.append("<parent>").append(parent).append("</parent>"); 
     857                       xml.append("<course>").append(category.getCourse().getId().toString()).append("</course>"); 
     858                       xml.append("<categories></categories>"); 
     859                       xml.append("</category>"); 
     860            } 
     861        } catch (Exception e) { 
     862 
     863        } 
     864        xml.append("</categories>"); 
     865        return xml.toString(); 
    865866    } 
    866867 
    867868    public String listCategoriesTreeFull(Long course_id) { 
    868         String xml = "<categories>"; 
     869        StringBuilder xml = new StringBuilder("<categories>"); 
    869870        try { 
    870871            Query listing = em.createNativeQuery("SELECT * FROM category c WHERE c.course=?1 AND c.parent is NULL ORDER BY c.name ASC", Category.class); 
     
    872873            List<Category> categories = (List<Category>) listing.getResultList(); 
    873874            for(Category category : categories ) { 
    874                 xml += "<category>"+ 
    875                        "<id>"+category.getId()+"</id>"+ 
    876                        "<name><![CDATA["+category.getName()+"]]></name>"+ 
    877                        "<slug><![CDATA["+category.getSlug()+"]]></slug>"+ 
    878                        "<count>"+category.getCount()+"</count>"+ 
    879                        "<parent></parent>"+ 
    880                        "<course>"+category.getCourse().getId().toString()+"</course>"+ 
    881                        "<categories>"+listSubCategoriesTreeFull(course_id, category)+"</categories>"+ 
    882                        "</category>"; 
    883             } 
    884         } catch (Exception e) { 
    885  
    886         } 
    887         xml += "</categories>"; 
    888         return xml; 
     875                xml.append("<category>"); 
     876                       xml.append("<id>").append(category.getId()).append("</id>"); 
     877                       xml.append("<name><![CDATA[").append(category.getName()).append("]]></name>"); 
     878                       xml.append("<slug><![CDATA[").append(category.getSlug()).append("]]></slug>"); 
     879                       xml.append("<count>").append(category.getCount()).append("</count>"); 
     880                       xml.append("<parent></parent>"); 
     881                       xml.append("<course>").append(category.getCourse().getId().toString()).append("</course>"); 
     882                       xml.append("<categories>").append(listSubCategoriesTreeFull(course_id, category)).append("</categories>"); 
     883                       xml.append("</category>"); 
     884            } 
     885        } catch (Exception e) { 
     886 
     887        } 
     888        xml.append("</categories>"); 
     889        return xml.toString(); 
    889890    } 
    890891 
    891892    public String listSubCategoriesTreeFull(Long course_id, Category cat) { 
    892         String xml = ""; 
     893        StringBuilder xml = new StringBuilder(); 
    893894        try { 
    894895            Query listing = em.createNativeQuery("SELECT * FROM category c WHERE c.course=?1 AND c.parent=?2 ORDER BY c.name ASC", Category.class); 
     
    901902                    parent = category.getParentCategory().getId().toString(); 
    902903                } catch (Exception e) {} 
    903                 xml += "<category>"+ 
    904                        "<id>"+category.getId()+"</id>"+ 
    905                        "<name><![CDATA["+category.getName()+"]]></name>"+ 
    906                        "<slug><![CDATA["+category.getSlug()+"]]></slug>"+ 
    907                        "<count>"+category.getCount()+"</count>"+ 
    908                        "<parent>"+parent+"</parent>"+ 
    909                        "<course>"+category.getCourse().getId().toString()+"</course>"+ 
    910                        "<categories>"+listSubCategoriesTreeFull(course_id, category)+"</categories>"+ 
    911                        "</category>"; 
    912             } 
    913         } catch (Exception e) { 
    914  
    915         } 
    916         return xml; 
     904                    xml.append("<category>"); 
     905                       xml.append("<id>").append(category.getId()).append("</id>"); 
     906                       xml.append("<name><![CDATA[").append(category.getName()).append("]]></name>"); 
     907                       xml.append("<slug><![CDATA[").append(category.getSlug()).append("]]></slug>"); 
     908                       xml.append("<count>").append(category.getCount()).append("</count>"); 
     909                       xml.append("<parent>").append(parent).append("</parent>"); 
     910                       xml.append("<course>").append(category.getCourse().getId().toString()).append("</course>"); 
     911                       xml.append("<categories>").append(listSubCategoriesTreeFull(course_id, category)).append("</categories>"); 
     912                       xml.append("</category>"); 
     913            } 
     914        } catch (Exception e) { 
     915 
     916        } 
     917        return xml.toString(); 
    917918    } 
    918919 
    919920    public String listActivities(User user, Long course_id, Integer offset, Integer limit) { 
    920         String xml = "<activities>"; 
     921        StringBuilder xml = new StringBuilder("<activities>"); 
    921922        try { 
    922923            Course course = courseManager.findById(course_id); 
     
    946947                List<Activity> activities = (List<Activity>) listing.getResultList(); 
    947948                for (Activity activity : activities) { 
    948                     xml += activityManager.marshal(activity); 
     949                    xml.append(activityManager.marshal(activity)); 
    949950                } 
    950951            } 
     
    952953            t.printStackTrace(System.out); 
    953954        } 
    954         xml += "</activities>"; 
    955         return xml; 
     955        xml.append("</activities>"); 
     956        return xml.toString(); 
    956957    } 
    957958