Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 233 → Rev 236

/impl/conf/app.properties
11,9 → 11,20
email.server=mail.estgp.pt
email.user=
email.password=
email.from=jmachado@estgp.pt
email.from=bacodev@estgp.pt
email.templates.dir=@email.templates.dir@
 
#########################
##
########################
 
email.send.url.friend.subject.pt=Site da ESTG sugerido pelo amigo ({0}) (ESTG)
email.send.url.friend.subject.en=Site of ESTG suggested by friend ({0}) (ESTG)
email.new.grades.subject.pt=Novas notas disponiveis (ESTG)
email.new.grades.subject.en=New grades available (ESTG)
 
email.new.grades=true
 
##################################################
# Modules usage
#
/impl/conf/template/email/newGrades_en.txt
New file
0,0 → 1,13
#Email to send grades
Dear Student {0}
 
You have new Grades Available at ESTG Site
 
{1}
 
Best Regards
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
Instituto Politécnico de Portalegre
http://www.estgp.pt
/impl/conf/template/email/GradeUnit.txt
New file
0,0 → 1,6
##################################################
# Template de Messagem de novas Notas
# 0: Unidade
# 1: Nota
##################################################
{0}:{1};
/impl/conf/template/email/newGrades_pt.txt
New file
0,0 → 1,13
#Email to send grades
Caro Aluno {0}
 
Tem novas notas disponiveis no sitio da ESTG
 
{1}
 
Com os melhores cumprimentos
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
Instituto Politécnico de Portalegre
http://www.estgp.pt
/impl/conf/berserk/fcd.xml
262,6 → 262,13
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>OwnerCourseUnitFromCourseUnitQuestion</name>
<expression>OwnerUsersClassBean("serializable","pt.estgp.estgweb.domain.CourseUnitQuestionImpl","courseUnit")</expression>
<description>Owner of an object Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>OwnerCourseUnitFromWorkAssignementObject</name>
<expression>OwnerUsersClassBean("object.serializable","pt.estgp.estgweb.domain.CourseUnitAssignementImpl","courseUnit")</expression>
<description>Owner of an object Control Chain</description>
269,6 → 276,14
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>OwnerCourseUnitFromCourseUnitQuestionObject</name>
<expression>OwnerUsersClassBean("object.serializable","pt.estgp.estgweb.domain.CourseUnitQuestionImpl","courseUnit")</expression>
<description>Owner of an object Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
 
<filterChain>
<name>IsInCourseUnitFromWorkAssignement</name>
<expression>IsInCourseUnitUsersClassBean("serializable","pt.estgp.estgweb.domain.CourseUnitAssignementImpl","courseUnit")</expression>
<description>Owner of an object Control Chain</description>
/impl/src/java/pt/estgp/estgweb/utils/Email.java
9,6 → 9,7
import java.util.List;
import java.util.ArrayList;
import java.text.MessageFormat;
import java.io.Serializable;
 
import pt.estgp.estgweb.Globals;
 
18,10 → 19,10
* @time 18:32:21
* @see pt.estgp.estgweb.utils
*/
public class Email
public class Email implements Serializable
{
public static String EMAIL_TEMPLATES_PATH = "/template/email";
 
 
private String subject;
private List<String> recipients;
private String from;
38,64 → 39,29
this.arguments = arguments;
}
 
/**
* Sends the email.
*
* @throws javax.mail.MessagingException if there was a problem sending the mail.
*/
public void send()
throws MessagingException
 
public String getSubject()
{
return subject;
}
 
// Set up properties for mail session
Properties props = System.getProperties();
props.put("mail.smtp.host", Globals.EMAIL_SERVER_HOST);
 
// Get session
Session session = Session.getDefaultInstance(props, null);
 
// Create message
MimeMessage message = new MimeMessage(session);
 
// Set the recipients of the message
for (String recipient : recipients) {
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(recipient));
}
String content = TemplateUtils.getOrLoadTemplate(EMAIL_TEMPLATES_PATH + "/" + emailTemplateName);
// Format the mail message
String fullMessage = MessageFormat.format(content, arguments.toArray());
 
message.setFrom(new InternetAddress(from));
message.setSubject(subject);
message.setText(fullMessage);
 
// if (replyTo != null)
// {
// Address[] replyToAddr = new Address[1];
// replyToAddr[0] = new InternetAddress(replyTo);
// message.setReplyTo(replyToAddr);
// }
System.out.println(fullMessage);
Transport.send(message);
public List<String> getRecipients()
{
return recipients;
}
 
public static void main(String[]args)
public String getFrom()
{
List<String> recipients = new ArrayList<String>();
recipients.add("jmachado@estgp.pt");
return from;
}
 
