Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1425 → Rev 1457

/branches/v3/impl/conf/language/MessageResources.properties
427,7 → 427,9
questionario.email.from.person=Por favor preencha a pessoa ou a entidade ou orgão que quer que apareça como remetente
questionario.email.message=Por favor preencha uma mensagem
 
questionario.send.message.top.nav=Envio de Mensagem de Correio Eletronico aos Inquiridos
 
 
#Cursos
 
 
/branches/v3/impl/conf/WEB-INF/struts/tiles-pae-questionarios.xml
39,6 → 39,13
</definition>
 
 
<definition name="page.pae.questionario.pedagogico.message" extends="page.pae.separators.home">
<put name="separator" value="1" type="string"/>
<put name="topnav" value="/user/questionarios/pedagogicoEstudante/topnavQuestionarioPedagogicoSendMessage.jsp"/>
<put name="body" value="/user/questionarios/pedagogicoEstudante/sendMessageQuestionarioRequisitados.jsp"/>
</definition>
 
 
<!-- Modulo do Pedagogico Estudantes -->
<definition name="page.pae.questionario.courses.selection" extends="page.pae.separators.home">
<put name="separator" value="1" type="string"/>
/branches/v3/impl/conf/WEB-INF/struts/struts-pae-questionarios.xml
10,6 → 10,7
<form-beans>
<form-bean type="pt.estgp.estgweb.web.form.questionarios.QuestionarioForm" name="QuestionarioForm"/>
<form-bean type="pt.estgp.estgweb.web.form.questionarios.QuestionarioRespostaForm" name="QuestionarioRespostaForm"/>
<form-bean type="pt.estgp.estgweb.web.form.questionarios.QuestionarioMessage" name="QuestionarioMessage"/>
</form-beans>
 
<global-exceptions>
89,6 → 90,31
<forward name="success" path="page.pae.separators.home"/>
</action>
 
<action path="/user/startQuestionariosPaeMessagePedagogico" forward="page.pae.questionario.pedagogico.message"/>
<!--<action path="/user/startQuestionariosPaeMessageXPTO" forward="page.pae.questionario.XPTO.message"/>-->
<action path="/user/questionariosPaeMessagePedagogico"
type="pt.estgp.estgweb.web.controllers.questionarios.QuestionarioController"
name="QuestionarioMessage"
scope="request"
parameter="dispatch"
validate="true"
input="page.pae.questionario.pedagogico.message">
<forward name="success" path="page.pae.questionario.see"/>
<forward name="seeAll" path="page.pae.see.questionarios"/>
</action>
 
<!--Outros no futuro
<action path="/user/questionariosPaeMessageXpto"
type="pt.estgp.estgweb.web.controllers.questionarios.QuestionarioController"
name="QuestionarioMessage"
scope="request"
parameter="dispatch"
validate="true"
input="page.pae.questionario.XPTO.message">
<forward name="success" path="page.pae.questionario.see.XPTO"/>
</action>
-->
 
<!--%%%%%%%%%%%%%%%% Pedagogico Alunos Modulo %%%%%%%%%%%%%%%%%%%-->
<action path="/user/questionarioPedagogicoStartChooseCourses" forward="page.pae.questionario.courses.selection"/>
<action path="/user/questionarioPedagogicoStartCheckCourses" forward="page.pae.questionario.courses.check"/>
/branches/v3/impl/conf/app.properties
17,9 → 17,11
user.session.timeout.minutes=60
site.url=@site.url@
 
 
 
#USAR APENAS ESTES DOIS EMAILS NAO DA PARA MAIS
admin.email=ci@estgp.pt
admin.email.2=jmachado@estgp.pt
admin.email=@admin.email.1@
admin.email.2=@admin.email.2@
 
email.local.suffix.1=estgp.pt
email.local.suffix.2=esae.pt
28,14 → 30,19
 
 
email.local.suffix=estgp.pt
email.server=smtp.gmail.com
email.server=@email.server@
 
##If RoundRobin is false will use email.from property in from address
email.use.round.robin=@email.use.round.robin@
email.use.security=@email.use.security@
#to use example: bacodev1@estgp.pt bacodev2@estgp.pt
email.user.prefix=bacodev
email.user.sufix=@estgp.pt
email.user.count=10
email.user.prefix=@email.user.prefix@
email.user.sufix=@email.user.sufix@
email.user.count=20
email.user=bacodev@estgp.pt
email.password=@email.password@
email.from=bacodev@estgp.pt
 
email.from=@email.from@
email.templates.dir=@email.templates.dir@
#email.server.security=
#email.server.security=SSL
699,8 → 706,8
system.redirections.policy.index.welcome=@system.redirections.policy.index.welcome@
system.redirections.policy.authentication.action=@system.redirections.policy.authentication.action@
system.redirections.policy.authentication.logout.action=@system.redirections.policy.authentication.logout.action@
system.mail.standard.certificated.home.page=@system.mail.standard.certificated.home.page@
 
 
###AQUI PODEMOS USAR OU TRA INTRANET OU OUTRO PORTAL PUBLICO
system.intranet.url=@system.intranet.url@
system.public.url=@system.public.url@
/branches/v3/impl/conf/template/email/message_ipp_pt_certificated.txt
New file
0,0 → 1,28

<html>
<head>
<title>{1}</title>
</head>
<body>
 
<p>Olá <b>@USER_NOME@</b></p>
 
<p><i>Mensagem de:</i> {0}</p>
<p><i>Assunto:</i> <b><u>{1}</u></b></p>
 
{2}
 
<hr/>
<p>Informação Automática PAE:</p>
<p><i>@USER_NOME@</i>, pode responder a esta solicitação acedendo directamente à sua conta no sistema PAE através do seguinte endereço: </a>
<a href="@URL@">@URL@</a>
<p>Se pretender contactar a entidade que lhe enviou a mensagem, use por favor o seguinte endereço de email: {3}</p>
 
 
 
---------------------------------------------
 
<p>Instituto Politécnico de Portalegre - Sistema PAE</p>
<p><a href="http://pae.ipportalegre.pt">http://pae.ipportalegre.pt</a></p>
</body>
</html>
/branches/v3/impl/conf/template/email/message_ipp_pt.txt
9,13 → 9,13
<p><i>Mensagem de:</i> {0}</p>
<p><i>Assunto:</i> <b><u>{1}</u></b></p>
 
 
{2}
 
<p>Cumprimentos</p>
<p>{0}</p>
<hr/>
<p>Se pretender responder, use o email: {3}</p>
 
 
 
---------------------------------------------
 
<p>Instituto Politécnico de Portalegre - Sistema PAE</p>
/branches/v3/impl/conf/berserk/sd.xml
2828,6 → 2828,19
</filterChains>
</service>
 
<service>
<name>QuestionarioSendMessageAllProcessing</name>
<implementationClass>pt.estgp.estgweb.services.questionarios.QuestionariosService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>sendMessageAllProcessing</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="AuthenticatedUsers"/>
<chain name="AdminsOrQuestionarioAdminsOrPedagogico"/>
</filterChains>
</service>
 
<service>
<name>SalvarFicheiro</name>
/branches/v3/impl/src/java/jomm/web/utils/NavPlace.java
149,7 → 149,7
}
catch(Exception e)
{
logger.error(e,e);
logger.info("Message " + msg + " does not exist in MessageProperties will use key");
}
if(msg == null)
return key;
/branches/v3/impl/src/java/pt/estgp/estgweb/utils/EmailPersonalizedCertificated.java
New file
0,0 → 1,131
package pt.estgp.estgweb.utils;
 
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
 
import javax.mail.Message;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
 
