package pt.estgp.estgweb.web.controllers.configuration;
import com.owlike.genson.Genson;
import jomm.dao.impl.AbstractDao;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.JobServiceTask;
import pt.estgp.estgweb.domain.JobServiceTaskImpl;
import pt.estgp.estgweb.domain.JobServiceTaskScheduler;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
/**
* Created by jorgemachado on 23/11/15.
*/
public class SchedullerTasksJson
extends HttpServlet
{
private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger =
1.5.0/docs/api/java/util/logging/Logger.html">Logger.
getLogger(SchedullerTasksJson.
class);
public void doGet
(HttpServletRequest request, HttpServletResponse response
)
throws ServletException,
1.5.0/docs/api/java/io/IOException.html">IOException
{
try {
process
(request,response
);
} catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
) {
response.
sendError(500
);
logger.
error(e,e
);
}
}
public void doPost
(HttpServletRequest request, HttpServletResponse response
)
throws ServletException,
1.5.0/docs/api/java/io/IOException.html">IOException
{
try {
process
(request,response
);
} catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
) {
response.
sendError(500
);
logger.
error(e, e
);
}
}
private void process
(HttpServletRequest request, HttpServletResponse response
)
throws ServletException,
1.5.0/docs/api/java/io/IOException.html">IOException,
1.5.0/docs/api/java/lang/NoSuchMethodException.html">NoSuchMethodException,
1.5.0/docs/api/java/lang/reflect/InvocationTargetException.html">InvocationTargetException,
1.5.0/docs/api/java/lang/IllegalAccessException.html">IllegalAccessException {
1.5.0/docs/api/java/lang/String.html">String service = request.
getParameter("service");
this.
getClass().
getMethod(service,HttpServletRequest.
class,HttpServletResponse.
class)
.
invoke(this,request,response
);
}
public void loadLog
(HttpServletRequest request,HttpServletResponse response
) throws 1.5.0/docs/api/java/io/IOException.html">IOException, IncompatibleFilterException, InvalidFilterException, ClassNotIFilterException, FilterRetrieveException, ServiceManagerException, InvalidFilterExpressionException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("ci"))
{
response.
sendError(403
);
return;
}
1.5.0/docs/api/java/lang/String.html">String id = 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[]{1.5.0/docs/api/java/lang/Long.html">Long.
parseLong(id
)};
try
{
JobServiceTaskImpl j =
(JobServiceTaskImpl
) sm.
execute(RequestUtils.
getRequester(request, response
),
"LoadJobServiceTask", args, names
);
Genson genson =
new Genson.
Builder()
.
exclude(5+0%2Fdocs%2Fapi+Object">Object.
class)
.
include(1.5.0/docs/api/java/lang/Boolean.html">Boolean.
class)
.
include(1.5.0/docs/api/java/lang/Integer.html">Integer.
class)
.
include(1.5.0/docs/api/java/lang/Long.html">Long.
class)
.
include(1.5.0/docs/api/java/lang/Double.html">Double.
class)
.
include(1.5.0/docs/api/java/lang/Float.html">Float.
class)
.
exclude("parameter") //metodo getParameter tem de ser evitado porque recebe parametros nao é um getter
.
include("serviceStartDateFormated", JobServiceTask.
class)
.
include("serviceLastUpdateDateFormated", JobServiceTask.
class)
.
include("serviceFinishDateFormated", JobServiceTask.
class)
.
include("status", JobServiceTask.
class)
.
include("progress",JobServiceTask.
class)
.
create();
1.5.0/docs/api/java/lang/String.html">String json = genson.
serialize(j
);
response.
setContentType("application/json");
response.
setCharacterEncoding("ISO-8859-1");
response.
setContentLength(json.
length());
response.
getOutputStream().
print(json
);
}
catch (FilterChainFailedException e
)
{
logger.
error(e,e
);
response.
sendError(500
);
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e,e
);
response.
sendError(500
);
}
}
public void loadTasks
(HttpServletRequest request,HttpServletResponse response
) throws 1.5.0/docs/api/java/io/IOException.html">IOException, IncompatibleFilterException, InvalidFilterException, ClassNotIFilterException, FilterRetrieveException, ServiceManagerException, InvalidFilterExpressionException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isAdmin() && !UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole("ci"))
{
response.
sendError(403
);
return;
}
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[]{};
try
{
List
<JobServiceTaskScheduler
> tasks =
(List
<JobServiceTaskScheduler
>) sm.
execute(RequestUtils.
getRequester(request, response
),
"LoadJobServiceTaskSchedullers", args, names
);
Genson genson =
new Genson.
Builder()
.
exclude(5+0%2Fdocs%2Fapi+Object">Object.
class)
.
include(1.5.0/docs/api/java/lang/Boolean.html">Boolean.
class)
.
include(1.5.0/docs/api/java/lang/Integer.html">Integer.
class)
.
include(1.5.0/docs/api/java/lang/Long.html">Long.
class)
.
include(1.5.0/docs/api/java/lang/Double.html">Double.
class)
.
include(1.5.0/docs/api/java/lang/Float.html">Float.
class)
.
exclude("parameter") //metodo getParameter tem de ser evitado porque recebe parametros nao é um getter
.
include("serviceStartDateFormated", JobServiceTask.
class)
.
include("serviceLastUpdateDateFormated", JobServiceTask.
class)
.
include("serviceFinishDateFormated", JobServiceTask.
class)
.
include("status", JobServiceTask.
class)
.
include("progress",JobServiceTask.
class)
.
include("lastJobServiceTask",JobServiceTaskScheduler.
class)
.
create();
1.5.0/docs/api/java/lang/String.html">String json = genson.
serialize(tasks
);
response.
setContentType("application/json");
response.
setCharacterEncoding("ISO-8859-1");
response.
setContentLength(json.
length());
response.
getOutputStream().
print(json
);
}
catch (FilterChainFailedException e
)
{
logger.
error(e,e
);
response.
sendError(500
);
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e,e
);
response.
sendError(500
);
}
}
public static void main
(1.5.0/docs/api/java/lang/String.html">String[] args2
) throws IncompatibleFilterException, InvalidFilterException, ClassNotIFilterException, FilterRetrieveException, ServiceManagerException, InvalidFilterExpressionException
{
1.5.0/docs/api/java/lang/String.html">String id =
"44365";
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(id
)};
try
{
AbstractDao.
getCurrentSession().
beginTransaction();
JobServiceTaskImpl j =
(JobServiceTaskImpl
) DaoFactory.
getJobServiceTaskDaoImpl().
get(new 1.5.0/docs/api/java/lang/Long.html">Long(1
));
AbstractDao.
getCurrentSession().
getTransaction().
commit();
Genson genson =
new Genson.
Builder()
.
exclude(5+0%2Fdocs%2Fapi+Object">Object.
class)
.
include(1.5.0/docs/api/java/lang/Boolean.html">Boolean.
class)
.
include(1.5.0/docs/api/java/lang/Integer.html">Integer.
class)
.
include(1.5.0/docs/api/java/lang/Long.html">Long.
class)
.
include(1.5.0/docs/api/java/lang/Double.html">Double.
class)
.
include(1.5.0/docs/api/java/lang/Float.html">Float.
class)
.
exclude("parameter") //metodo getParameter tem de ser evitado porque recebe parametros nao é um getter
.
include("serviceStartDate", JobServiceTask.
class)
.
include("serviceLastUpdateDate", JobServiceTask.
class)
.
include("serviceFinishDate", JobServiceTask.
class)
.
include("status", JobServiceTask.
class)
.
include("progress",JobServiceTask.
class)
.
create();
1.5.0/docs/api/java/lang/String.html">String json = genson.
serialize(j
);
1.5.0/docs/api/java/lang/System.html">System.
out.
println(json
);
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e,e
);
}
}
}