List<String> arguments = new ArrayList<String>();
arguments.add("João Pedro");
arguments.add("http://www.estgp.pt/teste");
Email email = new Email("assunto de teste",recipients,Globals.SYSTEM_EMAIL_BOX,"sendPageFriend_en.txt",arguments);
try {
email.send();
}
catch (MessagingException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
public String getEmailTemplateName()
{
return emailTemplateName;
}
 
public List<String> getArguments()
{
return arguments;
}
}
/impl/src/java/pt/estgp/estgweb/Globals.java
129,6 → 129,7
 
public static final boolean SMS_COURSEUNIT_ANNOUNCEMENT = ConfigProperties.getBooleanProperty("sms.courseunit.announcement");
public static final boolean SMS_NEW_GRADES = ConfigProperties.getBooleanProperty("sms.new.grades");
public static final boolean EMAIL_NEW_GRADES = ConfigProperties.getBooleanProperty("email.new.grades");
 
public static final boolean SMS_COURSEUNIT_ANNOUNCEMENT_ONLY_PROFS = ConfigProperties.getBooleanProperty("sms.courseunit.announcement.only.profs");
 
148,10 → 149,22
public static final boolean MODULE_STATUS_SMS = ConfigProperties.getBooleanProperty("module.sms");
 
 
public static final String TEMPLATE_EMAIL_PATH = "/template/email";
public static final String TEMPLATE_ASSIGNEMENT_PATH = "/template/assignement";
public static final String TEMPLATE_SMS_PATH = "/template/sms";
public static final String TEMPLATE_SMS_COURSEUNIT_ANNOUNCMENT = TEMPLATE_SMS_PATH + "/CourseUnit.txt";
public static final String TEMPLATE_SMS_NEW_GRADES = TEMPLATE_SMS_PATH + "/GradesUnit.txt";
public static final String TEMPLATE_SMS_NEW_GRADE = TEMPLATE_SMS_PATH + "/GradeUnit.txt";
 
public static final String EMAIL_SEND_URL_FRIEND_PT = ConfigProperties.getProperty("email.send.url.friend.subject.pt");
public static final String EMAIL_SEND_URL_FRIEND_EN = ConfigProperties.getProperty("email.send.url.friend.subject.en");
public static final String EMAIL_SEND_URL_FRIEND_TEMPLATE_PT = "sendPageFriend_pt.txt";
public static final String EMAIL_SEND_URL_FRIEND_TEMPLATE_EN = "sendPageFriend_en.txt";
 
public static final String EMAIL_NEW_GRADES_PT = ConfigProperties.getProperty("email.new.grades.subject.pt");
public static final String EMAIL_NEW_GRADES_EN = ConfigProperties.getProperty("email.new.grades.subject.en");
public static final String EMAIL_NEW_GRADES_TEMPLATE_PT = "newGrades_pt.txt";
public static final String EMAIL_NEW_GRADES_TEMPLATE_EN = "newGrades_en.txt";
 
public static final String EMAIL_GRADE_UNIT_TEMPLATE = "GradeUnit.txt";
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/CourseUnitWorkService.java
57,12 → 57,12
{
assignement = DomainObjectFactory.createCourseUnitAssignementImpl();
assignement.setCourseUnit(courseUnit);
DaoFactory.getCourseUnitAssignementDaoImpl().save(assignement);
}
cUV.persistViewInObject(assignement);
 
if(name != null && name.length() > 0 && size > 0 && file != null)
{
 
String extension = FilesUtils.getExtension(name);
if(assignement.getRepositoryStream() == null || assignement.getRepositoryStream().trim().length() == 0)
{
73,7 → 73,7
repositoryService.updateRepositoryFile(assignement.getRepositoryStream(), file, contentType, extension, size, name, "courseunit.assignement.file " + courseUnit.getName() + " of " + userSession.getUser().getUsername(), ResourceAccessControlEnum.courseunitDomain);
}
 
DaoFactory.getCourseUnitAssignementDaoImpl().save(assignement);
 
return loadCourseUnitWorks(id,userSession);
}
 
/impl/src/java/pt/estgp/estgweb/services/email/SendUrl2FriendService.java
File deleted
/impl/src/java/pt/estgp/estgweb/services/email/EMAILJob.java
New file
0,0 → 1,48
package pt.estgp.estgweb.services.email;
 
import pt.estgp.estgweb.services.jobs.JobHandler;
import pt.estgp.estgweb.services.sms.SMSJob;
import pt.estgp.estgweb.services.sms.SmsService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.utils.Email;
 
import java.io.Serializable;
import java.util.List;
 