/**
* @author Jorge Machado
* @date 20/Mar/2008
* @time 18:32:21
* @see pt.estgp.estgweb.utils
*/
public class EmailPersonalizedCertificated extends Email implements Serializable
{
 
 
private static final Logger logger = Logger.getLogger(EmailPersonalizedCertificated.class);
 
 
/**FIELDS FOR PERSONALIZED EMAILS**/
private String urlPatternWithoutCetificate = null;
private List<Long> userIds = null;
 
 
 
public EmailPersonalizedCertificated cloneEmailForJob(){
EmailPersonalizedCertificated email = new EmailPersonalizedCertificated(subject, from, emailTemplateName, arguments);
email = (EmailPersonalizedCertificated) super.cloneEmailForJob(email);
email.urlPatternWithoutCetificate = this.urlPatternWithoutCetificate;
if(this.userIds != null)
{
email.userIds = new ArrayList<Long>();
email.userIds.addAll(this.userIds);
}
return email;
}
 
public EmailPersonalizedCertificated()
{
}
 
public EmailPersonalizedCertificated(String urlPatternWithoutCetificate,
List<Long> userIds)
{
this.urlPatternWithoutCetificate = urlPatternWithoutCetificate;
this.userIds = filterUserIds(userIds);
}
 
 
public EmailPersonalizedCertificated(String subject, String from, String mailTemplateName, List<String> arguments)
{
super( subject, new ArrayList<String>(), from, mailTemplateName, arguments, Message.RecipientType.TO);
}
 
public EmailPersonalizedCertificated(String subject, String from, String mailTemplateName, List<String> arguments,
String urlPatternWithoutCetificate,
List<Long> userIds)
{
super( subject, new ArrayList<String>(), from, mailTemplateName, arguments, Message.RecipientType.TO);
this.urlPatternWithoutCetificate = urlPatternWithoutCetificate;
this.userIds = filterUserIds(userIds);
}
 
 
 
public boolean isSystemAssumingTestEmail() {
return systemAssumingTestEmail;
}
 
public String getFromName() {
return fromName;
}
 
public void setFromName(String fromName) {
this.fromName = fromName;
}
 
public String getSubject()
{
return subject;
}
 
public List<String> getRecipients()
{
return recipients;
}
 
public void setRecipients(List<String> recipients)
{
systemAssumingTestEmail = true;//ja nao estao sobre
this.recipients = filterRecipients(recipients);
 
}
 
public String getUrlPatternWithoutCetificate() {
return urlPatternWithoutCetificate;
}
 
public void setUrlPatternWithoutCetificate(String urlPatternWithoutCetificate) {
this.urlPatternWithoutCetificate = urlPatternWithoutCetificate;
}
 
public List<Long> getUserIds() {
return userIds;
}
 
public void setUserIds(List<Long> userIds) {
this.userIds = filterUserIds(userIds);
}
 
/**
* Garante que os users Idss não são usados em testes
 
* @return
*/
 
 
protected List<Long> filterUserIds(List<Long> userIds)
{
if(Globals.TEST_ENVIRONEMENT)
{
userIds = new ArrayList<Long>();
userIds.add(new Long(1));//Adding super user
}
return userIds;
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/utils/Email.java
1,20 → 1,16
package pt.estgp.estgweb.utils;
 
import jomm.utils.TemplateUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.services.email.SendEmailService;
 
import javax.mail.*;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
import java.util.Properties;
import javax.mail.Message;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.text.MessageFormat;
import java.io.Serializable;
 
import pt.estgp.estgweb.Globals;
 
/**
* @author Jorge Machado
* @date 20/Mar/2008
25,16 → 21,42
{
 
 
private boolean isHtml = false;
private String subject;
private List<String> recipients;
private Message.RecipientType type = Message.RecipientType.TO;
private String from;
private String emailTemplateName;
private List<String> arguments;
private String fromName = null;
private static final Logger logger = Logger.getLogger(Email.class);
 
protected boolean systemAssumingTestEmail = false;
protected boolean isHtml = false;
protected String subject;
protected List<String> recipients;
protected List<String> recipientsCC = null;
protected Message.RecipientType type = Message.RecipientType.TO;
protected String from;
protected String emailTemplateName;
protected List<String> arguments;
protected String fromName = null;
 
 
 
 
 
public Email cloneEmailForJob(){
Email email = new Email(subject,recipients,from,emailTemplateName,arguments,type);
return cloneEmailForJob(email);
}
public Email cloneEmailForJob(Email email){
 
email.systemAssumingTestEmail = this.systemAssumingTestEmail;
email.isHtml = this.isHtml;
email.subject = this.subject;
email.recipients = this.recipients;
email.type = this.type;
email.from = this.from;
email.emailTemplateName = this.emailTemplateName;
email.arguments = this.arguments;
email.fromName = this.fromName;
return email;
}
 
 
public boolean isHtml() {
return isHtml;
}
43,10 → 65,13
isHtml = html;
}
 
public Email() {
}
 
public Email(String subject, List<String> recipients, String from, String mailTemplateName, List<String> arguments)
{
this.subject = subject;
this.recipients = recipients;
this.recipients = filterRecipients(recipients, arguments, mailTemplateName);;
this.from = from;
this.emailTemplateName = mailTemplateName;
this.arguments = arguments;
56,12 → 81,48
{
this.type = type;
this.subject = subject;
this.recipients = recipients;
this.recipients = filterRecipients(recipients, arguments, mailTemplateName);
this.from = from;
this.emailTemplateName = mailTemplateName;
this.arguments = arguments;
 
 
}
 
protected List<String> filterRecipients(List<String> recipients,List<String> arguments,String template)
{
if(Globals.TEST_ENVIRONEMENT)
{
systemAssumingTestEmail = true;
logger.info("SISTEMA EM MODO DE TESTES, iria enviar email para os seguintes recipientes:");
System.out.println(recipients);
logger.info("Mensagem que ia ser enviada:");
logger.info(SendEmailService.getEmailTextMessage(template, arguments));
logger.info("SISTEMA EM MODO DE TESTES: Vai enviar apenas para o mail de testes");
recipients = new ArrayList<String>();
recipients.add(Globals.ADMIN_EMAIL);
}
return recipients;
}
protected List<String> filterRecipients(List<String> recipients)
{
if(Globals.TEST_ENVIRONEMENT)
{
systemAssumingTestEmail = true;
logger.info("SISTEMA EM MODO DE TESTES, iria enviar email para os seguintes recipientes:");
System.out.println(recipients);
logger.info("Nao se sabe a Mensagem que ia ser enviada");
logger.info("SISTEMA EM MODO DE TESTES: Vai enviar apenas para o mail de testes");
recipients = new ArrayList<String>();
recipients.add(Globals.ADMIN_EMAIL);
}
return recipients;
}
 
public boolean isSystemAssumingTestEmail() {
return systemAssumingTestEmail;
}
 
public String getFromName() {
return fromName;
}
82,7 → 143,9
 
public void setRecipients(List<String> recipients)
{
this.recipients = recipients;
systemAssumingTestEmail = true;//ja nao estao sobre
this.recipients = filterRecipients(recipients);
 
}
 
public String getFrom()
132,6 → 195,17
 
public void setType(Message.RecipientType type)
{
this.type = type;
//TODO WHEN BACK TO BCC REMOVE this
this.type = Message.RecipientType.TO;
//this.type = type;
}
 
 
public List<String> getRecipientsCC() {
return recipientsCC;
}
 
public void setRecipientsCC(List<String> recipientsCC) {
this.recipientsCC = recipientsCC;
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/Globals.java
125,7 → 125,7
public static final String TMP_DIR = ConfigProperties.getProperty("tmp.dir");
public static final String DATA_DIR = ConfigProperties.getProperty("data.dir");
public static final String JOB_SERVICES_LOG_DIR = ConfigProperties.getProperty("data.dir") + java.io.File.separator + "jobslogs";
;
 
public static final String EMAIL_SERVER_HOST = ConfigProperties.getProperty("email.server");
public static final String EMAIL_SERVER_SECURITY = ConfigProperties.getProperty("email.server.security");
public static final int EMAIL_SERVER_SECURITY_TLS = ConfigProperties.getIntProperty("email.server.security.tls");
138,7 → 138,17
public static final String EMAIL_SERVER_USERNAME = ConfigProperties.getProperty("email.user");
public static final String EMAIL_SERVER_PASSWORD = ConfigProperties.getProperty("email.password");
 
 
 
 
 
public static final String ADMIN_EMAIL = ConfigProperties.getProperty("admin.email");
public static final String ADMIN_EMAIL_2 = ConfigProperties.getProperty("admin.email.2");
 
public static final boolean SYSTEM_EMAIL_USE_SECURITY = ConfigProperties.getBooleanProperty("email.use.security");
public static final boolean SYSTEM_EMAIL_USE_ROUND_ROBIN = ConfigProperties.getBooleanProperty("email.use.round.robin");
public static final String SYSTEM_EMAIL_BOX = ConfigProperties.getProperty("email.from");
 
public static final String ANNOUNCEMENT_TYPE_NEWS = "news";
public static final String ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS = "top.flash.news";
public static final String ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS = "bottom.flash.news";
361,6 → 371,7
public static final String EMAIL_MESSAGE_TEMPLATE_PT = "message_pt.txt";
 
 
public static final String EMAIL_MESSAGE_IPP_TEMPLATE_PT_CERTIFICATED = "message_ipp_pt_certificated.txt";
public static final String EMAIL_MESSAGE_IPP_TEMPLATE_PT = "message_ipp_pt.txt";
 
public static final String EMAIL_COURSEUNIT_WORK_SUBJECT_PT = ConfigProperties.getProperty("email.courseunit.work.subject.pt");
434,6 → 445,7
 
public static final String ROLE_INVITED = "invited";
 
public static final String SYSTEM_EMAIL_CERTIFICATED_HOME_PAGE = ConfigProperties.getProperty("system.mail.standard.certificated.home.page");
public static final String SYSTEM_THEME = ConfigProperties.getProperty("system.theme");
public static final String AUTHENTICATE_SERVICE = ConfigProperties.getProperty("authentication.policy.service");
public static final String AUTHENTICATE_SERVICE_USERNAME_KEY = ConfigProperties.getProperty("authentication.policy.username.msg.key");
/branches/v3/impl/src/java/pt/estgp/estgweb/services/email/impl/EmailTransport.java
New file
0,0 → 1,135
package pt.estgp.estgweb.services.email.impl;
 
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
 
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import java.util.Properties;
 
/**
* Created by jorgemachado on 13/06/16.
*/
public class EmailTransport
{
 
private static final Logger logger = Logger.getLogger(EmailTransport.class);
 
Session session = null;
Transport transport = null;
 
String sendFromAddress;
String password;
String identifier;
 
public EmailTransport(String identifier, String sendFromAddress,String password)
{
this.identifier = identifier;
this.sendFromAddress = sendFromAddress;
this.password = password;
}
 
public synchronized Transport getEmailTransport()
{
if(session == null || transport == null || !transport.isConnected())
{
logger.info("Transport(" + identifier + ") CONNECTION TO TRANSPORT DOES NOT EXIST OR FAIL WILL REOPEN : " + sendFromAddress + " password: " + password);
}
else
{
System.out.println("Transport(" + identifier + ") OK --> RETURNING Transport");
return transport;
}
 
 
 
 
// Set up properties for mail session
//Properties props = System.getProperties();
Properties props = new Properties();
props.put("mail.smtp.host", Globals.EMAIL_SERVER_HOST);
props.setProperty("mail.transport.protocol", "smtp");//todo new
javax.mail.Authenticator authenticator = null;
if(Globals.SYSTEM_EMAIL_USE_SECURITY && Globals.EMAIL_SERVER_SECURITY != null && Globals.EMAIL_SERVER_SECURITY.compareTo("TLS")==0)
{
logger.info("Transport(" + identifier + ") Using Email Security TLS");
 
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port", ""+ Globals.EMAIL_SERVER_SECURITY_TLS);
authenticator = new javax.mail.Authenticator() {
 
protected PasswordAuthentication getPasswordAuthentication() {
System.out.println("Email from:" + sendFromAddress + " pass:" + password);
return new PasswordAuthentication(sendFromAddress, password);
}
};
}
else if(Globals.SYSTEM_EMAIL_USE_SECURITY && Globals.EMAIL_SERVER_SECURITY != null && Globals.EMAIL_SERVER_SECURITY.compareTo("SSL")==0)
{
logger.info("Transport(" + identifier + ") Using Email Security SSL");
 
props.put("mail.smtp.socketFactory.port", Globals.EMAIL_SERVER_SECURITY_SSL);
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", Globals.EMAIL_SERVER_SECURITY_SSL);
authenticator = new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
System.out.println("Email from:" + sendFromAddress + " pass:" + password);
 
return new PasswordAuthentication(sendFromAddress,password);
}
};
}
else
{
 
}
 
 
 
System.out.println("Transport(" + identifier + ") Autenticator != null :" + (authenticator != null));
// Get session
/*Session session = authenticator != null ?
Session.getDefaultInstance(props, authenticator)
: Session.getDefaultInstance(props) ;
*/
 
session = authenticator != null ?
Session.getInstance(props, authenticator)
: Session.getInstance(props) ;
 
try {
transport = session.getTransport("smtp");
System.out.println("Transport(" + identifier + ") before connect isConnected:" + transport.isConnected());
transport.connect();
System.out.println("Transport(" + identifier + ") after connect isConnected:" + transport.isConnected());
} catch (MessagingException e) {
logger.error(e,e);
return null;
}
 
session.setDebug(true);
session.setDebugOut(System.out);
return transport;
}
 
public String getIdentifier() {
return identifier;
}
 
public Session getSession() {
return session;
}
 
public Transport getTransport() {
return transport;
}
 
public String getSendFromAddress() {
return sendFromAddress;
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/email/impl/EmailTransportPool.java
New file
0,0 → 1,89
package pt.estgp.estgweb.services.email.impl;
 
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
 
import javax.mail.Transport;
import java.util.ArrayList;
import java.util.List;
 
/**
* Created by jorgemachado on 13/06/16.
*/
public class EmailTransportPool
{
private static final Logger logger = Logger.getLogger(EmailTransportPool.class);
 
private List<EmailTransport> pool = new ArrayList<EmailTransport>();
 
//SINGLETON INSTANCE
static EmailTransportPool instance = new EmailTransportPool();
 
public static EmailTransportPool getInstance(){
return instance;
}
 
String[] serverEmails;
 
private EmailTransportPool()
{
serverEmails = new String[Globals.EMAIL_SERVER_USER_COUNT];
for(int i = 1;i<= Globals.EMAIL_SERVER_USER_COUNT;i++)
{
serverEmails[i-1] = Globals.EMAIL_SERVER_USER_PREFIX + i + Globals.EMAIL_SERVER_USER_SUFIX;
}
 
if(Globals.SYSTEM_EMAIL_USE_ROUND_ROBIN)
{
for(String emailFrom: serverEmails)
{
String pass = Globals.EMAIL_SERVER_PASSWORD;
logger.info("POOL: Adding to POOL " + emailFrom + " with pass: " + pass);
createTransport(emailFrom,emailFrom,pass);
}
}
else
{
logger.info("POOL: Will use only system mail box");
createTransport(Globals.SYSTEM_EMAIL_BOX,Globals.SYSTEM_EMAIL_BOX,Globals.EMAIL_SERVER_PASSWORD);
}
}
 
private void createTransport(String identifier, String emailFrom, String emailServerPassword)
{
EmailTransport emailTransport = new EmailTransport(identifier,emailFrom,emailServerPassword);
pool.add(emailTransport);
}
 
int indexPool = -1;
 
public synchronized EmailTransport getAvailableTransportFromPool()
{
int tries = pool.size();
while(tries > 0)
{
tries--;
 
indexPool++;
 
if(indexPool >= pool.size())
indexPool = 0;
 
EmailTransport emailTransport = pool.get(indexPool);
 
Transport transport = emailTransport.getEmailTransport();
if(transport.isConnected())
{
logger.warn("EMAIL POOL: Transport (" + emailTransport.getIdentifier() + ") is OK connected, will return this one");
return emailTransport;
}
else
{
logger.warn("EMAIL POOL: Transport (" + emailTransport.getIdentifier() + ") is not connected, will try another");
}
}
logger.warn("EMAIL POOL: Transport (There are no available transports)");
return null;
}
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/email/EMAILJob.java
33,50 → 33,66
 
 
 
//TODO WHEN BACK TO BCC REMOVE this to 20 and remove Thread
private static final int NUMBER_EMAILS_TO = 1;
private static final int pauseTime = 1000;
 
 
public void runJob()
{
if(Globals.TEST_ENVIRONEMENT)
{
String warn = "System in TEST Environement - will not send EMAIL";
logger.warn(warn);
return;
}
try
{
List<String> recipientsOriginal = new ArrayList<String>();
List<String> recipients = new ArrayList<String>();
recipients.addAll(email.getRecipients());
recipientsOriginal.addAll(email.getRecipients());
while(recipients.size() > 0)
{
List<String> recipientsToSend = new ArrayList<String>();
final Email cloned = email.cloneEmailForJob();
logger.info("Opening new Thread to send emails");
new Thread(
new Runnable() {
@Override
public void run() {
if(Globals.TEST_ENVIRONEMENT && !cloned.isSystemAssumingTestEmail())
{
String warn = "System in TEST Environement - will not send EMAIL";
logger.warn(warn);
return;
}
try
{
List<String> recipientsOriginal = new ArrayList<String>();
List<String> recipients = new ArrayList<String>();
recipients.addAll(cloned.getRecipients());
recipientsOriginal.addAll(cloned.getRecipients());
while(recipients.size() > 0)
{
List<String> recipientsToSend = new ArrayList<String>();
 
int contador = 0;
Iterator<String> iter = recipients.iterator();
while(iter.hasNext() && contador < 20)
{
recipientsToSend.add(iter.next());
iter.remove();
contador++;
int contador = 0;
Iterator<String> iter = recipients.iterator();
while(iter.hasNext() && contador < NUMBER_EMAILS_TO)
{
recipientsToSend.add(iter.next());
iter.remove();
contador++;
}
cloned.setRecipients(recipientsToSend);
new SendEmailService().sendEmail(cloned);
try {
Thread.sleep(pauseTime);
} catch (InterruptedException e) {
logger.error(e,e);
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
logger.error(e,e);
}
cloned.setRecipients(recipientsOriginal);
}
catch (ServiceException e)
{
logger.error("Sending EMAIL:" + e.toString(),e);
}
}
}
email.setRecipients(recipientsToSend);
new SendEmailService().sendEmail(email);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
logger.error(e,e);
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
logger.error(e,e);
}
email.setRecipients(recipientsOriginal);
}
catch (ServiceException e)
{
logger.error("Sending EMAIL:" + e.toString(),e);
}
).start();
}
 
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java
5,13 → 5,17
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.enums.LangEnum;
import pt.estgp.estgweb.services.email.impl.EmailTransport;
import pt.estgp.estgweb.services.email.impl.EmailTransportPool;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.Email;
import pt.estgp.estgweb.utils.EmailPersonalizedCertificated;
import pt.estgp.estgweb.web.utils.DatesUtils;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import javax.mail.*;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
19,7 → 23,6
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
 
/**
* @author Jorge Machado
33,16 → 36,123
 
private static final String gradeUnitTemplate = Globals.TEMPLATE_EMAIL_PATH + "/" + Globals.EMAIL_GRADE_UNIT_TEMPLATE;
 
static String[] serverEmails;
/*static String sendFromAddress;*/
 
public SendEmailService() {
 
 
}
 
/*static String[] serverEmails;
static int serverEmailPos = -1;
static Session session = null;
static Transport transport = null;
 
static{
 
static
{
serverEmails = new String[Globals.EMAIL_SERVER_USER_COUNT];
for(int i = 1;i<= Globals.EMAIL_SERVER_USER_COUNT;i++)
{
serverEmails[i-1] = Globals.EMAIL_SERVER_USER_PREFIX + i + Globals.EMAIL_SERVER_USER_SUFIX;
}
}
 
public static synchronized Transport getEmailTransport()
{
 
 
if(session == null || transport == null || !transport.isConnected())
{
sendFromAddress = Globals.SYSTEM_EMAIL_USE_ROUND_ROBIN ?
getRoundRobinEmailUser() : Globals.SYSTEM_EMAIL_BOX;
 
logger.info("CONNECTION TO TRANSPORT FAIL WILL REOPEN : " + sendFromAddress + " using round robin: " + Globals.SYSTEM_EMAIL_USE_ROUND_ROBIN);
}
else
{
System.out.println("TRANSPORT OK RETURNING");
return transport;
}
 
 
 
 
// Set up properties for mail session
//Properties props = System.getProperties();
Properties props = new Properties();
props.put("mail.smtp.host", Globals.EMAIL_SERVER_HOST);
props.setProperty("mail.transport.protocol", "smtp");//todo new
final String username = Globals.EMAIL_SERVER_USERNAME;
final String password = Globals.EMAIL_SERVER_PASSWORD;
javax.mail.Authenticator authenticator = null;
if(Globals.SYSTEM_EMAIL_USE_SECURITY && Globals.EMAIL_SERVER_SECURITY != null && Globals.EMAIL_SERVER_SECURITY.compareTo("TLS")==0)
{
logger.info("Using Email Security TLS");
 
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port", ""+ Globals.EMAIL_SERVER_SECURITY_TLS);
authenticator = new javax.mail.Authenticator() {
 
protected PasswordAuthentication getPasswordAuthentication() {
System.out.println("Email from:" + sendFromAddress + " pass:" + password);
return new PasswordAuthentication(sendFromAddress, password);
}
};
}
else if(Globals.SYSTEM_EMAIL_USE_SECURITY && Globals.EMAIL_SERVER_SECURITY != null && Globals.EMAIL_SERVER_SECURITY.compareTo("SSL")==0)
{
logger.info("Using Email Security SSL");
 
props.put("mail.smtp.socketFactory.port", Globals.EMAIL_SERVER_SECURITY_SSL);
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", Globals.EMAIL_SERVER_SECURITY_SSL);
authenticator = new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
System.out.println("Email from:" + sendFromAddress + " pass:" + password);
 
return new PasswordAuthentication(sendFromAddress,password);
}
};
}
else
{
 
}
 
 
 
System.out.println("Autenticator != null :" + (authenticator != null));
// Get session
//Session session = authenticator != null ?
// Session.getDefaultInstance(props, authenticator)
// : Session.getDefaultInstance(props) ;
 
 
session = authenticator != null ?
Session.getInstance(props, authenticator)
: Session.getInstance(props) ;
 
try {
 
System.out.println("toString:" + session.getTransport("smtp").toString());
transport = session.getTransport("smtp");
System.out.println("before connect isConnected:" + transport.isConnected());
transport.connect();
System.out.println("after connect isConnected:" + transport.isConnected());
} catch (MessagingException e) {
logger.error(e,e);
return null;
}
 
session.setDebug(true);
session.setDebugOut(System.out);
return transport;
 
}
private static synchronized String getRoundRobinEmailUser()
{
serverEmailPos++;
52,64 → 162,31
}
return serverEmails[serverEmailPos];
}
*/
 
public void sendEmail(Email email) throws ServiceException
{
if(Globals.TEST_ENVIRONEMENT)
sendEmail(email,null,null);
}
public void sendEmail(Email email,String url,String nome) throws ServiceException
{
if(Globals.TEST_ENVIRONEMENT && !email.isSystemAssumingTestEmail())
{
String warn = "System in TEST Environement - will not send EMAIL";
logger.warn(warn);
return;
}
try{
final String sendFromAddress = getRoundRobinEmailUser();
 
// Set up properties for mail session
Properties props = System.getProperties();
props.put("mail.smtp.host", Globals.EMAIL_SERVER_HOST);
final String username = Globals.EMAIL_SERVER_USERNAME;
final String password = Globals.EMAIL_SERVER_PASSWORD;
javax.mail.Authenticator authenticator = null;
if(Globals.EMAIL_SERVER_SECURITY != null && Globals.EMAIL_SERVER_SECURITY.compareTo("TLS")==0)
{
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port", ""+ Globals.EMAIL_SERVER_SECURITY_TLS);
authenticator = new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(sendFromAddress, password);
}
};
}
else if(Globals.EMAIL_SERVER_SECURITY != null && Globals.EMAIL_SERVER_SECURITY.compareTo("SSL")==0)
{
props.put("mail.smtp.socketFactory.port", Globals.EMAIL_SERVER_SECURITY_SSL);
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", Globals.EMAIL_SERVER_SECURITY_SSL);
authenticator = new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(sendFromAddress,password);
}
};
}
else
{
//Transport transport = getEmailTransport();
//MimeMessage message = new MimeMessage(session);
 
}
EmailTransport emailTransport = EmailTransportPool.getInstance().getAvailableTransportFromPool();
MimeMessage message = new MimeMessage(emailTransport.getSession());
 
 
 
 
 
 
// Get session
Session session = Session.getDefaultInstance(props, authenticator);
session.setDebug(true);
session.setDebugOut(System.out);
 
// Create message
MimeMessage message = new MimeMessage(session);
// Set the recipients of the message
boolean valid = false;
for (String recipient : email.getRecipients())
117,23 → 194,41
if(Email.validEmail(recipient))
{
valid=true;
message.addRecipient(email.getType(),new InternetAddress(recipient));
logger.info("Adding recipient to transport:"+recipient);
message.addRecipient(Message.RecipientType.TO,new InternetAddress(recipient));
logger.info("Adding recipient (" + email.getType().toString() + ") to transport:"+recipient);
}
}
 
if(email.getRecipientsCC() != null)
{
for (String recipient : email.getRecipientsCC())
{
if(Email.validEmail(recipient))
{
//valid=true;
message.addRecipient(Message.RecipientType.CC,new InternetAddress(recipient));
logger.info("Adding recipient CC (" + email.getType().toString() + ") to transport:"+recipient);
}
}
}
if(valid)
{
 
String content = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_EMAIL_PATH + "/" + email.getEmailTemplateName());
// Format the mail message
String fullMessage = MessageFormat.format(content, email.getArguments().toArray());
String fullMessage = getEmailTextMessage(email);
 
if(url != null && nome != null)
{
logger.info("Requesting certificated Email, will replace fields in template");
fullMessage = fullMessage.replaceAll("@USER_NOME@",nome);
fullMessage = fullMessage.replaceAll("@URL@",url);
}
 
 
logger.info("FROM:" + email.getFrom() + " but using: " + sendFromAddress);
 
logger.info("FROM:" + email.getFrom() + " but using: " + emailTransport.getSendFromAddress());
//if(email.getFromName() != null)
try {
message.setFrom(new InternetAddress(sendFromAddress,sendFromAddress));
message.setFrom(new InternetAddress(emailTransport.getSendFromAddress(),emailTransport.getSendFromAddress()));
} catch (UnsupportedEncodingException e) {
logger.error(e,e);
//message.setFrom(new InternetAddress(sendFromAddress));
171,7 → 266,9
 
 
 
Transport.send(message);
emailTransport.getTransport().send(message);
//session.getTransport("smtp").sendMessage(message,message.getAllRecipients());
//session.getTransport().close();
}
}
catch(MessagingException e)
181,6 → 278,22
}
}
 
