/impl/conf/language/MessageResourcesSurvey.properties |
---|
New file |
0,0 → 1,106 |
################################################################################ |
# |
# Survey MESSAGE RESOURCES - Duarte Santos |
# |
################################################################################ |
# SERVICE ZONE |
surveys=Questionários |
survey.create.survey=Criar Questionário |
survey.list.surveys=Listar Questionários |
survey.zero.placed=0 questionários criados |
intranet.my.surveys=Os Meus Questionários |
intranet.my.surveys.stats=As Estatísticas Que Posso Consultar |
survey.stats.zero.placed=Não existem estatísticas que possa consultar |
# SUBMIT SURVEY |
survey.submit.form.title=Título |
survey.submit.form.type=Tipo |
survey.submit.form.target.roles=Pessoas a quem destina |
survey.submit.form.target.pairs=Par a que se destina |
survey.submit.form.stats.consult.roles=Quem pode consultar resultados |
survey.submit.form.start.date=Data de inicio |
survey.submit.form.end.date=Data de fim |
survey.submit.form.questions=Perguntas |
survey.submit.form.delete.question=Apagar pergunta |
survey.submit.form.required.question=Obrigatória? |
survey.submit.form.question=Pergunta |
survey.submit.form.add.hoption=Adicionar opção horizontal |
survey.submit.form.add.voption=Adicionar opção vertical |
survey.submit.form.add.question=Adicionar pergunta |
# SUBMIT SURVEY selects |
surveys.type.general=Geral |
surveys.type.pedagogic=Pedagógico |
surveys.target.pair.student.courseunit=Estudante/Cadeira |
surveys.target.pair.teacher.courseunit=Professor/Cadeira |
surveys.stats.consult.owner=Criador |
surveys.question.type.radio=Escolha múltipla radio |
surveys.question.type.check=Escolha múltipla check |
surveys.question.type.matrix=Escolha múltipla matriz |
surveys.question.type.text=Pergunta de texto |
#SUBMIT SURVEY errors |
survey.submit.form.error.need.expire.date=A data em que o questionário acaba é obrigatória |
survey.submit.form.error.need.questions=É necessário adicionar pelo menos uma pergunta |
survey.submit.form.error.question.need.label=A {0}ª pergunta tem de ter texto |
survey.submit.form.error.question.need.hoption=A {0}ª pergunta tem de ter pelo menos uma opção horizontal |
survey.submit.form.error.question.need.voption=A {0}ª pergunta tem de ter pelo menos uma opção vertical |
survey.submit.form.error.question.options.need.labels=Todas as opções da {0}ª pergunta devem estar preenchidas |
survey.submit.form.error.question.need.hoption.first=Primeiro tem de adicionar uma opção horizontal |
# ANSWER SURVEY |
survey.answer.form.title=Título |
survey.answer.form.type=Tipo |
survey.answer.form.end.date=Data de Fim |
survey.answer.form.related=Relativo a |
survey.answer.form.required.question=Pergunta obrigatória |
# ANSWER SURVEY errors |
survey.answer.form.error.answer.question.required=A {0}ª pergunta é obrigatória! |
# LIST SURVEY |
survey.list.form.title=Título |
survey.list.form.type=Tipo |
survey.list.form.target=Destinatários |
survey.list.form.year=Ano |
survey.list.form.semester=Semestre |
survey.list.form.start.date=Data de Início |
survey.list.form.end.date=Data de Fim |
survey.list.form.created.by=Criado por |
survey.list.form.number.responses=Nº de Respostas |
survey.list.form.status=Estado |
survey.list.form.percentage.symbol=% |
survey.list.form.empty=Não existem questionários |
# LIST SURVEY options |
survey.list.form.option.edit=Editar |
survey.list.form.option.clone=Replicar |
survey.list.form.option.consist=Consistir |
survey.list.form.option.gen.stats=Gerar estatísticas |
survey.list.form.option.view.stats=Ver estatísticas |
survey.list.form.option.download.csv=Download CSV |
# LIST SURVEY status |
survey.list.form.status.create.survey=A criar o questionário, aguarde... |
survey.list.form.status.consist.survey=A consistir o questionário, aguarde... |
survey.list.form.status.generate.stats=A gerar estatísticas, aguarde... |
# STATS |
survey.stats.graph.axis.range.label=Nº de Respostas |
survey.stats.graph.axis.domain.label=Itens |
# General MESSAGES |
survey.message.created.success=Questionário criado com sucesso |
survey.message.edited.success=Questionário editado com sucesso |
survey.message.answered.success=Questionário respondido com sucesso |
survey.message.operation.started=Operação iniciada com sucesso |
# TOPNAV |
survey.topnav.create.survey=Criar Questionário |
survey.topnav.list.surveys=Listar Questionários |
survey.topnav.list.stats=Listar Estatísticas |
survey.topnav.load.stats=a ver estatísticas |
survey.topnav.response.survey=a responder questionário |
survey.topnav.view.graphs=a ver gráficos |
# TO.DO |
module.Surveys=Questionários |
survey.type.todo=Para responder |
/impl/conf/language/MessageResources.properties |
---|
133,7 → 133,9 |
user.role.studentsID=Alunos de Informação e Documentação |
user.role.studentsFSIR=Alunos de Fontes de Informação e Serviço de Referência |
user.role.admin,teacher=Admin e Professor |
#Filter Errors |
fail.role=Lamentamos o incómodo, mas necessita de permissões especiais para aceder a esta área. |
fail.owner=Lamentamos o incómodo, mas não tem permissões sobre o objecto ao qual tentou aceder. |
/impl/conf/WEB-INF/struts/struts-default.xml |
---|
10,7 → 10,7 |
<form-beans> |
<!-- Import --> |
<!--<form-bean type="pt.estgp.estgweb.web.form.announcements.AnnouncementsForm" name="AnnouncementsForm"/>--> |
<form-bean type="pt.estgp.estgweb.web.form.EmptyForm" name="EmptyForm"/> |
<form-bean type="pt.estgp.estgweb.web.form.EmptyForm" name="EmptyForm"/> |
<!--<form-bean type="com.innovkey.opt.imports.web.ImportForm" name="ImportForm"/>--> |
</form-beans> |
201,10 → 201,11 |
/WEB-INF/struts/tiles-intranet.xml, |
/WEB-INF/struts/tiles-reminders.xml, |
/WEB-INF/struts/tiles-managedidentifier.xml, |
/WEB-INF/struts/tiles-srusource.xml"/> |
/WEB-INF/struts/tiles-srusource.xml, |
/WEB-INF/struts/tiles-survey.xml"/> <!-- Duarte Santos --> |
</plug-in> |
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> |
<set-property property="pathnames" value="/WEB-INF/struts/validator-rules.xml,/WEB-INF/struts/validation.xml"/> |
</plug-in> |
</struts-config> |
</struts-config> |
/impl/conf/WEB-INF/struts/struts-survey.xml |
---|
New file |
0,0 → 1,67 |
<?xml version="1.0" encoding="UTF-8"?> |
<!--<!DOCTYPE struts-config PUBLIC--> |
<!--"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"--> |
<!--"http://struts.apache.org/dtds/struts-config_1_3.dtd">--> |
<struts-config> |
<form-beans> |
<form-bean type="pt.estgp.estgweb.web.form.surveys.SurveysForm" name="SurveysForm"/> |
</form-beans> |
<global-exceptions> |
</global-exceptions> |
<global-forwards> |
</global-forwards> |
<action-mappings> |
<action path="/user/submitSurveyFromServiceZone" |
type="pt.estgp.estgweb.web.controllers.surveys.SurveysController" |
name="SurveysForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.survey.from.serviceZone" |
validate="true"> |
<forward name="serviceZone" path="page.separators.serviceZone"/> |
</action> |
<action path="/user/startSurveyResponseFromHome" forward="/user/surveysControllerFromServiceZone.do?dispatch=loadResponse&from=Home"/> |
<action path="/user/submitSurveyResponseFromHome" |
type="pt.estgp.estgweb.web.controllers.surveys.SurveysController" |
name="SurveysForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.survey.response.from.home" |
validate="true"> |
<forward name="home" path="page.separators.home"/> |
</action> |
<action path="/user/startLoadSurveyNodeGraphs" forward="page.load.survey.node.graphs"/> |
<action path="/user/startListSurveyStats" forward="/user/surveysControllerFromServiceZone.do?dispatch=listStats"/> |
<action path="/user/startListSurveysFromServiceZone" forward="page.list.surveys.from.serviceZone"/> |
<action path="/user/startGenerateSurveyStatsFromServiceZone" forward="/user/surveysControllerFromServiceZone.do?dispatch=generateStats&from=ServiceZone"/> |
<action path="/user/startConsistSurveyFromServiceZone" forward="/user/surveysControllerFromServiceZone.do?dispatch=consist&from=ServiceZone"/> |
<action path="/user/startCloneSurveyFromServiceZone" forward="/user/surveysControllerFromServiceZone.do?dispatch=clone&from=ServiceZone"/> |
<action path="/user/startEditSurveyFromServiceZone" forward="/user/surveysControllerFromServiceZone.do?dispatch=edit&from=ServiceZone"/> |
<action path="/user/startSubmitSurveyFromServiceZone" forward="/user/surveysControllerFromServiceZone.do?dispatch=start&from=ServiceZone"/> |
<action path="/user/surveysControllerFromServiceZone" |
type="pt.estgp.estgweb.web.controllers.surveys.SurveysController" |
name="SurveysForm" |
scope="request" |
parameter="dispatch" |
input="page.submit.survey.from.serviceZone" |
validate="false"> |
<forward name="response" path="page.submit.survey.response.from.home"/> |
<forward name="stats" path="page.list.survey.stats"/> |
<forward name="serviceZone" path="page.separators.serviceZone"/> |
<forward name="from.add.role" path="page.submit.survey.from.serviceZone"/> |
</action> |
</action-mappings> |
</struts-config> |
/impl/conf/WEB-INF/struts/tiles-survey.xml |
---|
New file |
0,0 → 1,39 |
<?xml version="1.0" encoding="UTF-8" ?> |
<!--<!DOCTYPE tiles-definitions PUBLIC--> |
<!--"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"--> |
<!--"http://struts.apache.org/dtds/tiles-config_1_1.dtd">--> |
<tiles-definitions> |
<definition name="page.submit.survey.from.serviceZone" extends="page.separators.serviceZone"> |
<put name="title" value="Questionário"/> |
<put name="topnav" value="/user/serviceZone/topnavCreateSurvey.jsp"/> |
<put name="body" value="/admin/surveys/submitSurvey.jsp"/> |
</definition> |
<definition name="page.list.surveys.from.serviceZone" extends="page.separators.serviceZone"> |
<put name="title" value="Questionário"/> |
<put name="topnav" value="/user/serviceZone/topnavListSurvey.jsp"/> |
<put name="body" value="/user/surveys/listSurveys.jsp"/> |
</definition> |
<definition name="page.list.survey.stats" extends="page.separators.serviceZone"> |
<put name="title" value="Questionário"/> |
<put name="topnav" value="/user/serviceZone/topnavListSurveyStats.jsp"/> |
<put name="body" value="/user/surveys/listSurveyStats.jsp"/> |
</definition> |
<definition name="page.load.survey.node.graphs" extends="page.separators.serviceZone"> |
<put name="title" value="Questionário"/> |
<put name="topnav" value="/user/serviceZone/topnavLoadSurveyNodeGraphs.jsp"/> |
<put name="body" value="/user/surveys/loadSurveyNodeGraphs.jsp"/> |
</definition> |
<definition name="page.submit.survey.response.from.home" extends="page.separators.home"> |
<put name="title" value="Questionário"/> |
<put name="topnav" value="/user/home/topnavResponseSurvey.jsp"/> |
<put name="body" value="/user/surveys/submitSurveyResponse.jsp"/> |
</definition> |
</tiles-definitions> |
/impl/conf/WEB-INF/tlds/baco.tld |
---|
251,6 → 251,5 |
<required>false</required> |
<rtexprvalue>false</rtexprvalue> |
</attribute> |
</tag> |
</taglib> |
/impl/conf/WEB-INF/web.xml |
---|
144,7 → 144,8 |
/WEB-INF/struts/struts-intranet.xml, |
/WEB-INF/struts/struts-reminders.xml, |
/WEB-INF/struts/struts-managedidentifier.xml, |
/WEB-INF/struts/struts-srusource.xml |
/WEB-INF/struts/struts-srusource.xml, |
/WEB-INF/struts/struts-survey.xml <!-- Duarte Santos --> |
</param-value> |
</init-param> |
<init-param> |
/impl/conf/app.properties |
---|
1,4 → 1,4 |
|
#FICHEIRO DE CONFIGURACOES |
tmp.dir=@tmp.dir@ |
57,7 → 57,7 |
module.announcements=true |
module.manageidentifiers=true |
module.blogs=true |
module.urlstat=true |
module.urlstat=false |
module.search=true |
module.searchGoogle=true |
module.courseunits=true |
66,8 → 66,11 |
module.intranet=true |
module.profile=true |
module.sms=false |
module.quotasImpressao=true |
#module.quotasImpressao=true |
module.quotasImpressao=false |
module.srusource=true |
#Duarte Santos |
module.surveys=true |
################################################## |
# SMS |
# |
85,7 → 88,7 |
##Proxy Servers |
#If is an HTTP Server needs encoding config if FTP needs user pass config |
#This server is the server for unit contents, must be named ionline, it is hardcoded |
server.ionline=ftp://www.global.estgp.pt |
server.ionline=ftp://w2.estgp.pt |
server.ionline.start.path= |
ionline.pass=baco |
ionline.user=Baco_web |
98,6 → 101,7 |
estgp.proxy.port= |
server.conteudos.start.path= |
#server.conteudos=http://localhost:9090/conteudos |
server.conteudos=http://deptal.estgp.pt:9090/conteudos |
conteudos.encoding=UTF-8 |
conteudos.proxy.host= |
264,7 → 268,38 |
blog.desc.summary.size=250 |
blog.type.courseunit=courseunit |
######################################################################### |
# Surveys - Duarte Santos |
# |
surveys.type.0=general |
surveys.type.1=pedagogic |
# Esta role tem de existir nas user.role senão tem de ser adicionada nas messages props |
surveys.target.role.0=all |
surveys.target.role.1=teacher |
surveys.target.role.2=student |
surveys.target.pair.0=student.courseunit |
surveys.target.pair.1=teacher.courseunit |
# Esta role tem de existir nas user.role senão tem de ser adicionada nas messages props |
surveys.stats.consult.role.0=all |
surveys.stats.consult.role.1=teacher |
surveys.stats.consult.role.2=student |
surveys.question.type.0=radio |
surveys.question.type.1=check |
surveys.question.type.2=matrix |
surveys.question.type.3=text |
# Stats |
surveys.stats.graph.img.width=800 |
surveys.stats.graph.img.height=300 |
######################################################################### |
# Link Analysis |
# |
url.stat.tmp.dir=/linkchart |
385,6 → 420,7 |
#PopService |
# |
pop.container.use=true |
#pop.container.use=false |
pop.web.interface=http://mail.estgp.pt/exchange |
pop.server=mail.estgp.pt |
pop.use.default.server=true |
/impl/conf/directories/utilsIntranet.xml |
---|
7,7 → 7,7 |
<leaf absolute="false" label="Legislação" layout="true" proxy="estgp" id="legislacao" url="/intranet/escola/secretaria/legislacao.html"/> |
<leaf label="Folhas de Presenças" id="Folhas.Presencas" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/Folhas.Presencas"/> |
<leaf label="Projectos-AA,CA,GE,MKT" id="Projectos.Finais" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/Projectos.Finais"/> |
<leaf label="Actas" id="Actas" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Actas/Arquivo"/> |
<leaf label="Actas" id="Actas" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Actas"/> |
</leaf> |
<leaf absolute="false" label="Horários" layout="true" proxy="estgp" id="horarios" url="/intranet/escola/horarios.html"> |
<leaf absolute="false" label="Horários de CET" layout="true" proxy="estgp" id="horariosCet" url="/intranet/escola/horarios_cets.html"/> |
/impl/conf/berserk/sd.xml |
---|
1475,14 → 1475,167 |
</filterChains> |
</service> |
<!-- Duarte Santos --> |
<service> |
<name>LoadSurvey</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.LoadSurveyService</implementationClass> |
<description>Load survey view</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="AuthenticatedUsers"/> |
</filterChains> |
</service> |
<service> |
<name>LoadEditSurvey</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.LoadSurveyService</implementationClass> |
<description>Load survey view to edit</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="CanEditSurvey"/> |
</filterChains> |
</service> |
<service> |
<name>LoadCloneSurvey</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.LoadSurveyService</implementationClass> |
<description>Load survey view to clone</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="OwnersLoadSurvey"/> |
</filterChains> |
</service> |
<service> |
<name>LoadListStatsSurvey</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.LoadSurveyService</implementationClass> |
<description>Load survey view to list stats</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="CanConsultSurveyStats"/> |
</filterChains> |
</service> |
<service> |
<name>LoadSurveys</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.LoadSurveysService</implementationClass> |
<description>Load all survey views</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="Admins"/> |
</filterChains> |
</service> |
<service> |
<name>LoadOwnedSurveys</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.LoadSurveysService</implementationClass> |
<description>Load owned survey views</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadOwnedSurveys</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="AuthenticatedUsers"/> |
</filterChains> |
</service> |
<service> |
<name>LoadSurveyResponse</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.LoadSurveyResponseService</implementationClass> |
<description>Load survey response view</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="OwnersLoadResponse"/> |
</filterChains> |
</service> |
<service> |
<name>CreateEditSurvey</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.CreateEditSurveyService</implementationClass> |
<description>Create or edit survey</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>createEditSurveyService</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="Admins"/> |
</filterChains> |
</service> |
<service> |
<name>ConsistSurvey</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.ConsistSurveyService</implementationClass> |
<description>Apply survey responses to new users</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>consistSurveyService</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="OwnersLoadSurvey"/> |
</filterChains> |
</service> |
<service> |
<name>InsertSurveyAnswers</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.InsertSurveyAnswersService</implementationClass> |
<description>Insert survey answers</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="OwnersLoadResponse"/> |
</filterChains> |
</service> |
<service> |
<name>GenerateSurveyStats</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.GenerateSurveyStatsService</implementationClass> |
<description>Generate all survey stats</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>generateStatsService</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="OwnersLoadSurvey"/> |
</filterChains> |
</service> |
<service> |
<name>GenerateSurveyStatsCsv</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.GenerateSurveyStatsCsvService</implementationClass> |
<description>Generate all survey stats on a csv file</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="OwnersLoadSurvey"/> |
</filterChains> |
</service> |
<service> |
<name>LoadSurveyNodeGraphs</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.LoadSurveyNodeGraphsService</implementationClass> |
<description>Load survey graphics of a node</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="CanConsultSurveyStats"/> |
</filterChains> |
</service> |
<service> |
<name>LoadConsultStatsSurveys</name> |
<implementationClass>pt.estgp.estgweb.services.surveys.LoadConsultStatsSurveysService</implementationClass> |
<description>Load surveys views which user can consult stats</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="AuthenticatedUsers"/> |
</filterChains> |
</service> |
<!-- Duarte Santos --> |
DeleteSruSource |
</serviceDefinitions> |
/impl/conf/berserk/fd.xml |
---|
183,4 → 183,21 |
<description>Check if a resource can be loaded</description> |
<isTransactional>false</isTransactional> |
</filter> |
<!-- Duarte Santos --> |
<filter> |
<name>CanConsultSurveyStatsClass</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.CanConsultSurveyStatsClass</implementationClass> |
<description>Checks if the requester can consult stats of specified object</description> |
<isTransactional>false</isTransactional> |
</filter> |
<filter> |
<name>CanEditSurveyClass</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.CanEditSurveyClass</implementationClass> |
<description>Checks if the requester can edit specified object</description> |
<isTransactional>false</isTransactional> |
</filter> |
<!-- Duarte Santos --> |
</filterDefinitions> |
/impl/conf/berserk/fcd.xml |
---|
206,31 → 206,36 |
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass> |
</filterChain> |
<!-- Duarte Santos --> |
<filterChain> |
<name>ContextStaticTimerExample</name> |
<expression>ContextStaticTimer("2008-03-1 12:00:00","2008-03-2 19:56:00")</expression> |
<description>Timer Control Chain</description> |
<name>OwnersLoadSurvey</name> |
<expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.SurveyImpl")</expression> |
<description>Owner of an object Control Chain</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.ContextControlFilter</filterClass> |
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass> |
</filterChain> |
<filterChain> |
<name>ContextObjectTimer</name> |
<expression>ContextObjectTimer("object.serializable","object.referenceClass")</expression> |
<description>Timer Control Chain from Object Time</description> |
<name>CanConsultSurveyStats</name> |
<expression>CanConsultSurveyStatsClass("serializable","pt.estgp.estgweb.domain.SurveyImpl")</expression> |
<description>Owner of an object Control Chain</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.ContextControlFilter</filterClass> |
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass> |
</filterChain> |
<filterChain> |
<name>OwnersLoadResponse</name> |
<expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.SurveyResponseImpl")</expression> |
<description>Owner of an object Control Chain</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass> |
</filterChain> |
<filterChain> |
<name>CanEditSurvey</name> |
<expression>CanEditSurveyClass("serializable","pt.estgp.estgweb.domain.SurveyImpl")</expression> |
<description>Owner of an object Control Chain</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass> |
</filterChain> |
<!-- Duarte Santos --> |
/impl/src/java/jomm/dao/impl/AbstractDao.java |
---|
5,22 → 5,22 |
import jomm.dao.IDomainObjectDao; |
import jomm.dao.utils.HibernateUtils; |
import org.hibernate.*; |
import org.hibernate.proxy.HibernateProxy; |
import org.hibernate.criterion.CriteriaSpecification; |
import org.hibernate.criterion.Order; |
import org.hibernate.criterion.Projections; |
import static org.hibernate.criterion.Restrictions.eq; |
import org.hibernate.proxy.HibernateProxy; |
import pt.estgp.estgweb.domain.DomainObject; |
import pt.estgp.estgweb.domain.DomainSerializableObject; |
import pt.estgp.estgweb.domain.Teacher; |
import java.io.Serializable; |
import java.sql.SQLException; |
import java.util.Collection; |
import java.util.Date; |
import java.util.List; |
import java.util.Date; |
import static org.hibernate.criterion.Restrictions.eq; |
/** |
* This class will not be overwritten once it has been created. This is the |
* superclass of all DAOs. |
235,10 → 235,12 |
} |
} |
public List<CLAZZ> getAll() |
{ |
Session s = getCurrentSession(); |
Query q = s.createQuery("select * from i where i in class " + getReferenceClass().getName()); |
// Duarte Santos |
Query q = s.createQuery("from " + getReferenceClass().getName()); |
return q.list(); |
} |
/impl/src/java/pt/estgp/estgweb/utils/DatesUtils.java |
---|
1,15 → 1,13 |
package pt.estgp.estgweb.utils; |
import jomm.utils.MyCalendar; |
import pt.estgp.estgweb.Globals; |
import java.util.Date; |
import java.util.List; |
import java.util.ArrayList; |
import java.text.SimpleDateFormat; |
import java.text.MessageFormat; |
import java.text.SimpleDateFormat; |
import java.util.ArrayList; |
import java.util.List; |
import jomm.utils.MyCalendar; |
/** |
* @author Jorge Machado |
* @date 13/Jun/2008 |
/impl/src/java/pt/estgp/estgweb/utils/AbstractCollectionDecorator.java |
---|
New file |
0,0 → 1,145 |
/* |
* Copyright 2003-2004 The Apache Software Foundation |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package pt.estgp.estgweb.utils; |
import java.util.Collection; |
import java.util.Iterator; |
/** |
* Decorates another <code>Collection</code> to provide additional behaviour. |
* <p> |
* Each method call made on this <code>Collection</code> is forwarded to the |
* decorated <code>Collection</code>. This class is used as a framework on which |
* to build to extensions such as synchronized and unmodifiable behaviour. The |
* main advantage of decoration is that one decorator can wrap any implementation |
* of <code>Collection</code>, whereas sub-classing requires a new class to be |
* written for each implementation. |
* <p> |
* This implementation does not perform any special processing with |
* {@link #iterator()}. Instead it simply returns the value from the |
* wrapped collection. This may be undesirable, for example if you are trying |
* to write an unmodifiable implementation it might provide a loophole. |
* |
* @since Commons Collections 3.0 |
* @version $Revision: 1.4 $ $Date: 2004/06/02 21:53:03 $ |
* |
* @author Stephen Colebourne |
* @author Paul Jack |
*/ |
public abstract class AbstractCollectionDecorator implements Collection { |
/** The collection being decorated */ |
protected Collection collection; |
/** |
* Constructor only used in deserialization, do not use otherwise. |
* @since Commons Collections 3.1 |
*/ |
protected AbstractCollectionDecorator() { |
super(); |
} |
/** |
* Constructor that wraps (not copies). |
* |
* @param coll the collection to decorate, must not be null |
* @throws IllegalArgumentException if the collection is null |
*/ |
protected AbstractCollectionDecorator(Collection coll) { |
if (coll == null) { |
throw new IllegalArgumentException("Collection must not be null"); |
} |
this.collection = coll; |
} |
/** |
* Gets the collection being decorated. |
* |
* @return the decorated collection |
*/ |
protected Collection getCollection() { |
return collection; |
} |
//----------------------------------------------------------------------- |
public boolean add(Object object) { |
return collection.add(object); |
} |
public boolean addAll(Collection coll) { |
return collection.addAll(coll); |
} |
public void clear() { |
collection.clear(); |
} |
public boolean contains(Object object) { |
return collection.contains(object); |
} |
public boolean isEmpty() { |
return collection.isEmpty(); |
} |
public Iterator iterator() { |
return collection.iterator(); |
} |
public boolean remove(Object object) { |
return collection.remove(object); |
} |
public int size() { |
return collection.size(); |
} |
public Object[] toArray() { |
return collection.toArray(); |
} |
public Object[] toArray(Object[] object) { |
return collection.toArray(object); |
} |
public boolean containsAll(Collection coll) { |
return collection.containsAll(coll); |
} |
public boolean removeAll(Collection coll) { |
return collection.removeAll(coll); |
} |
public boolean retainAll(Collection coll) { |
return collection.retainAll(coll); |
} |
public boolean equals(Object object) { |
if (object == this) { |
return true; |
} |
return collection.equals(object); |
} |
public int hashCode() { |
return collection.hashCode(); |
} |
public String toString() { |
return collection.toString(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/utils/AbstractListDecorator.java |
---|
New file |
0,0 → 1,102 |
/* |
* Copyright 2003-2004 The Apache Software Foundation |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package pt.estgp.estgweb.utils; |
import java.util.Collection; |
import java.util.List; |
import java.util.ListIterator; |
/** |
* Decorates another <code>List</code> to provide additional behaviour. |
* <p> |
* Methods are forwarded directly to the decorated list. |
* |
* @since Commons Collections 3.0 |
* @version $Revision: 1.4 $ $Date: 2004/06/02 21:53:02 $ |
* |
* @author Stephen Colebourne |
*/ |
public abstract class AbstractListDecorator extends AbstractCollectionDecorator implements List { |
/** |
* Constructor only used in deserialization, do not use otherwise. |
* @since Commons Collections 3.1 |
*/ |
protected AbstractListDecorator() { |
super(); |
} |
/** |
* Constructor that wraps (not copies). |
* |
* @param list the list to decorate, must not be null |
* @throws IllegalArgumentException if list is null |
*/ |
protected AbstractListDecorator(List list) { |
super(list); |
} |
/** |
* Gets the list being decorated. |
* |
* @return the decorated list |
*/ |
protected List getList() { |
return (List) getCollection(); |
} |
//----------------------------------------------------------------------- |
public void add(int index, Object object) { |
getList().add(index, object); |
} |
public boolean addAll(int index, Collection coll) { |
return getList().addAll(index, coll); |
} |
public Object get(int index) { |
return getList().get(index); |
} |
public int indexOf(Object object) { |
return getList().indexOf(object); |
} |
public int lastIndexOf(Object object) { |
return getList().lastIndexOf(object); |
} |
public ListIterator listIterator() { |
return getList().listIterator(); |
} |
public ListIterator listIterator(int index) { |
return getList().listIterator(index); |
} |
public Object remove(int index) { |
return getList().remove(index); |
} |
public Object set(int index, Object object) { |
return getList().set(index, object); |
} |
public List subList(int fromIndex, int toIndex) { |
return getList().subList(fromIndex, toIndex); |
} |
} |
/impl/src/java/pt/estgp/estgweb/utils/AbstractSerializableListDecorator.java |
---|
New file |
0,0 → 1,69 |
/* |
* Copyright 2004 The Apache Software Foundation |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package pt.estgp.estgweb.utils; |
import java.io.IOException; |
import java.io.ObjectInputStream; |
import java.io.ObjectOutputStream; |
import java.io.Serializable; |
import java.util.Collection; |
import java.util.List; |
/** |
* Serializable subclass of AbstractListDecorator. |
* |
* @author Stephen Colebourne |
* @since Commons Collections 3.1 |
*/ |
public abstract class AbstractSerializableListDecorator |
extends AbstractListDecorator |
implements Serializable { |
/** Serialization version */ |
private static final long serialVersionUID = 2684959196747496299L; |
/** |
* Constructor. |
*/ |
protected AbstractSerializableListDecorator(List list) { |
super(list); |
} |
//----------------------------------------------------------------------- |
/** |
* Write the list out using a custom routine. |
* |
* @param out the output stream |
* @throws java.io.IOException |
*/ |
private void writeObject(ObjectOutputStream out) throws IOException { |
out.defaultWriteObject(); |
out.writeObject(collection); |
} |
/** |
* Read the list in using a custom routine. |
* |
* @param in the input stream |
* @throws java.io.IOException |
* @throws ClassNotFoundException |
*/ |
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { |
in.defaultReadObject(); |
collection = (Collection) in.readObject(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/utils/LazyList.java |
---|
New file |
0,0 → 1,136 |
/* |
* Copyright 2003-2004 The Apache Software Foundation |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package pt.estgp.estgweb.utils; |
import java.util.List; |
import org.apache.commons.collections.Factory; |
/** |
* Decorates another <code>List</code> to create objects in the list on demand. |
* <p> |
* When the {@link #get(int)} method is called with an index greater than |
* the size of the list, the list will automatically grow in size and return |
* a new object from the specified factory. The gaps will be filled by null. |
* If a get method call encounters a null, it will be replaced with a new |
* object from the factory. Thus this list is unsuitable for storing null |
* objects. |
* <p> |
* For instance: |
* |
* <pre> |
* Factory factory = new Factory() { |
* public Object create() { |
* return new Date(); |
* } |
* } |
* List lazy = LazyList.decorate(new ArrayList(), factory); |
* Object obj = lazy.get(3); |
* </pre> |
* |
* After the above code is executed, <code>obj</code> will contain |
* a new <code>Date</code> instance. Furthermore, that <code>Date</code> |
* instance is the fourth element in the list. The first, second, |
* and third element are all set to <code>null</code>. |
* <p> |
* This class is Serializable from Commons Collections 3.1. |
* |
* @since Commons Collections 3.0 |
* @version $Revision: 1.6 $ $Date: 2004/06/03 22:02:13 $ |
* |
* @author Stephen Colebourne |
* @author Arron Bates |
* @author Paul Jack |
*/ |
public class LazyList extends AbstractSerializableListDecorator { |
/** Serialization version */ |
private static final long serialVersionUID = -1708388017160694542L; |
/** The factory to use to lazily instantiate the objects */ |
protected final Factory factory; |
/** |
* Factory method to create a lazily instantiating list. |
* |
* @param list the list to decorate, must not be null |
* @param factory the factory to use for creation, must not be null |
* @throws IllegalArgumentException if list or factory is null |
*/ |
public static List decorate(List list, Factory factory) { |
return new LazyList(list, factory); |
} |
//----------------------------------------------------------------------- |
/** |
* Constructor that wraps (not copies). |
* |
* @param list the list to decorate, must not be null |
* @param factory the factory to use for creation, must not be null |
* @throws IllegalArgumentException if list or factory is null |
*/ |
protected LazyList(List list, Factory factory) { |
super(list); |
if (factory == null) { |
throw new IllegalArgumentException("Factory must not be null"); |
} |
this.factory = factory; |
} |
//----------------------------------------------------------------------- |
/** |
* Decorate the get method to perform the lazy behaviour. |
* <p> |
* If the requested index is greater than the current size, the list will |
* grow to the new size and a new object will be returned from the factory. |
* Indexes in-between the old size and the requested size are left with a |
* placeholder that is replaced with a factory object when requested. |
* |
* @param index the index to retrieve |
*/ |
public Object get(int index) { |
int size = getList().size(); |
if (index < size) { |
// within bounds, get the object |
Object object = getList().get(index); |
if (object == null) { |
// item is a place holder, create new one, set and return |
object = factory.create(); |
getList().set(index, object); |
return object; |
} else { |
// good and ready to go |
return object; |
} |
} else { |
// we have to grow the list |
for (int i = size; i < index; i++) { |
getList().add(null); |
} |
// create our last object, set and return |
Object object = factory.create(); |
getList().add(object); |
return object; |
} |
} |
public List subList(int fromIndex, int toIndex) { |
List sub = getList().subList(fromIndex, toIndex); |
return new LazyList(sub, factory); |
} |
} |
/impl/src/java/pt/estgp/estgweb/Globals.java |
---|
233,8 → 233,18 |
public static final boolean MODULE_STATUS_PROFILE = ConfigProperties.getBooleanProperty("module.profile"); |
public static final boolean MODULE_STATUS_COURSEUNITS = ConfigProperties.getBooleanProperty("module.courseunits"); |
public static final boolean MODULE_STATUS_SMS = ConfigProperties.getBooleanProperty("module.sms"); |
// Duarte Santos |
public static final boolean MODULE_STATUS_SURVEYS = ConfigProperties.getBooleanProperty("module.surveys"); |
// Duarte Santos |
public static final String SURVEY_TYPE_GENERAL = ConfigProperties.getProperty("surveys.type.0"); |
public static final String SURVEY_TYPE_PEDAGOGIC = ConfigProperties.getProperty("surveys.type.1"); |
public static final String SURVEY_PEDAGOGIC_STUDENT_COURSEUNIT = ConfigProperties.getProperty("surveys.target.pair.0"); |
public static final String SURVEY_PEDAGOGIC_TEACHER_COURSEUNIT = ConfigProperties.getProperty("surveys.target.pair.1"); |
public static final String SURVEY_QUESTION_TYPE_RADIO = ConfigProperties.getProperty("surveys.question.type.0"); |
public static final String SURVEY_QUESTION_TYPE_CHECK = ConfigProperties.getProperty("surveys.question.type.1"); |
public static final String SURVEY_QUESTION_TYPE_MATRIX = ConfigProperties.getProperty("surveys.question.type.2"); |
public static final String SURVEY_QUESTION_TYPE_TEXT = ConfigProperties.getProperty("surveys.question.type.3"); |
public static final String TEMPLATE_COURSE_XSL_PATH = "/template/xsd/fragmentoCurso.xsl"; |
public static final String TEMPLATE_XSD_PATH = "/template/xsd"; |
public static final String TEMPLATE_EMAIL_PATH = "/template/email"; |
/impl/src/java/pt/estgp/estgweb/services/surveys/ConsistSurveyService.java |
---|
New file |
0,0 → 1,215 |
package pt.estgp.estgweb.services.surveys; |
import jomm.dao.impl.AbstractDao; |
import jomm.utils.MessageResources; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.utils.RoleManager; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import javax.servlet.http.HttpServletRequest; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 09-08-2011 |
* @time: 12:58 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class ConsistSurveyService implements IService, Runnable |
{ |
private static final Logger logger = Logger.getLogger(ConsistSurveyService.class); |
private static final int MAX_COMMIT = 100; |
private long surveyId; |
private HttpServletRequest request; |
public void consistSurveyService(long surveyId, HttpServletRequest request, UserSession userSession) |
{ |
if(surveyId <= 0) return; |
SurveyImpl survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
if(survey != null) |
{ |
ConsistSurveyService s = new ConsistSurveyService(); |
s.request = request; |
s.surveyId = surveyId; |
// start a thread |
Thread thread = new Thread(s); |
thread.start(); |
logger.info("Starting thread with id: "+thread.getId()); |
} |
} |
private synchronized SurveyImpl consistPedagogic(SurveyImpl survey) |
{ |
String semester = survey.getSemester(); |
String semesterMsg = MessageResources.getMessage(request,"courseunit."+semester); |
String importYear = survey.getYear(); |
List<String> areas = DaoFactory.getCourseDaoImpl().loadAreas(); |
SurveyStructuralNode nodeYear = survey.getStructuralNode(); |
SurveyStructuralNode nodeSemester = ((SurveyStructuralNodeImpl)nodeYear).getChildNode(semesterMsg); |
List<SurveyResponse> responses = new ArrayList<SurveyResponse>(); |
for(String area : areas) |
{ |
String areaMsg = MessageResources.getMessage(request,"area."+area); |
SurveyStructuralNode nodeArea = ((SurveyStructuralNodeImpl)nodeSemester).getChildNode(areaMsg); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAllImportYearOrderByName(importYear,area); |
for(Course course : courses) |
{ |
SurveyStructuralNode nodeCourse = ((SurveyStructuralNodeImpl)nodeArea).getChildNode(course.getName()); |
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadCourseUnits(course.getId(),semester,importYear,false,false); |
for(CourseUnit courseUnit : courseUnits) |
{ |
SurveyStructuralNode nodeCourseUnit = ((SurveyStructuralNodeImpl)nodeCourse).getChildNode(courseUnit.getName()); |
List<User> users = new ArrayList<User>(); |
if(survey.getTargetRoles().equals(Globals.SURVEY_PEDAGOGIC_STUDENT_COURSEUNIT)) |
{ |
users = new ArrayList<User>(courseUnit.getStudents()); |
} |
else if(survey.getTargetRoles().equals(Globals.SURVEY_PEDAGOGIC_TEACHER_COURSEUNIT)) |
{ |
users = new ArrayList<User>(courseUnit.getTeachers()); |
} |
for(User user: users) |
{ |
if(!((UserImpl)user).haveResponse(survey,nodeCourseUnit)) |
{ |
SurveyResponse sr = DomainObjectFactory.createSurveyResponseImpl(); |
sr.setAnswered(false); |
sr.setOwner(user); |
sr.setStructuralNode(nodeCourseUnit); |
responses.add(sr); |
} |
} |
} |
} |
} |
if(responses.size() == 0) |
{ |
survey.setStatus(SurveyStatusEnum.STATUS_STOPPED.getStatus()); |
survey.setStatusPercentage(100); |
return survey; |
} |
long i = 0; |
int status; |
for(SurveyResponse r : responses) |
{ |
long userId = r.getOwner().getId(); |
long nodeId = r.getStructuralNode().getId(); |
if(i++ % MAX_COMMIT == 0) |
{ |
status = (int)(((double)i/(double)responses.size())*100); |
survey.setStatusPercentage(status); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
} |
r.setOwner(DaoFactory.getUserDaoImpl().load(userId)); |
r.setStructuralNode(DaoFactory.getSurveyStructuralNodeDaoImpl().load(nodeId)); |
DaoFactory.getSurveyResponseDaoImpl().save(r); |
} |
survey.setStatusPercentage(100); |
survey.setStatus(SurveyStatusEnum.STATUS_STOPPED.getStatus()); |
return survey; |
} |
private synchronized SurveyImpl consistGeneral(SurveyImpl survey) |
{ |
List<String> roles = RoleManager.getRolesFromSerial(survey.getTargetRoles()); |
List<User> users = new ArrayList<User>(); |
if(roles.size() == 1 && roles.get(0).equals("all")) |
users.addAll(DaoFactory.getUserDaoImpl().getAll()); |
else |
users.addAll(DaoFactory.getUserDaoImpl().loadRolesUsers(roles)); |
List<SurveyStructuralNode> childNodes = ((SurveyStructuralNodeImpl)survey.getStructuralNode()).getChildsStructuralNodes(); |
List<SurveyResponse> responses = new ArrayList<SurveyResponse>(); |
for(SurveyStructuralNode node : childNodes) |
{ |
for(User user : users) |
{ |
if(!((UserImpl)user).haveResponse(survey,node)) |
{ |
SurveyResponse sr = DomainObjectFactory.createSurveyResponseImpl(); |
sr.setAnswered(false); |
sr.setOwner(user); |
sr.setStructuralNode(node); |
responses.add(sr); |
} |
} |
} |
if(responses.size() == 0) |
{ |
survey.setStatus(SurveyStatusEnum.STATUS_STOPPED.getStatus()); |
survey.setStatusPercentage(100); |
return survey; |
} |
long i = 0; |
int status; |
for(SurveyResponse r : responses) |
{ |
long userId = r.getOwner().getId(); |
long nodeId = r.getStructuralNode().getId(); |
if(i++ % MAX_COMMIT == 0) |
{ |
status = (int)(((double)i/(double)responses.size())*100); |
survey.setStatusPercentage(status); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
} |
r.setOwner(DaoFactory.getUserDaoImpl().load(userId)); |
r.setStructuralNode(DaoFactory.getSurveyStructuralNodeDaoImpl().load(nodeId)); |
DaoFactory.getSurveyResponseDaoImpl().save(r); |
} |
survey.setStatusPercentage(100); |
survey.setStatus(SurveyStatusEnum.STATUS_STOPPED.getStatus()); |
return survey; |
} |
public void run() |
{ |
logger.info("Running thread..."); |
AbstractDao.getCurrentSession().beginTransaction(); |
SurveyImpl survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
survey.setStatusPercentage(0); |
survey.setStatus(SurveyStatusEnum.STATUS_CONSIST_SURVEY.getStatus()); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
if(((SurveyImpl)survey).isTypeOf(Globals.SURVEY_TYPE_GENERAL)) |
{ |
logger.info("Consisting general survey..."); |
survey = consistGeneral(survey); |
} |
else if(((SurveyImpl)survey).isTypeOf(Globals.SURVEY_TYPE_PEDAGOGIC)) |
{ |
logger.info("Consisting pedagogic survey..."); |
survey = consistPedagogic(survey); |
} |
AbstractDao.getCurrentSession().getTransaction().commit(); |
logger.info("End of thread..."); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/surveys/LoadSurveysService.java |
---|
New file |
0,0 → 1,61 |
package pt.estgp.estgweb.services.surveys; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.Survey; |
import pt.estgp.estgweb.domain.SurveyImpl; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.SurveyStructuralNodeView; |
import pt.estgp.estgweb.domain.views.SurveyView; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 03-08-2011 |
* @time: 17:13 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class LoadSurveysService implements IService |
{ |
private static final Logger logger = Logger.getLogger(LoadSurveysService.class); |
public List<SurveyView> run(UserSession userSession) |
{ |
List<Survey> surveys = DaoFactory.getSurveyDaoImpl().loadAllSurveys(); |
List<SurveyView> surveyViews = new ArrayList<SurveyView>(); |
for(Survey s : surveys) |
{ |
long nrOfResponsesAnswered = DaoFactory.getSurveyResponseDaoImpl().countResponses(s.getId(),true); |
long nrTotalOfResponses = DaoFactory.getSurveyResponseDaoImpl().countResponses(s.getId(),null); |
SurveyView surveyView = new SurveyView(s); |
surveyView.setNumberOfResponses(nrOfResponsesAnswered); |
surveyView.setNumberTotalOfResponses(nrTotalOfResponses); |
surveyViews.add(surveyView); |
} |
return surveyViews; |
} |
public List<SurveyView> loadOwnedSurveys(UserSession userSession) |
{ |
List<Survey> surveys = DaoFactory.getSurveyDaoImpl().loadOwnedSurveys(userSession.getUser().getId()); |
List<SurveyView> surveyViews = new ArrayList<SurveyView>(); |
for(Survey s : surveys) |
{ |
long nrOfResponsesAnswered = DaoFactory.getSurveyResponseDaoImpl().countResponses(s.getId(),true); |
long nrTotalOfResponses = DaoFactory.getSurveyResponseDaoImpl().countResponses(s.getId(),null); |
SurveyView surveyView = new SurveyView(s); |
surveyView.setNumberOfResponses(nrOfResponsesAnswered); |
surveyView.setNumberTotalOfResponses(nrTotalOfResponses); |
surveyViews.add(surveyView); |
} |
return surveyViews; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/surveys/GenerateSurveyStatsCsvService.java |
---|
New file |
0,0 → 1,159 |
package pt.estgp.estgweb.services.surveys; |
import jomm.utils.FilesUtils; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.Survey; |
import pt.estgp.estgweb.domain.SurveyResponse; |
import pt.estgp.estgweb.domain.SurveyStructuralNode; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.io.*; |
import java.nio.charset.Charset; |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 15-08-2011 |
* @time: 13:22 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class GenerateSurveyStatsCsvService implements IService |
{ |
private static final Logger logger = Logger.getLogger(GenerateSurveyStatsCsvService.class); |
private static RepositoryService repositoryService = new RepositoryService(); |
public String run(long surveyId, UserSession userSession) |
{ |
if(surveyId <= 0) return null; |
Survey survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
if(survey != null) |
{ |
try |
{ |
String filename = Globals.TMP_DIR + "/survey_"+survey.getId()+".csv"; |
File file = new File(filename); |
FileOutputStream fout = new FileOutputStream(file); |
fout.write(239); |
fout.write(187); |
fout.write(191); |
OutputStreamWriter writer = new OutputStreamWriter(fout, "UTF-8"); |
String[] csvHeader = {"IDResposta","IDQuestionário","Título do Questionário","IDPergunta","Pergunta","IDItem","Item","IDCandidata","Candidata","Resposta de Texto","IDUtilizador","Utilizador","Nós"}; |
writeCsvHeader(writer,csvHeader); |
List list = DaoFactory.getSurveyQuestionAnswerDaoImpl().loadForCsv(survey.getId()); |
Iterator iter = list.iterator(); |
while(iter.hasNext()) |
{ |
Object[] objs = (Object[]) iter.next(); |
String[] values = new String[objs.length+1]; |
int i; |
for(i = 0; i < objs.length; i++) |
{ |
if(objs[i] != null) |
values[i] = objs[i].toString(); |
else |
values[i] = ""; |
} |
long responseId = Long.parseLong(values[0]); |
if(responseId > 0) |
{ |
SurveyResponse r = DaoFactory.getSurveyResponseDaoImpl().load(responseId); |
if(r != null) |
{ |
List<String> nodeNames = getAllBackwardNodes(r.getStructuralNode()); |
String normalizeNodesNames = normalizeNodesNames(nodeNames); |
values[i] = normalizeNodesNames; |
} |
} |
writeCsvData(writer,values); |
} |
writer.flush(); |
writer.close(); |
String extension = FilesUtils.getExtension(filename); |
FileInputStream inputStream = new FileInputStream(file); |
String identifier = survey.getIdentifier(); |
if(identifier == null) |
identifier = repositoryService.storeRepositoryFile(inputStream,"text/comma-separated-values",extension,(int)file.length(),file.getName(),"CSV file of survey: "+survey.getId(), ResourceAccessControlEnum.surveyStatsDomain,userSession); |
else |
repositoryService.updateRepositoryFile(identifier,inputStream,"text/comma-separated-values",extension,(int)file.length(),file.getName(),"CSV file of survey: "+survey.getId(),ResourceAccessControlEnum.surveyStatsDomain); |
survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
survey.setIdentifier(identifier); |
boolean deleted = file.delete(); |
if(!deleted) |
logger.info("Error deleting file: "+filename); |
} |
catch (IOException e) |
{ |
logger.info(e); |
} |
} |
return null; |
} |
private void writeCsvHeader(OutputStreamWriter writer, String[] values) throws IOException |
{ |
writeCsvData(writer,values); |
} |
private void writeCsvData(OutputStreamWriter writer, String[] values) throws IOException |
{ |
for(int i = 0; i < values.length; i++) |
{ |
if(i > 0) |
writer.write(";"); |
if(values[i] != null) |
writer.write(values[i]); |
} |
writer.write("\n"); |
} |
private void getAllBackwardNodesRecursive(List<String> msgs, SurveyStructuralNode node) |
{ |
if(node != null) |
{ |
msgs.add(node.getMsg()); |
getAllBackwardNodesRecursive(msgs,node.getParentNode()); |
} |
} |
private List<String> getAllBackwardNodes(SurveyStructuralNode leaf) |
{ |
if(leaf != null) |
{ |
List<String> msgs = new ArrayList<String>(); |
getAllBackwardNodesRecursive(msgs, leaf); |
return msgs; |
} |
return null; |
} |
private String normalizeNodesNames(List<String> names) |
{ |
String normalizedName = ""; |
for(int i=names.size()-1; i>=0; i--) |
{ |
if(i < names.size()-1 && i >= 0) |
normalizedName = normalizedName + "/"; |
normalizedName = normalizedName + names.get(i); |
} |
return normalizedName; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/surveys/InsertSurveyAnswersService.java |
---|
New file |
0,0 → 1,63 |
package pt.estgp.estgweb.services.surveys; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.*; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.Date; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 05-08-2011 |
* @time: 17:06 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class InsertSurveyAnswersService implements IService |
{ |
private static final Logger logger = Logger.getLogger(InsertSurveyAnswersService.class); |
private LoadSurveyService loadSurveyService = new LoadSurveyService(); |
public SurveyView run(long responseId, SurveyView surveyView, UserSession userSession) |
{ |
SurveyResponse response = DaoFactory.getSurveyResponseDaoImpl().load(responseId); |
if(response.isAnswered()) return null; |
for(SurveyQuestionView qView : surveyView.getQuestions()) |
{ |
for(SurveyQuestionItemView iView : qView.getItems()) |
{ |
for(SurveyQuestionCandidateAnswerView cView : iView.getCandidates()) |
{ |
for(SurveyQuestionAnswerView aView : cView.getAnswers()) |
{ |
if(aView.getId() <= 0) |
{ |
SurveyQuestionAnswerImpl a = DomainObjectFactory.createSurveyQuestionAnswerImpl(); |
aView.persistViewInObject(a); |
SurveyQuestionCandidateAnswerImpl c = (SurveyQuestionCandidateAnswerImpl) DaoFactory.getSurveyQuestionCandidateAnswerDaoImpl().load(cView.getId()); |
a.setCandidateAnswer(c); |
a.setResponse(response); |
DaoFactory.getSurveyQuestionAnswerDaoImpl().save(a); |
} |
} |
} |
} |
} |
response.setDate(new Date()); |
response.setAnswered(true); |
logger.info("Answer inserted to survey with id: "+surveyView.getId()); |
return loadSurveyService.run(surveyView.getId(), userSession); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/surveys/SurveyStatusEnum.java |
---|
New file |
0,0 → 1,51 |
package pt.estgp.estgweb.services.surveys; |
/** |
* @author: Duarte Santos |
* @date: 13-08-2011 |
* @time: 12:51 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public enum SurveyStatusEnum |
{ |
STATUS_STOPPED("","STATUS_STOPPED"), |
STATUS_CREATE_SURVEY("survey.list.form.status.create.survey","STATUS_CREATE_SURVEY"), |
STATUS_CONSIST_SURVEY("survey.list.form.status.consist.survey","STATUS_CONSIST_SURVEY"), |
STATUS_GENERATE_STATS("survey.list.form.status.generate.stats","STATUS_GENERATE_STATS"); |
private String messageKey; |
private String status; |
private SurveyStatusEnum(String messageKey, String status) |
{ |
this.messageKey = messageKey; |
this.status = status; |
} |
public String getMessageKey() { |
return messageKey; |
} |
public void setMessageKey(String messageKey) { |
this.messageKey = messageKey; |
} |
public String getStatus() { |
return status; |
} |
public void setStatus(String status) { |
this.status = status; |
} |
public static SurveyStatusEnum parse(String status) |
{ |
for(SurveyStatusEnum statusEnum: values()) |
{ |
if(statusEnum.getStatus().equals(status)) |
return statusEnum; |
} |
return null; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/surveys/CreateEditSurveyService.java |
---|
New file |
0,0 → 1,366 |
package pt.estgp.estgweb.services.surveys; |
import jomm.dao.impl.AbstractDao; |
import jomm.utils.MessageResources; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.SurveyQuestionCandidateAnswerView; |
import pt.estgp.estgweb.domain.views.SurveyQuestionItemView; |
import pt.estgp.estgweb.domain.views.SurveyQuestionView; |
import pt.estgp.estgweb.domain.views.SurveyView; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.utils.RoleManager; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import javax.servlet.http.HttpServletRequest; |
import java.util.ArrayList; |
import java.util.Date; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 28-05-2011 |
* @time: 13:37 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class CreateEditSurveyService implements IService, Runnable |
{ |
private static final Logger logger = Logger.getLogger(CreateEditSurveyService.class); |
private static final int MAX_COMMIT = 100; |
private long surveyId; |
private HttpServletRequest request; |
public SurveyView createEditSurveyService(SurveyView surveyView, HttpServletRequest request, UserSession userSession) |
{ |
// Survey |
SurveyImpl s; |
if(surveyView.getId() <= 0) |
{ |
s = DomainObjectFactory.createSurveyImpl(); |
surveyView.persistViewInObject(s); |
s.setOwner(userSession.getUser()); |
s.setSemester(DatesUtils.getSemestre()); |
s.setYear(DatesUtils.getImportYear()); |
if(s.getStartDate() == null) |
s.setStartDate(new Date()); |
s.setSaveDate(new Date()); |
s.setStatusPercentage(0); |
s.setStatus(SurveyStatusEnum.STATUS_STOPPED.getStatus()); |
DaoFactory.getSurveyDaoImpl().save(s); |
logger.info("Creating survey with id: "+s.getId()); |
} |
else |
{ |
// delete questions, items, candidates |
processDeletedObjects(surveyView); |
s = DaoFactory.getSurveyDaoImpl().load(surveyView.getId()); |
surveyView.persistViewInObject(s); |
logger.info("Editing survey with id: "+s.getId()); |
} |
// SurveyQuestions |
for(SurveyQuestionView questionView: surveyView.getQuestions()) |
{ |
SurveyQuestion q; |
if(questionView.getId() <= 0) |
{ |
q = DomainObjectFactory.createSurveyQuestionImpl(); |
questionView.persistViewInObject(q); |
q.setSurvey(s); |
DaoFactory.getSurveyQuestionDaoImpl().save(q); |
} |
else |
{ |
q = DaoFactory.getSurveyQuestionDaoImpl().load(questionView.getId()); |
questionView.persistViewInObject(q); |
} |
// SurveyQuestionItems |
for(SurveyQuestionItemView itemView: questionView.getItems()) |
{ |
SurveyQuestionItem qi; |
if(itemView.getId() <= 0) |
{ |
qi = DomainObjectFactory.createSurveyQuestionItemImpl(); |
itemView.persistViewInObject(qi); |
qi.setQuestion(q); |
DaoFactory.getSurveyQuestionItemDaoImpl().save(qi); |
} |
else |
{ |
qi = DaoFactory.getSurveyQuestionItemDaoImpl().load(itemView.getId()); |
itemView.persistViewInObject(qi); |
} |
// SurveyQuestionCandidateAnswers |
for(SurveyQuestionCandidateAnswerView candidateAnswerView: itemView.getCandidates()) |
{ |
SurveyQuestionCandidateAnswer ca; |
if(candidateAnswerView.getId() <= 0) |
{ |
ca = DomainObjectFactory.createSurveyQuestionCandidateAnswerImpl(); |
candidateAnswerView.persistViewInObject(ca); |
ca.setQuestionItem(qi); |
DaoFactory.getSurveyQuestionCandidateAnswerDaoImpl().save(ca); |
} |
else |
{ |
ca = DaoFactory.getSurveyQuestionCandidateAnswerDaoImpl().load(candidateAnswerView.getId()); |
candidateAnswerView.persistViewInObject(ca); |
} |
} |
} |
} |
SurveyView view = new SurveyView(s); |
AbstractDao.getCurrentSession().flush(); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
// start a thread |
if(surveyView.getId() <= 0) |
{ |
CreateEditSurveyService service = new CreateEditSurveyService(); |
service.request = request; |
service.surveyId = s.getId(); |
Thread thread = new Thread(service); |
thread.start(); |
logger.info("Starting thread with id: "+thread.getId()); |
} |
return view; |
} |
private void processDeletedObjects(SurveyView surveyView) |
{ |
String deletedCandidatesIdsStr = surveyView.getDeletedCandidates(); |
if(deletedCandidatesIdsStr != null) |
{ |
String[] deletedCandidatesIds = deletedCandidatesIdsStr.split(","); |
for(String deletedCandidateId : deletedCandidatesIds) |
{ |
if(deletedCandidateId.length() <= 0) continue; |
long id = Long.parseLong(deletedCandidateId); |
SurveyQuestionCandidateAnswerImpl ca = (SurveyQuestionCandidateAnswerImpl) DaoFactory.getSurveyQuestionCandidateAnswerDaoImpl().load(id); |
DaoFactory.getSurveyQuestionCandidateAnswerDaoImpl().delete(ca); |
} |
} |
String deletedItemsIdsStr = surveyView.getDeletedItems(); |
if(deletedItemsIdsStr != null) |
{ |
String[] deletedItemsIds = deletedItemsIdsStr.split(","); |
for(String deletedItemId : deletedItemsIds) |
{ |
if(deletedItemId.length() <= 0) continue; |
long id = Long.parseLong(deletedItemId); |
SurveyQuestionItemImpl qi = (SurveyQuestionItemImpl) DaoFactory.getSurveyQuestionItemDaoImpl().load(id); |
DaoFactory.getSurveyQuestionItemDaoImpl().delete(qi); |
} |
} |
String deletedQuestionsIdsStr = surveyView.getDeletedQuestions(); |
if(deletedQuestionsIdsStr != null) |
{ |
String[] deletedQuestionsIds = deletedQuestionsIdsStr.split(","); |
for(String deletedQuestionId : deletedQuestionsIds) |
{ |
if(deletedQuestionId.length() <= 0) continue; |
long id = Long.parseLong(deletedQuestionId); |
SurveyQuestionImpl q = (SurveyQuestionImpl) DaoFactory.getSurveyQuestionDaoImpl().load(id); |
DaoFactory.getSurveyQuestionDaoImpl().delete(q); |
} |
} |
} |
private synchronized SurveyImpl createPedagogicResponses(SurveyImpl survey) |
{ |
String semester = survey.getSemester(); |
String semesterMsg = MessageResources.getMessage(request,"courseunit."+semester); |
String importYear = survey.getYear(); |
List<String> areas = DaoFactory.getCourseDaoImpl().loadAreas(); |
SurveyStructuralNodeImpl nodeYear = createSurveyStructuralNodeTree(survey,importYear,null); |
survey.setStructuralNode(nodeYear); |
SurveyStructuralNodeImpl nodeSemester = createSurveyStructuralNodeTree(survey,semesterMsg,nodeYear); |
List<SurveyResponse> responses = new ArrayList<SurveyResponse>(); |
for(String area : areas) |
{ |
String areaMsg = MessageResources.getMessage(request,"area."+area); |
SurveyStructuralNodeImpl nodeArea = createSurveyStructuralNodeTree(survey,areaMsg,nodeSemester); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAllImportYearOrderByName(importYear,area); |
for(Course course : courses) |
{ |
SurveyStructuralNodeImpl nodeCourse = createSurveyStructuralNodeTree(survey,course.getName(),nodeArea); |
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadCourseUnits(course.getId(),semester,importYear,false,false); |
for(CourseUnit courseUnit: courseUnits) |
{ |
SurveyStructuralNodeImpl nodeCourseUnit = createSurveyStructuralNodeTree(survey,courseUnit.getName(),nodeCourse); |
List<User> users = new ArrayList<User>(); |
if(survey.getTargetRoles().equals(Globals.SURVEY_PEDAGOGIC_STUDENT_COURSEUNIT)) |
{ |
users = new ArrayList<User>(courseUnit.getStudents()); |
} |
else if(survey.getTargetRoles().equals(Globals.SURVEY_PEDAGOGIC_TEACHER_COURSEUNIT)) |
{ |
users = new ArrayList<User>(courseUnit.getTeachers()); |
} |
for(User user : users) |
{ |
SurveyResponse sr = DomainObjectFactory.createSurveyResponseImpl(); |
sr.setAnswered(false); |
sr.setOwner(user); |
sr.setStructuralNode(nodeCourseUnit); |
responses.add(sr); |
} |
} |
} |
} |
if(responses.size() == 0) |
{ |
survey.setStatus(SurveyStatusEnum.STATUS_STOPPED.getStatus()); |
survey.setStatusPercentage(100); |
return survey; |
} |
long i = 0; |
int status; |
for(SurveyResponse r : responses) |
{ |
long userId = r.getOwner().getId(); |
long nodeId = r.getStructuralNode().getId(); |
if (i++ % MAX_COMMIT == 0) |
{ |
status = (int)(((double)i/(double)responses.size())*100); |
survey.setStatusPercentage(status); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
} |
r.setOwner(DaoFactory.getUserDaoImpl().load(userId)); |
r.setStructuralNode(DaoFactory.getSurveyStructuralNodeDaoImpl().load(nodeId)); |
DaoFactory.getSurveyResponseDaoImpl().save(r); |
} |
survey.setStatusPercentage(100); |
survey.setStatus(SurveyStatusEnum.STATUS_STOPPED.getStatus()); |
return survey; |
} |
private synchronized SurveyImpl createGeneralResponses(SurveyImpl survey) |
{ |
String importYear = survey.getYear(); |
String semester = survey.getSemester(); |
String semesterMsg = MessageResources.getMessage(request,"courseunit."+semester); |
List<String> roles = RoleManager.getRolesFromSerial(survey.getTargetRoles()); |
List<User> users = new ArrayList<User>(); |
SurveyStructuralNodeImpl nodeYear = createSurveyStructuralNodeTree(survey,importYear,null); |
survey.setStructuralNode(nodeYear); |
SurveyStructuralNodeImpl nodeSemester = createSurveyStructuralNodeTree(survey,semesterMsg,nodeYear); |
SurveyStructuralNodeImpl nodeGeneral = createSurveyStructuralNodeTree(survey,survey.getTitle(),nodeSemester); |
if(roles.size() == 1 && roles.get(0).equals("all")) |
users.addAll(DaoFactory.getUserDaoImpl().getAll()); |
else |
users.addAll(DaoFactory.getUserDaoImpl().loadRolesUsers(roles)); |
List<SurveyResponse> responses = new ArrayList<SurveyResponse>(); |
for(User user : users) |
{ |
SurveyResponse sr = DomainObjectFactory.createSurveyResponseImpl(); |
sr.setAnswered(false); |
sr.setOwner(user); |
sr.setStructuralNode(nodeGeneral); |
responses.add(sr); |
} |
if(responses.size() == 0) |
{ |
survey.setStatus(SurveyStatusEnum.STATUS_STOPPED.getStatus()); |
survey.setStatusPercentage(100); |
return survey; |
} |
long i = 0; |
int status; |
for(SurveyResponse r : responses) |
{ |
long userId = r.getOwner().getId(); |
long nodeId = r.getStructuralNode().getId(); |
if (i++ % MAX_COMMIT == 0) |
{ |
status = (int)(((double)i/(double)responses.size())*100); |
survey.setStatusPercentage(status); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
} |
r.setOwner(DaoFactory.getUserDaoImpl().load(userId)); |
r.setStructuralNode(DaoFactory.getSurveyStructuralNodeDaoImpl().load(nodeId)); |
DaoFactory.getSurveyResponseDaoImpl().save(r); |
} |
survey.setStatusPercentage(100); |
survey.setStatus(SurveyStatusEnum.STATUS_STOPPED.getStatus()); |
return survey; |
} |
private synchronized SurveyStructuralNodeImpl createSurveyStructuralNodeTree(Survey survey, String msg, SurveyStructuralNodeImpl parent) |
{ |
SurveyStructuralNodeImpl child = DomainObjectFactory.createSurveyStructuralNodeImpl(); |
if(parent != null) |
{ |
parent = (SurveyStructuralNodeImpl) DaoFactory.getSurveyStructuralNodeDaoImpl().load(parent.getId()); |
parent.getNodes().add(child); |
} |
child.setMsg(msg); |
child.setSurvey(survey); |
child.setParentNode(parent); |
DaoFactory.getSurveyStructuralNodeDaoImpl().save(child); |
return child; |
} |
public void run() |
{ |
logger.info("Running thread..."); |
AbstractDao.getCurrentSession().beginTransaction(); |
logger.info("Loading survey with id: "+surveyId); |
SurveyImpl survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
survey.setStatusPercentage(0); |
survey.setStatus(SurveyStatusEnum.STATUS_CREATE_SURVEY.getStatus()); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
if(survey.isTypeOf(Globals.SURVEY_TYPE_GENERAL)) |
{ |
logger.info("Creating general responses..."); |
survey = createGeneralResponses(survey); |
} |
else if(survey.isTypeOf(Globals.SURVEY_TYPE_PEDAGOGIC)) |
{ |
logger.info("Creating pedagogic responses..."); |
survey = createPedagogicResponses(survey); |
} |
AbstractDao.getCurrentSession().getTransaction().commit(); |
logger.info("End of thread..."); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/surveys/GenerateSurveyStatsService.java |
---|
New file |
0,0 → 1,259 |
package pt.estgp.estgweb.services.surveys; |
import jomm.dao.impl.AbstractDao; |
import jomm.utils.FilesUtils; |
import jomm.utils.MessageResources; |
import org.apache.log4j.Logger; |
import org.jfree.chart.ChartFactory; |
import org.jfree.chart.ChartUtilities; |
import org.jfree.chart.JFreeChart; |
import org.jfree.chart.LegendItemCollection; |
import org.jfree.chart.axis.*; |
import org.jfree.chart.plot.CategoryPlot; |
import org.jfree.chart.plot.PlotOrientation; |
import org.jfree.data.category.CategoryDataset; |
import org.jfree.data.category.DefaultCategoryDataset; |
import org.jfree.text.TextBlockAnchor; |
import org.jfree.ui.RectangleAnchor; |
import org.jfree.ui.TextAnchor; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.SurveyView; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import javax.servlet.http.HttpServletRequest; |
import java.awt.*; |
import java.io.*; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 10-08-2011 |
* @time: 17:38 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class GenerateSurveyStatsService implements IService, Runnable |
{ |
private static final Logger logger = Logger.getLogger(GenerateSurveyStatsService.class); |
private static final int MAX_COMMIT = 100; |
private static RepositoryService repositoryService = new RepositoryService(); |
private long surveyId; |
private HttpServletRequest request; |
private UserSession userSession; |
public void generateStatsService(long surveyId, HttpServletRequest request, UserSession userSession) |
{ |
if(surveyId <= 0) return; |
SurveyImpl survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
if(survey != null) |
{ |
GenerateSurveyStatsService s = new GenerateSurveyStatsService(); |
s.request = request; |
s.surveyId = surveyId; |
s.userSession = userSession; |
// start a thread |
Thread thread = new Thread(s); |
thread.start(); |
logger.info("Starting thread with id: "+thread.getId()); |
} |
} |
private synchronized JFreeChart buildChart(HttpServletRequest request, SurveyQuestion q, SurveyStructuralNode node, UserSession userSession, boolean withCategories) |
{ |
// get counted values and labels |
List<Integer> countedValues = new ArrayList<Integer>(); |
String itemLabels = ""; |
String candidateLabels = ""; |
for(SurveyQuestionItem qi : q.getQuestionItems()) |
{ |
for(SurveyQuestionCandidateAnswer ca : qi.getCandidadeAnswers()) |
{ |
int count = DaoFactory.getSurveyQuestionAnswerDaoImpl().countAnswers(ca.getId(), node.getId()); |
countedValues.add(count); |
candidateLabels = candidateLabels + ca.getLabelpt() + ","; |
} |
itemLabels = itemLabels + qi.getLabelpt() + ","; |
} |
String[] categories = itemLabels.split(","); |
String[] series = candidateLabels.split(","); |
int[] values = new int[countedValues.size()]; |
for(int i=0; i<countedValues.size(); i++) |
values[i] = countedValues.get(i); |
// create chart |
String domainAxisLabel = MessageResources.getMessage(request,"survey.stats.graph.axis.domain.label"); |
PlotOrientation orientation = PlotOrientation.HORIZONTAL; |
if(!withCategories) |
{ |
categories = null; |
domainAxisLabel = ""; |
orientation = PlotOrientation.VERTICAL; |
} |
CategoryDataset dataset = buildCategoryDataset(categories,series,values); |
JFreeChart chart = buildJFreeChart(q.getLabelpt(),domainAxisLabel,MessageResources.getMessage(request,"survey.stats.graph.axis.range.label"),dataset,orientation); |
// chart configs |
final CategoryPlot plot = chart.getCategoryPlot(); |
final ValueAxis valueAxis = plot.getRangeAxis(); |
final CategoryAxis categoryAxis = plot.getDomainAxis(); |
final CategoryLabelPositions positions = categoryAxis.getCategoryLabelPositions(); |
Font font = new Font("Tahoma",Font.PLAIN, 11); |
categoryAxis.setMaximumCategoryLabelLines(3); |
categoryAxis.setTickLabelFont(font); |
CategoryLabelPosition right = new CategoryLabelPosition(RectangleAnchor.RIGHT, TextBlockAnchor.CENTER_RIGHT); |
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.replaceRightPosition(positions, right)); |
return chart; |
} |
public synchronized String storeChartRepository(JFreeChart chart, String filename, String description, String identifier, UserSession userSession) |
{ |
try |
{ |
File file = new File(Globals.TMP_DIR + filename); |
String extension = FilesUtils.getExtension(filename); |
ChartUtilities.saveChartAsPNG(file, chart, |
ConfigProperties.getIntProperty("surveys.stats.graph.img.width"), |
ConfigProperties.getIntProperty("surveys.stats.graph.img.height")); |
FileInputStream inputStream = new FileInputStream(file); |
if(identifier == null) |
identifier = repositoryService.storeRepositoryFile(inputStream,"image/png",extension,(int)file.length(),file.getName(),description,ResourceAccessControlEnum.surveyStatsDomain,userSession); |
else |
repositoryService.updateRepositoryFile(identifier,inputStream,"image/png",extension,(int)file.length(),file.getName(),description,ResourceAccessControlEnum.surveyStatsDomain); |
boolean deleted = file.delete(); |
if(!deleted) |
logger.info("Error deleting file: "+filename); |
} |
catch (IOException e) |
{ |
logger.info(e); |
} |
return identifier; |
} |
public synchronized JFreeChart buildJFreeChart(String chartTitle,String domainAxisLabel,String rangeAxisLabel,CategoryDataset dataset,PlotOrientation orientation) |
{ |
JFreeChart chart = ChartFactory.createBarChart(chartTitle,domainAxisLabel,rangeAxisLabel,dataset,orientation,true,true,false); |
CategoryPlot plot = chart.getCategoryPlot(); |
plot.getRangeAxis().setStandardTickUnits(NumberAxis.createIntegerTickUnits()); |
return chart; |
} |
public synchronized CategoryDataset buildCategoryDataset(String[] categories, String[] series, int[] values) |
{ |
DefaultCategoryDataset dataset = new DefaultCategoryDataset(); |
int k = 0; |
int serLen = series.length; |
if(categories != null) |
{ |
int j = 0; |
int catLen = categories.length; |
for(int i = 0; i < series.length; i++) |
{ |
if(i != 0 && i%(serLen/catLen) == 0) |
j++; |
dataset.addValue(values[k++], series[i], categories[j]); |
} |
} |
else |
{ |
for(String serie : series) |
dataset.addValue(values[k++], serie, ""); |
} |
return dataset; |
} |
public void run() |
{ |
logger.info("Running thread..."); |
AbstractDao.getCurrentSession().beginTransaction(); |
SurveyImpl survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
survey.setStatusPercentage(0); |
survey.setStatus(SurveyStatusEnum.STATUS_GENERATE_STATS.getStatus()); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
GenerateSurveyStatsCsvService service = new GenerateSurveyStatsCsvService(); |
service.run(surveyId,userSession); |
List<SurveyStructuralNode> childNodes = ((SurveyStructuralNodeImpl)survey.getStructuralNode()).getChildsStructuralNodes(); |
long total = childNodes.size() * survey.getQuestions().size(); |
long i = 0; |
int status; |
for(SurveyStructuralNode node : childNodes) |
{ |
for(SurveyQuestion question : survey.getQuestions()) |
{ |
long nodeId = node.getId(); |
long questionId = question.getId(); |
if (i++ % MAX_COMMIT == 0) |
{ |
status = (int)(((double)i/(double)total)*100); |
survey.setStatusPercentage(status); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
survey = DaoFactory.getSurveyDaoImpl().load(surveyId); |
} |
node = DaoFactory.getSurveyStructuralNodeDaoImpl().load(nodeId); |
question = DaoFactory.getSurveyQuestionDaoImpl().load(questionId); |
JFreeChart chart = null; |
if(question.getType().equals(Globals.SURVEY_QUESTION_TYPE_MATRIX)) |
chart = buildChart(request, question, node, userSession, true); |
else if(question.getType().equals(Globals.SURVEY_QUESTION_TYPE_CHECK) || question.getType().equals(Globals.SURVEY_QUESTION_TYPE_RADIO)) |
chart = buildChart(request, question, node, userSession, false); |
if(chart != null) |
{ |
node = DaoFactory.getSurveyStructuralNodeDaoImpl().load(nodeId); |
question = DaoFactory.getSurveyQuestionDaoImpl().load(questionId); |
String identifier; |
String filename = "/survey_"+surveyId+"_question_"+question.getId()+"_node_"+node.getId()+".png"; |
SurveyStatsGraphic graph = DaoFactory.getSurveyStatsGraphicDaoImpl().load(question.getId(),node.getId()); |
if(graph == null) |
{ |
identifier = storeChartRepository(chart,filename,"descricao",null,userSession); |
if(identifier != null) |
{ |
graph = DomainObjectFactory.createSurveyStatsGraphicImpl(); |
graph.setQuestion(question); |
graph.setStructuralNode(node); |
graph.setIdentifier(identifier); |
DaoFactory.getSurveyStatsGraphicDaoImpl().save(graph); |
} |
} |
else |
{ |
identifier = graph.getIdentifier(); |
storeChartRepository(chart,filename,"descricao",identifier,userSession); |
} |
} |
} |
} |
survey.setStatusPercentage(100); |
survey.setStatus(SurveyStatusEnum.STATUS_STOPPED.getStatus()); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
logger.info("End of thread..."); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/surveys/LoadConsultStatsSurveysService.java |
---|
New file |
0,0 → 1,34 |
package pt.estgp.estgweb.services.surveys; |
import pt.estgp.estgweb.domain.Survey; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.SurveyView; |
import pt.estgp.estgweb.utils.RoleManager; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 17-08-2011 |
* @time: 0:53 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class LoadConsultStatsSurveysService implements IService |
{ |
public List<SurveyView> run(UserSession userSession) |
{ |
List<Survey> surveys = DaoFactory.getSurveyDaoImpl().loadAllSurveys(); |
List<SurveyView> surveyViews = new ArrayList<SurveyView>(); |
for(Survey s : surveys) |
{ |
List<String> statsConsultRolesList = RoleManager.getRolesFromSerial(s.getStatsConsultRoles()); |
if(s.isOwnedBy(userSession.getUser()) || statsConsultRolesList.contains("all") || userSession.getUser().hasRole(statsConsultRolesList) || userSession.getUser().isSuperuserOrAdmin()) |
surveyViews.add(new SurveyView(s)); |
} |
return surveyViews; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/surveys/LoadSurveyNodeGraphsService.java |
---|
New file |
0,0 → 1,44 |
package pt.estgp.estgweb.services.surveys; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.SurveyStatsGraphic; |
import pt.estgp.estgweb.domain.SurveyStructuralNode; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.SurveyStatsGraphicView; |
import pt.estgp.estgweb.domain.views.SurveyStructuralNodeView; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 13-08-2011 |
* @time: 1:43 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class LoadSurveyNodeGraphsService implements IService |
{ |
private static final Logger logger = Logger.getLogger(LoadSurveyNodeGraphsService.class); |
public List<SurveyStatsGraphicView> run(long surveyId, long nodeId, UserSession userSession) |
{ |
SurveyStructuralNode node = DaoFactory.getSurveyStructuralNodeDaoImpl().load(nodeId); |
if(node != null) |
{ |
List<SurveyStatsGraphicView> surveyStatsGraphicViews = new ArrayList<SurveyStatsGraphicView>(); |
for(SurveyStatsGraphic g : node.getGraphics()) |
{ |
SurveyStructuralNodeView nodeView = new SurveyStructuralNodeView(g.getStructuralNode()); |
SurveyStatsGraphicView surveyStatsGraphicView = new SurveyStatsGraphicView(g); |
surveyStatsGraphicView.setStructuralNodeView(nodeView); |
surveyStatsGraphicViews.add(surveyStatsGraphicView); |
} |
return surveyStatsGraphicViews; |
} |
return null; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/surveys/LoadSurveyResponseService.java |
---|
New file |
0,0 → 1,44 |
package pt.estgp.estgweb.services.surveys; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.Survey; |
import pt.estgp.estgweb.domain.SurveyResponse; |
import pt.estgp.estgweb.domain.SurveyResponseImpl; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.SurveyResponseView; |
import pt.estgp.estgweb.domain.views.SurveyStructuralNodeView; |
import pt.estgp.estgweb.domain.views.SurveyView; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.io.Serializable; |
/** |
* @author: Duarte Santos |
* @date: 04-08-2011 |
* @time: 15:08 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class LoadSurveyResponseService implements IService |
{ |
private static final Logger logger = Logger.getLogger(LoadSurveyResponseService.class); |
public SurveyResponseView run(Serializable id, UserSession userSession) |
{ |
SurveyResponse r = DaoFactory.getSurveyResponseDaoImpl().load(id); |
Survey s = DaoFactory.getSurveyDaoImpl().load(r.getStructuralNode().getSurvey().getId()); |
SurveyView surveyView = new SurveyView(s); |
SurveyStructuralNodeView surveyStructuralNodeView = new SurveyStructuralNodeView(r.getStructuralNode()); |
surveyStructuralNodeView.setSurveyView(surveyView); |
SurveyResponseView surveyResponseView = new SurveyResponseView(r); |
surveyResponseView.setStructuralNodeView(surveyStructuralNodeView); |
logger.info("Loading survey response view: " + surveyResponseView.getId()); |
return surveyResponseView; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/surveys/SurveysCommonServices.java |
---|
New file |
0,0 → 1,74 |
package pt.estgp.estgweb.services.surveys; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.DomainObject; |
import pt.estgp.estgweb.domain.SurveyResponseImpl; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.common.*; |
import pt.estgp.estgweb.services.common.impl.DefaultToDo; |
import pt.estgp.estgweb.Globals; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 04-08-2011 |
* @time: 0:23 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveysCommonServices extends SingleSearchResults implements IService, IModuleCommonServices |
{ |
private static final Logger logger = Logger.getLogger(SurveysCommonServices.class); |
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession) |
{ |
return 0; |
} |
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) |
{ |
return search(null,search,searchType,page,maxResults,userSession); |
} |
public ISearchResults search(String from, String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) |
{ |
return null; |
} |
public int countToDo(UserSession userSession) |
{ |
return 0; |
} |
public IToDoCat getToDo(UserSession userSession) |
{ |
return null; |
} |
public List<IToDo> getAllToDos(UserSession userSession) |
{ |
List<IToDo> todos = new ArrayList<IToDo>(); |
if(Globals.MODULE_STATUS_SURVEYS){ |
List<SurveyResponseImpl> surveyResponses = DaoFactory.getSurveyResponseDaoImpl().loadByUserId(userSession.getUser().getId()); |
for(SurveyResponseImpl sr: surveyResponses) |
{ |
String surveyOwner = sr.getStructuralNode().getSurvey().getOwner().getUsername(); |
DefaultToDo defaultToDo = new DefaultToDo(sr.getStructuralNode().getMsg(),null,surveyOwner,"survey.type.todo","/user/startSurveyResponseFromHome.do?resp="+sr.getId()); |
todos.add(defaultToDo); |
} |
} |
return todos; |
} |
public void adviseNew(DomainObject object) |
{} |
public void adviseUpdate(DomainObject object) |
{} |
} |
/impl/src/java/pt/estgp/estgweb/services/surveys/LoadSurveyService.java |
---|
New file |
0,0 → 1,46 |
package pt.estgp.estgweb.services.surveys; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.Survey; |
import pt.estgp.estgweb.domain.SurveyImpl; |
import pt.estgp.estgweb.domain.SurveyStructuralNode; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.SurveyStatsGraphicView; |
import pt.estgp.estgweb.domain.views.SurveyStructuralNodeView; |
import pt.estgp.estgweb.domain.views.SurveyView; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedException; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.io.Serializable; |
/** |
* @author: Duarte Santos |
* @date: 07-06-2011 |
* @time: 11:04 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class LoadSurveyService implements IService |
{ |
private static final Logger logger = Logger.getLogger(LoadSurveyService.class); |
public SurveyView run(long surveyId, UserSession userSession) |
{ |
Survey s = DaoFactory.getSurveyDaoImpl().get(surveyId); |
if(s == null) return null; |
long answered = DaoFactory.getSurveyResponseDaoImpl().countResponses(s.getId(),true); |
long total = DaoFactory.getSurveyResponseDaoImpl().countResponses(s.getId(),null); |
SurveyStructuralNodeView surveyStructuralNodeView = new SurveyStructuralNodeView(s.getStructuralNode()); |
SurveyView surveyView = new SurveyView(s); |
surveyView.setStructuralNodeView(surveyStructuralNodeView); |
surveyView.setNumberOfResponses(answered); |
surveyView.setNumberTotalOfResponses(total); |
return surveyView; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courses/CoursesService.java |
---|
204,7 → 204,7 |
public List<CourseView> loadCoursesImportYearByType(String type) throws ServiceException |
{ |
String importYearIntranet = DatesUtils.getImportYear(); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAllOrderByName(importYearIntranet,null,type); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAllOrderByNameEvenWithoutCourseUnit(importYearIntranet,null,type); |
List<CourseView> courseViews = new ArrayList<CourseView>(); |
for(Course c: courses) |
{ |
/impl/src/java/pt/estgp/estgweb/services/email/ReadEmailService.java |
---|
151,7 → 151,8 |
} |
catch (MessagingException e) |
{ |
logger.error(e, e); |
logger.info(e); |
logger.debug(e, e); |
} |
return null; |
} |
/impl/src/java/pt/estgp/estgweb/services/common/ModuleEnum.java |
---|
10,6 → 10,7 |
import pt.estgp.estgweb.services.courses.CoursesCommonServices; |
import pt.estgp.estgweb.services.profile.ProfileCommonServices; |
import pt.estgp.estgweb.services.srusources.SruSourcesCommonServices; |
import pt.estgp.estgweb.services.surveys.SurveysCommonServices; |
/** |
* @author Jorge Machado |
31,7 → 32,9 |
Courses("module.Courses", new CoursesCommonServices()), |
Profile("module.Profile", new ProfileCommonServices()), |
// Questionarios("module.Qustionarios", new QuestionariosCommonServices()); |
SruSource("module.SruSource", new SruSourcesCommonServices()); |
SruSource("module.SruSource", new SruSourcesCommonServices()), |
// Duarte Santos |
Surveys("module.Surveys", new SurveysCommonServices()); |
// Events("module.Events",null), |
// Blogs("module.Blogs",null), |
/impl/src/java/pt/estgp/estgweb/services/authenticate/AuthenticateService.java |
---|
43,6 → 43,8 |
if(userSession.getUser() != null) |
throw new AuthenticateException(AuthenticateException.ALREADY_AUTHENTICATED); |
if(username == null || username.trim().length() == 0 || password == null || password.trim().length() == 0) |
throw new AuthenticateException(AuthenticateException.FAIL_AUTHENTICATION); |
boolean go = false; |
if(USE_LDAP) |
go = ldapManager.login(username,password); |
/impl/src/java/pt/estgp/estgweb/domain/SurveyImpl.java |
---|
New file |
0,0 → 1,102 |
package pt.estgp.estgweb.domain; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.RoleManager; |
import java.io.Serializable; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:10 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyImpl extends Survey implements IOwned, IConsultSurveyStats, IEdit |
{ |
private static final Logger logger = Logger.getLogger(SurveyImpl.class); |
@Override |
public boolean isOwnedBy(GenericUser u) |
{ |
return isOwnedBy(u,false); |
} |
@Override |
public boolean isOwnedBy(GenericUser u, boolean transaction) |
{ |
return u.getId() == getOwner().getId(); |
} |
@Override |
public GenericUser getOwner() |
{ |
return super.getOwner(); |
} |
@Override |
public List<String> getOwnerRoles() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
public String getChoosedOwnerRole() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
@Override |
public Serializable getSerializable() { |
return getId(); |
} |
public boolean isTypeOf(String type) |
{ |
return (getType().equals(type)); |
} |
public boolean canConsultSurveyStats(GenericUserImpl u) |
{ |
return canConsultStats(u,false); |
} |
public boolean canConsultSurveyStats(GenericUserImpl u, boolean transaction) |
{ |
return canConsultStats(u,transaction); |
} |
public boolean canConsultStats(GenericUserImpl user, boolean transaction) |
{ |
return RoleManager.hasRole(getStatsConsultRolesList(), Globals.ALL_ROLE) || (user != null && (user.hasRole(getStatsConsultRoles()) || user.isSuperuserOrAdmin())) || isOwnedBy(user,transaction); |
} |
public List<String> getStatsConsultRolesList() |
{ |
return RoleManager.getRolesFromSerial(getStatsConsultRoles()); |
} |
public boolean canEdit(GenericUserImpl u) |
{ |
return canEditSurvey(u,false); |
} |
public boolean canEdit(GenericUserImpl u,boolean transaction) |
{ |
return canEditSurvey(u,true); |
} |
private boolean canEditSurvey(GenericUserImpl user, boolean transaction) |
{ |
List<SurveyStructuralNode> childNodes = ((SurveyStructuralNodeImpl)getStructuralNode()).getChildsStructuralNodes(); |
for(SurveyStructuralNode node : childNodes) |
{ |
for(SurveyResponse response : node.getResponses()) |
{ |
return response.getAnswers().size() > 0 && user != null && (user.isSuperuserOrAdmin() || isOwnedBy(user,transaction)); |
} |
} |
return false; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/SurveyQuestionCandidateAnswerImpl.java |
---|
New file |
0,0 → 1,39 |
package pt.estgp.estgweb.domain; |
import org.apache.log4j.Logger; |
import java.io.Serializable; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:41 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyQuestionCandidateAnswerImpl extends SurveyQuestionCandidateAnswer |
{ |
private static final Logger logger = Logger.getLogger(SurveyQuestionCandidateAnswerImpl.class); |
@Override |
public GenericUser getOwner() { |
return null; |
} |
@Override |
public List<String> getOwnerRoles() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
public String getChoosedOwnerRole() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
@Override |
public Serializable getSerializable() { |
return getId(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/IConsultSurveyStats.java |
---|
New file |
0,0 → 1,14 |
package pt.estgp.estgweb.domain; |
/** |
* @author: Duarte Santos |
* @date: 16-08-2011 |
* @time: 20:19 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public interface IConsultSurveyStats |
{ |
public boolean canConsultSurveyStats(GenericUserImpl u); |
public boolean canConsultSurveyStats(GenericUserImpl u, boolean transaction); |
} |
/impl/src/java/pt/estgp/estgweb/domain/SurveyResponseImpl.java |
---|
New file |
0,0 → 1,55 |
package pt.estgp.estgweb.domain; |
import org.apache.log4j.Logger; |
import java.io.Serializable; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:40 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyResponseImpl extends SurveyResponse implements IOwned |
{ |
private static final Logger logger = Logger.getLogger(SurveyResponseImpl.class); |
@Override |
public boolean isOwnedBy(GenericUser u) |
{ |
return isOwnedBy(u,false); |
} |
@Override |
public boolean isOwnedBy(GenericUser u, boolean transaction) |
{ |
return u.getId() == getOwner().getId(); |
} |
@Override |
public GenericUser getOwner() |
{ |
return super.getOwner(); |
} |
@Override |
public List<String> getOwnerRoles() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
public String getChoosedOwnerRole() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
@Override |
public Serializable getSerializable() { |
return getId(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/SurveyQuestionItemView.java |
---|
New file |
0,0 → 1,133 |
package pt.estgp.estgweb.domain.views; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.*; |
import java.io.Serializable; |
import java.util.ArrayList; |
import java.util.Collection; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 03-06-2011 |
* @time: 11:45 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyQuestionItemView extends DomainObjectView |
{ |
private static final Logger logger = Logger.getLogger(SurveyQuestionItemView.class); |
private long id; |
private String labelpt; |
private String labelen; |
private SurveyQuestionView question; |
private List<SurveyQuestionCandidateAnswerView> candidates = new ArrayList<SurveyQuestionCandidateAnswerView>(); |
private String radioValue; |
private String textareaValue; |
public SurveyQuestionItemView() |
{} |
public SurveyQuestionItemView(SurveyQuestionItem questionItem) |
{ |
super(questionItem); |
init(questionItem); |
} |
public SurveyQuestionItemView(SurveyQuestionItem questionItem, SurveyQuestionView q) |
{ |
super(questionItem); |
if(q != null) |
this.question = q; |
init(questionItem); |
} |
private void init(SurveyQuestionItem questionItem) |
{ |
this.id = questionItem.getId(); |
this.labelpt = questionItem.getLabelpt(); |
this.labelen = questionItem.getLabelen(); |
if(questionItem.getCandidadeAnswers() != null) |
{ |
for(SurveyQuestionCandidateAnswer candidate: questionItem.getCandidadeAnswers()) |
{ |
SurveyQuestionCandidateAnswerView candidateAnswerView = new SurveyQuestionCandidateAnswerView(candidate,this); |
this.candidates.add(candidateAnswerView); |
} |
} |
} |
public void persistViewInObject(SurveyQuestionItem questionItem) |
{ |
questionItem.setLabelpt(labelpt); |
questionItem.setLabelen(labelen); |
} |
public long getId() { |
return id; |
} |
public void setId(long id) { |
this.id = id; |
} |
public String getLabelpt() { |
return labelpt; |
} |
public void setLabelpt(String labelpt) { |
this.labelpt = labelpt; |
} |
public String getLabelen() { |
return labelen; |
} |
public void setLabelen(String labelen) { |
this.labelen = labelen; |
} |
public SurveyQuestionView getQuestion() { |
return question; |
} |
public void setQuestion(SurveyQuestionView question) { |
this.question = question; |
} |
public List<SurveyQuestionCandidateAnswerView> getCandidates() { |
return candidates; |
} |
public void setCandidates(List<SurveyQuestionCandidateAnswerView> candidates) { |
this.candidates = candidates; |
} |
public String getRadioValue() { |
return radioValue; |
} |
public void setRadioValue(String radioValue) { |
this.radioValue = radioValue; |
} |
public String getTextareaValue() { |
return textareaValue; |
} |
public void setTextareaValue(String textareaValue) { |
this.textareaValue = textareaValue; |
} |
public Class getReferenceClass() { |
return SurveyQuestionItemImpl.class; |
} |
public Serializable getSerializable() { |
return id; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/SurveyQuestionAnswerView.java |
---|
New file |
0,0 → 1,101 |
package pt.estgp.estgweb.domain.views; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.SurveyQuestionAnswer; |
import pt.estgp.estgweb.domain.SurveyQuestionAnswerImpl; |
import pt.estgp.estgweb.domain.SurveyQuestionCandidateAnswer; |
import pt.estgp.estgweb.domain.SurveyResponse; |
import java.io.Serializable; |
/** |
* @author: Duarte Santos |
* @date: 03-06-2011 |
* @time: 12:01 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyQuestionAnswerView extends DomainObjectView |
{ |
private static final Logger logger = Logger.getLogger(SurveyQuestionAnswerView.class); |
private long id; |
private String textAnswer; |
private SurveyQuestionCandidateAnswerView candidateAnswer; |
private SurveyResponseView response; |
public SurveyQuestionAnswerView() |
{} |
public SurveyQuestionAnswerView(SurveyQuestionAnswer questionAnswer) |
{ |
super(questionAnswer); |
init(questionAnswer); |
} |
public SurveyQuestionAnswerView(SurveyQuestionAnswer questionAnswer, SurveyResponseView r) |
{ |
super(questionAnswer); |
this.response = r; |
init(questionAnswer); |
} |
public SurveyQuestionAnswerView(SurveyQuestionAnswer questionAnswer, SurveyQuestionCandidateAnswerView c) |
{ |
super(questionAnswer); |
if(c != null) |
this.candidateAnswer = c; |
init(questionAnswer); |
} |
private void init(SurveyQuestionAnswer questionAnswer) |
{ |
this.id = questionAnswer.getId(); |
this.textAnswer = questionAnswer.getTextAnswer(); |
} |
public void persistViewInObject(SurveyQuestionAnswer questionAnswer) |
{ |
questionAnswer.setTextAnswer(textAnswer); |
} |
public long getId() { |
return id; |
} |
public void setId(long id) { |
this.id = id; |
} |
public String getTextAnswer() { |
return textAnswer; |
} |
public void setTextAnswer(String textAnswer) { |
this.textAnswer = textAnswer; |
} |
public SurveyQuestionCandidateAnswerView getCandidateAnswer() { |
return candidateAnswer; |
} |
public void setCandidateAnswer(SurveyQuestionCandidateAnswerView candidateAnswer) { |
this.candidateAnswer = candidateAnswer; |
} |
public SurveyResponseView getResponse() { |
return response; |
} |
public void setResponse(SurveyResponseView response) { |
this.response = response; |
} |
public Class getReferenceClass() { |
return SurveyQuestionAnswerImpl.class; |
} |
public Serializable getSerializable() { |
return id; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/SurveyStatsGraphicView.java |
---|
New file |
0,0 → 1,72 |
package pt.estgp.estgweb.domain.views; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.SurveyStatsGraphic; |
import pt.estgp.estgweb.domain.SurveyStatsGraphicImpl; |
import java.io.Serializable; |
/** |
* @author: Duarte Santos |
* @date: 12-08-2011 |
* @time: 23:26 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyStatsGraphicView extends DomainObjectView |
{ |
private static final Logger logger = Logger.getLogger(SurveyStatsGraphicView.class); |
private long id; |
private String identifier; |
private SurveyStructuralNodeView structuralNodeView; |
public SurveyStatsGraphicView() |
{} |
public SurveyStatsGraphicView(SurveyStatsGraphic g) |
{ |
super(g); |
init(g); |
} |
private void init(SurveyStatsGraphic g) |
{ |
this.id = g.getId(); |
this.identifier = g.getIdentifier(); |
} |
public long getId() { |
return id; |
} |
public void setId(long id) { |
this.id = id; |
} |
public String getIdentifier() { |
return identifier; |
} |
public void setIdentifier(String identifier) { |
this.identifier = identifier; |
} |
public SurveyStructuralNodeView getStructuralNodeView() { |
return structuralNodeView; |
} |
public void setStructuralNodeView(SurveyStructuralNodeView structuralNodeView) { |
this.structuralNodeView = structuralNodeView; |
} |
@Override |
public Class getReferenceClass() { |
return SurveyStatsGraphicImpl.class; |
} |
@Override |
public Serializable getSerializable() { |
return id; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/SurveyResponseView.java |
---|
New file |
0,0 → 1,115 |
package pt.estgp.estgweb.domain.views; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.*; |
import java.io.Serializable; |
import java.util.ArrayList; |
import java.util.Date; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 31-07-2011 |
* @time: 16:36 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyResponseView extends DomainObjectView |
{ |
private static final Logger logger = Logger.getLogger(SurveyResponseView.class); |
private long id; |
private Date date; |
private boolean answered; |
private SurveyStructuralNodeView structuralNodeView = new SurveyStructuralNodeView(); |
private UserView owner = new UserView(); |
private List<SurveyQuestionAnswerView> answers = new ArrayList<SurveyQuestionAnswerView>(); |
public SurveyResponseView() |
{} |
public SurveyResponseView(SurveyResponse surveyResponse) |
{ |
super(surveyResponse); |
init(surveyResponse); |
} |
private void init(SurveyResponse surveyResponse) |
{ |
this.id = surveyResponse.getId(); |
this.date = surveyResponse.getDate(); |
this.answered = surveyResponse.isAnswered(); |
this.owner = new UserView((User) surveyResponse.getOwner()); |
if(surveyResponse.getAnswers() != null) |
{ |
for(SurveyQuestionAnswer questionAnswer : surveyResponse.getAnswers()) |
{ |
SurveyQuestionAnswerView questionAnswerView = new SurveyQuestionAnswerView(questionAnswer); |
this.answers.add(questionAnswerView); |
} |
} |
} |
public void persistViewInObject(SurveyResponse response) |
{ |
} |
public long getId() { |
return id; |
} |
public void setId(long id) { |
this.id = id; |
} |
public Date getDate() { |
return date; |
} |
public void setDate(Date date) { |
this.date = date; |
} |
public boolean isAnswered() { |
return answered; |
} |
public void setAnswered(boolean answered) { |
this.answered = answered; |
} |
public SurveyStructuralNodeView getStructuralNodeView() { |
return structuralNodeView; |
} |
public void setStructuralNodeView(SurveyStructuralNodeView structuralNode) { |
this.structuralNodeView = structuralNode; |
} |
public UserView getOwner() { |
return owner; |
} |
public void setOwner(UserView owner) { |
this.owner = owner; |
} |
public List<SurveyQuestionAnswerView> getAnswers() { |
return answers; |
} |
public void setAnswers(List<SurveyQuestionAnswerView> answers) { |
this.answers = answers; |
} |
public Class getReferenceClass() { |
return SurveyResponseImpl.class; |
} |
public Serializable getSerializable() { |
return id; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/SurveyQuestionView.java |
---|
New file |
0,0 → 1,165 |
package pt.estgp.estgweb.domain.views; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import java.io.Serializable; |
import java.util.ArrayList; |
import java.util.Collection; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 27-05-2011 |
* @time: 14:49 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyQuestionView extends DomainObjectView |
{ |
private static final Logger logger = Logger.getLogger(SurveyQuestionView.class); |
private long id; |
private String labelpt; |
private String labelen; |
private boolean required; |
private String type; |
private SurveyView survey; |
private List<SurveyQuestionItemView> items = new ArrayList<SurveyQuestionItemView>(); |
private List<SurveyQuestionCandidateAnswerView> candidatesLabels = new ArrayList<SurveyQuestionCandidateAnswerView>(); |
private List<SurveyQuestionItemView> itemOptions = new ArrayList<SurveyQuestionItemView>(); //todo tirar |
private List<SurveyQuestionCandidateAnswerView> candidateOptions = new ArrayList<SurveyQuestionCandidateAnswerView>(); //todo tirar |
public SurveyQuestionView() |
{} |
public SurveyQuestionView(SurveyQuestion surveyQuestion) |
{ |
super(surveyQuestion); |
init(surveyQuestion); |
} |
public SurveyQuestionView(SurveyQuestion surveyQuestion, SurveyView s) |
{ |
super(surveyQuestion); |
if(s != null) |
this.survey = s; |
init(surveyQuestion); |
} |
private void init(SurveyQuestion surveyQuestion) |
{ |
this.id = surveyQuestion.getId(); |
this.labelpt = surveyQuestion.getLabelpt(); |
this.labelen = surveyQuestion.getLabelen(); |
this.required = surveyQuestion.isRequired(); |
this.type = surveyQuestion.getType(); |
if(surveyQuestion.getQuestionItems() != null) |
{ |
for(SurveyQuestionItem item: surveyQuestion.getQuestionItems()) |
{ |
SurveyQuestionItemView questionItemView = new SurveyQuestionItemView(item,this); |
this.items.add(questionItemView); |
} |
} |
} |
public void persistViewInObject(SurveyQuestion surveyQuestion) |
{ |
surveyQuestion.setLabelpt(labelpt); |
surveyQuestion.setLabelen(labelen); |
surveyQuestion.setRequired(required); |
surveyQuestion.setType(type); |
} |
public long getId() { |
return id; |
} |
public void setId(long id) { |
this.id = id; |
} |
public String getLabelpt() { |
return labelpt; |
} |
public void setLabelpt(String labelpt) { |
this.labelpt = labelpt; |
} |
public String getLabelen() { |
return labelen; |
} |
public void setLabelen(String labelen) { |
this.labelen = labelen; |
} |
public boolean isRequired() { |
return required; |
} |
public void setRequired(boolean required) { |
this.required = required; |
} |
public String getType() { |
return type; |
} |
public void setType(String type) { |
this.type = type; |
} |
public SurveyView getSurvey() { |
return survey; |
} |
public void setSurvey(SurveyView survey) { |
this.survey = survey; |
} |
public List<SurveyQuestionItemView> getItems() { |
return items; |
} |
public void setItems(List<SurveyQuestionItemView> items) { |
this.items = items; |
} |
public List<SurveyQuestionCandidateAnswerView> getCandidatesLabels() { |
return candidatesLabels; |
} |
public void setCandidatesLabels(List<SurveyQuestionCandidateAnswerView> candidatesLabels) { |
this.candidatesLabels = candidatesLabels; |
} |
public List<SurveyQuestionItemView> getItemOptions() { |
return itemOptions; |
} |
public void setItemOptions(List<SurveyQuestionItemView> itemOptions) { |
this.itemOptions = itemOptions; |
} |
public List<SurveyQuestionCandidateAnswerView> getCandidateOptions() { |
return candidateOptions; |
} |
public void setCandidateOptions(List<SurveyQuestionCandidateAnswerView> candidateOptions) { |
this.candidateOptions = candidateOptions; |
} |
public Class getReferenceClass() { |
return SurveyQuestionImpl.class; |
} |
public Serializable getSerializable() { |
return id; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/SurveyStructuralNodeView.java |
---|
New file |
0,0 → 1,205 |
package pt.estgp.estgweb.domain.views; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.SurveyResponse; |
import pt.estgp.estgweb.domain.SurveyStatsGraphic; |
import pt.estgp.estgweb.domain.SurveyStructuralNode; |
import pt.estgp.estgweb.domain.SurveyStructuralNodeImpl; |
import java.io.Serializable; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 31-07-2011 |
* @time: 16:40 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyStructuralNodeView extends DomainObjectView |
{ |
private static final Logger logger = Logger.getLogger(SurveyStructuralNodeView.class); |
private long id; |
private String msg; |
private String msgKey; |
private String myKey; |
private SurveyView surveyView; |
private SurveyStructuralNodeView parentNode; |
private List<SurveyStatsGraphicView> statsGraphicView = new ArrayList<SurveyStatsGraphicView>(); |
private List<SurveyStructuralNodeView> nodes = new ArrayList<SurveyStructuralNodeView>(); |
private List<SurveyResponseView> responses = new ArrayList<SurveyResponseView>(); |
public SurveyStructuralNodeView() |
{} |
public SurveyStructuralNodeView(SurveyStructuralNode node) |
{ |
super(node); |
init(node,null); |
} |
public SurveyStructuralNodeView(SurveyStructuralNode node, SurveyStructuralNodeView parentView) |
{ |
super(node); |
init(node,parentView); |
} |
private void init(SurveyStructuralNode node, SurveyStructuralNodeView parentView) |
{ |
this.id = node.getId(); |
this.msg = node.getMsg(); |
this.msgKey = node.getMsgKey(); |
this.myKey = node.getMyKey(); |
if(parentView != null) |
this.parentNode = parentView; |
if(node.getNodes() != null) |
{ |
for(SurveyStructuralNode n: node.getNodes()) |
{ |
SurveyStructuralNodeView nodeView = new SurveyStructuralNodeView(n,this); |
this.nodes.add(nodeView); |
} |
} |
if(node.getGraphics() != null) |
{ |
for(SurveyStatsGraphic g: node.getGraphics()) |
{ |
SurveyStatsGraphicView graphicView = new SurveyStatsGraphicView(g); |
this.statsGraphicView.add(graphicView); |
} |
} |
// |
// if(node.getResponses() != null) |
// { |
// for(SurveyResponse response: node.getResponses()) |
// { |
// SurveyResponseView respondeView = new SurveyResponseView(response); |
// this.responses.add(respondeView); |
// } |
// } |
} |
public void persistViewInObject(SurveyStructuralNode node) |
{ |
node.setMsg(msg); |
node.setMsgKey(msgKey); |
node.setMyKey(myKey); |
} |
public long getId() { |
return id; |
} |
public void setId(long id) { |
this.id = id; |
} |
public String getMsg() { |
return msg; |
} |
public void setMsg(String msg) { |
this.msg = msg; |
} |
public String getMsgKey() { |
return msgKey; |
} |
public void setMsgKey(String msgKey) { |
this.msgKey = msgKey; |
} |
public String getMyKey() { |
return myKey; |
} |
public void setMyKey(String myKey) { |
this.myKey = myKey; |
} |
public SurveyView getSurveyView() { |
return surveyView; |
} |
public void setSurveyView(SurveyView surveyView) { |
this.surveyView = surveyView; |
} |
public SurveyStructuralNodeView getParentNode() { |
return parentNode; |
} |
public void setParentNode(SurveyStructuralNodeView parentNode) { |
this.parentNode = parentNode; |
} |
public List<SurveyStatsGraphicView> getStatsGraphicView() { |
return statsGraphicView; |
} |
public void setStatsGraphicView(List<SurveyStatsGraphicView> statsGraphicView) { |
this.statsGraphicView = statsGraphicView; |
} |
public List<SurveyStructuralNodeView> getNodes() { |
return nodes; |
} |
public void setNodes(List<SurveyStructuralNodeView> nodes) { |
this.nodes = nodes; |
} |
public List<SurveyResponseView> getResponses() { |
return responses; |
} |
public void setResponses(List<SurveyResponseView> responses) { |
this.responses = responses; |
} |
public Class getReferenceClass() { |
return SurveyStructuralNodeImpl.class; |
} |
public Serializable getSerializable() { |
return id; |
} |
private void getChildsStructuralNodesViewRecursive(List<SurveyStructuralNodeView> nodes, SurveyStructuralNodeView node) |
{ |
if(node.getNodes().size() == 0) |
nodes.add(node); |
for(SurveyStructuralNodeView n : node.getNodes()) |
getChildsStructuralNodesViewRecursive(nodes, n); |
} |
public List<SurveyStructuralNodeView> getChildsStructuralNodesView() |
{ |
List<SurveyStructuralNodeView> nodesList = new ArrayList<SurveyStructuralNodeView>(); |
getChildsStructuralNodesViewRecursive(nodesList, this); |
return nodesList; |
} |
private boolean isRelativeParentOfRecursive(SurveyStructuralNodeView node, long nodeId) |
{ |
if(node.getId() == nodeId) |
return true; |
for(SurveyStructuralNodeView n : node.getNodes()) |
{ |
if(isRelativeParentOfRecursive(n,nodeId)) |
return true; |
} |
return false; |
} |
public boolean isRelativeParentOf(long nodeId) |
{ |
return isRelativeParentOfRecursive(this,nodeId); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/SurveyView.java |
---|
New file |
0,0 → 1,338 |
package pt.estgp.estgweb.domain.views; |
import jomm.dao.impl.AbstractDao; |
import jomm.utils.StringsUtils; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.services.surveys.SurveyStatusEnum; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.utils.RoleManager; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import java.io.Serializable; |
import java.util.ArrayList; |
import java.util.Collection; |
import java.util.Date; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 27-05-2011 |
* @time: 15:46 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyView extends DomainObjectView |
{ |
private static final Logger logger = Logger.getLogger(SurveyView.class); |
private static final long EXPIRE_TIME = 600000; |
private long id; |
private String title; |
private Date saveDate; |
private Date updateDate; |
private Date startDate; |
private Date endDate; |
private String type; |
private String targetRoles; |
private String statsConsultRoles; |
private String year; |
private String semester; |
private int statusPercentage; |
private SurveyStatusEnum status; |
private UserView owner; |
private String identifier; |
private SurveyStructuralNodeView structuralNodeView; |
private List<SurveyQuestionView> questions = new ArrayList<SurveyQuestionView>(); |
private long numberOfResponses; |
private long numberTotalOfResponses; |
private String deletedQuestions; |
private String deletedItems; |
private String deletedCandidates; |
public SurveyView() |
{} |
public SurveyView(Survey survey) |
{ |
super(survey); |
init(survey); |
} |
private void init(Survey survey) |
{ |
this.id = survey.getId(); |
this.title = survey.getTitle(); |
this.saveDate = survey.getSaveDate(); |
this.updateDate = survey.getUpdateDate(); |
this.startDate = survey.getStartDate(); |
this.endDate = survey.getEndDate(); |
this.type = survey.getType(); |
this.targetRoles = survey.getTargetRoles(); |
this.statsConsultRoles = survey.getStatsConsultRoles(); |
this.year = survey.getYear(); |
this.semester = survey.getSemester(); |
this.statusPercentage = survey.getStatusPercentage(); |
this.status = SurveyStatusEnum.parse(survey.getStatus()); |
this.owner = new UserView((User) survey.getOwner()); |
this.identifier = survey.getIdentifier(); |
if(survey.getQuestions() != null) |
{ |
for(SurveyQuestion question: survey.getQuestions()) |
{ |
SurveyQuestionView questionView = new SurveyQuestionView(question,this); |
this.questions.add(questionView); |
} |
} |
} |
public void persistViewInObject(Survey survey) |
{ |
survey.setTitle(title); |
survey.setStartDate(startDate); |
survey.setEndDate(endDate); |
survey.setType(type); |
survey.setTargetRoles(targetRoles); |
survey.setStatsConsultRoles(statsConsultRoles); |
} |
public long getId() { |
return id; |
} |
public void setId(long id) { |
this.id = id; |
} |
public String getTitle() { |
return title; |
} |
public void setTitle(String title) { |
this.title = title; |
} |
public Date getSaveDate() { |
return saveDate; |
} |
public void setSaveDate(Date saveDate) { |
this.saveDate = saveDate; |
} |
public Date getUpdateDate() { |
return updateDate; |
} |
public void setUpdateDate(Date updateDate) { |
this.updateDate = updateDate; |
} |
public Date getStartDate() { |
return startDate; |
} |
public void setStartDate(Date startDate) { |
this.startDate = startDate; |
} |
public Date getEndDate() { |
return endDate; |
} |
public void setEndDate(Date endDate) { |
this.endDate = endDate; |
} |
public String getType() { |
return type; |
} |
public void setType(String type) { |
this.type = type; |
} |
public String getTargetRoles() { |
return targetRoles; |
} |
public void setTargetRoles(String targetRoles) { |
this.targetRoles = targetRoles; |
} |
public String getStatsConsultRoles() { |
return statsConsultRoles; |
} |
public void setStatsConsultRoles(String statsConsultRoles) { |
this.statsConsultRoles = statsConsultRoles; |
} |
public String getYear() { |
return year; |
} |
public void setYear(String year) { |
this.year = year; |
} |
public String getSemester() { |
return semester; |
} |
public void setSemester(String semester) { |
this.semester = semester; |
} |
public int getStatusPercentage() { |
return statusPercentage; |
} |
public void setStatusPercentage(int statusPercentage) { |
this.statusPercentage = statusPercentage; |
} |
public SurveyStatusEnum getStatus() { |
return status; |
} |
public void setStatus(SurveyStatusEnum status) { |
this.status = status; |
} |
public UserView getOwner() { |
return owner; |
} |
public void setOwner(UserView owner) { |
this.owner = owner; |
} |
public String getIdentifier() { |
return identifier; |
} |
public void setIdentifier(String identifier) { |
this.identifier = identifier; |
} |
public SurveyStructuralNodeView getStructuralNodeView() { |
return structuralNodeView; |
} |
public void setStructuralNodeView(SurveyStructuralNodeView structuralNodeView) { |
this.structuralNodeView = structuralNodeView; |
} |
public List<SurveyQuestionView> getQuestions() { |
return questions; |
} |
public void setQuestions(List<SurveyQuestionView> questions) { |
this.questions = questions; |
} |
public long getNumberOfResponses() { |
return numberOfResponses; |
} |
public void setNumberOfResponses(long numberOfResponses) { |
this.numberOfResponses = numberOfResponses; |
} |
public long getNumberTotalOfResponses() { |
return numberTotalOfResponses; |
} |
public void setNumberTotalOfResponses(long numberTotalOfResponses) { |
this.numberTotalOfResponses = numberTotalOfResponses; |
} |
public String getDeletedQuestions() { |
return deletedQuestions; |
} |
public void setDeletedQuestions(String deletedQuestions) { |
this.deletedQuestions = deletedQuestions; |
} |
public String getDeletedItems() { |
return deletedItems; |
} |
public void setDeletedItems(String deletedItems) { |
this.deletedItems = deletedItems; |
} |
public String getDeletedCandidates() { |
return deletedCandidates; |
} |
public void setDeletedCandidates(String deletedCandidates) { |
this.deletedCandidates = deletedCandidates; |
} |
public String getFormatedSaveDate() |
{ |
return DatesUtils.getStringFromDate(saveDate); |
} |
public String getFormatedUpdateDate() |
{ |
return DatesUtils.getStringFromDate(updateDate); |
} |
public String getFormatedStartDate() |
{ |
return DatesUtils.getStringFromDate(startDate); |
} |
public void setFormatedEndDate(String date) |
{ |
this.endDate = DatesUtils.getDateFromString(date); |
} |
public String getFormatedEndDate() |
{ |
return DatesUtils.getStringFromDate(endDate); |
} |
public boolean isExpired() |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
List list = AbstractDao.getCurrentSession().createSQLQuery("select now()").list(); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
Date now = (Date) list.get(0); |
return (now.getTime() - this.updateDate.getTime() > EXPIRE_TIME); |
} |
public boolean isPedagogic() |
{ |
return (this.getType().equals(Globals.SURVEY_TYPE_PEDAGOGIC)); |
} |
public List<String> getOwnerRoles() |
{ |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
public String getChoosedOwnerRole() |
{ |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
public Class getReferenceClass() |
{ |
return SurveyImpl.class; |
} |
public Serializable getSerializable() |
{ |
return id; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/SurveyQuestionCandidateAnswerView.java |
---|
New file |
0,0 → 1,133 |
package pt.estgp.estgweb.domain.views; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.*; |
import java.io.Serializable; |
import java.util.ArrayList; |
import java.util.Collection; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 03-06-2011 |
* @time: 11:49 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyQuestionCandidateAnswerView extends DomainObjectView |
{ |
private static final Logger logger = Logger.getLogger(SurveyQuestionCandidateAnswerView.class); |
private long id; |
private String labelpt; |
private String labelen; |
private String type; |
private SurveyQuestionItemView questionItem; |
private List<SurveyQuestionAnswerView> answers = new ArrayList<SurveyQuestionAnswerView>(); |
private boolean checkbox; |
public SurveyQuestionCandidateAnswerView() |
{} |
public SurveyQuestionCandidateAnswerView(SurveyQuestionCandidateAnswer candidateAnswer) { |
super(candidateAnswer); |
init(candidateAnswer); |
} |
public SurveyQuestionCandidateAnswerView(SurveyQuestionCandidateAnswer candidateAnswer, SurveyQuestionItemView i) { |
super(candidateAnswer); |
if(i != null) |
this.questionItem = i; |
init(candidateAnswer); |
} |
private void init(SurveyQuestionCandidateAnswer candidateAnswer) |
{ |
this.id = candidateAnswer.getId(); |
this.labelpt = candidateAnswer.getLabelpt(); |
this.labelen = candidateAnswer.getLabelen(); |
this.type = candidateAnswer.getType(); |
if(candidateAnswer.getAnswers() != null) |
{ |
for(SurveyQuestionAnswer answer: candidateAnswer.getAnswers()) |
{ |
SurveyQuestionAnswerView answerView = new SurveyQuestionAnswerView(answer,this); |
this.answers.add(answerView); |
} |
} |
} |
public void persistViewInObject(SurveyQuestionCandidateAnswer candidateAnswer) |
{ |
candidateAnswer.setLabelpt(labelpt); |
candidateAnswer.setLabelen(labelen); |
candidateAnswer.setType(type); |
} |
public long getId() { |
return id; |
} |
public void setId(long id) { |
this.id = id; |
} |
public String getLabelpt() { |
return labelpt; |
} |
public void setLabelpt(String labelpt) { |
this.labelpt = labelpt; |
} |
public String getLabelen() { |
return labelen; |
} |
public void setLabelen(String labelen) { |
this.labelen = labelen; |
} |
public String getType() { |
return type; |
} |
public void setType(String type) { |
this.type = type; |
} |
public SurveyQuestionItemView getQuestionItem() { |
return questionItem; |
} |
public void setQuestionItem(SurveyQuestionItemView questionItem) { |
this.questionItem = questionItem; |
} |
public List<SurveyQuestionAnswerView> getAnswers() { |
return answers; |
} |
public void setAnswers(List<SurveyQuestionAnswerView> answers) { |
this.answers = answers; |
} |
public boolean isCheckbox() { |
return checkbox; |
} |
public void setCheckbox(boolean checkbox) { |
this.checkbox = checkbox; |
} |
public Class getReferenceClass() { |
return SurveyQuestionCandidateAnswerImpl.class; |
} |
public Serializable getSerializable() { |
return id; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/DomainObjectFactory.java |
---|
208,4 → 208,45 |
public static SruSourceCollectionImpl createSruSourceCollectionImpl() { |
return new SruSourceCollectionImpl(); |
} |
// Duarte Santos |
public static SurveyImpl createSurveyImpl() |
{ |
return new SurveyImpl(); |
} |
public static SurveyQuestionAnswerImpl createSurveyQuestionAnswerImpl() |
{ |
return new SurveyQuestionAnswerImpl(); |
} |
public static SurveyQuestionCandidateAnswerImpl createSurveyQuestionCandidateAnswerImpl() |
{ |
return new SurveyQuestionCandidateAnswerImpl(); |
} |
public static SurveyQuestionImpl createSurveyQuestionImpl() |
{ |
return new SurveyQuestionImpl(); |
} |
public static SurveyQuestionItemImpl createSurveyQuestionItemImpl() |
{ |
return new SurveyQuestionItemImpl(); |
} |
public static SurveyResponseImpl createSurveyResponseImpl() |
{ |
return new SurveyResponseImpl(); |
} |
public static SurveyStructuralNodeImpl createSurveyStructuralNodeImpl() |
{ |
return new SurveyStructuralNodeImpl(); |
} |
public static SurveyStatsGraphicImpl createSurveyStatsGraphicImpl() |
{ |
return new SurveyStatsGraphicImpl(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/SurveyQuestionItemImpl.java |
---|
New file |
0,0 → 1,39 |
package pt.estgp.estgweb.domain; |
import org.apache.log4j.Logger; |
import java.io.Serializable; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:40 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyQuestionItemImpl extends SurveyQuestionItem |
{ |
private static final Logger logger = Logger.getLogger(SurveyQuestionItemImpl.class); |
@Override |
public GenericUser getOwner() { |
return null; |
} |
@Override |
public List<String> getOwnerRoles() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
public String getChoosedOwnerRole() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
@Override |
public Serializable getSerializable() { |
return getId(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/IEdit.java |
---|
New file |
0,0 → 1,14 |
package pt.estgp.estgweb.domain; |
/** |
* @author: Duarte Santos |
* @date: 16-08-2011 |
* @time: 22:50 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public interface IEdit |
{ |
public boolean canEdit(GenericUserImpl u); |
public boolean canEdit(GenericUserImpl u, boolean transaction); |
} |
/impl/src/java/pt/estgp/estgweb/domain/UserImpl.java |
---|
101,7 → 101,14 |
return false; |
} |
// Duarte Santos |
public boolean haveResponse(Survey s, SurveyStructuralNode node) |
{ |
for(SurveyResponse r : getMySurveyResponses()) |
{ |
if(r.getStructuralNode().getSurvey() == s && r.getStructuralNode() == node) |
return true; |
} |
return false; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/SurveyQuestionImpl.java |
---|
New file |
0,0 → 1,39 |
package pt.estgp.estgweb.domain; |
import org.apache.log4j.Logger; |
import java.io.Serializable; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:40 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyQuestionImpl extends SurveyQuestion |
{ |
private static final Logger logger = Logger.getLogger(SurveyQuestionImpl.class); |
@Override |
public GenericUser getOwner() { |
return null; |
} |
@Override |
public List<String> getOwnerRoles() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
public String getChoosedOwnerRole() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
@Override |
public Serializable getSerializable() { |
return getId(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/SurveyStructuralNodeDaoImpl.java |
---|
New file |
0,0 → 1,49 |
package pt.estgp.estgweb.domain.dao.impl; |
import org.apache.log4j.Logger; |
import org.hibernate.Criteria; |
import static org.hibernate.criterion.Restrictions.*; |
import org.hibernate.Query; |
import org.hibernate.criterion.Projections; |
import pt.estgp.estgweb.domain.Survey; |
import pt.estgp.estgweb.domain.SurveyStructuralNode; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:44 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyStructuralNodeDaoImpl extends SurveyStructuralNodeDao |
{ |
private static final Logger logger = Logger.getLogger(SurveyStructuralNodeDaoImpl.class); |
public static SurveyStructuralNodeDaoImpl getInstance() |
{ |
if(myInstance == null) |
myInstance = new SurveyStructuralNodeDaoImpl(); |
return (SurveyStructuralNodeDaoImpl) myInstance; |
} |
public SurveyStructuralNode loadByRepositoryId(String identifier) |
{ |
return (SurveyStructuralNode) createCriteria() |
.createAlias("graphics","g") |
.add(eq("g.identifier",identifier)) |
.uniqueResult(); |
} |
public SurveyStructuralNode findBySurvey(long surveyId) |
{ |
return (SurveyStructuralNode) createCriteria().add(eq("survey.id",surveyId)).add(isNull("parentNode")).uniqueResult(); |
} |
public SurveyStructuralNode findByMsg(String msg, long surveyId) |
{ |
return (SurveyStructuralNode) createCriteria().add(eq("msg",msg)).add(eq("survey.id",surveyId)).uniqueResult(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/SurveyDaoImpl.java |
---|
New file |
0,0 → 1,55 |
package pt.estgp.estgweb.domain.dao.impl; |
import jomm.dao.impl.AbstractDao; |
import org.apache.log4j.Logger; |
import org.hibernate.Criteria; |
import org.hibernate.criterion.Criterion; |
import org.hibernate.criterion.Order; |
import pt.estgp.estgweb.domain.Survey; |
import pt.estgp.estgweb.domain.SurveyImpl; |
import static org.hibernate.criterion.Restrictions.*; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:44 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyDaoImpl extends AbstractDao<SurveyImpl> |
{ |
private static final Logger logger = Logger.getLogger(SurveyDaoImpl.class); |
protected static SurveyDaoImpl myInstance = null; |
public static SurveyDaoImpl getInstance() |
{ |
if(myInstance == null) |
myInstance = new SurveyDaoImpl(); |
return myInstance; |
} |
public List<Survey> loadAllSurveys() |
{ |
return createCriteria().addOrder(Order.desc("id")).list(); |
} |
public List<Survey> loadOwnedSurveys(long id) |
{ |
return createCriteria().add(eq("owner.id",id)).addOrder(Order.desc("id")).list(); |
} |
public Survey loadByRepositoryId(String identifier) |
{ |
return (Survey) createCriteria() |
.add(eq("identifier",identifier)) |
.uniqueResult(); |
} |
@Override |
protected Class getReferenceClass() { |
return SurveyImpl.class; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseDaoImpl.java |
---|
1,19 → 1,22 |
package pt.estgp.estgweb.domain.dao.impl; |
import static org.hibernate.criterion.Restrictions.*; |
import org.hibernate.criterion.Order; |
import org.hibernate.criterion.Criterion; |
import org.hibernate.Criteria; |
import org.hibernate.Query; |
import org.hibernate.criterion.Criterion; |
import org.hibernate.criterion.Expression; |
import org.hibernate.criterion.Order; |
import org.hibernate.criterion.Projections; |
import pt.estgp.estgweb.domain.Course; |
import pt.estgp.estgweb.domain.CourseImpl; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.dao.DaoUtils; |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.eq; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
87,14 → 90,17 |
public List<Course> findAllOrderByName(String importYear) |
{ |
return createCriteria() |
.add(eq("importYear", importYear)) |
.add(eq("cu.importYear", importYear)) |
.addOrder(Order.asc("name")) |
.list(); |
} |
public List<Course> findAllOrderByName(String importYear, String area, String type) |
public List<Course> findAllOrderByNameEvenWithoutCourseUnit(String importYear, String area, String type) |
{ |
Criteria c = createCriteria(); |
/* c.setProjection(Projections.projectionList() |
.add(Projections.distinct(Projections.id())));*/ |
if (importYear != null && importYear.length() > 0) |
c.add(eq("importYear", importYear)); |
if (area != null && area.length() > 0) |
105,11 → 111,29 |
.list(); |
} |
public List<Course> findAllOrderByName(String importYear, String area, String type) |
{ |
Criteria c = createCriteria(); |
/* c.setProjection(Projections.projectionList() |
.add(Projections.distinct(Projections.id())));*/ |
c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); |
c.createAlias("courseUnits","cu"); |
if (importYear != null && importYear.length() > 0) |
c.add(eq("cu.importYear", importYear)); |
if (area != null && area.length() > 0) |
c.add(eq("area", area)); |
if (type != null && type.length() > 0) |
c.add(eq("degree", type)); |
return c.addOrder(Order.asc("name")) |
.list(); |
} |
public List<String> loadImportYears() |
{ |
Query q = createQuery("select distinct c.importYear from c in class " + Course.class.getName() + " order by c.importYear desc"); |
Query q = createQuery("select distinct c.importYear from c in class " + CourseUnit.class.getName() + " order by c.importYear desc"); |
return q.list(); |
} |
145,5 → 169,15 |
.list(); |
} |
// Duarte Santos |
public List<String> loadAreas() |
{ |
return |
createCriteria() |
.setProjection(Projections |
.distinct(Projections.projectionList() |
.add(Projections.property("area")))) |
.add(Expression.isNotNull("area")) |
.list(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/SurveyQuestionItemDaoImpl.java |
---|
New file |
0,0 → 1,49 |
package pt.estgp.estgweb.domain.dao.impl; |
import org.apache.log4j.Logger; |
import org.hibernate.Criteria; |
import org.hibernate.criterion.Projections; |
import pt.estgp.estgweb.domain.SurveyQuestionItem; |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.eq; |
import static org.hibernate.criterion.Restrictions.isNotNull; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:45 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyQuestionItemDaoImpl extends SurveyQuestionItemDao |
{ |
private static final Logger logger = Logger.getLogger(SurveyQuestionItemDaoImpl.class); |
public static SurveyQuestionItemDaoImpl getInstance() |
{ |
if(myInstance == null) |
myInstance = new SurveyQuestionItemDaoImpl(); |
return (SurveyQuestionItemDaoImpl) myInstance; |
} |
public SurveyQuestionItem loadById(long id) |
{ |
return (SurveyQuestionItem) |
createCriteria() |
.add(eq("id", id)) |
.uniqueResult(); |
} |
public List<String> findItemsLabels(long questionId) |
{ |
return createCriteria() |
.add(eq("question.id",questionId)) |
.setProjection(Projections.projectionList() |
.add(Projections.property("labelpt")) |
) |
.add(isNotNull("labelpt")) |
.list(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/SurveyQuestionAnswerDaoImpl.java |
---|
New file |
0,0 → 1,68 |
package pt.estgp.estgweb.domain.dao.impl; |
import org.apache.log4j.Logger; |
import org.hibernate.Criteria; |
import org.hibernate.criterion.*; |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.*; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:46 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyQuestionAnswerDaoImpl extends SurveyQuestionAnswerDao |
{ |
private static final Logger logger = Logger.getLogger(SurveyQuestionAnswerDaoImpl.class); |
public static SurveyQuestionAnswerDaoImpl getInstance() |
{ |
if(myInstance == null) |
myInstance = new SurveyQuestionAnswerDaoImpl(); |
return (SurveyQuestionAnswerDaoImpl) myInstance; |
} |
public int countAnswers(long candidateId, long nodeId) |
{ |
Criteria c = createCriteria() |
.createAlias("candidateAnswer","qca") |
.createAlias("response","r") |
.add(eq("qca.id",candidateId)) |
.add(eq("r.structuralNode.id",nodeId)); |
return c.list().size(); |
} |
public List loadForCsv(long surveyId) |
{ |
Criteria c = createCriteria() |
.createAlias("response","r") |
.createAlias("r.owner","u") |
.createAlias("candidateAnswer","qca") |
.createAlias("qca.questionItem","qi") |
.createAlias("qi.question","q") |
.createAlias("q.survey","s") |
.add(eq("s.id",surveyId)) |
.setProjection(Projections.projectionList() |
.add(Projections.property("r.id")) |
.add(Projections.property("s.id")) |
.add(Projections.property("s.title")) |
.add(Projections.property("q.id")) |
.add(Projections.property("q.labelpt")) |
.add(Projections.property("qi.id")) |
.add(Projections.property("qi.labelpt")) |
.add(Projections.property("qca.id")) |
.add(Projections.property("qca.labelpt")) |
.add(Projections.property("textAnswer")) |
.add(Projections.property("u.id")) |
.add(Projections.property("u.username")) |
) |
.addOrder(Order.asc("u.id")) |
.addOrder(Order.asc("qca.id")) |
.addOrder(Order.asc("qi.id")) |
.addOrder(Order.asc("q.id")) |
.addOrder(Order.asc("s.id")); |
return c.list(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/SurveyStatsGraphicDaoImpl.java |
---|
New file |
0,0 → 1,32 |
package pt.estgp.estgweb.domain.dao.impl; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.SurveyStatsGraphic; |
import static org.hibernate.criterion.Restrictions.*; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 12-08-2011 |
* @time: 15:27 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyStatsGraphicDaoImpl extends SurveyStatsGraphicDao |
{ |
private static final Logger logger = Logger.getLogger(SurveyDaoImpl.class); |
public static SurveyStatsGraphicDaoImpl getInstance() |
{ |
if(myInstance == null) |
myInstance = new SurveyStatsGraphicDaoImpl(); |
return (SurveyStatsGraphicDaoImpl) myInstance; |
} |
public SurveyStatsGraphic load(long questionId, long nodeId) |
{ |
return (SurveyStatsGraphic) createCriteria().add(eq("question.id",questionId)).add(eq("structuralNode.id",nodeId)).uniqueResult(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/TeacherDaoImpl.java |
---|
70,4 → 70,25 |
{ |
return createCriteria().add(or(or(or(eq("email",email),eq("outEmail",email)),eq("gmail",email)),eq("msn",email))).addOrder(Order.asc("name")).list(); |
} |
// Duarte Santos |
public List<Teacher> loadByCourseUnit(long courseUnitId) |
{ |
return createCriteria() |
.createAlias("teachedUnits", "tu") |
.add(eq("tu.id", courseUnitId)) |
.list(); |
} |
public long countTotalFromSubscribedUnits(String importYear, String semester) |
{ |
Criteria c = createCriteria() |
.createAlias("teachedUnits","tu") |
.add(eq("tu.importYear",importYear)) |
.add(eq("tu.semestre",semester)) |
.setProjection(Projections.projectionList() |
.add(Projections.rowCount()) |
); |
return ((Integer) c.uniqueResult()).longValue(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/UserDaoImpl.java |
---|
7,7 → 7,6 |
import org.hibernate.HibernateException; |
import org.hibernate.criterion.Criterion; |
import org.hibernate.criterion.Order; |
import static org.hibernate.criterion.Restrictions.*; |
import pt.estgp.estgweb.domain.User; |
import pt.estgp.estgweb.domain.dao.DaoUtils; |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
16,6 → 15,8 |
import java.util.Date; |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.*; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
215,4 → 216,21 |
{ |
return (User) createCriteria().add(or(eq("sigesCode",sigesCode),eq("username","a" + sigesCode))).uniqueResult(); |
} |
// Duarte Santos |
public List<User> loadRolesUsers(List<String> roles) |
{ |
Criteria criteria = createCriteria(); |
Criterion co = null; |
for (String role : roles) |
{ |
Criterion cor = like("roles", "%" + role + "%"); |
if (co == null) |
co = cor; |
else |
co = or(co, cor); |
} |
criteria.add(co); |
return criteria.list(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/StudentDaoImpl.java |
---|
1,9 → 1,14 |
package pt.estgp.estgweb.domain.dao.impl; |
import org.hibernate.Criteria; |
import org.hibernate.criterion.Projections; |
import pt.estgp.estgweb.domain.Student; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.User; |
import static org.hibernate.criterion.Restrictions.*; |
import java.util.List; |
import java.util.Set; |
/** |
28,10 → 33,29 |
return (Student) createCriteria().add(eq("sigesCode",sigesCode)).uniqueResult(); |
} |
public Student loadBySigesCode(String sigesCode) |
{ |
return (Student) createCriteria().add(eq("sigesCode",sigesCode)).uniqueResult(); |
} |
// Duarte Santos |
public List<Student> loadByCourseUnit(long courseUnitId) |
{ |
return createCriteria() |
.createAlias("subscribedUnits", "su") |
.add(eq("su.id", courseUnitId)) |
.list(); |
} |
public long countTotalFromSubscribedUnits(String importYear, String semester) |
{ |
Criteria c = createCriteria() |
.createAlias("subscribedUnits","su") |
.add(eq("su.importYear",importYear)) |
.add(eq("su.semestre",semester)) |
.setProjection(Projections.projectionList() |
.add(Projections.rowCount()) |
); |
return ((Integer) c.uniqueResult()).longValue(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java |
---|
1,9 → 1,8 |
package pt.estgp.estgweb.domain.dao.impl; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.Blog; |
import pt.estgp.estgweb.domain.TeacherImpl; |
import pt.estgp.estgweb.domain.CourseUnitImpl; |
import org.hibernate.criterion.Projection; |
import org.hibernate.criterion.Projections; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoUtils; |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
import pt.estgp.estgweb.utils.DatesUtils; |
17,6 → 16,7 |
import org.hibernate.sql.JoinFragment; |
import org.apache.log4j.Logger; |
import java.util.Collection; |
import java.util.List; |
import java.util.Set; |
185,8 → 185,6 |
.list(); |
} |
public List<CourseUnit> loadCourseUnits(long courseId, String semestre, String year, boolean withTeacher, boolean withNoTeacher) |
{ |
Criteria c = createCriteria(); |
347,6 → 345,4 |
{ |
return loadMissingProgramValidateGivenCourse(courseId).size(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/SurveyQuestionCandidateAnswerDaoImpl.java |
---|
New file |
0,0 → 1,51 |
package pt.estgp.estgweb.domain.dao.impl; |
import org.apache.log4j.Logger; |
import org.hibernate.Criteria; |
import org.hibernate.criterion.CriteriaSpecification; |
import org.hibernate.criterion.Projections; |
import pt.estgp.estgweb.domain.SurveyQuestionCandidateAnswer; |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.eq; |
import static org.hibernate.criterion.Restrictions.isNotNull; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:45 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyQuestionCandidateAnswerDaoImpl extends SurveyQuestionCandidateAnswerDao |
{ |
private static final Logger logger = Logger.getLogger(SurveyQuestionCandidateAnswerDaoImpl.class); |
public static SurveyQuestionCandidateAnswerDaoImpl getInstance() |
{ |
if(myInstance == null) |
myInstance = new SurveyQuestionCandidateAnswerDaoImpl(); |
return (SurveyQuestionCandidateAnswerDaoImpl) myInstance; |
} |
public SurveyQuestionCandidateAnswer loadById(long id) |
{ |
return (SurveyQuestionCandidateAnswer) |
createCriteria() |
.add(eq("id", id)) |
.uniqueResult(); |
} |
public List<String> findCandidatesLabels(long questionId) |
{ |
return createCriteria() |
.createAlias("questionItem", "qi") |
.add(eq("qi.question.id", questionId)) |
.setProjection(Projections.projectionList() |
.add(Projections.distinct(Projections.property("labelpt"))) |
) |
.add(isNotNull("labelpt")) |
.list(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/SurveyResponseDaoImpl.java |
---|
New file |
0,0 → 1,66 |
package pt.estgp.estgweb.domain.dao.impl; |
import org.apache.log4j.Logger; |
import org.hibernate.Criteria; |
import org.hibernate.criterion.Projections; |
import pt.estgp.estgweb.domain.SurveyResponse; |
import pt.estgp.estgweb.domain.SurveyResponseImpl; |
import java.util.Date; |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.*; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:45 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyResponseDaoImpl extends SurveyResponseDao |
{ |
private static final Logger logger = Logger.getLogger(SurveyResponseDaoImpl.class); |
public static SurveyResponseDaoImpl getInstance() |
{ |
if(myInstance == null) |
myInstance = new SurveyResponseDaoImpl(); |
return (SurveyResponseDaoImpl) myInstance; |
} |
public List<SurveyResponseImpl> loadByUserId(long userId) |
{ |
Criteria c = createCriteria() |
.createAlias("structuralNode","sn") |
.createAlias("sn.survey","s") |
.add(eq("owner.id",userId)) |
.add(eq("answered", false)) |
.add(and(lt("s.startDate", new Date()),gt("s.endDate", new Date()))); |
return c.list(); |
} |
public List<SurveyResponse> loadResponsesByParentStructuralNodeId(long parentNodeId) |
{ |
List list = createCriteria().add(eq("structuralNode.id", parentNodeId)).list(); |
if(list.size() == 0) |
return null; |
else |
return list; |
} |
public long countResponses(long surveyId, Boolean answered) |
{ |
Criteria c = createCriteria(); |
c.createAlias("structuralNode","sn"); |
c.createAlias("sn.survey","s"); |
c.add(eq("s.id",surveyId)); |
if(answered != null) |
c.add(eq("answered",answered)); |
c.setProjection(Projections.projectionList() |
.add(Projections.rowCount()) |
); |
return ((Integer) c.uniqueResult()).longValue(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/SurveyQuestionDaoImpl.java |
---|
New file |
0,0 → 1,33 |
package pt.estgp.estgweb.domain.dao.impl; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.SurveyQuestion; |
import static org.hibernate.criterion.Restrictions.eq; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:45 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyQuestionDaoImpl extends SurveyQuestionDao |
{ |
private static final Logger logger = Logger.getLogger(SurveyQuestionDaoImpl.class); |
public static SurveyQuestionDaoImpl getInstance() |
{ |
if(myInstance == null) |
myInstance = new SurveyQuestionDaoImpl(); |
return (SurveyQuestionDaoImpl) myInstance; |
} |
public SurveyQuestion loadById(long id) |
{ |
return (SurveyQuestion) |
createCriteria() |
.add(eq("id", id)) |
.uniqueResult(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/DaoFactory.java |
---|
1,5 → 1,6 |
package pt.estgp.estgweb.domain.dao; |
import pt.estgp.estgweb.domain.SurveyStructuralNode; |
import pt.estgp.estgweb.domain.dao.impl.*; |
/** |
197,4 → 198,45 |
{ |
return SruSourceCollectionDaoImpl.getInstance(); |
} |
// Duarte Santos |
public static SurveyDaoImpl getSurveyDaoImpl() |
{ |
return SurveyDaoImpl.getInstance(); |
} |
public static SurveyQuestionAnswerDaoImpl getSurveyQuestionAnswerDaoImpl() |
{ |
return SurveyQuestionAnswerDaoImpl.getInstance(); |
} |
public static SurveyQuestionCandidateAnswerDaoImpl getSurveyQuestionCandidateAnswerDaoImpl() |
{ |
return SurveyQuestionCandidateAnswerDaoImpl.getInstance(); |
} |
public static SurveyQuestionDaoImpl getSurveyQuestionDaoImpl() |
{ |
return SurveyQuestionDaoImpl.getInstance(); |
} |
public static SurveyQuestionItemDaoImpl getSurveyQuestionItemDaoImpl() |
{ |
return SurveyQuestionItemDaoImpl.getInstance(); |
} |
public static SurveyResponseDaoImpl getSurveyResponseDaoImpl() |
{ |
return SurveyResponseDaoImpl.getInstance(); |
} |
public static SurveyStructuralNodeDaoImpl getSurveyStructuralNodeDaoImpl() |
{ |
return SurveyStructuralNodeDaoImpl.getInstance(); |
} |
public static SurveyStatsGraphicDaoImpl getSurveyStatsGraphicDaoImpl() |
{ |
return SurveyStatsGraphicDaoImpl.getInstance(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/SurveyQuestionAnswerImpl.java |
---|
New file |
0,0 → 1,39 |
package pt.estgp.estgweb.domain; |
import org.apache.log4j.Logger; |
import java.io.Serializable; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:41 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyQuestionAnswerImpl extends SurveyQuestionAnswer |
{ |
private static final Logger logger = Logger.getLogger(SurveyQuestionAnswerImpl.class); |
@Override |
public GenericUser getOwner() { |
return null; |
} |
@Override |
public List<String> getOwnerRoles() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
public String getChoosedOwnerRole() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
@Override |
public Serializable getSerializable() { |
return getId(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/SurveyStructuralNodeImpl.java |
---|
New file |
0,0 → 1,65 |
package pt.estgp.estgweb.domain; |
import org.apache.log4j.Logger; |
import java.io.Serializable; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:40 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyStructuralNodeImpl extends SurveyStructuralNode |
{ |
private static final Logger logger = Logger.getLogger(SurveyStructuralNodeImpl.class); |
@Override |
public GenericUser getOwner() { |
return null; |
} |
@Override |
public List<String> getOwnerRoles() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
public String getChoosedOwnerRole() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
@Override |
public Serializable getSerializable() { |
return getId(); |
} |
private void getChildsStructuralNodesRecursive(List<SurveyStructuralNode> nodes, SurveyStructuralNode node) |
{ |
if(node.getNodes().size() == 0) |
nodes.add(node); |
for(SurveyStructuralNode n : node.getNodes()) |
getChildsStructuralNodesRecursive(nodes, n); |
} |
public List<SurveyStructuralNode> getChildsStructuralNodes() |
{ |
List<SurveyStructuralNode> nodesList = new ArrayList<SurveyStructuralNode>(); |
getChildsStructuralNodesRecursive(nodesList, this); |
return nodesList; |
} |
public SurveyStructuralNode getChildNode(String msg) |
{ |
for(SurveyStructuralNode n : getNodes()) |
{ |
if(n.getMsg().equals(msg)) |
return n; |
} |
return null; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/Main.java |
---|
New file |
0,0 → 1,387 |
package pt.estgp.estgweb.domain; |
import jomm.dao.impl.AbstractDao; |
import org.jboss.util.Objects; |
import org.jfree.chart.ChartFactory; |
import org.jfree.chart.ChartUtilities; |
import org.jfree.chart.JFreeChart; |
import org.jfree.chart.plot.PlotOrientation; |
import org.jfree.data.category.CategoryDataset; |
import org.jfree.data.category.DefaultCategoryDataset; |
import org.jfree.data.general.Dataset; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.dao.impl.*; |
import java.io.File; |
import java.io.IOException; |
import java.util.*; |
/** |
* @author: Duarte Santos |
* @date: 09-05-2011 |
* @time: 23:53 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class Main |
{ |
public static Survey createSurvey(User user) |
{ |
Survey survey = DomainObjectFactory.createSurveyImpl(); |
survey.setStartDate(new Date()); |
survey.setSemester("S2"); |
survey.setYear("2010"); |
survey.setOwner(user); |
SurveyDao.getInstance().save(survey); |
return survey; |
} |
public static List<SurveyStructuralNode> createStructuralNodes(Survey survey) |
{ |
List<SurveyStructuralNode> nodes = new ArrayList<SurveyStructuralNode>(); |
List<String> nodeTexts = new ArrayList<String>(); |
nodeTexts.add("201011"); |
nodeTexts.add("Engenharia Informática"); |
nodeTexts.add("Semestre1"); |
nodeTexts.add("Semestre2"); |
nodeTexts.add("Teoria da Computação"); |
nodeTexts.add("Redes de computadores I"); |
nodeTexts.add("Introdução à Programação"); |
nodeTexts.add("Análise de Matemática I"); |
int numNodes = nodeTexts.size(); |
int i = 0; |
while(numNodes > 0) |
{ |
nodes.add(DomainObjectFactory.createSurveyStructuralNodeImpl()); |
nodes.get(i).setSurvey(survey); |
nodes.get(i).setNodes(new HashSet<SurveyStructuralNode>(0)); |
i++; |
numNodes--; |
} |
nodes.get(0).setMsg(nodeTexts.get(0)); |
nodes.get(1).setMsg(nodeTexts.get(1)); |
nodes.get(2).setMsg(nodeTexts.get(2)); |
nodes.get(3).setMsg(nodeTexts.get(3)); |
nodes.get(4).setMsg(nodeTexts.get(4)); |
nodes.get(5).setMsg(nodeTexts.get(5)); |
nodes.get(6).setMsg(nodeTexts.get(6)); |
nodes.get(7).setMsg(nodeTexts.get(7)); |
nodes.get(0).getNodes().add(nodes.get(1)); |
nodes.get(1).getNodes().add(nodes.get(2)); |
nodes.get(1).getNodes().add(nodes.get(3)); |
nodes.get(2).getNodes().add(nodes.get(4)); |
nodes.get(3).getNodes().add(nodes.get(5)); |
nodes.get(3).getNodes().add(nodes.get(6)); |
nodes.get(3).getNodes().add(nodes.get(7)); |
SurveyStructuralNodeDao.getInstance().save(nodes.get(0)); |
SurveyStructuralNodeDao.getInstance().save(nodes.get(1)); |
SurveyStructuralNodeDao.getInstance().save(nodes.get(2)); |
SurveyStructuralNodeDao.getInstance().save(nodes.get(3)); |
SurveyStructuralNodeDao.getInstance().save(nodes.get(4)); |
SurveyStructuralNodeDao.getInstance().save(nodes.get(5)); |
SurveyStructuralNodeDao.getInstance().save(nodes.get(6)); |
SurveyStructuralNodeDao.getInstance().save(nodes.get(7)); |
return nodes; |
} |
public static SurveyResponse createSurveyResponses(User user, SurveyStructuralNode node) |
{ |
SurveyResponse response = DomainObjectFactory.createSurveyResponseImpl(); |
response.setStructuralNode(node); |
response.setAnswered(true); |
response.setOwner(user); |
SurveyResponseDao.getInstance().save(response); |
return response; |
} |
public static List<SurveyQuestion> createSurveyQuestions(Survey survey) |
{ |
List<SurveyQuestion> questions = new ArrayList<SurveyQuestion>(); |
List<String> questionTexts = new ArrayList<String>(); |
questionTexts.add("Pergunta numero 1"); |
questionTexts.add("Pergunta numero 2"); |
questionTexts.add("Pergunta numero 3"); |
int numQuestions = questionTexts.size(); |
int i = 0; |
while(numQuestions > 0) |
{ |
questions.add(DomainObjectFactory.createSurveyQuestionImpl()); |
questions.get(i).setSurvey(survey); |
questions.get(i).setLabelpt(questionTexts.get(i)); |
SurveyQuestionDao.getInstance().save(questions.get(i)); |
i++; |
numQuestions--; |
} |
return questions; |
} |
public static List<SurveyQuestionItem> createSurveyQuestionItems(List<SurveyQuestion> questions) |
{ |
List<SurveyQuestionItem> items = new ArrayList<SurveyQuestionItem>(); |
List<String> itemsText = new ArrayList<String>(); |
itemsText.add("Item numero 1-1"); |
itemsText.add("Item numero 1-2"); |
itemsText.add("Item numero 1-3"); |
itemsText.add(""); |
itemsText.add(""); |
int numItems = itemsText.size(); |
int i = 0; |
while(numItems > 0) |
{ |
items.add(DomainObjectFactory.createSurveyQuestionItemImpl()); |
items.get(i).setLabelpt(itemsText.get(i)); |
i++; |
numItems--; |
} |
items.get(0).setQuestion(questions.get(0)); |
items.get(1).setQuestion(questions.get(0)); |
items.get(2).setQuestion(questions.get(0)); |
items.get(3).setQuestion(questions.get(1)); |
items.get(4).setQuestion(questions.get(2)); |
SurveyQuestionItemDao.getInstance().save(items.get(0)); |
SurveyQuestionItemDao.getInstance().save(items.get(1)); |
SurveyQuestionItemDao.getInstance().save(items.get(2)); |
SurveyQuestionItemDao.getInstance().save(items.get(3)); |
SurveyQuestionItemDao.getInstance().save(items.get(4)); |
return items; |
} |
public static List<SurveyQuestionCandidateAnswer> createSurveyQuestionCandidateAnswers(List<SurveyQuestionItem> items) |
{ |
List<SurveyQuestionCandidateAnswer> candidates = new ArrayList<SurveyQuestionCandidateAnswer>(); |
List<String> candidatesText = new ArrayList<String>(); |
candidatesText.add("Candidate numero 1-1"); |
candidatesText.add("Candidate numero 1-2"); |
candidatesText.add("Candidate numero 1-3"); |
candidatesText.add("Candidate numero 2-1"); |
candidatesText.add("Candidate numero 2-2"); |
candidatesText.add("Candidate numero 2-3"); |
candidatesText.add("Candidate numero 3-1"); |
candidatesText.add("Candidate numero 3-2"); |
candidatesText.add("Candidate numero 3-3"); |
int numCandidates = candidatesText.size(); |
int i = 0; |
while(numCandidates > 0) |
{ |
candidates.add(DomainObjectFactory.createSurveyQuestionCandidateAnswerImpl()); |
candidates.get(i).setLabelpt(candidatesText.get(i)); |
i++; |
numCandidates--; |
} |
candidates.get(0).setQuestionItem(items.get(0)); |
candidates.get(0).setQuestionItem(items.get(1)); |
candidates.get(0).setQuestionItem(items.get(2)); |
candidates.get(0).setType("radio"); |
candidates.get(1).setQuestionItem(items.get(0)); |
candidates.get(1).setQuestionItem(items.get(1)); |
candidates.get(1).setQuestionItem(items.get(2)); |
candidates.get(1).setType("radio"); |
candidates.get(2).setQuestionItem(items.get(0)); |
candidates.get(2).setQuestionItem(items.get(1)); |
candidates.get(2).setQuestionItem(items.get(2)); |
candidates.get(2).setType("radio"); |
candidates.get(3).setQuestionItem(items.get(3)); |
candidates.get(3).setType("radio"); |
candidates.get(4).setQuestionItem(items.get(3)); |
candidates.get(4).setType("radio"); |
candidates.get(5).setQuestionItem(items.get(3)); |
candidates.get(5).setType("radio"); |
candidates.get(6).setQuestionItem(items.get(4)); |
candidates.get(6).setType("checkbox"); |
candidates.get(7).setQuestionItem(items.get(4)); |
candidates.get(7).setType("checkbox"); |
candidates.get(8).setQuestionItem(items.get(4)); |
candidates.get(8).setType("checkbox"); |
SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(0)); |
SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(1)); |
SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(2)); |
SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(3)); |
SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(4)); |
SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(5)); |
SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(6)); |
SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(7)); |
SurveyQuestionCandidateAnswerDao.getInstance().save(candidates.get(8)); |
return candidates; |
} |
public static List<SurveyQuestionAnswer> createSurveyQuestionAnswers(SurveyResponse response, List<SurveyQuestionCandidateAnswer> candidates) |
{ |
List<SurveyQuestionAnswer> answers = new ArrayList<SurveyQuestionAnswer>(); |
int numAnswers = 6; |
int i = 0; |
while(numAnswers > 0) |
{ |
answers.add(DomainObjectFactory.createSurveyQuestionAnswerImpl()); |
answers.get(i).setResponse(response); |
i++; |
numAnswers--; |
} |
answers.get(0).setCandidateAnswer(candidates.get(0)); |
answers.get(1).setCandidateAnswer(candidates.get(1)); |
answers.get(2).setCandidateAnswer(candidates.get(1)); |
answers.get(3).setCandidateAnswer(candidates.get(4)); |
answers.get(4).setCandidateAnswer(candidates.get(7)); |
answers.get(5).setCandidateAnswer(candidates.get(8)); |
SurveyQuestionAnswerDao.getInstance().save(answers.get(0)); |
SurveyQuestionAnswerDao.getInstance().save(answers.get(1)); |
SurveyQuestionAnswerDao.getInstance().save(answers.get(2)); |
SurveyQuestionAnswerDao.getInstance().save(answers.get(3)); |
SurveyQuestionAnswerDao.getInstance().save(answers.get(4)); |
SurveyQuestionAnswerDao.getInstance().save(answers.get(5)); |
return answers; |
} |
public static void main(String[] args) |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
User user = DaoFactory.getUserDaoImpl().loadByUsername("super"); |
List<Survey> surveys = DaoFactory.getSurveyDaoImpl().loadAllSurveys(); |
List<SurveyResponse> responses = DaoFactory.getSurveyResponseDaoImpl() |
.loadResponsesByParentStructuralNodeId(surveys.get(0).getStructuralNode().getId()); |
if(responses.size() > 0) |
{ |
System.out.println("--->"+responses.get(0).getAnswers().size()); |
} |
// List ll = DaoFactory.getSurveyQuestionAnswerDaoImpl().teste(); |
List ll = new ArrayList(); |
String[] strs = new String[ll.size()]; |
int[] ints = new int[ll.size()]; |
String question = ""; |
Iterator iter = ll.iterator(); |
int i = 0; |
while (iter.hasNext()) |
{ |
Object[] objs = (Object[]) iter.next(); |
if(question == "") |
{ |
SurveyQuestion quest = DaoFactory.getSurveyQuestionDaoImpl().loadById(Long.parseLong(objs[0].toString())); |
question = quest.getLabelpt(); |
} |
SurveyQuestionCandidateAnswer cand = DaoFactory.getSurveyQuestionCandidateAnswerDaoImpl().loadById(Long.parseLong(objs[2].toString())); |
strs[i] = cand.getLabelpt(); |
ints[i] = Integer.parseInt(objs[3].toString()); |
i++; |
} |
createBarChart(question, "", "Número de Respostas", strs, ints); |
// // ----------------- POPULAR |
// Survey survey = createSurvey(user); |
// List<SurveyStructuralNode> nodes = createStructuralNodes(survey); |
// SurveyResponse responses = createSurveyResponses(user, nodes.get(0)); |
// List<SurveyQuestion> questions = createSurveyQuestions(survey); |
// List<SurveyQuestionItem> items = createSurveyQuestionItems(questions); |
// List<SurveyQuestionCandidateAnswer> candidates = createSurveyQuestionCandidateAnswers(items); |
// List<SurveyQuestionAnswer> answers = createSurveyQuestionAnswers(responses, candidates); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
public static void printSurveyStructuralNodesOrganized(SurveyStructuralNode node) |
{ |
if(node == null) return; |
for(SurveyStructuralNode n : node.getNodes()) |
{ |
System.out.println(+n.getId()+" - "+n.getMsg()); |
printSurveyStructuralNodesOrganized(n); |
} |
} |
public static void createBarChart(String mText, String hText, String vText, String[] series, int[] numbers) |
{ |
File img = new File(Globals.TMP_DIR + "/teste.png"); |
DefaultCategoryDataset dataset = new DefaultCategoryDataset(); |
if(series.length == numbers.length) |
{ |
for(int i=0; i<series.length; i++) |
{ |
dataset.addValue(numbers[i], series[i], ""); |
} |
} |
CategoryDataset datasett = dataset; |
JFreeChart chart = ChartFactory.createBarChart(mText,hText,vText,datasett,PlotOrientation.VERTICAL,true,true,false); |
try { |
ChartUtilities.saveChartAsPNG(img, chart, 400, 300); |
} catch (IOException e) { |
e.printStackTrace(); |
} |
} |
public static void displayObjectList(List list) |
{ |
Iterator iter = list.iterator(); |
if (!iter.hasNext()) |
{ |
System.out.println("No objects to display."); |
return; |
} |
while (iter.hasNext()) |
{ |
Object obj = iter.next(); |
System.out.println(obj); |
} |
} |
public static void displayObjectListArray(List list) |
{ |
Iterator iter = list.iterator(); |
if (!iter.hasNext()) |
{ |
System.out.println("No objects to display."); |
return; |
} |
while (iter.hasNext()) |
{ |
Object[] objs = (Object[]) iter.next(); |
System.out.print(objs[0]); |
System.out.print(" "); |
System.out.print(objs[1]); |
System.out.print(" "); |
System.out.println(objs[2]); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/SurveyStatsGraphicImpl.java |
---|
New file |
0,0 → 1,39 |
package pt.estgp.estgweb.domain; |
import org.apache.log4j.Logger; |
import java.io.Serializable; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 12-08-2011 |
* @time: 15:23 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveyStatsGraphicImpl extends SurveyStatsGraphic |
{ |
private static final Logger logger = Logger.getLogger(SurveyStatsGraphicImpl.class); |
@Override |
public GenericUser getOwner() { |
return null; |
} |
@Override |
public List<String> getOwnerRoles() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
public String getChoosedOwnerRole() { |
logger.warn("Invoke not implemented method in class:" + getClass().getName()); |
return null; |
} |
@Override |
public Serializable getSerializable() { |
return getId(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/chains/ResourceAccessControlEnum.java |
---|
15,7 → 15,9 |
adminDomain("resource.access.adminDomain",new ResourceAccessControlAdminDomainFilter()), |
superUserDomain("resource.access.superDomain",new ResourceAccessControlSuperDomainFilter()), |
courseunitDeliverableDomain("resource.access.courseunitDeliverableDomain",new ResourceAccessControlCourseUnitDeliverableFilter()), |
courseunitDomain("resource.access.courseunitDomain",new ResourceAccessControlCourseUnitFilter()); |
courseunitDomain("resource.access.courseunitDomain",new ResourceAccessControlCourseUnitFilter()), |
// Duarte Santos |
surveyStatsDomain("resource.access.survey", new ResourceAccessControlSurvey()); |
private String key; |
private ResourceAccessControlFilter filter; |
/impl/src/java/pt/estgp/estgweb/filters/filters/CanConsultSurveyStatsClass.java |
---|
New file |
0,0 → 1,49 |
package pt.estgp.estgweb.filters.filters; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.IAddContents; |
import pt.estgp.estgweb.domain.IConsultSurveyStats; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.filters.chains.LoadControlFilter; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException; |
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
/** |
* @author: Duarte Santos |
* @date: 16-08-2011 |
* @time: 20:35 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class CanConsultSurveyStatsClass extends LoadControlFilter |
{ |
private static final Logger logger = Logger.getLogger(CanConsultSurveyStatsClass.class); |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception |
{ |
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY); |
if(userSession.getUser() == null) |
{ |
logger.info("try access restricted area:" + request.getRequester()); |
throw new NeedAuthenticationException(); |
} |
if(userSession.getUser().isSuperuser()) |
return; |
IConsultSurveyStats iConsultSurveyStats = (IConsultSurveyStats) LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1), filterParameters, request.getServiceParameters()); |
if(!iConsultSurveyStats.canConsultSurveyStats(userSession.getUser(),true)) |
{ |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/CanEditSurveyClass.java |
---|
New file |
0,0 → 1,49 |
package pt.estgp.estgweb.filters.filters; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.IConsultSurveyStats; |
import pt.estgp.estgweb.domain.IEdit; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.filters.chains.LoadControlFilter; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException; |
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
/** |
* @author: Duarte Santos |
* @date: 16-08-2011 |
* @time: 22:55 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class CanEditSurveyClass extends LoadControlFilter |
{ |
private static final Logger logger = Logger.getLogger(CanEditSurveyClass.class); |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception |
{ |
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY); |
if(userSession.getUser() == null) |
{ |
logger.info("try access restricted area:" + request.getRequester()); |
throw new NeedAuthenticationException(); |
} |
if(userSession.getUser().isSuperuser()) |
return; |
IEdit iEdit = (IEdit) LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1), filterParameters, request.getServiceParameters()); |
if(!iEdit.canEdit(userSession.getUser(),true)) |
{ |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/ResourceAccessControlSurvey.java |
---|
New file |
0,0 → 1,33 |
package pt.estgp.estgweb.filters.filters; |
import pt.estgp.estgweb.domain.Survey; |
import pt.estgp.estgweb.domain.SurveyStructuralNode; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlFilter; |
/** |
* @author: Duarte Santos |
* @date: 11-08-2011 |
* @time: 21:07 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class ResourceAccessControlSurvey extends ResourceAccessControlFilter |
{ |
@Override |
public boolean canAccessResource(UserSession userSession, String identifier) |
{ |
Survey s; |
s = DaoFactory.getSurveyDaoImpl().loadByRepositoryId(identifier); |
if(s == null) |
{ |
SurveyStructuralNode node = DaoFactory.getSurveyStructuralNodeDaoImpl().loadByRepositoryId(identifier); |
if(node == null) |
return false; |
else |
s = node.getSurvey(); |
} |
return (userSession.getUser().hasRole(s.getStatsConsultRoles()) || userSession.getUser().isAdmin()); |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/DirWebProxy.java |
---|
29,6 → 29,7 |
import jomm.web.ftp.FileType; |
import jomm.web.ftp.impl.FtpFile; |
import jomm.web.utils.NavPlace; |
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException; |
/** |
* @author Jorge Machado |
173,6 → 174,13 |
styleDirectory(request, response); |
} |
} |
catch (NotAuthorizedException e) |
{ |
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request); |
String username = userSession != null ? userSession.getUsername() : "UNKNOWN"; |
logger.warn(username + ": cant access this area server:" + server + " and path:" + path); |
response.sendError(401); |
} |
catch (FileNotFoundException e) |
{ |
logger.warn("url not found for server:" + server + " and path:" + path); |
180,6 → 188,7 |
} |
catch (Exception e) |
{ |
logger.error(e,e); |
throw new IOException(e.toString()); |
} |
} |
221,7 → 230,10 |
request.setAttribute(FTP_ACTUAL_PATH_KEY,startPath); |
if (path.equals(startPath)) |
{ |
client.changeWorkingDirectory(path); |
if(!client.changeWorkingDirectory(path)) |
{ |
throw new NotAuthorizedException(); |
} |
FTPFile[] files = client.listFiles(); |
List<IFile> iFiles = FtpFile.init(files, server, path); |
//root |
259,7 → 271,10 |
pathFragments = pathAux.split("/"); |
client.changeWorkingDirectory(startPath); |
if(!client.changeWorkingDirectory(startPath)) |
{ |
throw new NotAuthorizedException(); |
} |
FTPFile[] files = client.listFiles(); |
List<IFile> iFiles = FtpFile.init(files, server, path); |
Element goDeepElement = null; |
303,7 → 318,11 |
Element nextGoDeepElement = null; |
String d = pathFragments[i]; |
startPathAux = startPathAux + "/" + d; |
client.changeWorkingDirectory(startPathAux); |
if(!client.changeWorkingDirectory(startPathAux)) |
{ |
throw new NotAuthorizedException(); |
} |
files = client.listFiles(); |
iFiles = FtpFile.init(files, server, path); |
354,6 → 373,8 |
} |
catch (Throwable e) |
{ |
if(e instanceof NotAuthorizedException) |
throw (NotAuthorizedException)e; |
logger.error(e, e); |
} |
} |
429,12 → 450,21 |
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request); |
parameters.put("contextPath", request.getContextPath()); |
if (userSession.getUsername() != null) |
parameters.put("username", userSession.getUsername()); |
if (userSession.getName() != null) |
parameters.put("name", userSession.getName()); |
if (userSession.getUser() != null) |
parameters.put("roles", userSession.getUser().getRoles()); |
String username = "descolnhecido"; |
String roles = ""; |
String name = username; |
if (userSession != null && userSession.getUsername() != null) |
username = userSession.getUsername(); |
if (userSession != null && userSession.getName() != null) |
name = userSession.getName(); |
if (userSession != null && userSession.getUser() != null) |
roles = userSession.getUser().getRoles(); |
parameters.put("username", username); |
parameters.put("name", name); |
parameters.put("roles", roles); |
parameters.put("ACTUAL", actualNodeId); |
parameters.put("ACTUAL_REMOTE_CHILD", actualRemoteNodeId); |
/impl/src/java/pt/estgp/estgweb/web/utils/RequestUtils.java |
---|
1,9 → 1,12 |
package pt.estgp.estgweb.web.utils; |
import jomm.utils.BytesUtils; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.web.UserSessionProxy; |
import pt.estgp.estgweb.web.exceptions.NoCookiesException; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import javax.servlet.http.Cookie; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
17,56 → 20,82 |
{ |
public static String getRequester(HttpServletRequest request, HttpServletResponse response) throws NoCookiesException |
{ |
// if(request == null) |
// return "unknown"; |
// if (request.getCookies() == null || request.getCookies().length == 0) |
// { |
if(request == null) |
return "unknown"; |
if (request.getCookies() == null || request.getCookies().length == 0) |
{ |
Cookie cookie = new Cookie(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE, BytesUtils.generateHexKey()); |
//Cookie cookie = new Cookie(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE, request.getSession().getId()); |
response.addCookie(cookie); |
//ONLY TO SAVE COOKIE |
try { |
UserSessionProxy.createUserSession(request,((HttpServletResponse) response),cookie.getValue()); |
return cookie.getValue(); |
}catch(Throwable t){throw new NoCookiesException();} |
} |
else if (request.getCookies() != null && request.getCookies().length > 0) |
{ |
for (Cookie cookie : request.getCookies()) |
{ |
if (cookie.getName().equals(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE)) |
{ |
return cookie.getValue(); |
} |
} |
Cookie cookie = new Cookie(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE, BytesUtils.generateHexKey()); |
// Cookie cookie = new Cookie(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE, request.getSession().getId()); |
// response.addCookie(cookie); |
// return cookie.getValue(); |
// } |
// else if (request.getCookies() != null && request.getCookies().length > 0) |
// { |
// for (Cookie cookie : request.getCookies()) |
// { |
// if (cookie.getName().equals(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE)) |
// { |
// return cookie.getValue(); |
// } |
// } |
// Cookie cookie = new Cookie(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE, request.getSession().getId()); |
// response.addCookie(cookie); |
// return cookie.getValue(); |
// } |
// throw new NoCookiesException(); |
if(request.getSession() != null) |
return request.getSession().getId(); |
return "unkown"; |
response.addCookie(cookie); |
//ONLY TO SAVE COOKIE |
try { |
UserSessionProxy.createUserSession(request,((HttpServletResponse) response),cookie.getValue()); |
return cookie.getValue(); |
}catch(Throwable t){throw new NoCookiesException();} |
} |
throw new NoCookiesException(); |
// if(request.getSession() != null) |
// return request.getSession().getId(); |
// return "unkown"; |
} |
public static boolean existRequester(HttpServletRequest request, HttpServletResponse response) throws NoCookiesException |
{ |
// if (request.getCookies() == null || request.getCookies().length == 0) |
// { |
// Cookie cookie = new Cookie(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE, BytesUtils.generateHexKey()); |
// response.addCookie(cookie); |
// return false; |
// } |
// else if (request.getCookies() != null && request.getCookies().length > 0) |
// { |
// for (Cookie cookie : request.getCookies()) |
// { |
// if (cookie.getName().equals(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE)) |
// { |
// return true; |
// } |
// } |
// Cookie cookie = new Cookie(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE, BytesUtils.generateHexKey()); |
// response.addCookie(cookie); |
// return false; |
// } |
// throw new NoCookiesException(); |
return true; |
if (request.getCookies() == null || request.getCookies().length == 0) |
{ |
Cookie cookie = new Cookie(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE, BytesUtils.generateHexKey()); |
response.addCookie(cookie); |
//ONLY TO SAVE COOKIE |
try { |
UserSessionProxy.createUserSession(request,((HttpServletResponse) response),cookie.getValue()); |
return true; |
}catch(Throwable t){throw new NoCookiesException();} |
} |
else if (request.getCookies() != null && request.getCookies().length > 0) |
{ |
for (Cookie cookie : request.getCookies()) |
{ |
if (cookie.getName().equals(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE)) |
{ |
return true; |
} |
} |
Cookie cookie = new Cookie(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE, BytesUtils.generateHexKey()); |
response.addCookie(cookie); |
//ONLY TO SAVE COOKIE |
try { |
UserSessionProxy.createUserSession(request,((HttpServletResponse) response),cookie.getValue()); |
return true; |
}catch(Throwable t){throw new NoCookiesException();} |
} |
throw new NoCookiesException(); |
// return true; |
} |
private static final String EMPTY_STRING = ""; |
/impl/src/java/pt/estgp/estgweb/web/LayoutController.java |
---|
10,8 → 10,10 |
import org.apache.struts.action.ActionForm; |
import org.apache.struts.action.ActionForward; |
import org.apache.struts.action.ActionMapping; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController; |
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException; |
import javax.servlet.ServletException; |
import javax.servlet.http.HttpServletRequest; |
106,6 → 108,8 |
} |
catch (Throwable e) |
{ |
if(e instanceof NotAuthorizedException) |
throw (NotAuthorizedException)e; |
logger.error(e, e); |
throw new IOException(e.toString()); |
} |
123,6 → 127,9 |
//Check if user wants to create folders or upload files |
FtpManager.checkOperations(this,request,response); |
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request); |
String username = userSession != null ? userSession.getUsername() : "UNKNOWN"; |
String user = ConfigProperties.getProperty(serverStr + ".user"); |
String pass = ConfigProperties.getProperty(serverStr + ".pass"); |
131,7 → 138,11 |
FtpServer ftpServer = FtpServer.getServer(server, user, pass); |
FTPClient client = ftpServer.getClient(); |
client.changeWorkingDirectory(path); |
if(!client.changeWorkingDirectory(path)) |
{ |
logger.warn(username + ": cant access this area server:" + server + " and path:" + path); |
throw new NotAuthorizedException("nao pode aceder a esta area"); |
} |
FTPFile[] files = client.listFiles(); |
List<IFile> iFiles = new ArrayList<IFile>(); |
for (FTPFile ftpFile : files) |
155,6 → 166,8 |
} |
catch (Throwable e) |
{ |
if(e instanceof NotAuthorizedException) |
throw (NotAuthorizedException)e; |
logger.error(e, e); |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/form/surveys/SurveysForm.java |
---|
New file |
0,0 → 1,300 |
package pt.estgp.estgweb.web.form.surveys; |
import org.apache.log4j.Logger; |
import org.apache.struts.action.ActionErrors; |
import org.apache.struts.action.ActionMapping; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.Survey; |
import pt.estgp.estgweb.domain.views.*; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.web.form.AddRolesForm; |
import javax.servlet.http.HttpServletRequest; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* @author: Duarte Santos |
* @date: 27-05-2011 |
* @time: 15:31 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveysForm extends AddRolesForm |
{ |
private static final Logger logger = Logger.getLogger(SurveysForm.class); |
private static List<String> surveyTypes = ConfigProperties.getListValues("surveys.type"); |
private static List<String> surveyTargetRoles = ConfigProperties.getListValues("surveys.target.role"); |
private static List<String> surveyTargetPairs = ConfigProperties.getListValues("surveys.target.pair"); |
private static List<String> surveyStatsConsultRoles = ConfigProperties.getListValues("surveys.stats.consult.role"); |
private static List<String> surveyQuestionTypes = ConfigProperties.getListValues("surveys.question.type"); |
private SurveyView surveyView = new SurveyView(); |
private SurveyResponseView surveyResponseView = new SurveyResponseView(); |
private String startDate; |
private String endDate; |
private String questionType; |
private long counter = -1; |
public SurveysForm() |
{ |
if(surveyTypes.size() > 0) |
surveyView.setType(surveyTypes.get(0)); |
} |
public SurveyView getSurveyView() |
{ |
return surveyView; |
} |
public void setSurveyView(SurveyView surveyView) |
{ |
this.surveyView = surveyView; |
} |
public SurveyResponseView getSurveyResponseView() { |
return surveyResponseView; |
} |
public void setSurveyResponseView(SurveyResponseView surveyResponseView) { |
this.surveyResponseView = surveyResponseView; |
} |
public List<String> getSurveyTypes() { |
return surveyTypes; |
} |
public void setSurveyTypes(List<String> surveyTypes) { |
SurveysForm.surveyTypes = surveyTypes; |
} |
public List<String> getSurveyTargetRoles() { |
return surveyTargetRoles; |
} |
public void setSurveyTargetRoles(List<String> surveyTargetRoles) { |
SurveysForm.surveyTargetRoles = surveyTargetRoles; |
} |
public List<String> getSurveyStatsConsultRoles() { |
return surveyStatsConsultRoles; |
} |
public void setSurveyStatsConsultRoles(List<String> surveyStatsConsultRoles) { |
SurveysForm.surveyStatsConsultRoles = surveyStatsConsultRoles; |
} |
public List<String> getSurveyTargetPairs() { |
return surveyTargetPairs; |
} |
public void setSurveyTargetPairs(List<String> surveyTargetPairs) { |
SurveysForm.surveyTargetPairs = surveyTargetPairs; |
} |
public List<String> getSurveyQuestionTypes() { |
return surveyQuestionTypes; |
} |
public void setSurveyQuestionTypes(List<String> surveyQuestionTypes) { |
SurveysForm.surveyQuestionTypes = surveyQuestionTypes; |
} |
public String getStartDate() { |
return startDate; |
} |
public void setStartDate(String startDate) { |
this.startDate = startDate; |
} |
public String getEndDate() { |
return endDate; |
} |
public void setEndDate(String endDate) { |
this.endDate = endDate; |
} |
public String getQuestionType() { |
return questionType; |
} |
public void setQuestionType(String questionType) { |
this.questionType = questionType; |
} |
public long getCounter() { |
return counter; |
} |
public void setCounter(long counter) { |
this.counter = counter; |
} |
public long getCounterAndDec() |
{ |
return this.counter--; |
} |
public void reset(ActionMapping actionMapping, HttpServletRequest request) |
{ |
String parameter0 = request.getParameter("questionsListSize"); |
if(parameter0 != null) |
{ |
int questionsSize = Integer.parseInt(parameter0); |
surveyView.setQuestions(new ArrayList<SurveyQuestionView>()); |
for(int i=0;i<questionsSize;i++) |
{ |
surveyView.getQuestions().add(new SurveyQuestionView()); |
String parameter1 = request.getParameter("itemsListSize"+i); |
if(parameter1 != null) |
{ |
int itemsSize = Integer.parseInt(parameter1); |
surveyView.getQuestions().get(i).setItems(new ArrayList<SurveyQuestionItemView>()); |
for(int j=0;j<itemsSize;j++) |
{ |
surveyView.getQuestions().get(i).getItems().add(new SurveyQuestionItemView()); |
String parameter2 = request.getParameter("candidatesListSize"+i+j); |
int candidatesSize = 0; |
if(parameter2 != null) |
{ |
candidatesSize = Integer.parseInt(parameter2); |
surveyView.getQuestions().get(i).getItems().get(j).setCandidates(new ArrayList<SurveyQuestionCandidateAnswerView>()); |
for(int k=0;k<candidatesSize;k++) |
{ |
surveyView.getQuestions().get(i).getItems().get(j).getCandidates().add(new SurveyQuestionCandidateAnswerView()); |
} |
} |
} |
} |
String parameter3 = request.getParameter("candidatesLabelsSize"+i); |
if(parameter3 != null) |
{ |
int candidatesLabelsSize = Integer.parseInt(parameter3); |
surveyView.getQuestions().get(i).setCandidatesLabels(new ArrayList<SurveyQuestionCandidateAnswerView>()); |
for(int m=0;m<candidatesLabelsSize;m++) |
{ |
surveyView.getQuestions().get(i).getCandidatesLabels().add(new SurveyQuestionCandidateAnswerView()); |
} |
} |
} |
} |
} |
public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) |
{ |
ActionErrors errors = new ActionErrors(); |
if(httpServletRequest.getParameter("dispatch").equals("save")) |
{ |
if(surveyView.getTitle() == null || surveyView.getTitle().trim().length() == 0) |
addMessageWithKeys(errors,httpServletRequest,"errors.required","survey.submit.form.title"); |
if(endDate == null || endDate.length() == 0) |
addMessage(errors,httpServletRequest,"survey.submit.form.error.need.expire.date"); |
if(surveyView.getQuestions().size() == 0) |
addMessage(errors,httpServletRequest,"survey.submit.form.error.need.questions"); |
else |
{ |
int i = 1; |
for(SurveyQuestionView qView : surveyView.getQuestions()) |
{ |
if(qView.getLabelpt() == null || qView.getLabelpt().trim().length() == 0) |
addMessage(errors, httpServletRequest, "survey.submit.form.error.question.need.label", Integer.toString(i)); |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_RADIO) || qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_CHECK)) |
{ |
SurveyQuestionItemView iView = qView.getItems().get(0); |
if(iView.getCandidates().size() == 0) |
addMessage(errors, httpServletRequest, "survey.submit.form.error.question.need.hoption", Integer.toString(i)); |
else |
{ |
for(SurveyQuestionCandidateAnswerView cView : iView.getCandidates()) |
{ |
if(cView.getLabelpt() == null || cView.getLabelpt().trim().length() == 0) |
addMessage(errors, httpServletRequest, "survey.submit.form.error.question.options.need.labels",Integer.toString(i)); |
} |
} |
} |
else if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_MATRIX)) |
{ |
boolean flag = false; |
if(qView.getItems().size() == 0) |
addMessage(errors, httpServletRequest, "survey.submit.form.error.question.need.hoption", Integer.toString(i)); |
else |
{ |
for(SurveyQuestionItemView iView : qView.getItems()) |
{ |
if(iView.getLabelpt() == null || iView.getLabelpt().trim().length() == 0) |
flag = true; |
} |
} |
if(qView.getCandidatesLabels().size() == 0) |
addMessage(errors, httpServletRequest, "survey.submit.form.error.question.need.voption", Integer.toString(i)); |
else |
{ |
for(SurveyQuestionCandidateAnswerView cView : qView.getCandidatesLabels()) |
{ |
if(cView.getLabelpt() == null || cView.getLabelpt().trim().length() == 0) |
flag = true; |
} |
} |
if(flag) |
addMessage(errors, httpServletRequest, "survey.submit.form.error.question.options.need.labels",Integer.toString(i)); |
} |
i++; |
} |
} |
} |
else if(httpServletRequest.getParameter("dispatch").equals("answer")) |
{ |
int i = 1; |
for(SurveyQuestionView qView : surveyView.getQuestions()) |
{ |
boolean flagM = false; |
for(SurveyQuestionItemView iView : qView.getItems()) |
{ |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_TEXT) && qView.isRequired() && (iView.getTextareaValue() == null || iView.getTextareaValue().length() == 0)) |
addMessage(errors, httpServletRequest, "survey.answer.form.error.answer.question.required",Integer.toString(i)); |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_RADIO) && qView.isRequired() && iView.getRadioValue() == null) |
addMessage(errors, httpServletRequest, "survey.answer.form.error.answer.question.required",Integer.toString(i)); |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_CHECK) && qView.isRequired()) |
{ |
boolean flagC = false; |
for(SurveyQuestionCandidateAnswerView cView : iView.getCandidates()) |
{ |
if(cView.isCheckbox()) |
flagC = true; |
} |
if(!flagC) |
addMessage(errors, httpServletRequest, "survey.answer.form.error.answer.question.required",Integer.toString(i)); |
} |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_MATRIX) && qView.isRequired() && iView.getRadioValue() == null) |
{ |
flagM = true; |
} |
} |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_MATRIX) && flagM) |
addMessage(errors, httpServletRequest, "survey.answer.form.error.answer.question.required",Integer.toString(i)); |
i++; |
} |
} |
return errors; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/Globals.java |
---|
2,8 → 2,6 |
import pt.estgp.estgweb.utils.ConfigProperties; |
import javax.servlet.http.HttpServletRequest; |
/** |
* @author Fabio |
* @date 31/Mar/2008 |
/impl/src/java/pt/estgp/estgweb/web/UserSessionProxy.java |
---|
65,6 → 65,23 |
} |
} |
public static UserSession createUserSession(HttpServletRequest request, HttpServletResponse response,String requester) throws Throwable |
{ |
try |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
Object[] args = new Object[]{RequestUtils.getRequester(request, response)}; |
UserSession userSession = (UserSession) sm.execute(requester,"LoadUserSession",args); |
request.setAttribute(Globals.USER_SESSION_KEY,userSession); |
return userSession; |
} |
catch (Throwable e) |
{ |
throw e; |
} |
} |
public static UserSession loadUserSessionFromRequest(HttpServletRequest request) |
{ |
return (UserSession) request.getAttribute(Globals.USER_SESSION_KEY); |
/impl/src/java/pt/estgp/estgweb/web/controllers/surveys/SurveysController.java |
---|
New file |
0,0 → 1,687 |
package pt.estgp.estgweb.web.controllers.surveys; |
import org.apache.log4j.Logger; |
import org.apache.struts.action.ActionForm; |
import org.apache.struts.action.ActionForward; |
import org.apache.struts.action.ActionMapping; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.views.*; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.estgp.estgweb.web.UserSessionProxy; |
import pt.estgp.estgweb.web.controllers.AddRolesController; |
import pt.estgp.estgweb.web.form.surveys.SurveysForm; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
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 javax.servlet.ServletException; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
/** |
* @author: Duarte Santos |
* @date: 27-05-2011 |
* @time: 15:31 |
* @email: a12564 [at] estgp [dot] pt |
*/ |
public class SurveysController extends AddRolesController |
{ |
private static final Logger logger = Logger.getLogger(SurveysController.class); |
@Override |
protected ActionForward unspecified(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Exception |
{ |
return mapping.getInputForward(); |
} |
public ActionForward save(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
{ |
SurveysForm surveyForm = (SurveysForm) form; |
SurveyView view = surveyForm.getSurveyView(); |
view.setStartDate(DatesUtils.getDateFromString(surveyForm.getStartDate())); |
view.setEndDate(DatesUtils.getDateFromString(surveyForm.getEndDate())); |
for(SurveyQuestionView qView : view.getQuestions()) |
{ |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_MATRIX)) |
{ |
for(SurveyQuestionItemView iView : qView.getItems()) |
{ |
int index = 0; |
for(SurveyQuestionCandidateAnswerView cView : iView.getCandidates()) |
{ |
cView.setLabelpt(qView.getCandidatesLabels().get(index).getLabelpt()); |
index++; |
} |
} |
} |
} |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"serializable"}; |
Object[] args = {view,request}; |
boolean newSurvey = true; |
if(view.getId() > 0) |
newSurvey = false; |
SurveyView surveyView; |
surveyView = (SurveyView) sm.execute(RequestUtils.getRequester(request,response),"CreateEditSurvey",args,names); |
surveyForm.setSurveyView(surveyView); |
if(surveyView != null) |
{ |
if(newSurvey) |
addMessage(request, "survey.message.created.success"); |
else |
addMessage(request, "survey.message.edited.success"); |
} |
return mapping.findForward("serviceZone"); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward changeSurveyType(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
// This action dont really do anything, its only to update the form |
return mapping.getInputForward(); |
} |
public ActionForward addQuestion(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
SurveysForm surveyForm = (SurveysForm) form; |
SurveyView surveyView = surveyForm.getSurveyView(); |
long id1 = surveyForm.getCounterAndDec(); |
SurveyQuestionView qView = new SurveyQuestionView(); |
qView.setId(id1); |
qView.setRequired(false); |
qView.setType(surveyForm.getQuestionType()); |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_TEXT)) |
{ |
SurveyQuestionItemView iView = new SurveyQuestionItemView(); |
iView.setId(surveyForm.getCounterAndDec()); |
SurveyQuestionCandidateAnswerView cView = new SurveyQuestionCandidateAnswerView(); |
cView.setId(surveyForm.getCounterAndDec()); |
cView.setType(qView.getType()); |
iView.getCandidates().add(cView); |
qView.getItems().add(iView); |
} |
else if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_CHECK) || qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_RADIO)) |
{ |
SurveyQuestionItemView iView = new SurveyQuestionItemView(); |
iView.setId(surveyForm.getCounterAndDec()); |
qView.getItems().add(iView); |
} |
surveyView.getQuestions().add(qView); |
return mapping.getInputForward(); |
} |
public ActionForward removeQuestion(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
SurveysForm surveyForm = (SurveysForm) form; |
SurveyView surveyView = surveyForm.getSurveyView(); |
if(request.getParameter("questionId") != null) |
{ |
int questionIndex = Integer.parseInt(request.getParameter("questionId")); |
SurveyQuestionView qView = surveyView.getQuestions().get(questionIndex); |
String questionsToDelete = surveyView.getDeletedQuestions()+qView.getId()+","; |
String itemsToDelete = surveyView.getDeletedItems(); |
String candidatesToDelete = surveyView.getDeletedCandidates(); |
for(SurveyQuestionItemView iView : qView.getItems()) |
{ |
itemsToDelete = itemsToDelete+iView.getId()+","; |
for(SurveyQuestionCandidateAnswerView cView : iView.getCandidates()) |
{ |
candidatesToDelete = candidatesToDelete+cView.getId()+","; |
} |
} |
surveyView.setDeletedQuestions(questionsToDelete); |
surveyView.setDeletedItems(itemsToDelete); |
surveyView.setDeletedCandidates(candidatesToDelete); |
surveyView.getQuestions().remove(questionIndex); |
} |
return mapping.getInputForward(); |
} |
public ActionForward addItemOption(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
SurveysForm surveyForm = (SurveysForm) form; |
SurveyView surveyView = surveyForm.getSurveyView(); |
long id = surveyForm.getCounterAndDec(); |
if(request.getParameter("questionId") != null) |
{ |
int questionIndex = Integer.parseInt(request.getParameter("questionId")); |
SurveyQuestionView qView = surveyView.getQuestions().get(questionIndex); |
SurveyQuestionItemView iView = new SurveyQuestionItemView(); |
iView.setId(id); |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_MATRIX)) |
{ |
for(SurveyQuestionCandidateAnswerView candidateLabel : qView.getCandidatesLabels()) |
{ |
SurveyQuestionCandidateAnswerView cView = new SurveyQuestionCandidateAnswerView(); |
cView.setId(surveyForm.getCounterAndDec()); |
iView.getCandidates().add(cView); |
} |
} |
qView.getItems().add(iView); |
} |
return mapping.getInputForward(); |
} |
public ActionForward removeItemOption(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
SurveysForm surveyForm = (SurveysForm) form; |
SurveyView surveyView = surveyForm.getSurveyView(); |
if(request.getParameter("questionId") != null && request.getParameter("itemId") != null) |
{ |
int questionIndex = Integer.parseInt(request.getParameter("questionId")); |
int itemIndex = Integer.parseInt(request.getParameter("itemId")); |
SurveyQuestionView qView = surveyView.getQuestions().get(questionIndex); |
SurveyQuestionItemView iView = qView.getItems().get(itemIndex); |
String itemsToDelete = ""+iView.getId()+","; |
String candidatesToDelete = ""; |
for(SurveyQuestionCandidateAnswerView cView : iView.getCandidates()) |
{ |
candidatesToDelete = candidatesToDelete+cView.getId()+","; |
} |
surveyView.setDeletedItems(surveyView.getDeletedItems().concat(itemsToDelete)); |
surveyView.setDeletedCandidates(surveyView.getDeletedCandidates().concat(candidatesToDelete)); |
qView.getItems().remove(itemIndex); |
} |
return mapping.getInputForward(); |
} |
public ActionForward addCandidateOption(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
SurveysForm surveyForm = (SurveysForm) form; |
SurveyView surveyView = surveyForm.getSurveyView(); |
if(request.getParameter("questionId") != null) |
{ |
int questionIndex = Integer.parseInt(request.getParameter("questionId")); |
SurveyQuestionView qView = surveyView.getQuestions().get(questionIndex); |
if(!qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_TEXT) && qView.getItems().size() == 0) |
{ |
addError(request,"survey.submit.form.error.question.need.hoption.first"); |
return mapping.getInputForward(); |
} |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_MATRIX)) |
qView.getCandidatesLabels().add(new SurveyQuestionCandidateAnswerView()); |
for(SurveyQuestionItemView iView : qView.getItems()) |
{ |
long id = surveyForm.getCounterAndDec(); |
SurveyQuestionCandidateAnswerView cView = new SurveyQuestionCandidateAnswerView(); |
cView.setId(id); |
cView.setType(qView.getType()); |
iView.getCandidates().add(cView); |
} |
} |
return mapping.getInputForward(); |
} |
public ActionForward removeCandidateOption(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
SurveysForm surveyForm = (SurveysForm) form; |
SurveyView surveyView = surveyForm.getSurveyView(); |
if(request.getParameter("questionId") != null && request.getParameter("candidateId") != null) |
{ |
int questionIndex = Integer.parseInt(request.getParameter("questionId")); |
int candidateIndex = Integer.parseInt(request.getParameter("candidateId")); |
SurveyQuestionView qView = surveyView.getQuestions().get(questionIndex); |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_MATRIX)) |
qView.getCandidatesLabels().remove(candidateIndex); |
String candidatesToDelete = ""; |
for(SurveyQuestionItemView iView : qView.getItems()) |
{ |
SurveyQuestionCandidateAnswerView cView = iView.getCandidates().get(candidateIndex); |
iView.getCandidates().remove(candidateIndex); |
candidatesToDelete = candidatesToDelete+cView.getId()+","; |
} |
surveyView.setDeletedCandidates(surveyView.getDeletedCandidates().concat(candidatesToDelete)); |
} |
return mapping.getInputForward(); |
} |
public ActionForward edit(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try { |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"serializable"}; |
Object[] args = {new Long(request.getParameter("id"))}; |
SurveyView view; |
view = (SurveyView) sm.execute(RequestUtils.getRequester(request,response),"LoadEditSurvey",args,names); |
if(view != null) |
{ |
SurveysForm surveysForm = (SurveysForm) form; |
surveysForm.setStartDate(DatesUtils.getStringFromDate(view.getStartDate())); |
surveysForm.setEndDate(DatesUtils.getStringFromDate(view.getEndDate())); |
for(SurveyQuestionView qView : view.getQuestions()) |
{ |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_MATRIX)) |
{ |
SurveyQuestionItemView iView = qView.getItems().get(0); |
for(SurveyQuestionCandidateAnswerView cView : iView.getCandidates()) |
{ |
SurveyQuestionCandidateAnswerView cViewAux = new SurveyQuestionCandidateAnswerView(); |
cViewAux.setLabelpt(cView.getLabelpt()); |
qView.getCandidatesLabels().add(cViewAux); |
} |
} |
} |
surveysForm.setSurveyView(view); |
return mapping.getInputForward(); |
} |
return mapping.findForward("serviceZone"); |
} |
catch(FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward clone(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try { |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"serializable"}; |
Object[] args = {new Long(request.getParameter("id"))}; |
SurveyView surveyView; |
surveyView = (SurveyView) sm.execute(RequestUtils.getRequester(request,response),"LoadCloneSurvey",args,names); |
if(surveyView != null) |
{ |
SurveysForm surveysForm = (SurveysForm) form; |
surveysForm.setStartDate(null); |
surveysForm.setEndDate(null); |
surveyView.setId(surveysForm.getCounterAndDec()); |
surveyView.setTitle(null); |
for(SurveyQuestionView qView : surveyView.getQuestions()) |
{ |
qView.setId(surveysForm.getCounterAndDec()); |
for(SurveyQuestionItemView iView : qView.getItems()) |
{ |
iView.setId(surveysForm.getCounterAndDec()); |
for(SurveyQuestionCandidateAnswerView aView : iView.getCandidates()) |
{ |
aView.setId(surveysForm.getCounterAndDec()); |
} |
} |
} |
for(SurveyQuestionView qView : surveyView.getQuestions()) |
{ |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_MATRIX)) |
{ |
SurveyQuestionItemView iView = qView.getItems().get(0); |
for(SurveyQuestionCandidateAnswerView cView : iView.getCandidates()) |
{ |
SurveyQuestionCandidateAnswerView cViewAux = new SurveyQuestionCandidateAnswerView(); |
cViewAux.setLabelpt(cView.getLabelpt()); |
qView.getCandidatesLabels().add(cViewAux); |
} |
} |
} |
surveysForm.setSurveyView(surveyView); |
return mapping.getInputForward(); |
} |
return mapping.findForward("serviceZone"); |
} |
catch(FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward consist(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try { |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"serializable"}; |
Object[] args = {new Long(request.getParameter("id")),request}; |
sm.execute(RequestUtils.getRequester(request,response),"ConsistSurvey",args,names); |
addMessage(request,"survey.message.operation.started"); |
return mapping.findForward("serviceZone"); |
} |
catch(FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward generateStats(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"serializable"}; |
Object[] args = {new Long(request.getParameter("id")),request}; |
sm.execute(RequestUtils.getRequester(request,response),"GenerateSurveyStats",args,names); |
addMessage(request,"survey.message.operation.started"); |
return mapping.findForward("serviceZone"); |
} |
catch(FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward listStats(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"serializable"}; |
Object[] args = {new Long(request.getParameter("id"))}; |
SurveyView view; |
view = (SurveyView) sm.execute(RequestUtils.getRequester(request,response),"LoadListStatsSurvey",args,names); |
if(view != null) |
{ |
request.setAttribute("SurveyView",view); |
return mapping.findForward("stats"); |
} |
return mapping.findForward("serviceZone"); |
} |
catch(FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward loadResponse(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
SurveysForm surveysForm = (SurveysForm) form; |
try |
{ |
long resp = Long.parseLong(request.getParameter("resp")); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"serializable"}; |
Object[] args = {resp}; |
SurveyResponseView surveyResponseView; |
surveyResponseView = (SurveyResponseView) sm.execute(RequestUtils.getRequester(request,response),"LoadSurveyResponse",args,names); |
if(surveyResponseView != null) |
{ |
surveysForm.setSurveyResponseView(surveyResponseView); |
String[] names2 = {"serializable"}; |
Object[] args2 = {surveyResponseView.getStructuralNodeView().getSurveyView().getId()}; |
SurveyView surveyView; |
surveyView = (SurveyView) sm.execute(RequestUtils.getRequester(request,response),"LoadSurvey",args2,names2); |
if(surveyView != null) |
{ |
for(SurveyQuestionView qView : surveyView.getQuestions()) |
{ |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_MATRIX)) |
{ |
SurveyQuestionItemView iView = qView.getItems().get(0); |
for(SurveyQuestionCandidateAnswerView cView : iView.getCandidates()) |
{ |
SurveyQuestionCandidateAnswerView cViewAux = new SurveyQuestionCandidateAnswerView(); |
cViewAux.setLabelpt(cView.getLabelpt()); |
qView.getCandidatesLabels().add(cViewAux); |
} |
} |
} |
surveysForm.setSurveyView(surveyView); |
return mapping.findForward("response"); |
} |
} |
return mapping.findForward("serviceZone"); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
public ActionForward answer(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
SurveysForm surveysForm = (SurveysForm) form; |
SurveyView sView = surveysForm.getSurveyView(); |
SurveyResponseView rView = surveysForm.getSurveyResponseView(); |
for(SurveyQuestionView qView : sView.getQuestions()) |
{ |
for(SurveyQuestionItemView iView : qView.getItems()) |
{ |
SurveyQuestionAnswerView aView = new SurveyQuestionAnswerView(); |
aView.setId(-1); |
for(SurveyQuestionCandidateAnswerView cView : iView.getCandidates()) |
{ |
if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_TEXT)) |
{ |
String textValue = iView.getTextareaValue(); |
if(textValue != null && textValue.length() > 0) |
{ |
aView.setTextAnswer(textValue); |
aView.setCandidateAnswer(cView); |
cView.getAnswers().add(aView); |
} |
} |
else if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_RADIO) || qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_MATRIX)) |
{ |
String radioValue = iView.getRadioValue(); |
if(radioValue != null) |
{ |
long cId = Long.parseLong(iView.getRadioValue()); |
if(cView.getId() == cId) |
{ |
aView.setCandidateAnswer(cView); |
cView.getAnswers().add(aView); |
} |
} |
} |
else if(qView.getType().equals(Globals.SURVEY_QUESTION_TYPE_CHECK)) |
{ |
if(cView.isCheckbox()) |
{ |
SurveyQuestionAnswerView aView2 = new SurveyQuestionAnswerView(); |
aView2.setId(-1); |
aView2.setCandidateAnswer(cView); |
cView.getAnswers().add(aView2); |
} |
} |
} |
} |
} |
try |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"serializable"}; |
Object[] args = {rView.getId(),sView}; |
SurveyView surveyView; |
surveyView = (SurveyView) sm.execute(RequestUtils.getRequester(request,response),"InsertSurveyAnswers",args,names); |
if(surveyView != null) |
{ |
addMessage(request, "survey.message.answered.success"); |
} |
return mapping.findForward("home"); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/filters/UserFilter.java |
---|
1,19 → 1,14 |
package pt.estgp.estgweb.web.filters; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import javax.servlet.*; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import java.io.IOException; |
import java.util.Locale; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.web.UserSessionProxy; |
import pt.estgp.estgweb.web.exceptions.NoCookiesException; |
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException; |
import pt.estgp.estgweb.Globals; |
/** |
* |
* @author Jorge Machado |
49,8 → 44,13 |
chain.doFilter(request,response); |
UserSessionImpl userSession = (UserSessionImpl) request.getAttribute(Globals.USER_SESSION_KEY); |
if(userSession.getUser() != null) |
if(userSession != null && userSession.getUser() != null) |
chain.doFilter(request,response); |
else if(userSession == null) |
{ |
logger.info("User lost Session"); |
} |
else |
{ |
((HttpServletResponse)response).sendError(401); |
/impl/src/java/pt/estgp/estgweb/web/filters/UserSessionFilter.java |
---|
3,21 → 3,17 |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.web.UserSessionProxy; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import pt.estgp.estgweb.web.exceptions.NoCookiesException; |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.*; |
import javax.servlet.*; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import java.io.IOException; |
import java.util.List; |
import java.util.Locale; |
import java.util.List; |
/** |
* |
92,7 → 88,11 |
} |
if(((HttpServletRequest)request).getServletPath().indexOf("errorNoCookies.do")>=0 || !hrequest.isRequestedSessionIdFromCookie()) |
{ |
chain.doFilter(request,response); |
logger.info("COOKIE lost"); |
return; |
} |
try |
{ |
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(hrequest,((HttpServletResponse) response)); |
/impl/src/java/pt/estgp/estgweb/web/FTPProxy.java |
---|
1,31 → 1,26 |
package pt.estgp.estgweb.web; |
import org.apache.log4j.Logger; |
import jomm.web.ftp.IFile; |
import jomm.web.ftp.impl.FtpFile; |
import jomm.web.utils.NavPlace; |
import org.apache.commons.httpclient.util.URIUtil; |
import org.apache.commons.net.ftp.FTPClient; |
import org.apache.commons.net.ftp.FTPFile; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException; |
import javax.servlet.ServletException; |
import javax.servlet.http.HttpServlet; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import javax.servlet.ServletException; |
import java.io.IOException; |
import java.io.InputStream; |
import java.io.OutputStream; |
import java.io.FileNotFoundException; |
import java.net.URL; |
import java.net.URLConnection; |
import java.io.IOException; |
import java.net.MalformedURLException; |
import java.net.SocketException; |
import java.net.URL; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.List; |
import java.util.ArrayList; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import jomm.web.ftp.IFile; |
import jomm.web.ftp.impl.FtpFile; |
import jomm.web.utils.NavPlace; |
/** |
* @author Jorge Machado |
* @date 26/Fev/2008 |
95,7 → 90,10 |
{ |
FtpServer ftpServer = getServer(server,user,pass); |
FTPClient client = ftpServer.getClient(); |
client.changeWorkingDirectory(URIUtil.encodePath(path,"ISO-8859-1")); |
if(!client.changeWorkingDirectory(URIUtil.encodePath(path,"ISO-8859-1"))) |
{ |
throw new NotAuthorizedException(); |
} |
FTPFile[] files = client.listFiles(); |
List<IFile> iFiles = new ArrayList<IFile>(); |
for(FTPFile ftpFile : files) |
105,7 → 103,7 |
iFile = new FtpFile(ftpFile,server + path + ftpFile.getName(),path); |
else |
iFile = new FtpFile(ftpFile,server + path + "/" + ftpFile.getName(),path); |
iFiles.add(iFile); |
} |
List<NavPlace> navPlaces = FtpFile.getNavPlaces(path,""); |
/impl/src/updates/db/update10Surveys.sql |
---|
New file |
0,0 → 1,167 |
DROP TABLE IF EXISTS `surveystructuralnode`; |
CREATE TABLE `surveystructuralnode` ( |
`id` bigint(20) NOT NULL auto_increment, |
`discriminator` varchar(255) NOT NULL, |
`msg` varchar(255) default NULL, |
`msgKey` varchar(255) default NULL, |
`myKey` varchar(255) default NULL, |
`parentNode` bigint(20) default NULL, |
`survey` bigint(20) default NULL, |
PRIMARY KEY (`id`), |
KEY `msgKeyIndex` (`msgKey`), |
KEY `myKeyIndex` (`myKey`), |
KEY `msgIndex` (`msg`), |
KEY `FK9A3D3A3991D39EEB` (`parentNode`), |
KEY `FK9A3D3A39383CD3FA` (`survey`), |
CONSTRAINT `FK_surveystructuralnode_1` FOREIGN KEY (`parentNode`) REFERENCES `surveystructuralnode` (`id`) |
) ENGINE=Innodb DEFAULT CHARSET=latin1; |
DROP TABLE IF EXISTS `survey`; |
CREATE TABLE `survey` ( |
`id` bigint(20) NOT NULL auto_increment, |
`discriminator` varchar(255) NOT NULL, |
`updateDate` datetime NOT NULL, |
`title` varchar(255) default NULL, |
`saveDate` datetime default NULL, |
`startDate` datetime default NULL, |
`endDate` datetime default NULL, |
`type` varchar(255) default NULL, |
`targetRoles` varchar(255) default NULL, |
`statsConsultRoles` varchar(255) default NULL, |
`year` varchar(255) default NULL, |
`semester` varchar(255) default NULL, |
`status` varchar(255) default NULL, |
`owner` bigint(20) default NULL, |
`structuralNode` bigint(20) default NULL, |
`identifier` varchar(255) default NULL, |
`statusPercentage` int(11) default NULL, |
PRIMARY KEY (`id`), |
KEY `FKCAE3A75AFF83C59E` (`structuralNode`), |
KEY `FKCAE3A75A410CFD44` (`owner`), |
KEY `FKCAE3A75A52876F6F` (`owner`), |
CONSTRAINT `FKCAE3A75A410CFD44` FOREIGN KEY (`owner`) REFERENCES `user` (`id`), |
CONSTRAINT `FKCAE3A75A52876F6F` FOREIGN KEY (`owner`) REFERENCES `user` (`id`), |
CONSTRAINT `FKCAE3A75AFF83C59E` FOREIGN KEY (`structuralNode`) REFERENCES `surveystructuralnode` (`id`) |
) ENGINE=Innodb DEFAULT CHARSET=latin1; |
-- |
-- Table structure for table `surveyresponse` |
-- |
DROP TABLE IF EXISTS `surveyresponse`; |
CREATE TABLE `surveyresponse` ( |
`id` bigint(20) NOT NULL auto_increment, |
`discriminator` varchar(255) NOT NULL, |
`date` datetime default NULL, |
`answered` bit(1) default NULL, |
`structuralNode` bigint(20) default NULL, |
`owner` bigint(20) default NULL, |
PRIMARY KEY (`id`), |
KEY `FKE812C19BFF83C59E` (`structuralNode`), |
KEY `FKE812C19B410CFD44` (`owner`), |
KEY `FKE812C19B52876F6F` (`owner`), |
CONSTRAINT `FKE812C19B410CFD44` FOREIGN KEY (`owner`) REFERENCES `user` (`id`), |
CONSTRAINT `FKE812C19B52876F6F` FOREIGN KEY (`owner`) REFERENCES `user` (`id`), |
CONSTRAINT `FKE812C19BFF83C59E` FOREIGN KEY (`structuralNode`) REFERENCES `surveystructuralnode` (`id`) |
) ENGINE=Innodb DEFAULT CHARSET=latin1; |
-- |
-- Table structure for table `surveyquestion` |
-- |
DROP TABLE IF EXISTS `surveyquestion`; |
CREATE TABLE `surveyquestion` ( |
`id` bigint(20) NOT NULL auto_increment, |
`discriminator` varchar(255) NOT NULL, |
`labelpt` varchar(255) default NULL, |
`labelen` varchar(255) default NULL, |
`required` bit(1) default NULL, |
`type` varchar(255) default NULL, |
`survey` bigint(20) default NULL, |
PRIMARY KEY (`id`), |
KEY `FKB6DDE940383CD3FA` (`survey`), |
CONSTRAINT `FKB6DDE940383CD3FA` FOREIGN KEY (`survey`) REFERENCES `survey` (`id`) |
) ENGINE=Innodb DEFAULT CHARSET=latin1; |
DROP TABLE IF EXISTS `surveyquestionitem`; |
CREATE TABLE `surveyquestionitem` ( |
`id` bigint(20) NOT NULL auto_increment, |
`discriminator` varchar(255) NOT NULL, |
`labelpt` varchar(255) default NULL, |
`labelen` varchar(255) default NULL, |
`question` bigint(20) default NULL, |
PRIMARY KEY (`id`), |
KEY `FKD778C453EB11688C` (`question`), |
CONSTRAINT `FKD778C453EB11688C` FOREIGN KEY (`question`) REFERENCES `surveyquestion` (`id`) |
) ENGINE=Innodb DEFAULT CHARSET=latin1; |
-- |
-- Table structure for table `surveyquestionanswer` |
-- |
DROP TABLE IF EXISTS `surveyquestioncandidateanswer`; |
CREATE TABLE `surveyquestioncandidateanswer` ( |
`id` bigint(20) NOT NULL auto_increment, |
`discriminator` varchar(255) NOT NULL, |
`labelpt` varchar(255) default NULL, |
`labelen` varchar(255) default NULL, |
`type` varchar(255) default NULL, |
`questionItem` bigint(20) default NULL, |
PRIMARY KEY (`id`), |
KEY `FK5692D5C1BC26ACD2` (`questionItem`), |
CONSTRAINT `FK5692D5C1BC26ACD2` FOREIGN KEY (`questionItem`) REFERENCES `surveyquestionitem` (`id`) |
) ENGINE=Innodb DEFAULT CHARSET=latin1; |
DROP TABLE IF EXISTS `surveyquestionanswer`; |
CREATE TABLE `surveyquestionanswer` ( |
`id` bigint(20) NOT NULL auto_increment, |
`discriminator` varchar(255) NOT NULL, |
`textAnswer` varchar(255) default NULL, |
`candidateAnswer` bigint(20) default NULL, |
`response` bigint(20) default NULL, |
PRIMARY KEY (`id`), |
KEY `FKCE6438FE4D7B1942` (`response`), |
KEY `FKCE6438FEDB91A49C` (`candidateAnswer`), |
CONSTRAINT `FKCE6438FE4D7B1942` FOREIGN KEY (`response`) REFERENCES `surveyresponse` (`id`), |
CONSTRAINT `FKCE6438FEDB91A49C` FOREIGN KEY (`candidateAnswer`) REFERENCES `surveyquestioncandidateanswer` (`id`) |
) ENGINE=Innodb DEFAULT CHARSET=latin1; |
-- |
-- Table structure for table `surveyquestioncandidateanswer` |
-- |
-- |
-- Table structure for table `surveyquestionitem` |
-- |
-- |
-- Table structure for table `surveystatsgraphic` |
-- |
DROP TABLE IF EXISTS `surveystatsgraphic`; |
CREATE TABLE `surveystatsgraphic` ( |
`id` bigint(20) NOT NULL auto_increment, |
`discriminator` varchar(255) NOT NULL, |
`identifier` varchar(255) default NULL, |
`question` bigint(20) default NULL, |
`structuralNode` bigint(20) default NULL, |
PRIMARY KEY (`id`), |
KEY `FK47D2BDC3EB11688C` (`question`), |
KEY `FK47D2BDC3FF83C59E` (`structuralNode`), |
CONSTRAINT `FK47D2BDC3EB11688C` FOREIGN KEY (`question`) REFERENCES `surveyquestion` (`id`), |
CONSTRAINT `FK47D2BDC3FF83C59E` FOREIGN KEY (`structuralNode`) REFERENCES `surveystructuralnode` (`id`) |
) ENGINE=Innodb DEFAULT CHARSET=latin1; |
-- |
-- Table structure for table `surveystructuralnode` |
-- |
/impl/src/hbm/pt/estgp/estgweb/domain/GenericUser.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="superuser" type="boolean"/> |
<property name="username" type="string" unique="true" length="50" index="usernameIndex"/> |
72,6 → 72,14 |
<key column="owner"/> |
<one-to-many class="pt.estgp.estgweb.domain.ManagedIdentifierCollection"/> |
</set> |
<set name="mySurveys" lazy="true" order-by="id asc"> |
<key column="owner"/> |
<one-to-many class="pt.estgp.estgweb.domain.Survey"/> |
</set> |
<set name="mySurveyResponses" lazy="true" order-by="id asc"> |
<key column="owner"/> |
<one-to-many class="pt.estgp.estgweb.domain.SurveyResponse"/> |
</set> |
<subclass name="pt.estgp.estgweb.domain.UserImpl" discriminator-value="UserImpl"> |
<subclass name="pt.estgp.estgweb.domain.UserManagedRoleImpl"> |
<subclass name="pt.estgp.estgweb.domain.SigesUser"> |
/impl/src/hbm/pt/estgp/estgweb/domain/Record.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="title" type="string" index="titleIndex"/> |
<property name="type" type="string" index="typeIndex"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/UrlStatYear.hbm.xml |
---|
13,7 → 13,7 |
<key-many-to-one name="urlStat" class="pt.estgp.estgweb.domain.UrlStat" column="relativePath"/> |
</composite-id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="totalClicks" type="integer"/> |
<set name="months" order-by="month asc" lazy="true" cascade="all" inverse="true"> |
/impl/src/hbm/pt/estgp/estgweb/domain/RepositoryFile.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" outer-join="true" lazy="proxy"/> |
<many-to-one name="lastVersion" class="pt.estgp.estgweb.domain.RepositoryFileVersion" outer-join="true" lazy="false"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/Image.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="name" type="string"/> |
<property name="contentType" type="string"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/Blog.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="name" type="string" unique="true" index="nameIndex"/> |
<property name="title" type="string"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/Teste.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="name" type="string"/> |
<property name="morada" type="string"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/BlogPost.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="month" type="int"/> |
<property name="year" type="int"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/Announcement.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="startDate" type="timestamp"/> |
<property name="expireDate" type="timestamp"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/SruSource.hbm.xml |
---|
12,7 → 12,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="name" type="string"/> |
<property name="collectionField" column="collection_field" type="string"/> |
34,7 → 34,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="collection" type="string"/> |
<property name="admitedRoles" type="string" column="admited_roles"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/UrlStatDay.hbm.xml |
---|
17,7 → 17,7 |
</key-many-to-one> |
</composite-id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="date" type="date"/> |
<property name="totalClicks" type="integer"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUserAssociation.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="role" type="string"/> |
<many-to-one name="user" class="pt.estgp.estgweb.domain.User" outer-join="true" column="user_id"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/Survey.hbm.xml |
---|
New file |
0,0 → 1,164 |
<?xml version="1.0"?> |
<!DOCTYPE hibernate-mapping |
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" |
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> |
<hibernate-mapping> |
<class name="pt.estgp.estgweb.domain.Survey" table="survey" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
<generator class="native"/> |
</id> |
<discriminator column="discriminator"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="title" type="string"/> |
<property name="saveDate" type="timestamp"/> |
<property name="startDate" type="timestamp"/> |
<property name="endDate" type="timestamp"/> |
<property name="type" type="string"/> |
<property name="targetRoles" type="string"/> |
<property name="statsConsultRoles" type="string"/> |
<property name="year" type="string"/> |
<property name="semester" type="string"/> |
<property name="statusPercentage" type="int"/> |
<property name="status" type="string"/> |
<property name="identifier" type="string"/> |
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" lazy="false" outer-join="true"/> |
<many-to-one name="structuralNode" class="pt.estgp.estgweb.domain.SurveyStructuralNode" lazy="false" outer-join="true"/> |
<set name="questions" lazy="true" order-by="id asc"> |
<key column="survey"/> |
<one-to-many class="pt.estgp.estgweb.domain.SurveyQuestion"/> |
</set> |
<subclass name="pt.estgp.estgweb.domain.SurveyImpl" discriminator-value="SurveyImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.SurveyStructuralNode" table="surveystructuralnode" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
<generator class="native"/> |
</id> |
<discriminator column="discriminator"/> |
<property name="msg" type="string" index="msgIndex"/> |
<property name="msgKey" type="string" index="msgKeyIndex"/> |
<property name="myKey" type="string" index="myKeyIndex"/> |
<many-to-one name="parentNode" class="pt.estgp.estgweb.domain.SurveyStructuralNode" lazy="false" outer-join="true"/> |
<many-to-one name="survey" class="pt.estgp.estgweb.domain.Survey" lazy="false" outer-join="true"/> |
<set name="nodes" lazy="true" order-by="id asc"> |
<key column="parentNode"/> |
<one-to-many class="pt.estgp.estgweb.domain.SurveyStructuralNode"/> |
</set> |
<set name="responses" lazy="true" order-by="id asc"> |
<key column="structuralNode"/> |
<one-to-many class="pt.estgp.estgweb.domain.SurveyResponse"/> |
</set> |
<set name="graphics" lazy="true" order-by="id asc"> |
<key column="structuralNode"/> |
<one-to-many class="pt.estgp.estgweb.domain.SurveyStatsGraphic"/> |
</set> |
<subclass name="pt.estgp.estgweb.domain.SurveyStructuralNodeImpl" discriminator-value="SurveyStructuralNodeImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.SurveyResponse" table="surveyresponse" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
<generator class="native"/> |
</id> |
<discriminator column="discriminator"/> |
<property name="date" type="timestamp"/> |
<property name="answered" type="boolean"/> |
<many-to-one name="structuralNode" class="pt.estgp.estgweb.domain.SurveyStructuralNode" lazy="false" outer-join="true"/> |
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" lazy="false" outer-join="true"/> |
<set name="answers" lazy="true" order-by="id asc"> |
<key column="response"/> |
<one-to-many class="pt.estgp.estgweb.domain.SurveyQuestionAnswer"/> |
</set> |
<subclass name="pt.estgp.estgweb.domain.SurveyResponseImpl" discriminator-value="SurveyResponseImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.SurveyQuestion" table="surveyquestion" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
<generator class="native"/> |
</id> |
<discriminator column="discriminator"/> |
<property name="labelpt" type="string"/> |
<property name="labelen" type="string"/> |
<property name="required" type="boolean"/> |
<property name="type" type="string"/> |
<many-to-one name="survey" class="pt.estgp.estgweb.domain.Survey" lazy="false" outer-join="true"/> |
<set name="questionItems" lazy="true" order-by="id asc"> |
<key column="question"/> |
<one-to-many class="pt.estgp.estgweb.domain.SurveyQuestionItem"/> |
</set> |
<set name="graphics" lazy="true" order-by="id asc"> |
<key column="question"/> |
<one-to-many class="pt.estgp.estgweb.domain.SurveyStatsGraphic"/> |
</set> |
<subclass name="pt.estgp.estgweb.domain.SurveyQuestionImpl" discriminator-value="SurveyQuestionImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.SurveyQuestionItem" table="surveyquestionitem" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
<generator class="native"/> |
</id> |
<discriminator column="discriminator"/> |
<property name="labelpt" type="string"/> |
<property name="labelen" type="string"/> |
<many-to-one name="question" class="pt.estgp.estgweb.domain.SurveyQuestion" lazy="false" outer-join="true"/> |
<set name="candidadeAnswers" lazy="true" order-by="id asc"> |
<key column="questionItem"/> |
<one-to-many class="pt.estgp.estgweb.domain.SurveyQuestionCandidateAnswer"/> |
</set> |
<subclass name="pt.estgp.estgweb.domain.SurveyQuestionItemImpl" discriminator-value="SurveyQuestionItemImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.SurveyQuestionCandidateAnswer" table="surveyquestioncandidateanswer" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
<generator class="native"/> |
</id> |
<discriminator column="discriminator"/> |
<property name="labelpt" type="string"/> |
<property name="labelen" type="string"/> |
<property name="type" type="string"/> |
<many-to-one name="questionItem" class="pt.estgp.estgweb.domain.SurveyQuestionItem" lazy="false" outer-join="true"/> |
<set name="answers" lazy="true" order-by="id asc"> |
<key column="candidateAnswer"/> |
<one-to-many class="pt.estgp.estgweb.domain.SurveyQuestionAnswer"/> |
</set> |
<subclass name="pt.estgp.estgweb.domain.SurveyQuestionCandidateAnswerImpl" discriminator-value="SurveyQuestionCandidateAnswerImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.SurveyQuestionAnswer" table="surveyquestionanswer" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
<generator class="native"/> |
</id> |
<discriminator column="discriminator"/> |
<property name="textAnswer" type="string"/> |
<many-to-one name="candidateAnswer" class="pt.estgp.estgweb.domain.SurveyQuestionCandidateAnswer" lazy="false" outer-join="true"/> |
<many-to-one name="response" class="pt.estgp.estgweb.domain.SurveyResponse" lazy="false" outer-join="true"/> |
<subclass name="pt.estgp.estgweb.domain.SurveyQuestionAnswerImpl" discriminator-value="SurveyQuestionAnswerImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.SurveyStatsGraphic" table="surveystatsgraphic" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
<generator class="native"/> |
</id> |
<discriminator column="discriminator"/> |
<property name="identifier" type="string"/> |
<many-to-one name="question" class="pt.estgp.estgweb.domain.SurveyQuestion" lazy="false" outer-join="true"/> |
<many-to-one name="structuralNode" class="pt.estgp.estgweb.domain.SurveyStructuralNode" lazy="false" outer-join="true"/> |
<subclass name="pt.estgp.estgweb.domain.SurveyStatsGraphicImpl" discriminator-value="SurveyStatsGraphicImpl"/> |
</class> |
</hibernate-mapping> |
/impl/src/hbm/pt/estgp/estgweb/domain/UrlStat.hbm.xml |
---|
11,7 → 11,7 |
<generator class="assigned"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="name" type="text"/> |
<property name="description" type="text"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="semestre" type="string" index="semestreIndex"/> |
<property name="name" type="string" index="nameIndex"/> |
68,7 → 68,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="question" type="text"/> |
<property name="answer" type="text"/> |
85,7 → 85,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="deliverDate" type="timestamp"/> |
<property name="deliverType" type="string"/> |
109,7 → 109,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="deliverDate" type="timestamp"/> |
<property name="grade" type="string"/> |
131,7 → 131,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="publishDate" type="timestamp"/> |
<property name="grade" type="int" index="gradeIndex"/> |
150,7 → 150,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="dataAula" type="timestamp"/> |
<property name="tipoAula" type="string"/> |
173,7 → 173,7 |
<!--<generator class="native"/>--> |
<!--</id>--> |
<!--<discriminator column="discrimitator"/>--> |
<!--<timestamp name="updateDate" unsaved-value="null"/>--> |
<!--<timestamp source="db" name="updateDate" unsaved-value="null"/>--> |
<!--<property name="saveDate" type="timestamp"/>--> |
<!--<property name="deliverDate" type="timestamp"/>--> |
<!--<property name="deliverType" type="string"/>--> |
/impl/src/hbm/pt/estgp/estgweb/domain/Course.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="name" type="string"/> |
<property name="description" type="text"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/IdentifiersManagement.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="sequenceNumber" type="long"/> |
<property name="description" type="text"/> |
27,7 → 27,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="name" type="string"/> |
<property name="sequenceNumber" type="long"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/UrlStatMonth.hbm.xml |
---|
16,7 → 16,7 |
</key-many-to-one> |
</composite-id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="date" type="date"/> |
<property name="totalClicks" type="integer"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/Reminder.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="startDate" type="timestamp"/> |
<property name="expireDate" type="timestamp"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/SessionObject.hbm.xml |
---|
16,7 → 16,7 |
</key-many-to-one> |
</composite-id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="type" type="string"/> |
<property name="object" type="java.io.Serializable"> |
/impl/src/hbm/pt/estgp/estgweb/domain/Job.hbm.xml |
---|
11,7 → 11,7 |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<timestamp source="db" name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="startDate" type="timestamp" index="startDateIndex"/> |
<property name="description" type="string"/> |
/impl/src/web/imgs/openedMinus.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/web/imgs/radiobox.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/web/imgs/closedPlus.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/web/imgs/checkbox.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/web/admin/surveys/submitSurvey.jsp |
---|
New file |
0,0 → 1,334 |
<%@ page import="pt.estgp.estgweb.web.form.surveys.SurveysForm" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<jsp:useBean id="SurveysForm" type="pt.estgp.estgweb.web.form.surveys.SurveysForm" scope="request"/> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<jomm:messages/> |
<html:errors/> |
<% |
String fromAction = ""; |
String from = ""; |
String user = ""; |
if (request.getParameter("from") != null) |
{ |
user = "/user"; |
fromAction = "From" + request.getParameter("from"); |
from = "?from=" + request.getParameter("from"); |
} |
request.setAttribute("from", from); |
request.setAttribute("user", user); |
request.setAttribute("fromAction", fromAction); |
%> |
<html:form action="${user}/submitSurvey${fromAction}${from}"> |
<html:hidden property="surveyView.id"/> |
<html:hidden property="surveyView.deletedQuestions"/> |
<html:hidden property="surveyView.deletedItems"/> |
<html:hidden property="surveyView.deletedCandidates"/> |
<html:hidden property="counter"/> |
<input type="hidden" name="dispatch"> |
<input type="hidden" name="questionId"/> |
<input type="hidden" name="itemId"/> |
<input type="hidden" name="candidateId"/> |
<table class="form"> |
<tr> |
<th> |
<bean:message key="survey.submit.form.title"/> |
* |
</th> |
<td> |
<html:text property="surveyView.title"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="survey.submit.form.type"/> |
</th> |
<td> |
<logic:greaterThan name="SurveysForm" property="surveyView.id" value="0"> |
<html:hidden property="surveyView.type"/> |
<bean:message key="surveys.type.${SurveysForm.surveyView.type}"/> |
</logic:greaterThan> |
<logic:lessEqual name="SurveysForm" property="surveyView.id" value="0"> |
<html:select property="surveyView.type" onchange="set(this.form,'changeSurveyType');this.form.submit();"> |
<logic:present name="SurveysForm" property="surveyTypes"> |
<logic:iterate id="type" name="SurveysForm" property="surveyTypes"> |
<html:option value="${type}"> |
<bean:message key="surveys.type.${type}"/> |
</html:option> |
</logic:iterate> |
</logic:present> |
</html:select> |
</logic:lessEqual> |
</td> |
</tr> |
<logic:equal value="general" property="surveyView.type" name="SurveysForm"> |
<tr> |
<th> |
<bean:message key="survey.submit.form.target.roles"/> |
</th> |
<td> |
<logic:greaterThan name="SurveysForm" property="surveyView.id" value="0"> |
<html:hidden property="surveyView.targetRoles"/> |
<bean:message key="user.role.${SurveysForm.surveyView.targetRoles}"/> |
</logic:greaterThan> |
<logic:lessEqual name="SurveysForm" property="surveyView.id" value="0"> |
<html:select property="surveyView.targetRoles"> |
<logic:present name="SurveysForm" property="surveyTargetRoles"> |
<logic:iterate id="target" name="SurveysForm" property="surveyTargetRoles"> |
<html:option value="${target}"> |
<bean:message key="user.role.${target}"/> |
</html:option> |
</logic:iterate> |
</logic:present> |
</html:select> |
</logic:lessEqual> |
</td> |
</tr> |
</logic:equal> |
<logic:equal value="pedagogic" property="surveyView.type" name="SurveysForm"> |
<tr> |
<th> |
<bean:message key="survey.submit.form.target.roles"/> |
</th> |
<td> |
<logic:greaterThan name="SurveysForm" property="surveyView.id" value="0"> |
<html:hidden property="surveyView.targetRoles"/> |
<bean:message key="surveys.target.pair.${SurveysForm.surveyView.targetRoles}"/> |
</logic:greaterThan> |
<logic:lessEqual name="SurveysForm" property="surveyView.id" value="0"> |
<html:select property="surveyView.targetRoles"> |
<logic:present name="SurveysForm" property="surveyTargetPairs"> |
<logic:iterate id="target" name="SurveysForm" property="surveyTargetPairs"> |
<html:option value="${target}"> |
<bean:message key="surveys.target.pair.${target}"/> |
</html:option> |
</logic:iterate> |
</logic:present> |
</html:select> |
</logic:lessEqual> |
</td> |
</tr> |
</logic:equal> |
<tr> |
<th> |
<bean:message key="survey.submit.form.stats.consult.roles"/> |
</th> |
<td> |
<html:select property="surveyView.statsConsultRoles"> |
<html:option value="owner"> |
<bean:message key="surveys.stats.consult.owner"/> |
</html:option> |
<logic:present name="SurveysForm" property="surveyStatsConsultRoles"> |
<logic:iterate id="consult" name="SurveysForm" property="surveyStatsConsultRoles"> |
<html:option value="${consult}"> |
<bean:message key="user.role.${consult}"/> |
</html:option> |
</logic:iterate> |
</logic:present> |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="survey.submit.form.start.date"/> |
</th> |
<td> |
<a href="javascript:cal.select(getObjectById('startDate'),'anchord1','yyyy/MM/dd')" name="anchor1" id="anchord1"><html:text styleClass="date" property="startDate" styleId="startDate" readonly="true"/></a> |
<input type="button" class="removeButton" onClick="SurveysForm.startDate.value=null;"> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="survey.submit.form.end.date"/> |
* |
</th> |
<td> |
<a href="javascript:cal.select(getObjectById('endDate'),'anchord2','yyyy/MM/dd')" name="anchor2" id="anchord2"><html:text styleClass="date" property="endDate" styleId="endDate" readonly="true"/></a> |
<input type="button" class="removeButton" onClick="SurveysForm.endDate.value=null;"> |
</td> |
</tr> |
</table> |
<bean:message key="survey.submit.form.questions"/> |
<hr> |
<input type="hidden" name="questionsListSize" value="<%=((SurveysForm)request.getAttribute("SurveysForm")).getSurveyView().getQuestions().size()%>"> |
<nested:iterate id="questionView" name="SurveysForm" property="surveyView.questions" indexId="qId"> |
<table class="form"> |
<input type="hidden" name="itemsListSize${qId}" value="<%=SurveysForm.getSurveyView().getQuestions().get(qId).getItems().size()%>"/> |
<input type="hidden" name="candidatesLabelsSize${qId}" value="<%=SurveysForm.getSurveyView().getQuestions().get(qId).getCandidatesLabels().size()%>"/> |
<nested:hidden property="id"/> |
<nested:hidden property="type"/> |
<tr> |
<th> |
<a name="question${qId}"></a> |
<a name="question${questionView.id}"></a> |
<bean:message key="survey.submit.form.delete.question"/> |
</th> |
<td> |
<input type="button" class="removeButton" value="" |
onclick="SurveysForm.questionId.value='${qId}';confirmAction('Tem a certeza que deseja apagar?',this.form,'removeQuestion');"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="survey.submit.form.required.question"/> |
</th> |
<td> |
<nested:checkbox property="required"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="survey.submit.form.question"/> |
</th> |
<td> |
<nested:text property="labelpt"/> |
</td> |
</tr> |
<nested:equal name="questionView" value="matrix" property="type"> |
<tr> |
<th></th> |
<td> |
<table> |
<tr> |
<td></td> |
<nested:iterate property="candidatesLabels" indexId="cId"> |
<td> |
<nested:text property="labelpt" styleId="inputVertical"/> |
<input type="button" class="removeButton" value="" |
onclick="SurveysForm.questionId.value='${qId}'; |
SurveysForm.candidateId.value='${cId}'; |
set(this.form,'removeCandidateOption'); |
SurveysForm.action = SurveysForm.action+'#question${qId}'; |
this.form.submit();"/> |
</td> |
</nested:iterate> |
</tr> |
<nested:iterate property="items" indexId="iId"> |
<input type="hidden" name="candidatesListSize${qId}${iId}" value="<%=SurveysForm.getSurveyView().getQuestions().get(qId).getItems().get(iId).getCandidates().size()%>"/> |
<tr> |
<td> |
<nested:hidden property="id"/> |
<nested:text property="labelpt" styleId="inputHorizontal"/> |
<input type="button" class="removeButton" value="" |
onclick="SurveysForm.questionId.value='${qId}'; |
SurveysForm.itemId.value='${iId}'; |
set(this.form,'removeItemOption'); |
SurveysForm.action = SurveysForm.action+'#question${qId}'; |
this.form.submit();"/> |
</td> |
<nested:iterate property="candidates"> |
<td align="center"> |
<nested:hidden property="id"/> |
<img border="0" src="<%=request.getContextPath()%>/imgs/radiobox.png"/> |
</td> |
</nested:iterate> |
</tr> |
</nested:iterate> |
</table> |
</td> |
</tr> |
<tr> |
<th></th> |
<td> |
<input type="button" value="<bean:message key="survey.submit.form.add.hoption"/>" |
onclick="SurveysForm.questionId.value='${qId}'; |
set(this.form,'addItemOption'); |
SurveysForm.action = SurveysForm.action+'#question${qId}'; |
this.form.submit();"> |
<input type="button" value="<bean:message key="survey.submit.form.add.voption"/>" |
onclick="SurveysForm.questionId.value='${qId}'; |
set(this.form,'addCandidateOption'); |
SurveysForm.action = SurveysForm.action+'#question${qId}'; |
this.form.submit();"> |
</td> |
</tr> |
</nested:equal> |
<nested:notEqual name="questionView" value="matrix" property="type"> |
<nested:iterate property="items" indexId="iId"> |
<input type="hidden" name="candidatesListSize${qId}${iId}" value="<%=SurveysForm.getSurveyView().getQuestions().get(qId).getItems().get(iId).getCandidates().size()%>"/> |
<nested:hidden property="id"/> |
<nested:iterate property="candidates" indexId="cId"> |
<nested:hidden property="id"/> |
<nested:notEqual name="questionView" value="text" property="type"> |
<tr> |
<th align="right"> |
<nested:equal name="questionView" value="radio" property="type"> |
<img border="0" src="<%=request.getContextPath()%>/imgs/radiobox.png"/> |
</nested:equal> |
<nested:equal name="questionView" value="check" property="type"> |
<img border="0" src="<%=request.getContextPath()%>/imgs/checkbox.png"/> |
</nested:equal> |
</th> |
<td> |
<nested:text property="labelpt" styleId="inputHorizontal"/> |
<input type="button" class="removeButton" value="" |
onclick="SurveysForm.questionId.value='${qId}'; |
SurveysForm.candidateId.value='${cId}'; |
set(this.form,'removeCandidateOption'); |
SurveysForm.action = SurveysForm.action+'#question${qId}'; |
this.form.submit();"/> |
</td> |
</tr> |
</nested:notEqual> |
</nested:iterate> |
</nested:iterate> |
<nested:notEqual name="questionView" value="text" property="type"> |
<tr> |
<th></th> |
<td> |
<input type="button" value="<bean:message key="survey.submit.form.add.hoption"/>" |
onclick="SurveysForm.questionId.value='${qId}'; |
set(this.form,'addCandidateOption'); |
SurveysForm.action = SurveysForm.action+'#question${qId}'; |
this.form.submit();"> |
</td> |
</tr> |
</nested:notEqual> |
</nested:notEqual> |
</table> |
</nested:iterate> |
<br> |
<br> |
<bean:message key="survey.submit.form.add.question"/> |
<html:select property="questionType"> |
<logic:present name="SurveysForm" property="surveyQuestionTypes"> |
<logic:iterate id="item" name="SurveysForm" property="surveyQuestionTypes"> |
<html:option value="${item}"> |
<bean:message key="surveys.question.type.${item}"/> |
</html:option> |
</logic:iterate> |
</logic:present> |
</html:select> |
<input type="button" value="<bean:message key="add"/>" |
onclick="set(this.form,'addQuestion'); |
SurveysForm.action = SurveysForm.action+'#question<%=SurveysForm.getCounter()%>'; |
this.form.submit();"> |
<hr> |
<input type="button" value="<bean:message key="confirm"/>" |
onclick="set(this.form,'save');this.form.submit();"> |
</html:form> |
/impl/src/web/admin/announcements/submitAnnouncement.jsp |
---|
334,6 → 334,7 |
<html:text property="announcementView.internalUrlPath"/> |
<html:select property="announcementView.internalUrlServer"> |
<html:option value="estgp">ESTG</html:option> |
<html:option value="conteudos">CONTEUDOS</html:option> |
<html:option value="ionline">IONLINE</html:option> |
</html:select> |
</td> |
356,4 → 357,4 |
</td> |
</tr> |
</table> |
</html:form> |
</html:form> |
/impl/src/web/css/style.css |
---|
1817,3 → 1817,63 |
width:100%; |
} |
/* SURVEYS - Duarte Santos*/ |
.form #inputVertical |
{ |
width:150px; |
} |
.form #inputHorizontal |
{ |
width:300px; |
} |
textarea#surveyTextarea { |
width: 400px; |
height: 80px; |
border: 1px solid #cccccc; |
resize:none; |
} |
div#surveyRequiredQuestion { |
font-size:10px; |
color:#666666; |
} |
table#questionTable { |
width:100%; |
border:1px solid #cccccc; |
margin-bottom:5px; |
padding:5px; |
background-color:#F7F7F7; |
} |
table#questionTable td,input{ |
vertical-align:middle; |
} |
table#questionTable .candidateCell { |
text-align:center; |
} |
table#questionTable .questionLabelCell { |
padding-bottom:8px; |
border-bottom:1px solid #eeeeee; |
} |
div#loadNodeGraphs { |
margin:10px; |
} |
div#loadNodeGraphsHeader { |
margin-bottom:5px; |
} |
div#listSurveyStats { |
margin:10px; |
} |
.nodeSection { |
margin:5px; |
} |
/impl/src/web/css/intranet.css |
---|
97,4 → 97,3 |
} |
/impl/src/web/js/functions.js |
---|
72,4 → 72,9 |
return confirm(msg); |
} |
function sett(form, obj, value) |
{ |
form.obj.value = value; |
} |
/impl/src/web/layout/navigationTop.jsp |
---|
70,6 → 70,8 |
<div class="shadow "> |
<ul class="menu"> |
<li><a href="http://www.ipportalegre.pt/poliempreende/">Poliempreende</a></li> |
<li><a href="http://www.essp.pt/Aliment_saudavel.php">alimentacao saudavel</a></li> |
<li><a href="http://www.c3i.ipportalegre.pt/">C3i</a></li> |
<!-- <li><a href="#">SGQ</a></li> |
--> </ul> |
</div> |
/impl/src/web/public/courses/courseSeparators.jsp |
---|
13,7 → 13,7 |
<h2>${CourseView.name} (<%=Globals.NATIONAL_INSTITUTION_CODE%> / ${CourseView.code})</h2> |
<logic:notEmpty name="CourseView" property="formatedDescription"><p>${courseView.formatedDescription}</p></logic:notEmpty> |
<logic:notEmpty name="CourseView" property="formatedDescription"><p>${CourseView.formatedDescription}</p></logic:notEmpty> |
<logic:notEmpty name="CourseView" property="externalSitePath"> |
<% |
WebProxy.processHttpRequestService(out, CourseView.getExternalSiteServer(), CourseView.getExternalSitePath()); |
25,6 → 25,8 |
<%--<h3><bean:message key="course.studies.plan"/></h3>--%> |
<%--<bean:write name="CourseView" property="cacheWebDocument" filter="no"/>--%> |
<%--</logic:notEmpty>--%> |
</div> |
/impl/src/web/user/surveys/listSurveyStats.jsp |
---|
New file |
0,0 → 1,27 |
<%@ page import="pt.estgp.estgweb.domain.views.SurveyStructuralNodeView" %> |
<%@ page import="pt.estgp.estgweb.domain.views.SurveyView" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<jsp:useBean id="SurveyView" type="pt.estgp.estgweb.domain.views.SurveyView" scope="request"/> |
<jomm:messages/> |
<html:errors/> |
<% |
SurveyView surveyView = (SurveyView) request.getAttribute("SurveyView"); |
SurveyStructuralNodeView nodeRoot = surveyView.getStructuralNodeView(); |
request.setAttribute("id",surveyView.getId()); |
request.setAttribute("node",nodeRoot); |
%> |
<div id="listSurveyStats"> |
<jsp:include page="listSurveyStatsRecursive.jsp"/> |
</div> |
/impl/src/web/user/surveys/loadSurveyNodeGraphs.jsp |
---|
New file |
0,0 → 1,39 |
<%@ page import="pt.estgp.estgweb.domain.views.SurveyStatsGraphicView" %> |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="java.util.List" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException" %> |
<div id="loadNodeGraphs"> |
<% |
try |
{ |
String[] names = {"serializable"}; |
Object[] args = {Long.parseLong(request.getParameter("id")),Long.parseLong(request.getParameter("node"))}; |
IServiceManager sm = ServiceManager.getInstance(); |
List<SurveyStatsGraphicView> surveyStatsGraphicViews = (List<SurveyStatsGraphicView>) sm.execute(RequestUtils.getRequester(request,response),"LoadSurveyNodeGraphs",args,names); |
if(surveyStatsGraphicViews.size() > 0) |
{ |
%> |
<div id="loadNodeGraphsHeader">Gráfico(s) relativo(s) a: <b><%=surveyStatsGraphicViews.get(0).getStructuralNodeView().getMsg()%></b></div> |
<% |
for(SurveyStatsGraphicView gView : surveyStatsGraphicViews) |
{ |
%> |
<div><img src="<%=request.getContextPath()%>/repositoryStream/<%=gView.getIdentifier()%>" alt=""/></div><br> |
<% |
} |
} |
else |
out.println("<div>Não há graficos</div>"); |
} |
catch(FilterChainFailedException e) |
{} |
catch (Throwable e) |
{} |
%> |
</div> |
/impl/src/web/user/surveys/listSurveys.jsp |
---|
New file |
0,0 → 1,114 |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="java.util.List" %> |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page import="pt.estgp.estgweb.domain.views.SurveyView" %> |
<%@ page import="pt.estgp.estgweb.domain.UserSession" %> |
<%@ page import="pt.estgp.estgweb.web.UserSessionProxy" %> |
<%@ page import="pt.estgp.estgweb.services.surveys.SurveyStatusEnum" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<% |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new String[]{}; |
List<SurveyView> surveyViews; |
UserSession userSession = UserSessionProxy.loadUserSession(request, response); |
if(userSession.getUser().isAdmin()) |
{ |
surveyViews = (List<SurveyView>) sm.execute(RequestUtils.getRequester(request,response),"LoadSurveys", args, names); |
} |
else |
{ |
surveyViews = (List<SurveyView>) sm.execute(RequestUtils.getRequester(request,response),"LoadOwnedSurveys", args, names); |
} |
request.setAttribute("SurveyViews", surveyViews); |
%> |
<jomm:messages/> |
<html:errors/> |
<% |
if(surveyViews.size() > 0) |
{ |
%> |
<table class="dataTable"> |
<tr> |
<th><bean:message key="survey.list.form.title"/></th> |
<th><bean:message key="survey.list.form.type"/></th> |
<th><bean:message key="survey.list.form.target"/></th> |
<th><bean:message key="survey.list.form.year"/></th> |
<th><bean:message key="survey.list.form.semester"/></th> |
<th><bean:message key="survey.list.form.start.date"/></th> |
<th><bean:message key="survey.list.form.end.date"/></th> |
<th><bean:message key="survey.list.form.created.by"/></th> |
<th><bean:message key="survey.list.form.number.responses"/></th> |
<th><bean:message key="survey.list.form.status"/></th> |
</tr> |
<logic:iterate id="surveyView" name="SurveyViews" type="pt.estgp.estgweb.domain.views.SurveyView"> |
<bean:define id="sv" name="surveyView" type="pt.estgp.estgweb.domain.views.SurveyView"/> |
<tr> |
<td><bean:write name="surveyView" property="title"/></td> |
<td><bean:message key="surveys.type.${surveyView.type}"/></td> |
<% |
if(sv.isPedagogic()) |
{ |
%> |
<td><bean:message key="surveys.target.pair.${surveyView.targetRoles}"/></td> |
<% |
} else { |
%> |
<td><bean:message key="user.role.${surveyView.targetRoles}"/></td> |
<% |
} |
%> |
<td><bean:write name="surveyView" property="year"/></td> |
<td><bean:message key="courseunit.${surveyView.semester}"/></td> |
<td><bean:write name="surveyView" property="formatedStartDate"/></td> |
<td><bean:write name="surveyView" property="formatedEndDate"/></td> |
<td><bean:write name="surveyView" property="owner.username"/></td> |
<td><bean:write name="surveyView" property="numberOfResponses"/>/<bean:write name="surveyView" property="numberTotalOfResponses"/></td> |
<td><bean:write name="surveyView" property="statusPercentage"/><bean:message key="survey.list.form.percentage.symbol"/></td> |
<% |
if(sv.getStatus() != null && (sv.getStatus() == SurveyStatusEnum.STATUS_STOPPED || sv.isExpired())) |
{ |
%> |
<logic:equal name="surveyView" property="numberOfResponses" value="0"> |
<td><html:link action="/user/startEditSurveyFromServiceZone.do?id=${surveyView.id}"><bean:message key="survey.list.form.option.edit"/></html:link></td> |
</logic:equal> |
<td><html:link action="/user/startCloneSurveyFromServiceZone.do?id=${surveyView.id}"><bean:message key="survey.list.form.option.clone"/></html:link></td> |
<td><html:link action="/user/startConsistSurveyFromServiceZone.do?id=${surveyView.id}"><bean:message key="survey.list.form.option.consist"/></html:link></td> |
<td><html:link action="/user/startGenerateSurveyStatsFromServiceZone.do?id=${surveyView.id}"><bean:message key="survey.list.form.option.gen.stats"/></html:link></td> |
<logic:present name="surveyView" property="identifier"> |
<td><html:link action="/user/startListSurveyStats.do?id=${surveyView.id}"><bean:message key="survey.list.form.option.view.stats"/></html:link></td> |
<td><a href="<%=request.getContextPath()%>/repositoryStream/${surveyView.identifier}"><bean:message key="survey.list.form.option.download.csv"/></a></td> |
</logic:present> |
<% |
} |
else if(sv.getStatus() != null) |
{ |
%> |
<td colspan="200"><bean:message key="<%=sv.getStatus().getMessageKey()%>"/></td> |
<% |
} |
%> |
</tr> |
</logic:iterate> |
</table> |
<% |
} |
else |
{ |
%> |
<bean:message key="survey.list.form.empty"/> |
<% |
} |
%> |
/impl/src/web/user/surveys/listSurveyStatsRecursive.jsp |
---|
New file |
0,0 → 1,53 |
<%@ page import="pt.estgp.estgweb.domain.views.SurveyStructuralNodeView" %> |
<% |
String from = ""; |
if (request.getParameter("from") != null) |
{ |
from = "&from=" + request.getParameter("from"); |
} |
request.setAttribute("from", from); |
long nodeToShow = 0; |
if(request.getParameter("node") != null) |
{ |
nodeToShow = Long.parseLong(request.getParameter("node")); |
} |
SurveyStructuralNodeView node = (SurveyStructuralNodeView) request.getAttribute("node"); |
if(node.getNodes().size() > 0) |
{ |
String image = request.getContextPath() + "/imgs/"; |
image += node.isRelativeParentOf(nodeToShow) ? "closedPlus.gif" : "openedMinus.gif"; |
%> |
<a href="#"><img border="0" onclick="this.src=showOrHide('node<%=node.getId()%>','<%=request.getContextPath()%>/imgs/closedPlus.gif','<%=request.getContextPath()%>/imgs/openedMinus.gif')" |
src="<%=image%>" alt="abrir"/></a> <%=node.getMsg()%><br> |
<% |
if(node.isRelativeParentOf(nodeToShow)) { |
%> |
<div id="node<%=node.getId()%>" style="display:block" class="nodeSection"> |
<% |
}else{ |
%> |
<div id="node<%=node.getId()%>" style="display:none" class="nodeSection"> |
<% |
} |
for(SurveyStructuralNodeView n : node.getNodes()) |
{ |
request.setAttribute("node",n); |
%> |
<jsp:include page="listSurveyStatsRecursive.jsp"/> |
<% |
} |
%> |
</div> |
<% |
} |
else |
{ |
%> |
<div class="nodeSection"><a href="<%=request.getContextPath()%>/user/startLoadSurveyNodeGraphs.do?id=<%=request.getAttribute("id")%>&node=<%=node.getId()%><%=from%>"><%=node.getMsg()%></a></div> |
<% |
} |
%> |
/impl/src/web/user/surveys/submitSurveyResponse.jsp |
---|
New file |
0,0 → 1,162 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ page import="pt.estgp.estgweb.web.form.surveys.SurveysForm" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<jsp:useBean id="SurveysForm" type="pt.estgp.estgweb.web.form.surveys.SurveysForm" scope="request"/> |
<jomm:messages/> |
<html:errors/> |
<html:form action="/user/submitSurveyResponseFromHome"> |
<input type="hidden" name="dispatch"> |
<html:hidden name="SurveysForm" property="surveyView.id"/> |
<html:hidden name="SurveysForm" property="surveyResponseView.id"/> |
<input type="hidden" name="questionsListSize" value="<%=((SurveysForm)request.getAttribute("SurveysForm")).getSurveyView().getQuestions().size()%>"> |
<table class="form" border="0"> |
<tr> |
<th><bean:message key="survey.answer.form.title"/></th> |
<td> |
<html:hidden name="SurveysForm" property="surveyView.title"/> |
<bean:write name="SurveysForm" property="surveyView.title"/> |
</td> |
</tr> |
<tr> |
<th><bean:message key="survey.answer.form.type"/></th> |
<td> |
<html:hidden name="SurveysForm" property="surveyView.type"/> |
<bean:message key="surveys.type.${SurveysForm.surveyView.type}"/> |
</td> |
</tr> |
<tr> |
<th><bean:message key="survey.answer.form.end.date"/></th> |
<td> |
<html:hidden name="SurveysForm" property="surveyView.formatedEndDate"/> |
<bean:write name="SurveysForm" property="surveyView.formatedEndDate"/> |
</td> |
</tr> |
<logic:notEqual name="SurveysForm" property="surveyView.type" value="general"> |
<tr> |
<th><bean:message key="survey.answer.form.related"/></th> |
<td> |
<html:hidden name="SurveysForm" property="surveyResponseView.structuralNodeView.msg"/> |
<bean:write name="SurveysForm" property="surveyResponseView.structuralNodeView.msg"/> |
</td> |
</tr> |
</logic:notEqual> |
<tr> |
<th></th> |
<td colspan="2"> |
<nested:iterate id="questionView" name="SurveysForm" property="surveyView.questions" indexId="qId"> |
<input type="hidden" name="itemsListSize${qId}" value="<%=SurveysForm.getSurveyView().getQuestions().get(qId).getItems().size()%>"/> |
<input type="hidden" name="candidatesLabelsSize${qId}" value="<%=SurveysForm.getSurveyView().getQuestions().get(qId).getCandidatesLabels().size()%>"/> |
<nested:hidden property="id"/> |
<nested:hidden property="required"/> |
<table id="questionTable"> |
<tr> |
<td colspan="200" class="questionLabelCell"> |
<nested:hidden property="labelpt"/> |
<nested:hidden property="type"/> |
<nested:write property="labelpt"/> |
<nested:equal property="required" value="true"> |
<div id="surveyRequiredQuestion"><bean:message key="survey.answer.form.required.question"/></div> |
</nested:equal> |
</td> |
</tr> |
<nested:equal property="type" value="text"> |
<tr> |
<td> |
<nested:iterate id="item" property="items" indexId="iId"> |
<input type="hidden" name="candidatesListSize${qId}${iId}" value="<%=SurveysForm.getSurveyView().getQuestions().get(qId).getItems().get(iId).getCandidates().size()%>"/> |
<nested:iterate property="candidates"> |
<nested:hidden property="id"/> |
</nested:iterate> |
<logic:iterate id="c" name="item" property="candidates"> |
<nested:textarea property="textareaValue" styleId="surveyTextarea"/> |
</logic:iterate> |
</nested:iterate> |
</td> |
</tr> |
</nested:equal> |
<nested:equal property="type" value="radio"> |
<nested:iterate id="item" property="items" indexId="iId"> |
<input type="hidden" name="candidatesListSize${qId}${iId}" value="<%=SurveysForm.getSurveyView().getQuestions().get(qId).getItems().get(iId).getCandidates().size()%>"/> |
<nested:iterate property="candidates"> |
<nested:hidden property="id"/> |
<nested:hidden property="labelpt"/> |
</nested:iterate> |
<logic:iterate id="c" name="item" property="candidates"> |
<tr> |
<td> |
<nested:radio property="radioValue" value="${c.id}"/> |
<nested:write name="c" property="labelpt"/> |
</td> |
</tr> |
</logic:iterate> |
</nested:iterate> |
</nested:equal> |
<nested:equal property="type" value="check"> |
<nested:iterate id="item" property="items" indexId="iId"> |
<input type="hidden" name="candidatesListSize${qId}${iId}" value="<%=SurveysForm.getSurveyView().getQuestions().get(qId).getItems().get(iId).getCandidates().size()%>"/> |
<nested:iterate property="candidates"> |
<tr> |
<td> |
<nested:hidden property="id"/> |
<nested:hidden property="labelpt"/> |
<nested:checkbox property="checkbox"/> |
<nested:write property="labelpt"/> |
</td> |
</tr> |
</nested:iterate> |
</nested:iterate> |
</nested:equal> |
<nested:equal property="type" value="matrix"> |
<tr> |
<td></td> |
<nested:iterate property="candidatesLabels"> |
<td class="candidateCell"> |
<nested:hidden property="labelpt"/> |
<nested:write property="labelpt"/> |
</td> |
</nested:iterate> |
</tr> |
<input type="hidden" name="teste_row_hidden"/> |
<nested:iterate id="item" property="items" indexId="iId"> |
<input type="hidden" name="candidatesListSize${qId}${iId}" value="<%=SurveysForm.getSurveyView().getQuestions().get(qId).getItems().get(iId).getCandidates().size()%>"/> |
<nested:iterate property="candidates"> |
<nested:hidden property="id"/> |
<nested:hidden property="labelpt"/> |
</nested:iterate> |
<tr onmouseover="this.style.backgroundColor='#aFaFaF'" onmouseout="this.style.backgroundColor='#F7F7F7'"> |
<td> |
<nested:hidden property="labelpt"/> |
<nested:write property="labelpt"/> |
</td> |
<logic:iterate id="c" name="item" property="candidates"> |
<td class="candidateCell"> |
<nested:radio property="radioValue" value="${c.id}"/> |
</td> |
</logic:iterate> |
</tr> |
</nested:iterate> |
</nested:equal> |
</table> |
</nested:iterate> |
</td> |
</tr> |
</table> |
<hr> |
<input type="button" value="<bean:message key="confirm"/>" |
onclick="set(this.form,'answer');this.form.submit();"> |
</html:form> |
/impl/src/web/user/home/todos.jsp |
---|
57,7 → 57,8 |
String style; |
String img; |
String styleClass; |
if (toDoCat.getDescription().equals(ModuleEnum.TodoAnnouncements.getMessageKey())) |
// Duarte Santos |
if (toDoCat.getDescription().equals(ModuleEnum.TodoAnnouncements.getMessageKey()) || toDoCat.getDescription().equals(ModuleEnum.Surveys.getMessageKey())) |
{ |
styleClass = "WARNING"; |
img = "/imgs/openedboxNeg.gif"; |
/impl/src/web/user/home/topnavResponseSurvey.jsp |
---|
New file |
0,0 → 1,10 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "survey.topnav.response.survey"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/serviceZone/topnavViewSurveyNodeGraphs.jsp |
---|
New file |
0,0 → 1,12 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back"); |
topNav.addNavPlace("/user/startListSurveysFromServiceZone.do", "survey.topnav.list.surveys"); |
topNav.addNavPlace("/user/startListSurveyStatsFromServiceZone.do?id=", "survey.topnav.list.stats"); |
topNav.addNavPlace(null, "survey.topnav.view.graphs"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/serviceZone/topnavListSurvey.jsp |
---|
New file |
0,0 → 1,10 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back"); |
topNav.addNavPlace(null, "survey.topnav.list.surveys"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/serviceZone/serviceZone.jsp |
---|
8,6 → 8,7 |
<%@ page import="java.util.List" %> |
<%@ page import="pt.estgp.estgweb.Globals" %> |
<%@ page import="pt.estgp.estgweb.domain.CourseUnitAnnouncement" %> |
<%@ page import="pt.estgp.estgweb.domain.views.SurveyView" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
48,7 → 49,17 |
request.setAttribute("OwnerBlogPosts", ownerBlogPosts); |
} |
// Duarte Santos |
List<SurveyView> ownerSurveys = null; |
List<SurveyView> consultStatsSurveys = null; |
if(Globals.MODULE_STATUS_SURVEYS) |
{ |
ownerSurveys = (List<SurveyView>) sm.execute(RequestUtils.getRequester(request,response),"LoadOwnedSurveys", args, names); |
request.setAttribute("OwnerSurveys",ownerSurveys); |
consultStatsSurveys = (List<SurveyView>) sm.execute(RequestUtils.getRequester(request,response),"LoadConsultStatsSurveys", args, names); |
request.setAttribute("ConsultStatsSurveys",consultStatsSurveys); |
} |
%> |
<jomm:messages/> |
<html:errors/> |
94,6 → 105,27 |
</baco:hasRole> |
</baco:isModuleOn> |
<!-- Duarte Santos --> |
<baco:isModuleOn module="surveys"> |
<baco:isAdmin> |
<li> |
<bean:message key="surveys"/> |
<ul> |
<li> |
<html:link action="/user/startSubmitSurveyFromServiceZone"> |
<bean:message key="survey.create.survey"/> |
</html:link> |
</li> |
<li> |
<html:link action="/user/startListSurveysFromServiceZone"> |
<bean:message key="survey.list.surveys"/> |
</html:link> |
</li> |
</ul> |
</li> |
</baco:isAdmin> |
</baco:isModuleOn> |
<!----> |
<baco:isAdmin> |
<li> |
469,6 → 501,46 |
</div> |
</div> |
</baco:isModuleOn> |
<!-- Duarte Santos --> |
<baco:isModuleOn module="surveys"> |
<div class="block"> |
<div class="head"> |
<bean:message key="intranet.my.surveys.stats"/> |
<a href="#"><img border="0" onclick="this.src=showOrHide('mySurveysStats','<%=request.getContextPath()%>/imgs/closedbox.gif','<%=request.getContextPath()%>/imgs/openedbox.gif')" src="<%=request.getContextPath()%>/imgs/closedbox.gif" alt="abrir"/></a> |
</div> |
<div id="mySurveysStats" style="display:none;"> |
<% |
if(consultStatsSurveys.size() == 0) |
{ |
%> |
<div class="zerofound"> |
<bean:message key="survey.stats.zero.placed"/> |
</div> |
<% |
} |
else |
{ |
%> |
<table> |
<% |
for (SurveyView s : consultStatsSurveys) |
{ |
%> |
<tr> |
<td> |
<a href="<%=request.getContextPath()%>/user/startListSurveyStats.do?id=<%=s.getId()%>&from=ServiceZone"><%=s.getTitle()%></a> |
</td> |
</tr> |
<% |
} |
%> |
</table> |
<% |
} |
%> |
</div> |
</div> |
</baco:isModuleOn> |
</td> |
</tr> |
/impl/src/web/user/serviceZone/topnavListSurveyStats.jsp |
---|
New file |
0,0 → 1,12 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back"); |
if(request.getParameter("from") == null) |
topNav.addNavPlace("/user/startListSurveysFromServiceZone.do", "survey.topnav.list.surveys"); |
topNav.addNavPlace(null, "survey.topnav.list.stats"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/serviceZone/topnavLoadSurveyNodeGraphs.jsp |
---|
New file |
0,0 → 1,16 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back"); |
String from = ""; |
if(request.getParameter("from") == null) |
topNav.addNavPlace("/user/startListSurveysFromServiceZone.do", "survey.topnav.list.surveys"); |
else |
from = "&from=" + request.getParameter("from"); |
topNav.addNavPlace("/user/startListSurveyStats.do?id="+Long.parseLong(request.getParameter("id"))+from+"&node="+Long.parseLong(request.getParameter("node"))+"", "survey.topnav.list.stats"); |
topNav.addNavPlace(null, "survey.topnav.view.graphs"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/serviceZone/topnavCreateSurvey.jsp |
---|
New file |
0,0 → 1,10 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back"); |
topNav.addNavPlace(null, "survey.topnav.create.survey"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/build.xml |
---|
475,6 → 475,10 |
</target> |
<target name="generateHibernateDomainObjects"> |
<replace dir="${hbm.dir}" value=""> |
<include name="**/*.hbm.xml"/> |
<replacefilter token='<timestamp source="db"' value="<timestamp"/> |
</replace> |
<hibernatetool> |
<configuration> |
<fileset dir="${hbm.dir}"> |
491,6 → 495,10 |
<include name="**/*Impl.java"/> |
</fileset> |
</delete> |
<replace dir="${hbm.dir}" value=""> |
<include name="**/*.hbm.xml"/> |
<replacefilter token='<timestamp' value='<timestamp source="db"'/> |
</replace> |
</target> |