import org.apache.log4j.Logger;
import jomm.utils.TemplateUtils;
 
/**
* @author Jorge Machado
* @date 11/Jul/2008
* @see pt.estgp.estgweb.services.sms
*/
public class EMAILJob implements JobHandler, Serializable
{
private static final Logger logger = Logger.getLogger(EMAILJob.class);
 
private Email email;
 
 
 
 
public EMAILJob(Email email)
{
this.email = email;
}
 
 
 
public void runJob()
{
try
{
new SendEmailService().sendEmail(email);
}
catch (ServiceException e)
{
logger.error("Sending EMAIL:" + e.toString(),e);
}
}
}
/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java
New file
0,0 → 1,161
package pt.estgp.estgweb.services.email;
 
import jomm.utils.TemplateUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.domain.enums.LangEnum;
import pt.estgp.estgweb.utils.Email;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.text.MessageFormat;
 
/**
* @author Jorge Machado
* @date 20/Mar/2008
* @time 18:31:00
* @see pt.estgp.estgweb.services.email
*/
public class SendEmailService implements IService
{
private static final Logger logger = Logger.getLogger(SendEmailService.class);
 
private static final String gradeUnitTemplate = Globals.TEMPLATE_EMAIL_PATH + "/" + Globals.EMAIL_GRADE_UNIT_TEMPLATE;
 
public void sendEmail(Email email) throws ServiceException
{
try{
 
// Set up properties for mail session
Properties props = System.getProperties();
props.put("mail.smtp.host", Globals.EMAIL_SERVER_HOST);
 
// Get session
Session session = Session.getDefaultInstance(props, null);
 
// Create message
MimeMessage message = new MimeMessage(session);
// Set the recipients of the message
for (String recipient : email.getRecipients()) {
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(recipient));
}
String content = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_EMAIL_PATH + "/" + email.getEmailTemplateName());
// Format the mail message
String fullMessage = MessageFormat.format(content, email.getArguments().toArray());
 
message.setFrom(new InternetAddress(email.getFrom()));
message.setSubject(email.getSubject());
message.setText(fullMessage);
 
Transport.send(message);
}
catch(MessagingException e)
{
logger.error(e,e);
throw new ServiceException(e.toString());
}
}
 
public Email getSendUrlToFriendEmail(String url, String from, LangEnum langEnum, List<String> recipients)
{
List<String> arguments = new ArrayList<String>();
arguments.add(from);
arguments.add(url);
String subjectTxt;
String template;
 
if(langEnum == LangEnum.PORTUGUESE)
{
template = Globals.EMAIL_SEND_URL_FRIEND_TEMPLATE_PT;
subjectTxt = Globals.EMAIL_SEND_URL_FRIEND_PT;
}
else
{
template = Globals.EMAIL_SEND_URL_FRIEND_TEMPLATE_EN;
subjectTxt = Globals.EMAIL_SEND_URL_FRIEND_EN;
}
 
String subject = java.text.MessageFormat.format(subjectTxt,new String[]{from});
return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
}
 
public boolean sendUrlToFriend(String url, String from, LangEnum langEnum, List<String> recipients)
{
try
{
sendEmail(getSendUrlToFriendEmail(url,from,langEnum,recipients));
return true;
}
catch (ServiceException e)
{
return false;
}
}
 
 
public Email getNewGradesEmail(List<String[]> grades, LangEnum langEnum, String studentEmail, String studentName)
{
List<String> arguments = new ArrayList<String>();
 
String subject;
String template;
 
if(langEnum == LangEnum.PORTUGUESE)
{
template = Globals.EMAIL_NEW_GRADES_TEMPLATE_PT;
subject = Globals.EMAIL_NEW_GRADES_PT;
}
else
{
template = Globals.EMAIL_NEW_GRADES_TEMPLATE_EN;
subject = Globals.EMAIL_NEW_GRADES_EN;
}
 
StringBuilder gradesBuilder = new StringBuilder();
for(String[] grade: grades)
{
String gradeTxt = TemplateUtils.formatMessageTemplate(gradeUnitTemplate,grade);
gradesBuilder.append(gradeTxt);
}
 
arguments.add(studentName);
arguments.add(gradesBuilder.toString());
 
List<String> recipients = new ArrayList<String>();
recipients.add(studentEmail);
return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
}
 
public boolean sendNewGrades(List<String[]> grades, LangEnum langEnum, String studentEmail, String studentName)
{
try
{
sendEmail(getNewGradesEmail(grades,langEnum,studentEmail,studentName));
return true;
}
catch (ServiceException e)
{
return false;
}
 
}
 