private static String getEmailTextMessage(Email email)
{
return getEmailTextMessage( email.getEmailTemplateName(), email.getArguments().toArray());
}
 
public static String getEmailTextMessage(String template,List<String> arguments)
{
return getEmailTextMessage(template, arguments.toArray());
}
public static String getEmailTextMessage(String template,Object[] arguments)
{
String content = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_EMAIL_PATH + "/" +template);
// Format the mail message
return MessageFormat.format(content, arguments);
}
 
public Email getSendUrlToFriendEmail(String url, String from, LangEnum langEnum, List<String> recipients)
{
List<String> arguments = new ArrayList<String>();
298,7 → 411,8
// # 0 : From
// # 1 : Subject
// # 2 : Text
// # 2 : FromEmail Adultered in message
// # 3 : FromEmail Adultered in message
// # 4 : URL todo with certificate
List<String> arguments = new ArrayList<String>();
arguments.add(from);
arguments.add(subject);
316,6 → 430,7
if(Email.validEmail(e))
recipients.add(e);
}
 
logger.info("subject: " + subject);
if(fromEmail == null)
logger.info("user: " + user.getEmail());
330,11 → 445,56
logger.info(rec);
logger.info("arguments end");
fromEmail = fromEmail == null ? user.getEmail() : fromEmail;
Email email = new Email(subject ,recipients,fromEmail,template,arguments,Message.RecipientType.BCC);
Email email = new Email(subject ,recipients,fromEmail,template,arguments,Message.RecipientType.TO);
email.setFromName(from + " (PAE-IPP)");
return email;
}
 
