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
;
}
}