public static void main(String [] args)
{
List<String[]> grades = new ArrayList<String[]>();
grades.add(new String[]{"Teste","3"});
grades.add(new String[]{"Teste2","4"});
new SendEmailService().sendNewGrades(grades,LangEnum.PORTUGUESE,"jmachado@estgp.pt","jorge Machado");
}
 
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportGradesService.java
6,11 → 6,14
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages;
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.services.smsservice.SMSJob;
import pt.estgp.estgweb.services.sms.SMSJob;
import pt.estgp.estgweb.services.jobs.JobScheduleService;
import pt.estgp.estgweb.services.email.EMAILJob;
import pt.estgp.estgweb.services.email.SendEmailService;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.enums.LangEnum;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.ipportalegre.siges.web.services.*;
import org.apache.log4j.Logger;
18,7 → 21,6
import javax.xml.namespace.QName;
import java.net.URL;
import java.net.MalformedURLException;
import java.math.BigDecimal;
import java.util.*;
 
import jomm.dao.impl.AbstractDao;
128,6 → 130,7
 
}
sendSms(null);
sendEmail(null);
AbstractDao.getCurrentSession().getTransaction().commit();
}
catch (Throwable e)
178,7 → 181,32
}
}
}
public static SendEmailService sendEmailService = new SendEmailService();
 
private void sendEmail(UserSession userSession)
{
if(Globals.EMAIL_NEW_GRADES && newGrades.size() > 0)
{
Set<Map.Entry<Long,List<Long>>> set = newGrades.entrySet();
for(Map.Entry<Long,List<Long>> entry: set)
{
long studentId = entry.getKey();
List<Long> studentGrades = entry.getValue();
Student s = DaoFactory.getStudentDaoImpl().get(studentId);
 
List<String[]> gradesArray = new ArrayList<String[]>();
for(long gradeId: studentGrades)
{
CourseUnitGrade grade = DaoFactory.getCourseUnitGradeDaoImpl().get(gradeId);
String[] gradeArray = new String[] {grade.getNormalizedCourseUnitName(),""+grade.getGrade()};
gradesArray.add(gradeArray);
}
EMAILJob emailJob = new EMAILJob(sendEmailService.getNewGradesEmail(gradesArray, LangEnum.PORTUGUESE,s.getEmail(),s.getName()));
JobScheduleService.getInstance().scheduleNow(emailJob,"New Grades EMAIL: to" + s.getUsername(),userSession);
}
}
}
 
/**
* Testar por aqui poi requer Super Role e assim e' autmatico
*
/impl/src/java/pt/estgp/estgweb/services/jobs/JobDeamon.java
34,7 → 34,7
j.setExecuted(true);
}
AbstractDao.getCurrentSession().getTransaction().commit();
Thread.sleep(60000);
Thread.sleep(3000);
}
catch (InterruptedException e)
{
/impl/src/java/pt/estgp/estgweb/services/sms/SmsService.java
New file
0,0 → 1,70
package pt.estgp.estgweb.services.sms;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.Globals;
import pt.ipportalegre.siges.web.services.SiGesWEB;
import org.apache.log4j.Logger;
 
import javax.xml.namespace.QName;
import java.util.*;
import java.net.URL;
import java.net.MalformedURLException;
 
/**
* @author Jorge Machado
*/
public class SmsService implements IService
{
private static final Logger logger = Logger.getLogger(SmsService.class);
 
public void run(String message, String phones) throws ServiceException
{
if(Globals.MODULE_STATUS_SMS)
{
logger.info("start sending sms send");
try
{
SiGesWEB service;
try
{
service = new SiGesWEB(new URL(Globals.SIGES_WEBSERVICE_WSDL), new QName(Globals.SIGES_WEBSERVICE_TARGET_NAMESPACE, "SiGesWEB"));
}
catch (MalformedURLException e)
{
logger.fatal(e, e);
return;
}
// ArrayOfString phonesArray = new ArrayOfString();
// for(String phone: phones)
// {
// phonesArray.getString().add(phone);
// }
service.getSiGesWEBSoap().sendSmsSeparatedWithComma(message,phones,Globals.SIGES_WEBSERVICE_SECRET);
}
catch (Throwable e)
{
logger.error(e,e);
}
logger.info("terminating sms send");
}
else
{
logger.info("SMS module turned off");
}
}
 
 
public static void main(String[] args) throws ServiceException
{
// AbstractDao.getCurrentSession().beginTransaction();
List<String> phones = new ArrayList<String>();
phones.add("916252810");
phones.add("916252810");
 
new SmsService().run("Teste Final","916252810,916252810");
// AbstractDao.getCurrentSession().getTransaction().commit();
}
 
 
}
/impl/src/java/pt/estgp/estgweb/services/sms/SMSJob.java
New file
0,0 → 1,77
package pt.estgp.estgweb.services.sms;
 