public EmailPersonalizedCertificated getMessageEmailAdulteredFromEmailIppCertificated(
String fromEmail, String from, String subject,String text, User user,
List<Long> userIds,
String url
)
{
// # 0 : From
// # 1 : Subject
// # 2 : Text
// # 3 : FromEmail Adultered in message
// # 4 : URL todo with certificate
List<String> arguments = new ArrayList<String>();
arguments.add(from);
arguments.add(subject);
arguments.add(text);
arguments.add(fromEmail);
 
String template;
 
template = Globals.EMAIL_MESSAGE_IPP_TEMPLATE_PT_CERTIFICATED;
 
 
logger.info("Preparing batch work for Personalized Emails Certificated");
logger.info("subject: " + subject);
if(fromEmail == null)
logger.info("user: " + user.getEmail());
else
logger.info("user altered to: " + fromEmail);
logger.info("template: " + template);
logger.info("arguments:");
for(String arg: arguments)
logger.info(arg);
logger.info("userIds:" + userIds);
logger.info("arguments end");
fromEmail = fromEmail == null ? user.getEmail() : fromEmail;
EmailPersonalizedCertificated email = new EmailPersonalizedCertificated(subject ,fromEmail,template,arguments,
url,
userIds);
email.setFromName(from + " (PAE-IPP)");
 
return email;
}
 
 
 
