Subversion Repositories bacoAlunos

Rev

Rev 1692 | Rev 1711 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.web.controllers.repositorydocs;

import org.apache.struts.action.ActionForm;
import org.json.JSONArray;
import org.json.JSONObject;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import pt.estgp.estgweb.web.controllers.utils.AbstractWidgetAjaxController;
import pt.estgp.estgweb.web.controllers.utils.FilesUploadResult;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.net.URL;
import java.util.GregorianCalendar;

/**
 * Created by jorgemachado on 23/02/17.
 */

public class RepositoryDocController extends AbstractWidgetAjaxController
{

    public JSONObject saveRepositoryDocument(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable {

        1.5.0/docs/api/java/lang/String.html">String docJson = request.getParameter("doc");
        FilesUploadResult uploadedProvisorios = FilesUploadResult.parse(request.getParameter("uploadedFiles"));


        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{docJson,uploadedProvisorios};
        JSONObject persistent = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "SaveRepositoryDocument", args, names);
        addMessage(request,"repository.document.save.success", (1.5.0/docs/api/java/lang/String.html">String) persistent.get("title"));
        return persistent;
    }

    public JSONObject openRepositoryCollection(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable {

        1.5.0/docs/api/java/lang/Long.html">Long collectionId = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(request.getParameter("id"));
        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{collectionId};
        JSONArray persistent = (JSONArray) sm.execute(RequestUtils.getRequester(request, response), "OpenRepositoryCollection", args, names);
        JSONObject collections = new JSONObject();
        collections.put("collections",persistent);
        return collections;
    }

    public JSONObject openRepositoryCollectionDocuments(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable {

        1.5.0/docs/api/java/lang/Long.html">Long collectionId = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(request.getParameter("id"));
        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{collectionId};
        JSONArray persistent = (JSONArray) sm.execute(RequestUtils.getRequester(request, response), "OpenRepositoryCollectionDocuments", args, names);
        JSONObject documents = new JSONObject();
        documents.put("documents",persistent);
        return documents;
    }

    public JSONObject addCollection(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable {

        1.5.0/docs/api/java/lang/Long.html">Long collectionId = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(request.getParameter("id"));
        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{collectionId};
        JSONObject persistent = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "AddRepositoryCollection", args, names);
        return persistent;
    }

    public boolean changeParentCollection(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable {

        1.5.0/docs/api/java/lang/Long.html">Long collectionId = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(request.getParameter("id"));
        1.5.0/docs/api/java/lang/Long.html">Long newParentCollectionId = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(request.getParameter("newParentId"));
        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{collectionId,newParentCollectionId};
        JSONObject persistent = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "ChangeParentRepositoryDocumentCollection", args, names);
        return true;
    }


    public boolean changeToRootCollection(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable {

        1.5.0/docs/api/java/lang/Long.html">Long collectionId = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(request.getParameter("id"));
        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{collectionId,null};
        JSONObject persistent = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "ChangeParentRepositoryDocumentCollection", args, names);
        return true;
    }

    public JSONObject newRootCollection(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
    {
        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{null};
        JSONObject persistent = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "AddRepositoryCollection", args, names);
        return persistent;
    }

    public boolean updateCollection(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
    {
        1.5.0/docs/api/java/lang/String.html">String collectionJson = request.getParameter("collection");
        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{collectionJson};
        JSONObject persistent = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "UpdateRepositoryCollection", args, names);
        return true;
    }

    public JSONObject addRepositoryInterface(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
    {
        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{};
        JSONObject persistent = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "AddRepositoryInterface", args, names);
        return persistent;
    }
    public JSONObject removeInterface(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
    {
        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{1.5.0/docs/api/java/lang/Long.html">Long.parseLong(request.getParameter("id"))};
        JSONObject persistent = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "RemoveRepositoryInterface", args, names);
        return persistent;
    }
    public JSONObject updateInterface(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
    {
        1.5.0/docs/api/java/lang/String.html">String interfaceJson = request.getParameter("interface");
        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{interfaceJson};
        JSONObject persistent = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "UpdateRepositoryInterface", args, names);
        return persistent;
    }

    public boolean saveRepositoryInterfaceData(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
    {
        1.5.0/docs/api/java/lang/String.html">String repositoryInterfaceDataJson = request.getParameter("data");
        1.5.0/docs/api/java/lang/Long.html">Long repositoryInterfaceId = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(request.getParameter("id"));
        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{repositoryInterfaceId,repositoryInterfaceDataJson};
        sm.execute(RequestUtils.getRequester(request, response), "SaveRepositoryInterfaceData", args, names);
        addMessageAsString(request,"Interface guardada com sucesso");
        return true;
    }

    public JSONObject selectObjectsFromURL(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
    {
        1.5.0/docs/api/java/lang/String.html">String paragraphSelector = request.getParameter("paragraphSelector");
        1.5.0/docs/api/java/lang/String.html">String url = request.getParameter("urlSource");
        1.5.0/docs/api/java/net/URL.html">URL u = new 1.5.0/docs/api/java/net/URL.html">URL(url);
        1.5.0/docs/api/java/lang/String.html">String domainRoot = u.getProtocol() + "://" + u.getHost();
        //if(domainRoot.endsWith("/"))
        //    domainRoot = domainRoot.substring(0,domainRoot.length()-1);
        JSONArray sections = new JSONArray();
        JSONArray nowSectionDocuments = new JSONArray();
        JSONObject section = new JSONObject();
        section.put("section","PRIMEIRA_IGNORAR");
        section.put("documents",nowSectionDocuments);
        sections.put(section);

        int count = 0;
        5+0%2Fdocs%2Fapi+Document">Document doc = Jsoup.connect(url).get();
        Elements newsHeadlines = doc.select(paragraphSelector);
        1.5.0/docs/api/java/lang/String.html">String dateYearSection = null;
        for(5+0%2Fdocs%2Fapi+Element">Element e: newsHeadlines)
        {
            1.5.0/docs/api/java/lang/String.html">String allText = e.text().replaceAll("\\n", " ").replaceAll("[ \\t\\xA0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000]"," ").trim();


            if(allText.length() > 0)
            {
                1.5.0/docs/api/java/lang/System.html">System.out.println("-----------------------------------");
                count++;
                1.5.0/docs/api/java/lang/String.html">String[] nodes = e.html().replaceAll("(?i)<br[^>]*>", "br2n").split("br2n");

                1.5.0/docs/api/java/lang/String.html">String docTitle = "";
                1.5.0/docs/api/java/lang/String.html">String dateYear = "";
                if(dateYearSection != null)
                {
                    dateYear = dateYearSection;
                }
                else
                {
                    for(int i = new 1.5.0/docs/api/java/util/GregorianCalendar.html">GregorianCalendar().get(1.5.0/docs/api/java/util/GregorianCalendar.html">GregorianCalendar.YEAR); i > 2000;i--)
                    {
                        if(allText.indexOf("" + i)>=0)
                        {
                            dateYear = i + "";
                            break;
                        }
                    }
                }

                JSONArray files = new JSONArray();

                for(1.5.0/docs/api/java/lang/String.html">String node : nodes)
                {
                    5+0%2Fdocs%2Fapi+Document">Document lineText = Jsoup.parse(node);
                    Elements as = lineText.select("a");
                    if(as.size()==0)
                    {
                        docTitle+= " " + lineText.text().replaceAll("\\n", " ").replaceAll("[ \\t\\xA0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000]"," ").trim();
                    }
                    else if(as.size() == 1)
                    {
                        JSONObject file = new JSONObject();
                        //lineText includes URL text + Line without URL Text
                        1.5.0/docs/api/java/lang/String.html">String fileText = lineText.text().replaceAll("[ \\t\\xA0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000]"," ").trim();
                        1.5.0/docs/api/java/lang/String.html">String href = as.get(0).attr("href");
                        if(href.startsWith("/"))
                        {
                            href = domainRoot + href;
                        }
                        file.put("href", href);
                        file.put("text",fileText);
                        files.put(file);
                        1.5.0/docs/api/java/lang/System.html">System.out.println("FILE: " + fileText + " :: URL :: " + as.get(0).attr("href"));
                    }
                    else if(as.size() >= 1)
                    {
                        //when we have several URL's n same line we put in each URL only the text inside <a>
                        for(5+0%2Fdocs%2Fapi+Element">Element a : as)
                        {
                            JSONObject file = new JSONObject();
                            1.5.0/docs/api/java/lang/String.html">String fileText = a.text().replaceAll("[ \\t\\xA0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000]"," ").trim();

                            1.5.0/docs/api/java/lang/String.html">String href = as.get(0).attr("href");
                            if(href.startsWith("/"))
                            {
                                href = domainRoot + href;
                            }
                            file.put("href",href);
                            file.put("text",fileText);
                            files.put(file);
                            1.5.0/docs/api/java/lang/System.html">System.out.println("?????????FILE: " + fileText + " :: URL :: " + as.get(0).attr("href"));
                        }
                    }
                }
                if(files.length() == 0)
                {
                    1.5.0/docs/api/java/lang/System.html">System.out.println("SECTION CANDIDATE: " + docTitle);
                    nowSectionDocuments = new JSONArray();
                    section = new JSONObject();
                    section.put("section",docTitle);
                    section.put("documents",nowSectionDocuments);
                    sections.put(section);
                    dateYearSection = null;
                    for(int i = new 1.5.0/docs/api/java/util/GregorianCalendar.html">GregorianCalendar().get(1.5.0/docs/api/java/util/GregorianCalendar.html">GregorianCalendar.YEAR); i > 2000;i--)
                    {
                        if(docTitle.indexOf("" + i)>=0)
                        {
                            dateYearSection = i + "";
                            break;
                        }
                    }
                }
                else
                {

                    JSONObject j = new JSONObject();


                    docTitle = docTitle.trim();
                    if(docTitle.startsWith("-"))
                    {
                        docTitle = docTitle.substring(1);
                    }
                    if(docTitle.endsWith("-"))
                    {
                        docTitle = docTitle.substring(0, docTitle.length()-1);
                    }
                    docTitle = docTitle.trim();
                    j.put("text",docTitle);
                    if(files.length() > 0)
                        j.put("files",files);
                    if(dateYear.length()>0)
                        j.put("year", dateYear);


                    1.5.0/docs/api/java/lang/System.html">System.out.println(docTitle);

                    nowSectionDocuments.put(j);
                }
            }
        }
        1.5.0/docs/api/java/lang/System.html">System.out.println(sections.toString());
        1.5.0/docs/api/java/lang/System.html">System.out.println(count);
        JSONObject sectionsObj = new JSONObject();
        sectionsObj.put("sections",sections);
        return sectionsObj;
    }

}