Index: /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/www/CLServlet.java
===================================================================
--- /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/www/CLServlet.java (revision 256)
+++ /SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/www/CLServlet.java (revision 260)
@@ -9,4 +9,5 @@
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.math.BigDecimal;
 import java.util.*;
 import javax.json.*;
@@ -74,61 +75,73 @@
 	PrintWriter out = response.getWriter();
         String ep = request.getParameter("ep");
-        //
         
-        
-        String classURI = request.getParameter("class");
         HttpSession session = request.getSession();
         QueryPathGenerator qpg = (QueryPathGenerator)session.getAttribute("qpg");
+        SortedSet<String> sortedClasses = null;
+                
         if ( qpg == null ){
             qpg = new QueryPathGenerator();
         }
-        SortedSet<String> sortedClasses = new TreeSet<String>(); // display + url
+        if ( ep == null ){
+            JsonBuilderFactory jbfactory = Json.createBuilderFactory(null);
+            JsonObjectBuilder job = jbfactory.createObjectBuilder();
+
+            String[] eplist = qpg.getFactory().getEndpointURIList();
+            for ( int i = 0; i < eplist.length; i++ ){
+                try{
+                    qpg.setSPARQLendpoint(eplist[i]);
+                    SClass[] classes = qpg.getClasses(null);
+                    sortedClasses = qpg.getSortedClasses(classes);
+                    JsonArray ja = getJsonArrayFromSortedClasses(jbfactory, sortedClasses);
+                    job.add(eplist[i], ja);                    
+                }catch(Exception e){
+                    System.err.println(e);
+                }
+            }
+            JsonObject jo = job.build();
+            out.print(jo);
+            return;
+        }
+        String classURI = request.getParameter("class");
         qpg.setSPARQLendpoint(ep);
-        //OWLClassGraph ocg = qpg.getOWLClassGraph();
+        SClass[] classes = null;
         if ( classURI != null ){
             qpg.setOWLClassGraph(classURI);
+            classes = qpg.getReachableClasses();
+        }else{
+            classes = qpg.getClasses(null);
         }
+        sortedClasses = qpg.getSortedClasses(classes);
         
-        SClass[] classes = qpg.getClasses(null);
-        qpg.setClassLabels(classes);
-        for (int i = 0 ; i < classes.length; i++ ){
-            String uri = classes[i].getClassURI();
-            /*
-            //if ( ocg.getNumberOfEdge(uri) == 0 ){
-            //    continue;
-            //}
-            if ( classURI != null ){
-                if ( qpg.getOWLClassGraph().visitedNode(uri) == false ){
-                    continue;
-                }
-            }
-            Label[] labels = classes[i].getLabels();
-            String label = null;
-            for ( int j = 0 ; j < labels.length; j++ ){
-                if ( labels[j].getLanguage() == null ){
-                    label = labels[j].getLabel(); break;
-                }else if ( labels[j].getLanguage().equals("en") ){
-                    label = labels[j].getLabel(); break;
-                }
-            }
-            if ( label == null ){
-                qpg.getClassLabelfromExternal(uri);
-            }            
-            if ( label == null ){
-                String[] uris = uri.split("/");
-                String tmplabel = uris[uris.length-1];
-                String[] tmplabel2 = tmplabel.split("#");
-                label = tmplabel2[tmplabel2.length-1];
-            }
-            */
-            String label = qpg.getClassLabel(uri);
-            StringBuilder classbuilder = new StringBuilder(label);
-            classbuilder.append("  ");
-            classbuilder.append(classes[i].getNumOfInstances());
-            classbuilder.append("  ");
-            classbuilder.append(uri);
-            sortedClasses.add(classbuilder.toString());
-        }
         JsonBuilderFactory jbfactory = Json.createBuilderFactory(null);
+        JsonArray ja = getJsonArrayFromSortedClasses(jbfactory, sortedClasses);
+        out.print(ja);
+    }
+
+    /**
+     * Handles the HTTP <code>POST</code> method.
+     *
+     * @param request servlet request
+     * @param response servlet response
+     * @throws ServletException if a servlet-specific error occurs
+     * @throws IOException if an I/O error occurs
+     */
+    @Override
+    protected void doPost(HttpServletRequest request, HttpServletResponse response)
+            throws ServletException, IOException {
+        processRequest(request, response);
+    }
+
+    /**
+     * Returns a short description of the servlet.
+     *
+     * @return a String containing servlet description
+     */
+    @Override
+    public String getServletInfo() {
+        return "Short description";
+    }// </editor-fold>
+
+    private JsonArray getJsonArrayFromSortedClasses(JsonBuilderFactory jbfactory, SortedSet<String> sortedClasses){
         JsonArrayBuilder jab = jbfactory.createArrayBuilder();
         Iterator<String> cit = sortedClasses.iterator();
@@ -163,30 +176,5 @@
         }       
         JsonArray ja = jab.build();
-        out.print(ja);
+        return ja;
     }
-
-    /**
-     * Handles the HTTP <code>POST</code> method.
-     *
-     * @param request servlet request
-     * @param response servlet response
-     * @throws ServletException if a servlet-specific error occurs
-     * @throws IOException if an I/O error occurs
-     */
-    @Override
-    protected void doPost(HttpServletRequest request, HttpServletResponse response)
-            throws ServletException, IOException {
-        processRequest(request, response);
-    }
-
-    /**
-     * Returns a short description of the servlet.
-     *
-     * @return a String containing servlet description
-     */
-    @Override
-    public String getServletInfo() {
-        return "Short description";
-    }// </editor-fold>
-
 }