public Email getMessageEmailOld(String from, String subject,String text, LangEnum langEnum, String target, List<User> users, User user)
{
// # 0 : From
/branches/v3/impl/src/java/pt/estgp/estgweb/services/email/Emails.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/branches/v3/impl/src/java/pt/estgp/estgweb/services/email/EMAILJobPersonalizedCertificated.java
New file
0,0 → 1,139
package pt.estgp.estgweb.services.email;
 
import jomm.dao.impl.AbstractDao;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.authenticate.AuthenticateService;
import pt.estgp.estgweb.services.jobs.JobHandler;
import pt.estgp.estgweb.utils.Email;
import pt.estgp.estgweb.utils.EmailPersonalizedCertificated;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
 
/**
* @author Jorge Machado
* @date 11/Jul/2008
* @see pt.estgp.estgweb.services.sms
*/
public class EMAILJobPersonalizedCertificated implements JobHandler, Serializable
{
private static final Logger logger = Logger.getLogger(EMAILJobPersonalizedCertificated.class);
 
private EmailPersonalizedCertificated email;
 
 
 
 
public EMAILJobPersonalizedCertificated(EmailPersonalizedCertificated email)
{
this.email = email;
}
 
 
private static final int pauseTime = 1000;
 
 
public void runJob()
{
final EmailPersonalizedCertificated cloned = email.cloneEmailForJob();
 
 
logger.info("Opening new Thread to send emails");
new Thread(
new Runnable() {
@Override
public void run() {
if(Globals.TEST_ENVIRONEMENT && !cloned.isSystemAssumingTestEmail())
{
String warn = "System in TEST Environement - will not send EMAIL";
logger.warn(warn);
return;
}
try
{
String URL_PREFIX = cloned.getUrlPatternWithoutCetificate();
if(URL_PREFIX.indexOf("?") < 0)
URL_PREFIX = URL_PREFIX + "?certificate=";
else
URL_PREFIX = URL_PREFIX + "&certificate=";
 
cloned.setRecipients(new ArrayList<String>());
 
SendEmailService sendEmailService = new SendEmailService();
 
for(long userId: cloned.getUserIds())
{
 
try{
AbstractDao.getCurrentSession().beginTransaction();
AbstractDao.getCurrentSession().clear();
User user = DaoFactory.getUserDaoImpl().load(userId);
String certificate = new AuthenticateService().createCertificate(user);
String emailStr = user.getEmail();
String outEmail = user.getOutEmail();
String preferrefEmail = user.getPreferrefEmail();
String toEmail = null;
 
if(preferrefEmail != null && Email.validEmail(preferrefEmail))
toEmail = preferrefEmail;
else if(emailStr != null && Email.validEmail(emailStr))
toEmail = emailStr;
else if(outEmail != null && Email.validEmail(outEmail))
toEmail = outEmail;
String nome = user.getName();
AbstractDao.getCurrentSession().getTransaction().commit();
 
if(toEmail != null)
{
List<String> ccEmails = new ArrayList<String>();
if(emailStr != null && Email.validEmail(emailStr) && !toEmail.equals(emailStr))
ccEmails.add(emailStr);
if(outEmail != null && Email.validEmail(outEmail) && !toEmail.equals(outEmail))
ccEmails.add(outEmail);
 
 
cloned.setRecipientsCC(ccEmails);
cloned.getRecipients().clear();
cloned.getRecipients().add(toEmail);
 
String finalUrl = URL_PREFIX + certificate;
 
sendEmailService.sendEmail(cloned, finalUrl, nome);
 
try {
logger.info("Watting to send another email: sent to" + toEmail);
//Thread.sleep(pauseTime);
Thread.sleep(pauseTime);
} catch (InterruptedException e) {
logger.error(e,e);
}
}
 
 
}catch(Throwable e)
{
logger.error(e,e);
}
 
}
 
logger.info("No more user ids to send email. exiting");
 
 
}
catch (Throwable e)
{
logger.error("Sending EMAIL:" + e.toString(),e);
}
}
}
).start();
}
 
 
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java
480,8 → 480,7
catch (Exception e)
{
logger.error(e, e);
List<String> emails = new ArrayList<String>();
emails.add(ConfigProperties.getProperty("admin.email"));
List<String> emails = ConfigProperties.getListValues("admin.email");
List<String> arguments = new ArrayList<String>();
String cause = e.getCause() == null ? "" : e.getCause().toString();
arguments.add((e.toString() + "\n" + cause).replace("\n","<br/>"));
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/QuestionariosService.java
1,20 → 1,22
package pt.estgp.estgweb.services.questionarios;
 
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.dao.impl.AnnouncementDaoImpl;
import pt.estgp.estgweb.domain.views.QuestionarioView;
import pt.estgp.estgweb.services.email.EMAILJob;
import pt.estgp.estgweb.services.email.EMAILJobPersonalizedCertificated;
import pt.estgp.estgweb.services.email.SendEmailService;
import pt.estgp.estgweb.services.jobs.JobScheduleService;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.Email;
import pt.estgp.estgweb.utils.EmailPersonalizedCertificated;
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.*;
 
/**
* Created by jorgemachado on 21/03/16.
204,56 → 206,112
public int sendMessage(boolean onlyNotAnswered,Long id,String msg,String emailFrom,String personFrom, String subject,UserSession userSession)
{
String source = "questionario message";
AnnouncementDaoImpl.FindUsersResult result = DaoFactory.getQuestionarioDaoImpl().findUsersEmails(id,onlyNotAnswered);
AnnouncementDaoImpl.FindUsersIdResult result = DaoFactory.getQuestionarioDaoImpl().findUsersIds(id, onlyNotAnswered);
 
return sendEmails(id, msg, emailFrom, personFrom, subject, userSession, source, result);
}
 
private int sendEmails(Long id, String msg, String emailFrom, String personFrom, String subject, UserSession userSession, String source, AnnouncementDaoImpl.FindUsersResult result) {
List<String> usersToConsume = result.emails;
 
 
logger.info("Scheduling mail jobs to " + result.users + " users: " + usersToConsume.size() + " recipients");
while(usersToConsume.size() > 0)
{
Iterator<String> iter = usersToConsume.iterator();
List<String> usersToJob = new ArrayList<String>();
int contador = 0;
while(iter.hasNext() && contador < 20)
{
usersToJob.add(iter.next());
iter.remove();
contador++;
}
Email e = sendEmailService.getMessageEmailAdulteredFromEmailIpp(emailFrom,
personFrom,
subject,
msg,
usersToJob,
userSession.getUser());
e.setHtml(true);
EMAILJob emailJob = new EMAILJob(e);
JobScheduleService.getInstance().scheduleNow(emailJob,"Message Email (" + source + ":id " + id + ") from " + userSession.getUsername() + " as " + personFrom + " - subject:" + subject ,userSession);
}
 
return result.users;
}
 
public int sendMessageCursoAfeto(boolean onlyNotAnswered,Long id,String msg,String emailFrom,String personFrom, String subject,UserSession userSession)
{
String source = "questionario curso message";
AnnouncementDaoImpl.FindUsersResult result = DaoFactory.getQuestionarioDaoImpl().findUsersEmailsPedagogico(onlyNotAnswered,id,0);
AnnouncementDaoImpl.FindUsersIdResult result = DaoFactory.getQuestionarioDaoImpl().findUsersIdsPedagogico(onlyNotAnswered, id, 0);
return sendEmails(id, msg, emailFrom, personFrom, subject, userSession, source, result);
}
public int sendMessageUnidadeAfeta(boolean onlyNotAnswered,Long id,String msg,String emailFrom,String personFrom, String subject,UserSession userSession)
{
String source = "questionario unidade message";
AnnouncementDaoImpl.FindUsersResult result = DaoFactory.getQuestionarioDaoImpl().findUsersEmailsPedagogico(onlyNotAnswered,0,id);
AnnouncementDaoImpl.FindUsersIdResult result = DaoFactory.getQuestionarioDaoImpl().findUsersIdsPedagogico(onlyNotAnswered, 0, id);
return sendEmails(id, msg, emailFrom, personFrom, subject, userSession, source, result);
}
 
 
public int sendMessageAllProcessing(boolean onlyNotAnswered,String msg,String emailFrom,String personFrom, String subject,UserSession userSession)
{
String source = "questionarios em processamento message";
AnnouncementDaoImpl.FindUsersIdResult result = DaoFactory.getQuestionarioDaoImpl().findUsersIdsPedagogicoAllProcessing(onlyNotAnswered);
return sendEmails(null, msg, emailFrom, personFrom, subject, userSession, source, result);
}
 
private int sendEmails(Long id, String msg, String emailFrom, String personFrom, String subject, UserSession userSession, String source, AnnouncementDaoImpl.FindUsersIdResult result) {
List<Long> usersToConsume = result.userIds;
 
 
logger.info("Scheduling mail jobs to " + result.users + " users: " + usersToConsume.size() + " recipients");
//while(usersToConsume.size() > 0)
//{
// Iterator<String> iter = usersToConsume.iterator();
// List<String> usersToJob = new ArrayList<String>();
// int contador = 0;
// while(iter.hasNext() && contador < 20)
// {
// usersToJob.add(iter.next());
// iter.remove();
// contador++;
// }
 
String suffix = Globals.SYSTEM_EMAIL_CERTIFICATED_HOME_PAGE;
if(suffix.startsWith("/"))
suffix = suffix.substring(1);
String url = Globals.SITE_URL.endsWith("/") ? Globals.SITE_URL + suffix : Globals.SITE_URL + "/" + suffix;
 
EmailPersonalizedCertificated e = sendEmailService.getMessageEmailAdulteredFromEmailIppCertificated(emailFrom,
personFrom,
subject,
msg,
userSession.getUser(),
usersToConsume,
url);
 
e.setHtml(true);
EMAILJobPersonalizedCertificated emailJob = new EMAILJobPersonalizedCertificated(e);
JobScheduleService.getInstance().scheduleNow(emailJob,"Message Email (" + source + ":id " + id + ") from " + userSession.getUsername() + " as " + personFrom + " - subject:" + subject ,userSession);
//}
enviarComprovativoAoRemetente(id, msg, emailFrom, personFrom, subject, userSession, source,usersToConsume.size());
enviarComprovativoAAdministracao(id, msg, emailFrom, personFrom, subject, userSession, source,usersToConsume.size());
return result.users;
}
 
private void enviarComprovativoAAdministracao(Long id, String msg, String emailFrom, String personFrom, String subject, UserSession userSession, String source,int sentTo)
{
 
 
Email e = sendEmailService.getMessageEmailAdulteredFromEmailIpp(emailFrom,
personFrom,
subject + " (COMPROVATIVO PAE) ",
"<u>Caros membros da administração este é um comprovativo de um email enviado pelo PAE pelo user: " + userSession.getUser().getName() + " - Este é um comprovativo do seu envio de mensagem a " + sentTo + " Alunos</u><br/><br/>" + msg,
ConfigProperties.getListValuesByPrefix("admin.email"),
userSession.getUser());
 
e.setHtml(true);
EMAILJob emailJob = new EMAILJob(e);
JobScheduleService.getInstance().scheduleNow(emailJob,"Message Email (" + source + ":id " + id + ") from " + userSession.getUsername() + " as " + personFrom + " - subject:" + subject ,userSession);
}
 
private void enviarComprovativoAoRemetente(Long id, String msg, String emailFrom, String personFrom, String subject, UserSession userSession, String source,int sentTo)
{
Map<String,String> emailsComprovativos = new HashMap<String, String>();
if(Email.validEmail(userSession.getUser().getEmail()))
emailsComprovativos.put(userSession.getUser().getEmail(),"");
if(Email.validEmail(userSession.getUser().getOutEmail()))
emailsComprovativos.put(userSession.getUser().getOutEmail(),"");
if(Email.validEmail(userSession.getUser().getPreferrefEmail()))
emailsComprovativos.put(userSession.getUser().getPreferrefEmail(),"");
List<String> comprovativos = new ArrayList<String>();
comprovativos.addAll(emailsComprovativos.keySet());
if(comprovativos.size() > 0)
{
Email e = sendEmailService.getMessageEmailAdulteredFromEmailIpp(emailFrom,
personFrom,
subject + " (COMPROVATIVO PAE) ",
"<u>Olá " + userSession.getUser().getName() + " - Este é um comprovativo do seu envio de mensagem a " + sentTo + " Alunos</u><br/><br/>" + msg,
comprovativos,
userSession.getUser());
 
e.setHtml(true);
EMAILJob emailJob = new EMAILJob(e);
JobScheduleService.getInstance().scheduleNow(emailJob,"Message Email (" + source + ":id " + id + ") from " + userSession.getUsername() + " as " + personFrom + " - subject:" + subject ,userSession);
}
}
 
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/authenticate/AuthenticateService.java
329,6 → 329,15
User u = DaoFactory.getUserDaoImpl().load(userId);
return createCertificate(u, usersession);
}
public String createCertificateForId(long userId)
{
User u = DaoFactory.getUserDaoImpl().load(userId);
return createCertificate(u);
}
public String createCertificate(User user)
{
return createCertificate(user,null);
}
/**
* Create a new Certificate for usage in URL auto login
*
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/QuestionarioDaoImpl.java
10,9 → 10,7
import pt.estgp.estgweb.domain.*;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import static org.hibernate.criterion.Restrictions.*;
 
113,6 → 111,21
else
return 0;
}
public long getNumeroUnidadesUsadas(long questionarioId)
{
Query q = getCurrentSession().createQuery
("select count(u.id) from u in class " + QuestionarioPedagogicoUnidadeCurricularAfeta.class.getName() + " " +
" JOIN u.cursoAfeto c " +
" JOIN c.questionario q " +
" where u.usar = true AND q.id = " + questionarioId);
Object result = q.uniqueResult();
if(result != null && ((Long)result) > 0)
{
return (Long)result;
}
else
return 0;
}
 
public long getNumeroRespostasRequisitadas(long questionarioId)
{
129,6 → 142,7
return 0;
}
 
/*
public AnnouncementDaoImpl.FindUsersResult findUsersEmails(Long id,boolean onlyNotAnswered)
{
 
155,16 → 169,46
 
 
}
*/
 
public AnnouncementDaoImpl.FindUsersResult findUsersEmailsPedagogico(boolean onlyNotAnswered,long cursoAfetoId,long unidadeAfetaId)
public AnnouncementDaoImpl.FindUsersIdResult findUsersIds(Long id,boolean onlyNotAnswered)
{
 
AnnouncementDaoImpl.FindUsersResult findUsersResult = new AnnouncementDaoImpl.FindUsersResult();
List<String> users = new ArrayList<String>();
findUsersResult.emails = users;
AnnouncementDaoImpl.FindUsersIdResult findUsersResult = new AnnouncementDaoImpl.FindUsersIdResult();
List<Long> users = new ArrayList<Long>();
findUsersResult.userIds = users;
 
 
Query q = AbstractDao.getCurrentSession().createQuery("SELECT " +
" u.outEmail, u.preferrefEmail, u.email " +
" u.id " +
"from " + QuestionarioRespostaRequisitada.class.getName() + " rR " +
"JOIN rR.questionario q " +
"JOIN rR.user u " +
"WHERE q.id = :id " +
(onlyNotAnswered? " AND rR.resposta is null " : "" ) +
"GROUP BY u.id");
 
q.setLong("id",id);
List<Object> results = (List<Object>) q.list();
 
 
for(Object result: results)
{
findUsersResult.userIds.add((Long) result);
}
findUsersResult.users = results.size();
return findUsersResult;
}
 
public AnnouncementDaoImpl.FindUsersIdResult findUsersIdsPedagogico(boolean onlyNotAnswered,long cursoAfetoId,long unidadeAfetaId)
{
 
AnnouncementDaoImpl.FindUsersIdResult findUsersResult = new AnnouncementDaoImpl.FindUsersIdResult();
List<Long> users = new ArrayList<Long>();
findUsersResult.userIds = users;
 
Query q = AbstractDao.getCurrentSession().createQuery("SELECT " +
" u.id " +
"from " + QuestionarioPedagogicoAlunoRequisitado.class.getName() + " aR " +
"JOIN aR.respostaRequisitada rR " +
"JOIN rR.user u " +
175,37 → 219,58
(onlyNotAnswered? " AND rR.resposta is null " : "" ) +
"GROUP BY u.id");
 
List<Object[]> results = (List<Object[]>) q.list();
List<Object> results = (List<Object>) q.list();
 
fullFillResults(findUsersResult, results);
 
for(Object result: results)
{
findUsersResult.userIds.add((Long) result);
}
findUsersResult.users = results.size();
return findUsersResult;
 
 
}
 
private void fullFillResults(AnnouncementDaoImpl.FindUsersResult findUsersResult, List<Object[]> results) {
Map<String,String> emailsSet = new HashMap<String, String>();
for(Object[] result: results)
 
public AnnouncementDaoImpl.FindUsersIdResult findUsersIdsPedagogicoAllProcessing(boolean onlyNotAnswered)
{
 
AnnouncementDaoImpl.FindUsersIdResult findUsersResult = new AnnouncementDaoImpl.FindUsersIdResult();
List<Long> users = new ArrayList<Long>();
findUsersResult.userIds = users;
 
Query q = AbstractDao.getCurrentSession().createQuery("SELECT " +
" u.id " +
"from " + QuestionarioPedagogicoAlunoRequisitado.class.getName() + " aR " +
"JOIN aR.respostaRequisitada rR " +
"JOIN rR.user u " +
"WHERE " +
 
"( " +
" aR.tipologiaRequisitada.unidadeAfeta.cursoAfeto.questionario.state = :sP1 " +
" OR " +
" aR.tipologiaRequisitada.unidadeAfeta.cursoAfeto.questionario.state = :sP2 " +
")" +
 
 
(onlyNotAnswered? " AND rR.resposta is null " : "" ) +
"GROUP BY u.id");
 
q.setString("sP1",QuestionarioImpl.State.PROCESSING.name());
q.setString("sP2",QuestionarioImpl.State.PROCESSING_WITH_ANSWERS.name());
 
List<Object> results = (List<Object>) q.list();
 
for(Object result: results)
{
if(result[0] != null)
{
emailsSet.put((String) result[0],"");
}
if(result[1] != null)
{
emailsSet.put((String) result[1],"");
}
if(result[2] != null)
{
emailsSet.put((String) result[2],"");
}
findUsersResult.userIds.add((Long) result);
}
findUsersResult.emails.addAll(emailsSet.keySet());
findUsersResult.users = results.size();
return findUsersResult;
 
 
}
 
 
public static class QuestionarioStatsVars
{
public long cursos;
216,6 → 281,7
public long alunosDeUsadas;
public long profsDeUsadas;
public long unidadesUsadas;
public long tipologiasUsadas;
public long profsTimeStudents;
public long respostasRequisitadas;
public long respostasObtidas;
231,16 → 297,17
" count(distinct c.id) AS cursos " +
",count(distinct u.id) AS unidades " +
",sum (u.profs) AS profs " +
",sum (u.turmas) AS turmas " +
",count(distinct t.cdTurma) AS turmas " +
",sum (u.students) AS students " +
",sum (case when u.usar = true then u.students else 0 end) AS alunosDeUsadas " +
",sum (case when u.usar = true then u.profs else 0 end) AS profsDeUsadas " +
",sum (case when u.usar = true then 1 else 0 end) AS unidadesUsadas " +
",sum (case when u.usar = true then 1 else 1 end) AS unidadesTodasCheck " +
",count(distinct a.aluno.id) AS alunosDeUsadas " +
",count(distinct t.docenteAfeto.id) AS profsDeUsadas " +
",count(distinct t.id) AS tipologiasRequisitadas " +
",sum (case when u.usar = true then (u.profs * u.students) else 0 end) AS respostasEsperadas " +
"from " + QuestionarioPedagogicoCursoAfeto.class.getName() + " c " +
"JOIN c.questionario q " +
"JOIN c.unidadesAfetas u " +
"JOIN u.tipologiasRequisitadas t " +
"JOIN t.alunosRequisitados a " +
 
"WHERE q.id = :id " +
"GROUP BY q.id");
257,13 → 324,14
questionarioStatsVars.alunos = (Long) results[4];
questionarioStatsVars.alunosDeUsadas = (Long) results[5];
questionarioStatsVars.profsDeUsadas = (Long) results[6];
questionarioStatsVars.unidadesUsadas = (Long) results[7];
 
if(((Long) results[8]) != questionarioStatsVars.unidades)
logger.error("TEM UM ERRO NA QUERY, a contagem de usadas com o distinct da diferente de com o SUM");
questionarioStatsVars.profsTimeStudents = (Long) results[9];
questionarioStatsVars.tipologiasUsadas = (Long) results[7];
questionarioStatsVars.profsTimeStudents = (Long) results[8];
questionarioStatsVars.respostasRequisitadas = getNumeroRespostasRequisitadas(questionarioId);
questionarioStatsVars.respostasObtidas = getNumeroRespostas(questionarioId);
questionarioStatsVars.unidadesUsadas = getNumeroUnidadesUsadas(questionarioId);
if(questionarioStatsVars.unidadesUsadas > questionarioStatsVars.unidades)
logger.error("TEM UM ERRO NA QUERY, a contagem de usadas com o distinct da diferente de com o SUM");
 
}
 
return questionarioStatsVars;
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/AnnouncementDaoImpl.java
41,6 → 41,13
public int users;
public List<String> emails;
}
 
public static class FindUsersIdResult
{
public int users;
public List<Long> userIds;
}
 
public FindUsersResult findUsersEmails(String year, String department, long courseId, long courseUnitId, String semestre, CreateAnnouncementService.MessageTarget target)
{
FindUsersResult findUsersResult = new FindUsersResult();
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoCursoAfetoImpl.java
30,4 → 30,5
 
public void incStatTipologiasRequisitadas(){ setStatTipologiasRequisitadas(getStatTipologiasRequisitadas()+1);}
public void incStatRespostasRequisitadas(){ setStatRespostasRequisitadas(getStatRespostasRequisitadas() + 1);}
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/web/form/questionarios/QuestionarioMessage.java
16,6 → 16,35
String fromPerson;
String subject;
 
String formDescription;
String dispatch;
long questionarioId;
 
 
public long getQuestionarioId() {
return questionarioId;
}
 
public void setQuestionarioId(long questionarioId) {
this.questionarioId = questionarioId;
}
 
public String getDispatch() {
return dispatch;
}
 
public void setDispatch(String dispatch) {
this.dispatch = dispatch;
}
 
public String getFormDescription() {
return formDescription;
}
 
public void setFormDescription(String formDescription) {
this.formDescription = formDescription;
}
 
public String getSubject() {
return subject;
}
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/questionarios/QuestionarioController.java
282,7 → 282,8
frm.getFromPerson(),
frm.getSubject()
};
sm.execute(RequestUtils.getRequester(request, response),"QuestionarioSendMessage",args,names);
int size = (Integer) sm.execute(RequestUtils.getRequester(request, response),"QuestionarioSendMessage",args,names);
addMessage(request,"submit.todo.message.success","" + size);
return mapping.findForward("success");
}
public ActionForward sendEmailQuestionarioCursoAfeto(ActionMapping mapping,
303,7 → 304,8
frm.getFromPerson(),
frm.getSubject()
};
sm.execute(RequestUtils.getRequester(request, response),"QuestionarioSendMessageCursoAfeto",args,names);
int size = (Integer) sm.execute(RequestUtils.getRequester(request, response),"QuestionarioSendMessageCursoAfeto",args,names);
addMessage(request,"submit.todo.message.success","" + size);
return mapping.findForward("success");
}
 