import pt.estgp.estgweb.services.jobs.JobHandler;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.domain.User;
 
import java.io.Serializable;
import java.util.List;
 
import org.apache.log4j.Logger;
import jomm.utils.TemplateUtils;
 
/**
* @author Jorge Machado
* @date 11/Jul/2008
* @see pt.estgp.estgweb.services.sms
*/
public class SMSJob implements JobHandler, Serializable
{
private static final Logger logger = Logger.getLogger(SMSJob.class);
private static String separator = "";
private static String separator2 = ",";
 
private String phones;
private String message;
 
 
public SMSJob(List<User> userPhones, String[] args, String template)
{
if(userPhones != null)
{
StringBuilder phonesBuilder = new StringBuilder();
for(User u: userPhones)
{
if(validPhoneNumber(u.getPhonenumber()))
{
phonesBuilder.append(separator).append(u.getPhonenumber());
separator = separator2;
}
}
this.phones = phonesBuilder.toString();
}
this.message = TemplateUtils.formatMessageTemplate(template,args);
}
public SMSJob(User user, String[] args, String template)
{
if(user != null)
{
this.phones = user.getPhonenumber();
this.message = TemplateUtils.formatMessageTemplate(template,args);
}
}
public SMSJob(String phones, String message)
{
this.phones = phones;
this.message = message;
}
 
public static boolean validPhoneNumber(String phoneNumber)
{
return phoneNumber != null && phoneNumber.length() == 9 && phoneNumber.startsWith("9");
}
 
public void runJob()
{
try
{
new SmsService().run(message,phones);
}
catch (ServiceException e)
{
logger.error("Sending SMS:" + e.toString(),e);
}
}
}
/impl/src/java/pt/estgp/estgweb/services/announcements/CreateAnnouncementService.java
2,11 → 2,10
 
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.services.smsservice.SMSJob;
import pt.estgp.estgweb.services.sms.SMSJob;
import pt.estgp.estgweb.services.jobs.JobScheduleService;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.dao.impl.ImageDaoImpl;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.RoleManager;
14,7 → 13,6
 
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.ArrayList;
 
/**
/impl/src/java/pt/estgp/estgweb/domain/enums/LangEnum.java
New file
0,0 → 1,49
package pt.estgp.estgweb.domain.enums;
 
import pt.estgp.estgweb.domain.*;
import org.apache.log4j.Logger;
 
import java.io.Serializable;
 
public enum LangEnum implements Serializable
{
 
PORTUGUESE("pt"),
ENGLISH("en"),
DEFAULT("pt");
 
 
private static final Logger logger = Logger.getLogger(LangEnum.class);
 
 
private String lang;
 
 
private LangEnum(String lang)
{
this.lang = lang;
}
 
 
public String getLang()
{
return lang;
}
 
public void setLang(String lang)
{
this.lang = lang;
}
 
 
public static LangEnum parse(String lang)
{
for(LangEnum langEnum: values())
{
if(langEnum.getLang().equals(lang))
return langEnum;
}
logger.warn("Lang Enum not found returning DEFAULT Type");
return DEFAULT;
}
}
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitQuestionImpl.java
1,6 → 1,7
package pt.estgp.estgweb.domain;
 
import java.io.Serializable;
import java.util.List;
 
/**
* @author Jorge Machado
13,4 → 14,14
{
return getId();
}
 
public List<String> getOwnerRoles()
{
return null; //To change body of implemented methods use File | Settings | File Templates.
}
 
public String getChoosedOwnerRole()
{
return null; //To change body of implemented methods use File | Settings | File Templates.
}
}
/impl/src/doc/rss/RSS.zip
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/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml
55,7 → 55,7
</class>
 
<class name="pt.estgp.estgweb.domain.CourseUnitQuestion" table="courseUnitQuestion" abstract="true">
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta>
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta>
<meta attribute="scope-class">public abstract</meta>
<id name="id" type="long">
<generator class="native"/>
66,6 → 66,7
<property name="question" type="text"/>
<property name="answer" type="text"/>
<property name="answred" type="boolean" index="answredIndex"/>
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" lazy="false" outer-join="true"/>
<many-to-one name="courseUnit" class="pt.estgp.estgweb.domain.CourseUnit" lazy="false" outer-join="true"/>
<subclass name="pt.estgp.estgweb.domain.CourseUnitQuestionImpl" discriminator-value="CourseUnitQuestionImpl"/>
</class>