325,12 → 327,37
frm.getFromPerson(),
frm.getSubject()
};
sm.execute(RequestUtils.getRequester(request, response),"QuestionarioSendMessageUnidadeAfeta",args,names);
int size = (Integer) sm.execute(RequestUtils.getRequester(request, response),"QuestionarioSendMessageUnidadeAfeta",args,names);
addMessage(request,"submit.todo.message.success","" + size);
return mapping.findForward("success");
}
 
 
 
public ActionForward sendEmailQuestionariosProcessing(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable
{
QuestionarioMessage frm = (QuestionarioMessage) form;
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = {"onlyNotAnswered","id","msg","emailFrom","personFrom","subject"};
Object[] args = {
frm.isOnlyNotAnswered(),
frm.getMessage(),
frm.getFromEmail(),
frm.getFromPerson(),
frm.getSubject()
};
int size = (Integer) sm.execute(RequestUtils.getRequester(request, response),"QuestionarioSendMessageAllProcessing",args,names);
addMessage(request,"submit.todo.message.success","" + size);
return mapping.findForward("seeAll");
}
 
 
 
 
 
}
/branches/v3/impl/src/doc/estgweb.eap
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/branches/v3/impl/src/web/admin/configuration/configs.jsp
101,7 → 101,7
jsonObjDegrees = [];
if(degrees.length > 0)
{
var degreesArray = degrees.split(",");
var degreesArray = degrees.split(";");
for(i=0;i< degreesArray.length;i++)
{
item = {}
117,7 → 117,7
if(finalDegrees == "")
finalDegrees+= obj.degree;
else
finalDegrees+= "," + obj.degree;
finalDegrees+= ";" + obj.degree;
 
 
var elementNew = $("<div class=\"list-group-item\">" +
/branches/v3/impl/src/web/user/home/teacherPae.jsp
26,9 → 26,11
 
<baco:hasRole role="admin,all,questionarios.gerais,questionarios.admin">
<div class="col-md-6 col-sm-12 col-xs-12">
<jsp:include page="panels/configsInfo.jsp"/>
<baco:hasRole role="admin,all,services,questionarios.admin,questionarios.atribuicoes.admin,questionarios.tipologias.admin,questionarios.atribuicoes.check_teachers">
<jsp:include page="panels/configsInfo.jsp"/>
</baco:hasRole>
<jsp:include page="panels/configsGeraisSistema.jsp"/>
<jsp:include page="panels/docs.jsp"/>
<jsp:include page="panels/configsGeraisSistema.jsp"/>
</div>
<div class="col-md-6 col-sm-12 col-xs-12">
<jsp:include page="panels/academicTools.jsp"/>
/branches/v3/impl/src/web/user/home/teacher.jsp
202,8 → 202,14
String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear();
List<String> activeDegrees = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveDegrees();
 
 
long time = System.currentTimeMillis();
List<CourseUnit> evaluations = DaoFactory.getCourseUnitDaoImpl().loadTeacherUnitsMissingEvaluation(UserSession);
System.out.println("TIME10: " + (System.currentTimeMillis()-time));
time = System.currentTimeMillis();
List<CourseUnit> programs = DaoFactory.getCourseUnitDaoImpl().loadMissingPrograms(UserSession.getUser().getId());
System.out.println("TIME11: " + (System.currentTimeMillis()-time));
time = System.currentTimeMillis();
if(programs != null && programs.size() > 0 || evaluations!= null && evaluations.size() > 0)
{
%>
/branches/v3/impl/src/web/user/home/courseComission.jsp
12,11 → 12,19
HibernateUtils.getCurrentSession().beginTransaction();
String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear();
List<String> activeDegrees = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveDegrees();
 
long time = System.currentTimeMillis();
List<CourseUnitDaoImpl.CourseMissingValidationProgram> result0 = DaoFactory.getCourseUnitDaoImpl().loadMissingPrograms(UserSession);
System.out.println("TIME1: " + (System.currentTimeMillis()-time));
time = System.currentTimeMillis();
List<CourseUnitDaoImpl.CourseMissingValidationProgram> result1 = DaoFactory.getCourseUnitDaoImpl().loadMissingProgramValidate(UserSession);
System.out.println("TIME2: " + (System.currentTimeMillis()-time));
time = System.currentTimeMillis();
List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result2 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluationValidate(UserSession);
System.out.println("TIME3: " + (System.currentTimeMillis()-time));
time = System.currentTimeMillis();
List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result3 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluation(UserSession);
System.out.println("TIME4: " + (System.currentTimeMillis()-time));
time = System.currentTimeMillis();
if(result0.size() > 0 || result1.size() > 0 || result2.size() > 0 || result3.size()>0)
{
%>
/branches/v3/impl/src/web/user/questionarios/sendMessageQuestionarioRequisitados.jsp
File deleted
\ No newline at end of file
/branches/v3/impl/src/web/user/questionarios/questionarioAdmin.jsp
87,6 → 87,8
%>
<div class="alert alert-success col-md-2 col-sm-2">
<bean:message key="questionario.state.ASSIGNATION_DETAILS"/>
<html:link styleClass="btn btn-default" action="/user/questionarioPedagogicoStartCheckCourses.do?questionarioId=${Questionario.id}">Ver Atribuições</html:link>
<html:link styleClass="btn btn-default" action="/user/questionarioPedagogicoStartChooseCourses.do?questionarioId=${Questionario.id}">Ver Seleção de Cursos</html:link>
</div>
<div class="col-md-1 col-sm-1 vcenter alert hidden-xs"><span class="glyphicon glyphicon-chevron-right"/></div>
<%
/branches/v3/impl/src/web/user/questionarios/questionariosSee.jsp
3,6 → 3,7
<%@ page import="pt.estgp.estgweb.domain.QuestionarioImpl" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="java.util.List" %>
<%@ page import="java.net.URLEncoder" %>
<%@ 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-nested.tld" prefix="nested" %>
22,9 → 23,15
<div class="panel panel-primary">
<div class="panel-heading clearfix">
Questionários
<baco:hasRole role="questionarios.admin,all,admin">
<html:link styleClass="btn btn-default btn-sm pull-right" action="/user/startNewQuestionario">Criar Novo <span class="glyphicon glyphicon-plus"> </span></html:link>
</baco:hasRole>
<%
String desc = URLEncoder.encode("Mensagem para os alunos de todos os Questionários em Processamento","ISO-8859-1");
request.setAttribute("desc",desc);
 
%>
 
<html:link styleClass="btn btn-default pull-right" action="/user/startQuestionariosPaeMessagePedagogico.do?&formDescription=${desc}&targetDispatch=sendEmailQuestionariosProcessing">
<span class="glyphicon glyphicon-envelope"> </span> Enviar Mensagem A Todos Os Inquiridos
</html:link>
<a class="btn btn-default" href="#" data-toggle="modal" data-target="#modalHelpQuestionario">
<span class="glyphicon glyphicon-question-sign"></span> Ajuda sobre Processo dos Questionários
</a>
/branches/v3/impl/src/web/user/questionarios/topnavQuestionarioSee.jsp
2,10 → 2,19
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%@ page import="pt.estgp.estgweb.web.form.questionarios.QuestionarioMessage" %>
<%
String qId = request.getParameter("questionarioId");
if(qId == null)
qId = request.getParameter("questionario.id");
if(qId==null)
{
QuestionarioMessage questionarioMessage = (QuestionarioMessage) request.getAttribute("QuestionarioMessage");
if(questionarioMessage != null)
{
qId = "" + questionarioMessage.getQuestionarioId();
}
}
Long questionarioId = Long.parseLong(qId);
 
 
/branches/v3/impl/src/web/user/questionarios/pedagogicoEstudante/pedagogicoEstudanteAssignAnswers.jsp
138,24 → 138,32
<div class="alert alert-info">Por favor confira estes valores com os resultados apresentados no LOG</div>
<table class="tablesorter-blue">
<thead>
<th>Cursos Selecionados</th>
<th>Total de Unidades</th>
<th>Unidades Não Selecionadas</th>
<th>Unidades Selecionadas</th>
<th>Turmas Selecionadas</th>
<th>Alunos Selecionados</th>
<th>Professores Selecionados</th>
<th>Máximo de questionários simples admitidos (Somatorio (Por cada Unidade Profs*Alunos))</th>
<th>Cursos Selecionados</th>
<th>Total de Unidades</th>
<th>Unidades Não Selecionadas</th>
<th>Unidades Selecionadas</th>
<th>Turmas Selecionadas</th>
<th>Alunos Selecionados</th>
<th>Professores Selecionados</th>
<th>Tipologias Selecionadas</th>
<th>Respondidos</th>
<th>Por Responder</th>
<th>Respostas Requisitadas</th>
 
</thead>
<tbody>
<td><%=questionarioStatsVars.cursos%></td>
<td><%=questionarioStatsVars.unidades%></td>
<td><%=questionarioStatsVars.unidades - questionarioStatsVars.unidadesUsadas%></td>
<td><%=questionarioStatsVars.unidadesUsadas%></td>
<td><%=questionarioStatsVars.turmas%></td>
<td><%=questionarioStatsVars.alunosDeUsadas%></td>
<td><%=questionarioStatsVars.profsDeUsadas%></td>
<td><%=questionarioStatsVars.profsTimeStudents%></td>
<td><%=questionarioStatsVars.cursos%></td>
<td><%=questionarioStatsVars.unidades%></td>
<td><%=questionarioStatsVars.unidades - questionarioStatsVars.unidadesUsadas%></td>
<td><%=questionarioStatsVars.unidadesUsadas%></td>
<td><%=questionarioStatsVars.turmas%></td>
<td><%=questionarioStatsVars.alunosDeUsadas%></td>
<td><%=questionarioStatsVars.profsDeUsadas%></td>
<td><%=questionarioStatsVars.tipologiasUsadas%></td>
<td><label class="label label-success" style="font-size: 1em"><%=questionarioStatsVars.respostasObtidas%></label></td>
<td><label class="label label-danger" style="font-size: 1em"><%=(questionarioStatsVars.respostasRequisitadas-questionarioStatsVars.respostasObtidas)%></label></td>
<td><label class="label label-info" style="font-size: 1em"><%=questionarioStatsVars.respostasRequisitadas%></label></td>
 
</tbody>
</table>
</div>
/branches/v3/impl/src/web/user/questionarios/pedagogicoEstudante/questionariosDocenteAbertos.jsp
53,7 → 53,7
for(Questionario questionario: tipologiasOrdenadas.keySet())
{
%>
<h2><%=questionario.getDescription()%></h2>
<h2 class="well">Questionário: <%=questionario.getDescription()%></h2>
<%
HashMap<QuestionarioPedagogicoCursoAfeto,Boolean> cursosAfetoHashMap = new HashMap<QuestionarioPedagogicoCursoAfeto, Boolean>();
for(QuestionarioPedagogicoTipologiaRequisitada tipologiaRequisitada: tipologiasOrdenadas.get(questionario))
64,7 → 64,9
for(QuestionarioPedagogicoCursoAfeto cursoAfeto: cursosAfetoHashMap.keySet())
{
%>
<h3><%=cursoAfeto.getNome()%></h3>
 
<div class="well well-sm"><%=cursoAfeto.getNome()%></div>
 
<div class="list-group">
<%--<div class="list-group-item list-group-item-heading clearfix">
Unidade Curricular (Código da Unidade) <label class="label label-pill label-success" style="font-size: 1em">Questionários Preenchidos</label> de <label class="label label-pill label-info" style="font-size: 1em">Número de Solicitados</label> <label class="badge badge-info">Tipologia de Aula</label>
98,7 → 100,10
<label class="label label-pill <%=respondidos == null ? "label-warning" : "label-success"%>" style="font-size: 1em"><%=respondidos == null ? 0 : ((Long)respondidos)%></label>
respondidos de
<label class="label label-pill label-info" style="font-size: 1em"><%=tipologiaRequisitada.getAlunosRequisitados().size()%></label>
<%=tipologiaRequisitada.getUnidadeAfeta().getNome()%>
 
<span style="margin-left: 10px" class="glyphicon glyphicon-arrow-right"> </span>
 
<label class="bg-info " style="padding: 2px"><%=tipologiaRequisitada.getUnidadeAfeta().getNome()%></label>
(<%=tipologiaRequisitada.getUnidadeAfeta().getCodigoUnidade()%>)
<label class="badge badge-info"><%=tipologiaRequisitada.getDsTipologia()%></label>
</div>
/branches/v3/impl/src/web/user/questionarios/pedagogicoEstudante/questionarioDashBoard.jsp
4,8 → 4,9
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.domain.dao.impl.QuestionarioDaoImpl" %>
<%@ page import="pt.estgp.estgweb.web.form.questionarios.QuestionarioMessage" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.web.exceptions.NotAuthorizedException" %>
<%@ 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-nested.tld" prefix="nested" %>
15,7 → 16,8
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSessionImpl" scope="request"/>
 
<html:errors/>
<jomm:messages/>
<%
String questionarioIdStr = request.getParameter("questionarioId");
if(questionarioIdStr == null)
27,6 → 29,11
Questionario quest = (Questionario) request.getAttribute("Questionario");
questionarioIdStr = quest.getId() + "";
}
 
if(request.getAttribute("QuestionarioMessage") != null)
{
questionarioIdStr = "" + ((QuestionarioMessage) request.getAttribute("QuestionarioMessage")).getQuestionarioId();
}
}
 
long questionarioId = Long.parseLong(questionarioIdStr);
57,6 → 64,18
<baco:clearOperation name="Questionario" op="QUESTIONARIO_START_PROCESSEMENT">
<button class="btn btn-success" type="button" data-toggle="modal" data-target="#confirm-ModalGeneric" data-message="Esta operação irá abrir o questionário para os alunos!! Tem a certeza que deseja prosseguir?" data-href="<%=request.getContextPath()%>/user/questionariosPaeYearSemestre.do?dispatch=startProcessement&questionarioId=${Questionario.id}"><span class="icon icon-play"> </span> Iniciar Questionário</button>
</baco:clearOperation>
 
<td>
<%
String descEncoded = URLEncoder.encode(questionario.getDescription(),"ISO-8859-1");
request.setAttribute("descEncoded",descEncoded);
%>
<html:link styleClass="btn btn-default" action="/user/startQuestionariosPaeMessagePedagogico.do?questionarioId=${Questionario.id}&formDescription=Mensagem para os alunos: ${descEncoded}&targetDispatch=sendEmailQuestionario&cursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId=${Questionario.id}">
<span class="glyphicon glyphicon-envelope"> </span> Enviar para todos os Cursos
</html:link>
</td>
 
<a href="<%=request.getContextPath()%>/user/questionariosPaeMessagePedagogico.do"/>
</div>
<div class="col-sm-12">
<table class="tablesorter-blue">
68,7 → 87,8
<th>Turmas Selecionadas</th>
<th>Alunos Selecionados</th>
<th>Professores Selecionados</th>
<th>Respondidos</th>
<th>Tipologias Selecionadas</th>
<th>Respostas</th>
<th>Por Responder</th>
<th>Respostas Requisitadas</th>
 
81,6 → 101,7
<td><%=questionarioStatsVars.turmas%></td>
<td><%=questionarioStatsVars.alunosDeUsadas%></td>
<td><%=questionarioStatsVars.profsDeUsadas%></td>
<td><%=questionarioStatsVars.tipologiasUsadas%></td>
<td><label class="label label-success" style="font-size: 1em"><%=questionarioStatsVars.respostasObtidas%></label></td>
<td><label class="label label-danger" style="font-size: 1em"><%=(questionarioStatsVars.respostasRequisitadas-questionarioStatsVars.respostasObtidas)%></label></td>
<td><label class="label label-info" style="font-size: 1em"><%=questionarioStatsVars.respostasRequisitadas%></label></td>
95,10 → 116,11
<th>Código</th>
<th>Curso</th>
<th>Unidades</th>
<th>Alunos Que Responderam</th>
<th>Respondidos</th>
<th>Alunos</th>
<th>Respostas</th>
<th>Por Responder</th>
<th>Total</th>
<th></th>
</thead>
<tbody>
<%
124,6 → 146,15
<td><label class="label <%=respostasCurso > 0 ? "label-success":"label-warning"%>" style="font-size: 1em"><%=respostasCurso%></label></td>
<td><label class="label label-danger" style="font-size: 1em"><%=cursoAfeto.getStatRespostasRequisitadas() - respostasCurso%></label></td>
<td><label class="label label-info" style="font-size: 1em"><%=cursoAfeto.getStatRespostasRequisitadas()%></label></td>
<td>
<%
String nomeCursoEncoded = URLEncoder.encode(cursoAfeto.getNome(),"ISO-8859-1");
request.setAttribute("nomeCursoEncoded",nomeCursoEncoded);
%>
<html:link styleClass="btn btn-default" action="/user/startQuestionariosPaeMessagePedagogico.do?questionarioId=${Questionario.id}&formDescription=Mensagem para os alunos do curso ${nomeCursoEncoded} (${cursoAfeto.codigoCurso})&targetDispatch=sendEmailQuestionarioCursoAfeto&cursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId=${cursoAfeto.id}">
<span class="glyphicon glyphicon-envelope"> </span>
</html:link>
</td>
</tr>
<%
}
/branches/v3/impl/src/web/user/questionarios/pedagogicoEstudante/sendMessageQuestionarioRequisitados.jsp
New file
0,0 → 1,165
<%@ 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="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
 
<%
/* IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{};
List<String> importYears = (List<String>) sm.execute(RequestUtils.getRequester(request, response), "LoadCoursesImportYears", args, names);
request.setAttribute("importYears", importYears);*/
 
 
%>
 
<logic:present name="QuestionarioMessage">
<logic:notEmpty name="QuestionarioMessage" property="message">
<script>
$(document).ready(
function(){
setText();
}
);
 
function setText()
{
$("#editor").html('<bean:write name="QuestionarioMessage" property="message" filter="false"/>');
}
 
</script>
</logic:notEmpty>
</logic:present>
 
<html:form styleId="formSubmitMessage" styleClass="form-horizontal" action="/user/questionariosPaeMessagePedagogico" enctype="multipart/form-data" onsubmit="this.form.message.value=$('#editor').html();">
<jsp:useBean id="QuestionarioMessage" type="pt.estgp.estgweb.web.form.questionarios.QuestionarioMessage" scope="request"/>
<%
String targetDispatch = request.getParameter("targetDispatch");
String formDescription = request.getParameter("formDescription");
String cursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId = request.getParameter("cursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId");
String questionarioId = request.getParameter("questionarioId");
if(formDescription!=null)
QuestionarioMessage.setFormDescription(formDescription);
if(targetDispatch!=null)
QuestionarioMessage.setDispatch(targetDispatch);
if(cursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId != null)
QuestionarioMessage.setCursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId(Long.parseLong(cursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId));
if(questionarioId != null)
QuestionarioMessage.setQuestionarioId(Long.parseLong(questionarioId));
%>
<html:hidden property="formDescription"/>
 
 
<div class="alert alert-info">Esta funcionalidade apenas está disponivel a membros do Pedagógico e à Administração</div>
<div class="panel panel-default">
<div class="panel-heading">${QuestionarioMessage.formDescription}</div>
<div class="panel-body">
<jomm:messages/>
<html:errors/>
<input type="hidden" name="dispatch" value="${QuestionarioMessage.dispatch}"/>
<html:hidden property="cursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId"/>
<html:hidden property="formDescription"/>
<html:hidden property="message"/>
<html:hidden property="questionarioId"/>
 
<div class="form-group row">
<div class="control-label col-sm-2">Nome ou Entidade que representa</div>
<div class="col-sm-10">
<html:text styleId="sendAnnouncementEmail" styleClass="form-control" property="fromPerson"/>
</div>
</div>
 
<div class="form-group row">
<div class="control-label col-sm-2">Email que aparece como Remetente</div>
<div class="col-sm-10">
<html:text styleId="sendAnnouncementEmail" styleClass="form-control" property="fromEmail"/>
</div>
</div>
 
<div class="form-group row">
<div class="control-label col-sm-2"><bean:message key="submit.todo.message.subject"/></div>
<div class="col-sm-10">
<html:text styleId="subject" styleClass="form-control" property="subject"/>
</div>
</div>
 
<div class="form-group row">
<div class="control-label col-sm-2" for="person"><bean:message key="submit.todo.message.target.person"/></div>
<div class="col-sm-10">
<html:select styleId="person" styleClass="form-control" property="onlyNotAnswered">
<html:option value="true">Enviar apenas a quem têm questionários por responder</html:option>
<html:option value="false">Enviar a Todos os Inquiridos</html:option>
</html:select>
</div>
</div>
 
<div class="form-group row">
<div class="col-sm-12">
<div class="btn-toolbar" data-role="editor-toolbar" data-target="#editor">
<!-- <div class="btn-group">
<a class="btn dropdown-toggle" data-toggle="dropdown" title="Font"><i class="aweicon-font"></i><b class="caret"></b></a>
<ul class="dropdown-menu">
</ul>
</div>
<div class="btn-group">
<a class="btn dropdown-toggle" data-toggle="dropdown" title="Font Size"><i class="aweicon-text-height"></i>&nbsp;<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a data-edit="fontSize 5"><font size="5">Huge</font></a></li>
<li><a data-edit="fontSize 3"><font size="3">Normal</font></a></li>
<li><a data-edit="fontSize 1"><font size="1">Small</font></a></li>
</ul>
</div>-->
<div class="btn-group">
<a class="btn btn-default" data-edit="bold" title="Bold (Ctrl/Cmd+B)"><i class="aweicon-bold"></i></a>
<a class="btn btn-default" data-edit="italic" title="Italic (Ctrl/Cmd+I)"><i class="aweicon-italic"></i></a>
<a class="btn btn-default" data-edit="strikethrough" title="Strikethrough"><i class="aweicon-strikethrough"></i></a>
<a class="btn btn-default" data-edit="underline" title="Underline (Ctrl/Cmd+U)"><i class="aweicon-underline"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-default" data-edit="insertunorderedlist" title="Bullet list"><i class="aweicon-list-ul"></i></a>
<a class="btn btn-default" data-edit="insertorderedlist" title="Number list"><i class="aweicon-list-ol"></i></a>
<a class="btn btn-default" data-edit="outdent" title="Reduce indent (Shift+Tab)"><i class="aweicon-indent-left"></i></a>
<a class="btn btn-default" data-edit="indent" title="Indent (Tab)"><i class="aweicon-indent-right"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-default" data-edit="justifyleft" title="Align Left (Ctrl/Cmd+L)"><i class="aweicon-align-left"></i></a>
<a class="btn btn-default" data-edit="justifycenter" title="Center (Ctrl/Cmd+E)"><i class="aweicon-align-center"></i></a>
<a class="btn btn-default" data-edit="justifyright" title="Align Right (Ctrl/Cmd+R)"><i class="aweicon-align-right"></i></a>
<a class="btn btn-default" data-edit="justifyfull" title="Justify (Ctrl/Cmd+J)"><i class="aweicon-align-justify"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-default dropdown-toggle" data-toggle="dropdown" title="Hyperlink"><i class="aweicon-link"></i></a>
<div class="dropdown-menu input-append">
<input class="span2" placeholder="URL" type="text" data-edit="createLink"/>
<button class="btn" type="button">Add</button>
</div>
<a class="btn btn-default" data-edit="unlink" title="Remove Hyperlink"><i class="aweicon-cut"></i></a>
 
</div>
 
<div class="btn-group">
<a class="btn btn-default" title="Insert picture (or just drag & drop)" id="pictureBtn"><i class="aweicon-picture"></i></a>
<input type="file" data-role="magic-overlay" data-target="#pictureBtn" data-edit="insertImage" />
</div>
<div class="btn-group">
<a class="btn btn-default" data-edit="undo" title="Undo (Ctrl/Cmd+Z)"><i class="aweicon-undo"></i></a>
<a class="btn btn-default" data-edit="redo" title="Redo (Ctrl/Cmd+Y)"><i class="aweicon-repeat"></i></a>
</div>
 
</div>
 
<div id="editor">
<bean:message key="submit.todo.email.content"/>&hellip;
</div>
</div>
</div>
 
<button class="btn btn-success" onclick="this.form.message.value=$('#editor').html(); this.form.submit()"><bean:message key="submit.todo.message"/></button>
</div>
</div>
</html:form>
/branches/v3/impl/src/web/user/questionarios/pedagogicoEstudante/questionarioCourseDashBoard.jsp
5,6 → 5,7
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoUnidadeCurricularAfeta" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
46,6 → 47,7
",sum (case when u.usar = true AND rR.resposta is null then 1 else 0 end) AS porResponder " +
",sum (case when u.usar = true AND rR.resposta is null then 0 else 1 end) AS respostasObtidas " +
",count(distinct a.aluno)" +
",u.id" +
" from u in class " + QuestionarioPedagogicoUnidadeCurricularAfeta.class.getName() + " " +
" join u.cursoAfeto c " +
" join u.tipologiasRequisitadas t " +
68,9 → 70,10
<th class="filter-name filter-select">Docente</th>
<th>Tipologia</th>
<th>Turma</th>
<th>Por Responder</th>
<th>Respondidos</th>
<th>Estudantes</th>
<th>Por Resp.</th>
<th>Resp.</th>
<th>Alunos</th>
<th></th>
</thead>
<tbody>
<%
88,6 → 91,19
<td><label class="label label-danger" style="font-size: 1em"><%=tipologia[6]%></label></td>
<td><label class="label <%=((Long)tipologia[7]) > 0 ? "label-success":"label-warning"%>" style="font-size: 1em"><%=tipologia[7]%></label></td>
<td><label class="label label-info" style="font-size: 1em"><%=tipologia[8]%></label></td>
<td>
<%
Long unidadeId = (Long) tipologia[9];
request.setAttribute("unidadeId",unidadeId);
%>
<%
String nomeCursoEncoded = URLEncoder.encode(tipologia[1] + "(" + tipologia[0] + ")", "ISO-8859-1");
request.setAttribute("nomeUnidadeEncoded",nomeCursoEncoded);
%>
<html:link styleClass="btn btn-default" action="/user/startQuestionariosPaeMessagePedagogico.do?questionarioId=${Questionario.id}&formDescription=Mensagem para os alunos: ${nomeUnidadeEncoded}&targetDispatch=sendEmailQuestionarioUnidadeAfeta&cursoAfetoOrUnidadeAfetaOrQuestionarioAfetoId=${unidadeId}">
<span class="glyphicon glyphicon-envelope"> </span>
</html:link>
</td>
</tr>
<%
}
/branches/v3/impl/src/web/user/questionarios/pedagogicoEstudante/topnavQuestionarioPedagogicoSendMessage.jsp
New file
0,0 → 1,35
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%@ page import="pt.estgp.estgweb.web.form.questionarios.QuestionarioMessage" %>
<%
String qId = request.getParameter("questionarioId");
if(qId == null)
qId = request.getParameter("questionario.id");
if(qId==null)
{
QuestionarioMessage questionarioMessage = (QuestionarioMessage) request.getAttribute("QuestionarioMessage");
if(questionarioMessage != null)
{
qId = "" + questionarioMessage.getQuestionarioId();
}
}
Long questionarioId = qId != null ? Long.parseLong(qId) : 0;
 
/*
IServiceManager sm = ServiceManager.getInstance();
String[] names = {"questionarioId"};
Object[] args = {questionarioId};
QuestionarioImpl questionario = (QuestionarioImpl) sm.execute(RequestUtils.getRequester(request, response),"loadQuestionarioAdmin",args,names);
*/
 
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/homePae.do", "intranet.separator.home.back");
topNav.addNavPlace("/user/seeQuestionarios.do", "surveys");
if(questionarioId > 0)
topNav.addNavPlace("/user/seeQuestionario.do?questionarioId=" + questionarioId, "survey.see",""+questionarioId);
 
topNav.addNavPlace(null, "questionario.send.message.top.nav");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/build.properties
40,6 → 40,7
authentication.policy.service=Authenticate
authentication.policy.username.msg.key=username
authentication.policy.password.msg.key=password
system.mail.standard.certificated.home.page=/user/home.do
 
#mode.pae.enabled=true
#system.theme=ipp
159,8 → 160,16
email.templates.dir.build=${build.dir.classes}${email.templates.dir}
email.templates.dir.conf=${conf.dir}${email.templates.dir}
 
##If RoundRobin is false will use email.from property in from address
email.server=smtp.gmail.com
email.from=baco@estgp.pt
email.use.round.robin=true
#If not set will not use any security, only for localhost
email.use.security=true
#EMAIL SERVER SMTP GOOGLE
email.password=DUMMY_PASSWORD_GMAIL
email.user.prefix=bacodev
email.user.sufix=@estgp.pt
 
#email templates
sms.templates.dir=/template/sms
240,3 → 249,7
 
##Em testes colocar a true
test.control.var=false
 
 
admin.email.1=ci@estgp.pt
admin.email.2=jmachado@estgp.pt
/branches/v3/impl/build.xml
455,6 → 455,8
<replacefilter token="@hibernate.show.sql@" value="${hibernate.show.sql}"/>
</replace>-->
<replace file="${app.properties.build}/app.properties">
<replacefilter token="@admin.email.1@" value="${admin.email.1}"/>
<replacefilter token="@admin.email.2@" value="${admin.email.2}"/>
<replacefilter token="@tmp.dir@" value="${tmp.dir}"/>
<replacefilter token="@data.dir@" value="${data.dir}"/>
<replacefilter token="@out.dir@" value="${out.dir}"/>
473,6 → 475,12
<!--System instance type specifications-->
 
<replacefilter token="@email.password@" value="${email.password}"/>
<replacefilter token="@email.user.sufix@" value="${email.user.sufix}"/>
<replacefilter token="@email.use.round.robin@" value="${email.use.round.robin}"/>
<replacefilter token="@email.use.security@" value="${email.use.security}"/>
<replacefilter token="@email.user.prefix@" value="${email.user.prefix}"/>
<replacefilter token="@email.from@" value="${email.from}"/>
<replacefilter token="@email.server@" value="${email.server}"/>
<replacefilter token="@test.control.var@" value="${test.control.var}"/>
 
<replacefilter token="@mode.pae.enabled@" value="${mode.pae.enabled}"/>
483,7 → 491,9
<replacefilter token="@system.redirections.policy.index.welcome@" value="${system.redirections.policy.index.welcome}"/>
<replacefilter token="@system.redirections.policy.authentication.action@" value="${system.redirections.policy.authentication.action}"/>
<replacefilter token="@system.redirections.policy.authentication.logout.action@" value="${system.redirections.policy.authentication.logout.action}"/>
<replacefilter token="@system.mail.standard.certificated.home.page@" value="${system.mail.standard.certificated.home.page}"/>
 
 
<replacefilter token="@system.intranet.url@" value="${system.intranet.url}"/>
<replacefilter token="@system.public.url@" value="${system.public.url}"/>