/impl/importRoutines.xml |
---|
New file |
0,0 → 1,19 |
<?xml version="1.0" encoding="UTF-8"?> |
<project name="estgweb-import" basedir="." default="help"> |
<import file="build.xml"/> |
<target name="courses"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportCourseService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="teachers"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportTeachersService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="students"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportStudentsService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
</project> |
/impl/conf/language/MessageResourcesProfile.properties |
---|
7,6 → 7,10 |
profile=Perfil Pessoal |
profile.bad.profile.teacher.iregular.user.class=Existe um problema com o seu perfil. Aparentemente o papel de professor que lhe foi atribuido não foi reconhecido pelo sistema central. Por favor dirija-se ao centro informatico e reporte o problema para que a situação seja corrigida. Pedimos desculpa pelo incómodo. |
profile.bad.profile.student.iregular.user.class=Existe um problema com o seu perfil. Aparentemente o papel de estudante que lhe foi atribuido não foi reconhecido pelo sistema central. Por favor dirija-se ao centro informatico e reporte o problema para que a situação seja corrigida. Pedimos desculpa pelo incómodo. |
#Degrees |
profile.scholar.degree.notset=Não disponivel |
profile.scholar.degree=Escolaridade |
43,6 → 47,8 |
profile.grades=Notas |
profile.home=Apresentação |
profile.curriculum.record=Registo Pessoal de Curriculum |
profile.academic.degree.less=Sem Formação Superior |
edit.profile=Editar Meu Perfil |
edit.user.profile=Editar Utilizador |
profile.roles=Funções na Instituição |
/impl/conf/language/MessageResources.properties |
---|
267,7 → 267,7 |
student=Estudante |
teacher=Professor |
user=Usuario |
user=Utilizador |
#Mensagens Status |
authentication.ok=Benvindo Fulano |
/impl/conf/language/MessageResourcesCourseUnits.properties |
---|
16,6 → 16,12 |
courseunit.program.description=Programa Curricular de {0} |
courseunit.program.archive=Arquivo |
courseunit.to.add.students.save.first=Para adicionar alunos salve primeiro a unidade curricular e volte aqui. |
courseunit.to.add.teachers.save.first=Para adicionar docentes salve primeiro a unidade curricular e volte aqui. |
courseunit.zero.units=Nenhuma Unidade Curricular |
courseunit.objectives.todo=Peenchimento dos objectivos da unidade |
courseunit.program.todo=Upload do programa da unidade |
courseunit.question.todo=Dúvida |
/impl/conf/WEB-INF/web.xml |
---|
13,6 → 13,10 |
<filter-class>pt.estgp.estgweb.web.filters.UserSessionFilter</filter-class> |
</filter> |
<filter> |
<filter-name>TopImageFilter</filter-name> |
<filter-class>pt.estgp.estgweb.web.filters.TopImageFilter</filter-class> |
</filter> |
<filter> |
<filter-name>UserFilter</filter-name> |
<filter-class>pt.estgp.estgweb.web.filters.UserFilter</filter-class> |
</filter> |
42,6 → 46,10 |
<url-pattern>/*</url-pattern> |
</filter-mapping> |
<filter-mapping> |
<filter-name>TopImageFilter</filter-name> |
<url-pattern>/*</url-pattern> |
</filter-mapping> |
<filter-mapping> |
<filter-name>Set-Character-Encoding</filter-name> |
<url-pattern>/*</url-pattern> |
</filter-mapping> |
/impl/conf/log4j.properties |
---|
26,7 → 26,7 |
#default category |
log4j.rootLogger = info, defaultLog, stdout |
log4j.rootLogger = @log.level@, defaultLog, stdout |
### enable the following line if you want to track down connection ### |
### leakages when using DriverManagerConnectionProvider ### |
/impl/conf/app.properties |
---|
59,6 → 59,10 |
sms.courseunit.announcement.only.profs=true |
sms.new.grades=true |
##################################################### |
## |
## Job Deamon seconds |
job.deamon.sleep.seconds=30 |
################################################## |
##Proxy Servers |
66,13 → 70,14 |
server.ionline=ftp://www.global.estgp.pt |
#server.ionline.start.path= |
#TODO USAR a de baixo quando testar as unidades curriculares |
server.ionline.start.path=/Eramus/Baco |
server.ionline.start.path= |
#server.ionline.start.path=/Eramus/Baco |
ionline.pass=baco |
ionline.user=Baco_web |
server.estgp=http://localhost:8080 |
server.estgp=http://www.estgp.pt |
estgp.encoding=ISO-8859-1 |
server.estgp.start.path=/templates |
server.estgp.start.path=/testes/nova_web |
#server.estgp=http://www.estgp.pt/testes/nova_web |
#estgp.encoding=UTF-8 |
326,3 → 331,19 |
######################################################################### |
# |
#TopImage Filter Links |
# |
top.image.1.start.with=/ |
top.image.1=/imgs/top.jpg |
top.image.start.with.2=/student.do?role=student&menu=menu.alunos |
top.image.url.2=/imgs/topStudents.jpg |
/impl/conf/berserk/sd.xml |
---|
841,6 → 841,14 |
</filterChains> |
</service> |
<service> |
<name>LoadTeachedUnitsCurrentYear</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadTeachedUnitsCurrentYearService</implementationClass> |
<description>Load teacher units in currentYear</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
</filterChains> |
</service> |
<service> |
<name>LoadSubscribedUnits</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsService</implementationClass> |
<description>Load student units</description> |
849,6 → 857,22 |
</filterChains> |
</service> |
<service> |
<name>LoadSubscribedUnitsCurrentYear</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsCurrentYearService</implementationClass> |
<description>Load student units in current Year</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
</filterChains> |
</service> |
<service> |
<name>LoadSubscribedUnitsOldYears</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsOldYearsService</implementationClass> |
<description>Load student units in current Year</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
</filterChains> |
</service> |
<service> |
<name>LoadSubscribedUnitsAnnouncements</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsAnnouncementsService</implementationClass> |
<description>Load student units</description> |
/impl/conf/hibernate.cfg.xml |
---|
10,19 → 10,25 |
<property name="connection.password">@database.password@</property> |
<property name="connection.autocommit">false</property> |
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> |
<property name="hibernate.connection.autoReconnect">true</property> |
<property name="hibernate.connection.autoReconnectForPools">true</property> |
<property name="show_sql">@hibernate.show.sql@</property> |
<property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property> |
<property name="hibernate.c3p0.min_size">5</property> |
<property name="hibernate.c3p0.max_size">20</property> |
<property name="hibernate.c3p0.timeout">1800</property> |
<!--<property name="connection.pool_size">2</property>--> |
<property name="hibernate.transaction.auto_close_session">true</property> |
<property name="hibernate.connection.release_mode">after_transaction</property> |
<property name="hibernate.c3p0.min_size">2</property> |
<property name="hibernate.c3p0.max_size">30</property> |
<property name="hibernate.c3p0.timeout">500</property> |
<property name="hibernate.max_statements">50</property> |
<!--<property name="current_session_context_class">org.hibernate.context.CurrentSessionContext</property>--> |
<!--<property name="current_session_context_class">org.hibernate.context.JTASessionContext</property>--> |
<!--<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.TransactionManagerLookup</property>--> |
<property name="current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</property> |
<!--<property name="current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</property>--> |
<property name="current_session_context_class">thread</property> |
{0} |
</session-factory> |
</hibernate-configuration> |
</hibernate-configuration> |
/impl/src/java/jomm/utils/StreamsUtils.java |
---|
37,6 → 37,7 |
public static void inputStream2File(InputStream stream, File f) throws IOException |
{ |
f.getParentFile().mkdirs(); |
FileOutputStream out = new FileOutputStream(f); |
inputStream2OutputStream(stream,out); |
} |
/impl/src/java/jomm/utils/StringsUtils.java |
---|
50,6 → 50,14 |
{ |
finalFormatedText.append(" "); |
} |
else if (text.charAt(i) == '<') |
{ |
finalFormatedText.append("<"); |
} |
else if (text.charAt(i) == '>') |
{ |
finalFormatedText.append(">"); |
} |
else |
{ |
finalFormatedText.append(text.charAt(i)); |
59,6 → 67,31 |
return finalFormatedText.toString(); |
} |
public static String getEscapeHtmlText(String text) |
{ |
if (text == null || text.trim().length() == 0) |
return ""; |
StringBuilder finalFormatedText = new StringBuilder(); |
boolean newLine = true; |
for (int i = 0; i < text.length(); i++) |
{ |
if (text.charAt(i) == '<') |
{ |
finalFormatedText.append("<"); |
} |
else if (text.charAt(i) == '>') |
{ |
finalFormatedText.append(">"); |
} |
else |
{ |
finalFormatedText.append(text.charAt(i)); |
} |
} |
return finalFormatedText.toString(); |
} |
public static boolean checkLetters09AZazHiffenUnderScore(String candidate) |
{ |
if (candidate == null) |
95,6 → 128,7 |
{ |
String lowerToken = token.toLowerCase(); |
String cleanToken = clearDiacritics(lowerToken); |
cleanToken = clearNonAlfaNumericChars(cleanToken); |
StringBuilder finalToken = new StringBuilder(); |
for(int i = 0; i< cleanToken.length();i++) |
{ |
118,6 → 152,18 |
return DiacriticFilter.clean(lowerToken); |
} |
public static String clearNonAlfaNumericChars(String lowerToken) |
{ |
StringBuilder builder = new StringBuilder(); |
for(int i = 0; i < lowerToken.length();i++) |
{ |
char c = lowerToken.charAt(i); |
if( (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) |
builder.append(c); |
} |
return builder.toString(); |
} |
public static String cleanKeepNumbers(String telemovel) |
{ |
StringBuilder result = new StringBuilder(); |
/impl/src/java/pt/estgp/estgweb/utils/Email.java |
---|
8,6 → 8,8 |
import java.util.Properties; |
import java.util.List; |
import java.util.ArrayList; |
import java.util.regex.Pattern; |
import java.util.regex.Matcher; |
import java.text.MessageFormat; |
import java.io.Serializable; |
64,4 → 66,28 |
{ |
return arguments; |
} |
public static boolean validEmail(String email) |
{ |
if(email == null) |
return false; |
Pattern p = Pattern.compile(".+@.+\\.[a-z]+"); |
//Match the given string with the pattern |
Matcher m = p.matcher(email); |
//check whether match is found |
return m.matches(); |
} |
public static void main( String[] args ) |
{ |
System.out.println(validEmail("")); |
System.out.println(validEmail("d.@")); |
System.out.println(validEmail("asd@.")); |
System.out.println(validEmail("a.sd@.p")); |
System.out.println(validEmail("@t.pt")); |
System.out.println(validEmail("e@.e")); |
System.out.println(validEmail("e@")); |
System.out.println(validEmail("e@e.pt")); |
System.out.println(validEmail("jmachado@estgp.pt")); |
} |
} |
/impl/src/java/pt/estgp/estgweb/Globals.java |
---|
86,6 → 86,10 |
public static final List<String> FILTER_IGNORE_EXTENSIONS = ConfigProperties.getListValues("filter.ignore.extension"); |
public static final List<String> FILTER_IGNORE_PREFIXES = ConfigProperties.getListValues("filter.ignore.prefix"); |
public static final List<String> TOP_IMAGE_FILTER_LINKS = ConfigProperties.getListValues("top.image.start.with"); |
public static final List<String> TOP_IMAGE_FILTER_IMAGES_URL = ConfigProperties.getListValues("top.image.url"); |
public static final String SITE_URL = ConfigProperties.getProperty("site.url"); |
public static final String INTRANET_MESSAGES_PREFIX = "intranet."; |
142,6 → 146,7 |
public static final boolean SMS_COURSEUNIT_ANNOUNCEMENT_ONLY_PROFS = ConfigProperties.getBooleanProperty("sms.courseunit.announcement.only.profs"); |
public static final int JOB_DEAMON_SLEEP_SECONDS=ConfigProperties.getIntProperty("job.deamon.sleep.seconds"); |
public static final String MODULE_STATUS_PREFIX = "module."; |
public static final boolean MODULE_STATUS_ANNOUNCEMENTS = ConfigProperties.getBooleanProperty("module.announcements"); |
/impl/src/java/pt/estgp/estgweb/services/courses/CoursesService.java |
---|
2,6 → 2,7 |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.estgp.estgweb.services.data.IRepositoryFile; |
import pt.estgp.estgweb.services.courseunits.LoadCourseUnitAnnouncements; |
import pt.estgp.estgweb.services.courseunits.LoadCourseUnitService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
23,6 → 24,7 |
import java.io.InputStream; |
import java.io.PrintWriter; |
import java.io.StringWriter; |
import java.io.IOException; |
import java.net.MalformedURLException; |
import jomm.utils.FilesUtils; |
102,6 → 104,18 |
if(stream != null && size > 0) |
{ |
String extension = FilesUtils.getExtension(name); |
if(c.getStudiesPlan() == null) |
{ |
String identifier = repositoryService.storeRepositoryFile(stream, contentType, extension, size, name, "course.studies.plan" + c.getName(), ResourceAccessControlEnum.publicDomain,userSession); |
c.setStudiesPlan(identifier); |
} |
else |
{ |
repositoryService.updateRepositoryFile(c.getStudiesPlan(), stream, contentType, extension, size, name, "course.studies.plan " + c.getName(), ResourceAccessControlEnum.publicDomain); |
} |
IRepositoryFile repositoryFile = repositoryService.load(c.getStudiesPlan(),userSession); |
stream = repositoryFile.getInput(); |
try |
{ |
Document dom = Dom4jUtil.parse(stream); |
116,15 → 130,13 |
htmlTrasformationResult = "<div class=\"error\"><pre>" + e.toString() + "\n" + printWriter.toString() + "</pre></div>"; |
printWriter.close(); |
} |
String extension = FilesUtils.getExtension(name); |
if(c.getStudiesPlan() == null) |
try |
{ |
String identifier = repositoryService.storeRepositoryFile(stream, contentType, extension, size, name, "course.studies.plan" + c.getName(), ResourceAccessControlEnum.publicDomain,userSession); |
c.setStudiesPlan(identifier); |
stream.close(); |
} |
else |
catch (IOException e) |
{ |
repositoryService.updateRepositoryFile(c.getStudiesPlan(), stream, contentType, extension, size, name, "course.studies.plan " + c.getName(), ResourceAccessControlEnum.publicDomain); |
logger.error(e,e); |
} |
} |
courseView.persistViewInObject(c); |
/impl/src/java/pt/estgp/estgweb/services/courseunits/UsersUnitsService.java |
---|
31,7 → 31,8 |
TeacherImpl t = (TeacherImpl) DaoFactory.getTeacherDaoImpl().get(teacherId); |
if(t != null) |
{ |
courseUnit.getTeachers().remove(t); |
if(courseUnit.getTeachers() != null) |
courseUnit.getTeachers().remove(t); |
courseUnit.getTeachers().add(t); |
t.addUnitLocaly(courseUnit); |
return loadCourseUnitService.run(courseUnitId,true,true,false,userSession); |
59,7 → 60,8 |
StudentImpl s = (StudentImpl) DaoFactory.getStudentDaoImpl().loadBySigesCode(code); |
if(s != null) |
{ |
courseUnit.getStudents().remove(s); |
if(courseUnit.getStudents() != null) |
courseUnit.getStudents().remove(s); |
courseUnit.getStudents().add(s); |
s.addUnitLocaly(courseUnit); |
return loadCourseUnitService.run(courseUnitId,true,true,false,userSession); |
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadSubscribedUnitsCurrentYearService.java |
---|
New file |
0,0 → 1,30 |
package pt.estgp.estgweb.services.courseunits; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.Student; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.utils.DatesUtils; |
import java.util.List; |
import java.util.ArrayList; |
/** |
* @author Jorge Machado |
* @date 2/Jun/2008 |
* @see pt.estgp.estgweb.services.courseunits |
*/ |
public class LoadSubscribedUnitsCurrentYearService implements IService |
{ |
public List<CourseUnit> run(long studentId) |
{ |
Student t = DaoFactory.getStudentDaoImpl().load(studentId); |
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadSubscribedImportYearUnits(studentId, DatesUtils.getImportYear()); |
for(CourseUnit c: units) |
{ |
c.getName(); |
c.getCourse().getName(); |
} |
return units; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitDirPackageService.java |
---|
143,9 → 143,11 |
public static void main(String[] args) throws ServiceException |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
new CreateCourseUnitDirPackageService().run(null,null); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
String teste = "Sistemas Térmicos, Hidráulicos e Pneumáticos"; |
System.out.println(StringsUtils.normalizeResourceName(teste)); |
// AbstractDao.getCurrentSession().beginTransaction(); |
// new CreateCourseUnitDirPackageService().run(null,null); |
// AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitWorksBackupService.java |
---|
203,7 → 203,7 |
private String createTeacherActualYearBackup(Teacher t, UserSession userSession) throws ServiceException |
{ |
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadTeachedImportYearUnits(t.getId(),DatesUtils.getImportYear()); |
List units = DaoFactory.getCourseUnitDaoImpl().loadTeachedImportYearUnits(t.getId(),DatesUtils.getImportYear()); |
if(units == null || units.size() == 0) |
return null; |
return createTeacherBackup(units,t,userSession); |
350,7 → 350,7 |
{ |
try |
{ |
FilesUtils.copy(iRepositoryFile.getInput(),deliverDir + "/version" + StringsUtils.normalizeResourceName(iRepositoryFile.getName())); |
FilesUtils.copy(iRepositoryFile.getInput(),deliverDir + "/version" + getResourceFileName(iRepositoryFile.getName())); |
} |
catch (IOException e) |
{ |
360,6 → 360,18 |
} |
} |
public String getResourceFileName(String resourceName) |
{ |
String extension = FilesUtils.getExtension( resourceName); |
if(extension != null) |
{ |
resourceName = resourceName.substring(0,resourceName.length() - extension.length()); |
} |
if(extension == null) |
extension = ".unknown"; |
return resourceName + extension; |
} |
private void createAssignementCopy(CourseUnitAssignement assignement, String assignementDir, UserSession userSession) throws IOException |
{ |
String fileContent = buildAssignementTemplate(assignement); |
370,7 → 382,7 |
if(assignement.getRepositoryStream() != null && assignement.getRepositoryStream().length() > 0) |
{ |
IRepositoryFile iRepositoryFile = repositoryService.load(assignement.getRepositoryStream(),userSession); |
FilesUtils.copy(iRepositoryFile.getInput(),assignementDir + "/" + StringsUtils.normalizeResourceName(iRepositoryFile.getName())); |
FilesUtils.copy(iRepositoryFile.getInput(),assignementDir + "/" + getResourceFileName(iRepositoryFile.getName())); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadTeachedUnitsCurrentYearService.java |
---|
New file |
0,0 → 1,32 |
package pt.estgp.estgweb.services.courseunits; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.domain.CourseUnitImpl; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.utils.DatesUtils; |
import java.util.List; |
import java.util.ArrayList; |
/** |
* @author Jorge Machado |
* @date 2/Jun/2008 |
* @see pt.estgp.estgweb.services.courseunits |
*/ |
public class LoadTeachedUnitsCurrentYearService implements IService |
{ |
public List<CourseUnitImpl> run(long teacherId) |
{ |
Teacher t = DaoFactory.getTeacherDaoImpl().load(teacherId); |
List<CourseUnitImpl> units = DaoFactory.getCourseUnitDaoImpl().loadTeachedImportYearUnits(teacherId,DatesUtils.getImportYear()); |
for(CourseUnit c: units) |
{ |
c.getName(); |
c.getCourse().getName(); |
} |
return units; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadSubscribedUnitsOldYearsService.java |
---|
New file |
0,0 → 1,29 |
package pt.estgp.estgweb.services.courseunits; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.Student; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.utils.DatesUtils; |
import java.util.List; |
/** |
* @author Jorge Machado |
* @date 2/Jun/2008 |
* @see pt.estgp.estgweb.services.courseunits |
*/ |
public class LoadSubscribedUnitsOldYearsService implements IService |
{ |
public List<CourseUnit> run(long studentId) |
{ |
// Student t = DaoFactory.getStudentDaoImpl().load(studentId); |
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadSubscribedOtherImportYearUnits(studentId, DatesUtils.getImportYear()); |
for(CourseUnit c: units) |
{ |
c.getName(); |
c.getCourse().getName(); |
} |
return units; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java |
---|
47,19 → 47,27 |
// 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)); |
boolean valid = false; |
for (String recipient : email.getRecipients()) |
{ |
if(Email.validEmail(recipient)) |
{ |
valid=true; |
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()); |
if(valid) |
{ |
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); |
message.setFrom(new InternetAddress(email.getFrom())); |
message.setSubject(email.getSubject()); |
message.setText(fullMessage); |
Transport.send(message); |
Transport.send(message); |
} |
} |
catch(MessagingException e) |
{ |
142,7 → 150,8 |
List<String> recipients = new ArrayList<String>(); |
for(User u: users) |
{ |
recipients.add(u.getEmail()); |
if(Email.validEmail(u.getEmail())) |
recipients.add(u.getEmail()); |
} |
String subject = java.text.MessageFormat.format(subjectTxt,new String[]{announcement.getCourseUnit().getNormalizedName(),announcement.getTitle()}); |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportStudentsService.java |
---|
137,7 → 137,6 |
ArrayOfDisciplina disciplinas = d.getDisciplinasInscrito(); |
for (Disciplina disciplina : disciplinas.getDisciplina()) |
{ |
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(),"" + disciplina.getCodigoCurso(),disciplina.getCdDuracao(),disciplina.getCdLectivo()); |
if(courseUnit == null) |
{ |
153,6 → 152,26 |
if(((StudentImpl)student).isLocalRemovedUnit(courseUnit)) |
iter.remove(); |
} |
if(student.getSubscribedUnits() != null) |
{ |
for(CourseUnit c: units) |
{ |
boolean isIn = false; |
for(CourseUnit tc : student.getSubscribedUnits()) |
{ |
if(tc.equals(c)) |
{ |
isIn = true; |
break; |
} |
} |
if(!isIn) |
student.getSubscribedUnits().add(c); |
} |
} |
else |
student.setSubscribedUnits(units); |
student.setSubscribedUnits(units); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java |
---|
10,10 → 10,7 |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.TeacherImpl; |
import pt.estgp.estgweb.domain.*; |
import pt.ipportalegre.siges.web.services.*; |
import org.apache.log4j.Logger; |
139,7 → 136,25 |
if(((TeacherImpl)t).isLocalRemovedUnit(courseUnit)) |
iter.remove(); |
} |
t.setTeachedUnits(units); |
if(t.getTeachedUnits() != null) |
{ |
for(CourseUnit c: units) |
{ |
boolean isIn = false; |
for(CourseUnit tc : t.getTeachedUnits()) |
{ |
if(tc.equals(c)) |
{ |
isIn = true; |
break; |
} |
} |
if(!isIn) |
t.getTeachedUnits().add(c); |
} |
} |
else |
t.setTeachedUnits(units); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/jobs/JobDeamon.java |
---|
3,6 → 3,7 |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.Job; |
import pt.estgp.estgweb.Globals; |
import jomm.dao.impl.AbstractDao; |
import java.util.List; |
34,7 → 35,7 |
j.setExecuted(true); |
} |
AbstractDao.getCurrentSession().getTransaction().commit(); |
Thread.sleep(3000); |
Thread.sleep(Globals.JOB_DEAMON_SLEEP_SECONDS*1000); |
} |
catch (InterruptedException e) |
{ |
/impl/src/java/pt/estgp/estgweb/services/profile/CurriculumService.java |
---|
7,7 → 7,9 |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.enums.RecordEnum; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.dao.impl.CourseUnitDaoImpl; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
import pt.estgp.estgweb.utils.DatesUtils; |
import org.apache.log4j.Logger; |
import java.io.InputStream; |
135,7 → 137,7 |
if(u instanceof Teacher) |
{ |
Teacher teacher = (Teacher) u; |
courseUnits = teacher.getTeachedUnits(); |
courseUnits = new HashSet<CourseUnit>(DaoFactory.getCourseUnitDaoImpl().loadTeachedImportYearUnits(teacher.getId(), DatesUtils.getImportYear())); |
} |
else if(u instanceof Student) |
{ |
/impl/src/java/pt/estgp/estgweb/services/blogs/CreateBlogService.java |
---|
2,6 → 2,7 |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.data.ImageManager; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.views.BlogView; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
36,6 → 37,11 |
Blog b; |
if(bV.getId() <= 0) |
{ |
if(bV.getImage() != null) |
{ |
DaoFactory.getImageDaoImpl().save(bV.getImage()); |
ImageManager.store((ImageImpl) bV.getImage()); |
} |
if(bV.getCourseUnitView() != null) |
{ |
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(bV.getCourseUnitView().getId()); |
58,6 → 64,15 |
else |
{ |
b = DaoFactory.getBlogDaoImpl().get(bV.getSerializable()); |
if(bV.getImage() != null && b.getImage() != null) |
DaoFactory.getImageDaoImpl().delete(b.getImage().getId()); |
if(bV.getImage() != null) |
{ |
DaoFactory.getImageDaoImpl().save(bV.getImage()); |
ImageManager.store((ImageImpl) bV.getImage()); |
b.setImage(bV.getImage()); |
} |
} |
if(userSession.getUser() != null && userSession.getUser().isSuperuserOrAdmin()) |
bV.persistViewInObjectByAdmin(b); |
/impl/src/java/pt/estgp/estgweb/services/blogs/CreateBlogPostService.java |
---|
3,10 → 3,7 |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.domain.views.BlogView; |
import pt.estgp.estgweb.domain.views.BlogPostView; |
import pt.estgp.estgweb.domain.Blog; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.domain.BlogPostImpl; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.data.ImageManager; |
54,13 → 51,9 |
DaoFactory.getImageDaoImpl().delete(bP.getImage().getId()); |
} |
if(bPV.getImage() != null) |
{ |
byte[] bytes = bPV.getImage().getImage(); |
bPV.getImage().setImage(null); |
{ |
DaoFactory.getImageDaoImpl().save(bPV.getImage()); |
bPV.getImage().setImage(bytes); |
ImageManager.store(bPV.getImage()); |
bPV.getImage().setImage(null); |
ImageManager.store((ImageImpl) bPV.getImage()); |
} |
/impl/src/java/pt/estgp/estgweb/services/data/ResourceManager.java |
---|
5,6 → 5,7 |
import java.io.*; |
import jomm.utils.StreamsUtils; |
import org.apache.log4j.Logger; |
/** |
* @author Jorge Machado |
14,15 → 15,48 |
public class ResourceManager |
{ |
public static final int DOCS_IN_PATH = 1000; |
public static final int DOCS_FIRST_DIR_LEN = 20; |
public static void saveResource(InputStream stream, String resourcePath, long id) throws IOException |
{ |
StreamsUtils.inputStream2File(stream,new File(Globals.DATA_DIR + resourcePath + "/" + id)); |
StreamsUtils.inputStream2File(stream, new File(Globals.DATA_DIR + resourcePath + getDocumentPathById(id))); |
} |
public static InputStream getResource(String resourcePath,long id) throws FileNotFoundException |
public static InputStream getResource(String resourcePath, long id) throws FileNotFoundException |
{ |
return new FileInputStream(Globals.DATA_DIR + resourcePath + "/" + id); |
return new FileInputStream(Globals.DATA_DIR + resourcePath + getDocumentPathById(id)); |
} |
public static void setAllChars(char c, char[] dir) |
{ |
for (int i = 0; i < dir.length; i++) |
{ |
dir[i] = c; |
} |
} |
public static void copyCharsToArray(char[] dir, String str) |
{ |
int dirLen = dir.length; |
int strLen = str.length(); |
for (int i = 0; i < strLen; i++) |
{ |
dir[dirLen - i - 1] = str.charAt(strLen - i - 1); |
} |
} |
public static String getDocumentPathById(long id) |
{ |
char[] dir = new char[DOCS_FIRST_DIR_LEN]; |
setAllChars('0', dir); |
long dirNumber = id / DOCS_IN_PATH; |
dirNumber = dirNumber * DOCS_IN_PATH; |
String dirNumberStr = "" + dirNumber; |
copyCharsToArray(dir, dirNumberStr); |
dirNumberStr = new String(dir); |
return "/" + dirNumberStr + "/" + id; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/data/ImageManager.java |
---|
1,6 → 1,7 |
package pt.estgp.estgweb.services.data; |
import pt.estgp.estgweb.domain.Image; |
import pt.estgp.estgweb.domain.ImageImpl; |
import java.io.ByteArrayInputStream; |
import java.io.IOException; |
19,10 → 20,12 |
private static final Logger logger = Logger.getLogger(ImageManager.class); |
public static boolean store(Image img) |
public static boolean store(ImageImpl img) |
{ |
try |
{ |
if(img.getId() <= 0) |
logger.error("Image arrive with out identifier: save it first"); |
ResourceManager.saveResource(new ByteArrayInputStream(img.getImage()), IMAGES_RESOURCE_PATH, img.getId()); |
return true; |
} |
/impl/src/java/pt/estgp/estgweb/services/announcements/CreateAnnouncementService.java |
---|
6,6 → 6,7 |
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.services.data.ImageManager; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.enums.LangEnum; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
49,6 → 50,19 |
announcementView.persistViewInObject(a); |
a.setOwner(userSession.getUser()); |
a.setSaveDate(new Date()); |
if(imageBig != null) |
{ |
DaoFactory.getImageDaoImpl().save(imageBig); |
ImageManager.store((ImageImpl) imageBig); |
((ImageImpl)imageBig).setImage(null); |
} |
if(imageSmall != null) |
{ |
DaoFactory.getImageDaoImpl().save(imageSmall); |
ImageManager.store((ImageImpl) imageSmall); |
((ImageImpl)imageSmall).setImage(null); |
} |
a.setBigImage(imageBig); |
a.setSmallImage(imageSmall); |
if(a.getTargetRoles() == null || a.getTargetRoles().length() == 0) |
56,18 → 70,23 |
} |
else |
{ |
a= DaoFactory.getAnnouncementDaoImpl().get(announcementView.getSerializable()); |
a = DaoFactory.getAnnouncementDaoImpl().get(announcementView.getSerializable()); |
if(imageBig != null) |
{ |
try |
if(a.getBigImage() != null) |
{ |
DaoFactory.getImageDaoImpl().delete(a.getBigImage().getId()); |
// try |
// { |
DaoFactory.getImageDaoImpl().delete(a.getBigImage().getId()); |
// } |
// catch(Exception e) |
// { |
// logger.info("Announcement:" + announcementView.getId() + "do not have imageBig!"); |
// } |
} |
catch(Exception e) |
{ |
logger.info("Announcement:" + announcementView.getId() + "do not have imageBig!"); |
} |
DaoFactory.getImageDaoImpl().save(imageBig); |
ImageManager.store((ImageImpl) imageBig); |
announcementView.setBigImage(imageBig); |
} |
else |
79,20 → 98,25 |
} |
catch(Exception e) |
{ |
logger.info("ImageBig form announcement:" + announcementView.getId() + "do not exist!"); |
logger.debug("ImageBig form announcement:" + announcementView.getId() + "do not exist!"); |
} |
} |
if(imageSmall!=null) |
{ |
try |
if(a.getSmallImage() != null) |
{ |
// try |
// { |
DaoFactory.getImageDaoImpl().delete(a.getSmallImage().getId()); |
// } |
// catch(Exception e) |
// { |
// logger.info("Announcement:" + announcementView.getId() + "do not have smallBig!"); |
// } |
} |
catch(Exception e) |
{ |
logger.info("Announcement:" + announcementView.getId() + "do not have smallBig!"); |
} |
DaoFactory.getImageDaoImpl().save(imageSmall); |
ImageManager.store((ImageImpl) imageSmall); |
announcementView.setSmallImage(imageSmall); |
} |
else |
/impl/src/java/pt/estgp/estgweb/domain/ImageImpl.java |
---|
10,9 → 10,22 |
*/ |
public class ImageImpl extends Image |
{ |
public Serializable getSerializable() |
private byte[] image; |
public Serializable getSerializable() |
{ |
return getId(); |
} |
public byte[] getImage() |
{ |
return image; |
} |
public void setImage(byte[] image) |
{ |
this.image = image; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/StudentImpl.java |
---|
4,13 → 4,11 |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
import java.util.Set; |
import java.util.HashSet; |
import java.util.List; |
import java.util.ArrayList; |
import java.util.*; |
import org.apache.log4j.Logger; |
import jomm.utils.StringsUtils; |
import com.lowagie.text.pdf.hyphenation.TernaryTree; |
/** |
* @author Jorge Machado |
26,8 → 24,12 |
public static final Logger logger = Logger.getLogger(StudentImpl.class); |
private List<CourseUnit> subscribedUnitsView = null; |
private List<CourseUnit> subscribedUnitsCurrentYearView = null; |
private List<CourseUnit> subscribedUnitsOldYearsView = null; |
private List<CourseUnitAnnouncementImpl> courseUnitAnnouncementsView = null; |
private List<Course> subscribedCoursesView = null; |
private List<Course> subscribedCoursesCurrentYearView = null; |
private List<Course> subscribedCoursesOldYearsView = null; |
public List<Course> getSubscribedCoursesView() |
{ |
35,10 → 37,30 |
return subscribedCoursesView; |
} |
public List<Course> getSubscribedCoursesCurrentYearView() |
{ |
getSubscribedUnitsCurrentYearView(); |
return subscribedCoursesCurrentYearView; |
} |
public List<Course> getSubscribedCoursesOldYearsView() |
{ |
getSubscribedUnitsOldYearsView(); |
return subscribedCoursesOldYearsView; |
} |
public String getManagedRole() { |
return STUDENT_ROLE; |
} |
public List<CourseUnit> getSubscribedUnitsViewS1() |
{ |
return getUnitsSemestre("S1",getSubscribedUnitsView()); |
} |
public List<CourseUnit> getSubscribedUnitsViewS2() |
{ |
return getUnitsSemestre("S2",getSubscribedUnitsView()); |
} |
public List<CourseUnit> getSubscribedUnitsView() |
{ |
if(subscribedUnitsView == null) |
68,7 → 90,82 |
return subscribedUnitsView; |
} |
public List<CourseUnit> getSubscribedUnitsCurrentYearViewS1() |
{ |
return getUnitsSemestre("S1",getSubscribedUnitsCurrentYearView()); |
} |
public List<CourseUnit> getSubscribedUnitsCurrentYearViewS2() |
{ |
return getUnitsSemestre("S2",getSubscribedUnitsCurrentYearView()); |
} |
public List<CourseUnit> getSubscribedUnitsCurrentYearView() |
{ |
if(subscribedUnitsCurrentYearView == null) |
{ |
subscribedCoursesCurrentYearView = new ArrayList<Course>(); |
try |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{getId()}; |
subscribedUnitsCurrentYearView = (List<CourseUnit>) sm.execute(null, "LoadSubscribedUnitsCurrentYear", args, names); |
if(subscribedUnitsCurrentYearView == null) |
subscribedUnitsCurrentYearView = new ArrayList<CourseUnit>(); |
for(CourseUnit c: subscribedUnitsCurrentYearView) |
{ |
if(!subscribedCoursesCurrentYearView.contains(c.getCourse())) |
{ |
subscribedCoursesCurrentYearView.add(c.getCourse()); |
} |
} |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
} |
} |
return subscribedUnitsCurrentYearView; |
} |
public List<CourseUnit> getSubscribedUnitsOldYearsViewS1() |
{ |
return getUnitsSemestre("S1",getSubscribedUnitsOldYearsView()); |
} |
public List<CourseUnit> getSubscribedUnitsOldYearsViewS2() |
{ |
return getUnitsSemestre("S2",getSubscribedUnitsOldYearsView()); |
} |
public List<CourseUnit> getSubscribedUnitsOldYearsView() |
{ |
if(subscribedUnitsOldYearsView == null) |
{ |
subscribedCoursesOldYearsView = new ArrayList<Course>(); |
try |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{getId()}; |
subscribedUnitsOldYearsView = (List<CourseUnit>) sm.execute(null, "LoadSubscribedUnitsOldYears", args, names); |
if(subscribedUnitsOldYearsView == null) |
subscribedUnitsOldYearsView = new ArrayList<CourseUnit>(); |
for(CourseUnit c: subscribedUnitsOldYearsView) |
{ |
if(!subscribedCoursesOldYearsView.contains(c.getCourse())) |
{ |
subscribedCoursesOldYearsView.add(c.getCourse()); |
} |
} |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
} |
} |
return subscribedUnitsOldYearsView; |
} |
public List<CourseUnitAnnouncementImpl> getCourseUnitAnnouncementsView() |
{ |
if(courseUnitAnnouncementsView == null) |
90,6 → 187,11 |
return courseUnitAnnouncementsView; |
} |
public boolean hasCourseUnit(CourseUnit courseUnit) |
{ |
return hasCourseUnit(courseUnit.getId(),false); |
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java |
---|
61,7 → 61,7 |
public boolean isInternal() |
{ |
return true; |
return true; |
} |
public CourseUnitBlogImpl getUnitBlog() |
70,4 → 70,18 |
return (CourseUnitBlogImpl) getBlogs().iterator().next(); |
return null; |
} |
public boolean equals(Object anotherInstance) |
{ |
if(anotherInstance instanceof CourseUnitImpl) |
{ |
CourseUnitImpl anCourseUnit = (CourseUnitImpl) anotherInstance; |
return anCourseUnit.getCode() != null && getCode() != null && getCode().equals(anCourseUnit.getCode()) && |
anCourseUnit.getCourseCode() != null && getCourseCode() != null && getCourseCode().equals(anCourseUnit.getCourseCode()) && |
anCourseUnit.getSemestre() != null && getSemestre() != null && getSemestre().equals(anCourseUnit.getSemestre()) && |
anCourseUnit.getImportYear() != null && getImportYear() != null && getImportYear().equals(anCourseUnit.getImportYear()); |
} |
return false; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/TeacherDaoImpl.java |
---|
1,7 → 1,12 |
package pt.estgp.estgweb.domain.dao.impl; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.CourseUnitImpl; |
import static org.hibernate.criterion.Restrictions.*; |
import java.util.List; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
23,10 → 28,13 |
{ |
return (Teacher) createCriteria().add(eq("sigesCode",sigesCode)).uniqueResult(); |
} |
public Teacher loadByBi(String bi) |
public Teacher loadByBi(String bi) |
{ |
return (Teacher) createCriteria().add(eq("bi",bi)).uniqueResult(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/AnnouncementDaoImpl.java |
---|
131,8 → 131,25 |
{ |
coSubTargets = eq("subTargets", subTarget); |
} |
if (type != null) |
criteria.add(eq("type", type)); |
{ |
String[] types = type.split(","); |
if(types.length == 1) |
criteria.add(eq("type", type)); |
else if(types.length > 1) |
{ |
Criterion orCriteron = null; |
for(String typeAux: types) |
{ |
if(orCriteron == null) |
orCriteron = eq("type", typeAux); |
else |
orCriteron = or(orCriteron,eq("type",typeAux)); |
} |
criteria.add(orCriteron); |
} |
} |
if (!internal) |
criteria.add(eq("internal", false)); |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java |
---|
3,6 → 3,7 |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.Blog; |
import pt.estgp.estgweb.domain.TeacherImpl; |
import pt.estgp.estgweb.domain.CourseUnitImpl; |
import pt.estgp.estgweb.domain.dao.DaoUtils; |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
import pt.estgp.estgweb.utils.DatesUtils; |
52,13 → 53,21 |
{ |
return createCriteria().add(eq("importYear",importYear)) |
.createAlias("students","st") |
.add(eq("st.id", studentId)).list(); |
.add(eq("st.id", studentId)).addOrder(Order.asc("name")).list(); |
} |
public List<CourseUnit> loadTeachedImportYearUnits(long studentId, String importYear) |
public List<CourseUnit> loadSubscribedOtherImportYearUnits(long studentId, String importYear) |
{ |
return createCriteria().add(not(eq("importYear",importYear))) |
.createAlias("students","st") |
.add(eq("st.id", studentId)).addOrder(Order.asc("name")).list(); |
} |
public List<CourseUnitImpl> loadTeachedImportYearUnits(long teacherId, String importYear) |
{ |
return createCriteria().add(eq("importYear",importYear)) |
.createAlias("teachers","st") |
.add(eq("st.id", studentId)).list(); |
.add(eq("st.id", teacherId)).addOrder(Order.asc("importYear")).addOrder(Order.asc("name")).list(); |
} |
public CourseUnit loadBySigesCodeUnique(String sigesCode) |
/impl/src/java/pt/estgp/estgweb/domain/TeacherImpl.java |
---|
25,7 → 25,9 |
public static final Logger logger = Logger.getLogger(TeacherImpl.class); |
private List<CourseUnit> teachedUnitsView = null; |
private List<CourseUnit> teachedUnitsCurrentYearView = null; |
private List<Course> teachedCoursesView = null; |
private List<Course> teachedCoursesCurrentYearView = null; |
public TeacherImpl() |
{ |
41,7 → 43,21 |
getTeachedUnitsView(); |
return teachedCoursesView; |
} |
public List<Course> getTeachedCoursesCurrenYearView() |
{ |
getTeachedUnitsCurrentYearView(); |
return teachedCoursesCurrentYearView; |
} |
public List<CourseUnit> getTeachedUnitsViewS1() |
{ |
return getUnitsSemestre("S1",getTeachedUnitsView()); |
} |
public List<CourseUnit> getTeachedUnitsViewS2() |
{ |
return getUnitsSemestre("S2",getTeachedUnitsView()); |
} |
public List<CourseUnit> getTeachedUnitsView() |
{ |
if(teachedUnitsView == null) |
71,6 → 87,43 |
return teachedUnitsView; |
} |
public List<CourseUnit> getTeachedUnitsCurrentYearViewS1() |
{ |
return getUnitsSemestre("S1",getTeachedUnitsCurrentYearView()); |
} |
public List<CourseUnit> getTeachedUnitsCurrentYearViewS2() |
{ |
return getUnitsSemestre("S2",getTeachedUnitsCurrentYearView()); |
} |
public List<CourseUnit> getTeachedUnitsCurrentYearView() |
{ |
if(teachedUnitsCurrentYearView == null) |
{ |
teachedCoursesCurrentYearView = new ArrayList<Course>(); |
try |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{getId()}; |
teachedUnitsCurrentYearView = (List<CourseUnit>) sm.execute(null, "LoadTeachedUnitsCurrentYear", args, names); |
if(teachedUnitsCurrentYearView == null) |
teachedUnitsCurrentYearView = new ArrayList<CourseUnit>(); |
for(CourseUnit c: teachedUnitsCurrentYearView) |
{ |
if(!teachedCoursesCurrentYearView.contains(c.getCourse())) |
{ |
teachedCoursesCurrentYearView.add(c.getCourse()); |
} |
} |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
} |
} |
return teachedUnitsCurrentYearView; |
} |
public boolean hasCourseUnit(long id) |
{ |
return hasCourseUnit(id,false); |
/impl/src/java/pt/estgp/estgweb/domain/UserManagedRoleImpl.java |
---|
2,13 → 2,29 |
import jomm.utils.StringsUtils; |
import java.util.Date; |
import java.util.Set; |
import java.util.*; |
public abstract class UserManagedRoleImpl extends UserImpl |
{ |
public static List<CourseUnit> getUnitsSemestre(String semestre, List<CourseUnit> s1) |
{ |
if(s1 != null) |
{ |
s1 = new ArrayList<CourseUnit>(s1); |
Iterator iter = s1.iterator(); |
while (iter.hasNext()) |
{ |
CourseUnit courseUnit = (CourseUnit) iter.next(); |
if(courseUnit.getSemestre() == null || !courseUnit.getSemestre().equals(semestre)) |
iter.remove(); |
} |
return s1; |
} |
return s1; |
} |
public UserManagedRoleImpl() |
{ |
/impl/src/java/pt/estgp/estgweb/domain/views/AnnouncementView.java |
---|
414,4 → 414,12 |
return ((AnnouncementImpl)announcement).canLoadInOpenTransaction(u); |
} |
public String getOwnerUsername() |
{ |
if (owner instanceof User) |
return ((User) owner).getUsername(); |
else |
return null; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitAssignementView.java |
---|
10,6 → 10,8 |
import java.util.List; |
import java.util.Date; |
import jomm.utils.StringsUtils; |
/** |
* @author Jorge Machado |
* @date 2/Mar/2008 |
165,6 → 167,11 |
return description; |
} |
public String getFormatedDescription() |
{ |
return StringsUtils.getFormatedText(description); |
} |
public void setDescription(String description) |
{ |
this.description = description; |
/impl/src/java/pt/estgp/estgweb/domain/views/UserView.java |
---|
358,6 → 358,26 |
return email; |
} |
public String getSafeEmail() |
{ |
String email = username + "@" + Globals.EMAIL_LOCAL_SUFFIX; |
if(email != null) |
{ |
String safe = email.replace("@", " [ AT ] ").replace("."," [ DOT ] "); |
StringBuilder result = new StringBuilder(); |
result.append("<script type=\"text/javascript\" language=\"JavaScript\">\n"); |
for(int i = 0;i< safe.length();i++) |
{ |
char c = safe.charAt(i); |
if(c != '\'') |
result.append("document.write('").append(c).append("');\n"); |
} |
result.append("</script>"); |
return result.toString(); |
} |
return email; |
} |
public void setEmail(String email) { |
this.email = email; |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java |
---|
100,7 → 100,6 |
this.code = courseUnit.getCode(); |
this.importYear = courseUnit.getImportYear(); |
this.semestre = courseUnit.getSemestre(); |
this.importYear = courseUnit.getImportYear(); |
this.courseCode = courseUnit.getCourseCode(); |
this.objectives = courseUnit.getObjectives(); |
if(courseUnit.getProgramStreamId() != null) |
/impl/src/java/pt/estgp/estgweb/web/WebProxy.java |
---|
76,7 → 76,8 |
} |
catch(FileNotFoundException e) |
{ |
throw new FileNotFoundException("url not found for server:" + server + " and path:" + path); |
logger.warn("url not found for server:" + server + " and path:" + path); |
response.sendError(404); |
} |
catch(Exception e) |
{ |
85,7 → 86,8 |
} |
else |
{ |
throw new FileNotFoundException("url not found for server:" + server + " and path:" + path); |
logger.warn("url not found for server:" + server + " and path:" + path); |
response.sendError(404); |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/utils/ProxyUtils.java |
---|
New file |
0,0 → 1,96 |
package pt.estgp.estgweb.web.utils; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import javax.servlet.http.HttpServletRequest; |
import java.io.IOException; |
import java.net.MalformedURLException; |
import java.net.URL; |
/** |
* @author Jorge Machado |
* @date 8/Out/2008 |
* @see pt.estgp.estgweb.web.utils |
*/ |
public class ProxyUtils |
{ |
// proxy/accaoSocialAlunosPortalMenu/estgp |
private static final Logger logger = Logger.getLogger(ProxyUtils.class); |
public static String getTopImageLink(HttpServletRequest request) |
{ |
String pathIfo = request.getPathInfo(); |
String queryString = request.getQueryString(); |
if(request.getServletPath().equals("/proxy")) |
{ |
String finalFileCandidate1 = pathIfo.substring(0,pathIfo.lastIndexOf("/")) + "/top.jpg"; |
int lastIndexOfDot = pathIfo.lastIndexOf("."); |
String finalFileCandidate2 = null; |
if(lastIndexOfDot >= 0) |
finalFileCandidate2 = pathIfo.substring(0,lastIndexOfDot) + ".jpg"; |
String protocol = request.getRequestURL().substring(0,request.getRequestURL().indexOf("://")); |
String finalFileCandidate1total = protocol + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/proxy" + finalFileCandidate1; |
String finalFileCandidate2total = null; |
if(finalFileCandidate2 != null) |
finalFileCandidate2total = protocol + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/proxy" + finalFileCandidate2; |
if(finalFileCandidate2 != null) |
try |
{ |
URL url = new URL(finalFileCandidate2total); |
url.openConnection().getInputStream(); |
return request.getContextPath() + "/proxy" + finalFileCandidate2; |
} |
catch (MalformedURLException e) |
{ |
logger.error("BAD TOP IMAGE URL 2: " + finalFileCandidate2total); |
} |
catch (IOException e) |
{ |
logger.debug("candidate 2 don't exist: " + finalFileCandidate2total); |
} |
try |
{ |
URL url = new URL(finalFileCandidate1total); |
url.openConnection().getInputStream(); |
return request.getContextPath() + "/proxy" + finalFileCandidate1; |
} |
catch (MalformedURLException e) |
{ |
logger.error("BAD TOP IMAGE URL 1: " + finalFileCandidate1total); |
} |
catch (IOException e) |
{ |
logger.debug("candidate 1 don't exist: " + finalFileCandidate1total); |
} |
} |
else |
{ |
String link = request.getServletPath(); |
if(pathIfo!=null) |
link+= pathIfo; |
if(queryString!=null) |
link+= "?" + queryString; |
for(int i = 0; i < Globals.TOP_IMAGE_FILTER_LINKS.size();i++) |
{ |
String url = Globals.TOP_IMAGE_FILTER_LINKS.get(i); |
if(link.startsWith(url)) |
{ |
String finalUrl = Globals.TOP_IMAGE_FILTER_IMAGES_URL.get(i); |
if(finalUrl.startsWith("/")) |
return request.getContextPath() + finalUrl; |
else |
return finalUrl; |
} |
} |
} |
return null; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/utils/DomainUtils.java |
---|
2,6 → 2,7 |
import pt.estgp.estgweb.domain.Image; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.domain.ImageImpl; |
import org.apache.struts.upload.FormFile; |
import org.apache.log4j.Logger; |
import jomm.utils.StreamsUtils; |
30,7 → 31,7 |
logger.error(e,e); |
return null; |
} |
Image i = DomainObjectFactory.createImageImpl(); |
ImageImpl i = DomainObjectFactory.createImageImpl(); |
i.setImage(bytes); |
i.setContentType(image.getContentType()); |
i.setSize(image.getFileSize()); |
/impl/src/java/pt/estgp/estgweb/web/filters/TopImageFilter.java |
---|
New file |
0,0 → 1,79 |
package pt.estgp.estgweb.web.filters; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import pt.estgp.estgweb.web.utils.ProxyUtils; |
import javax.servlet.*; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import java.util.List; |
import java.io.IOException; |
/** |
* |
* @author Jorge Machado |
*/ |
public class TopImageFilter implements Filter |
{ |
public static final String TOP_IMAGE = "TOP_IMAGE"; |
public TopImageFilter() |
{ |
} |
public void init(FilterConfig config) |
{ |
} |
/** |
* |
* @param request The servlet request we are processing |
* @param chain The filter chain we are processing |
* |
* @exception java.io.IOException if an input/output error occurs |
* @exception javax.servlet.ServletException if a servlet error occurs |
*/ |
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) |
throws IOException, ServletException |
{ |
HttpServletRequest hrequest = (HttpServletRequest) request; |
String relativePath = hrequest.getServletPath(); |
if (relativePath == null) |
relativePath = ""; |
if (hrequest.getPathInfo() != null && hrequest.getPathInfo().length() > 0) |
{ |
relativePath += hrequest.getPathInfo(); |
} |
for (String ignore : Globals.FILTER_IGNORE_EXTENSIONS) |
{ |
if (relativePath.endsWith(ignore)) |
{ |
chain.doFilter(request, response); |
return; |
} |
} |
for (String ignore : Globals.FILTER_IGNORE_PREFIXES) |
{ |
if (relativePath.startsWith(ignore)) |
{ |
chain.doFilter(request, response); |
return; |
} |
} |
String link = ProxyUtils.getTopImageLink((HttpServletRequest) request); |
request.setAttribute(TOP_IMAGE,link); |
chain.doFilter(request,response); |
} |
public void destroy() |
{ |
// Nothing |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/ImageStream.java |
---|
1,7 → 1,9 |
package pt.estgp.estgweb.web; |
import pt.estgp.estgweb.domain.Image; |
import pt.estgp.estgweb.domain.ImageImpl; |
import pt.estgp.estgweb.domain.dao.impl.ImageDaoImpl; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.data.ImageManager; |
import java.io.*; |
33,7 → 35,7 |
long id = Long.parseLong(imageRequarired.trim()); |
AbstractDao.getCurrentSession().beginTransaction(); |
Image image = new ImageDaoImpl().get(id); |
ImageImpl image = (ImageImpl) DaoFactory.getImageDaoImpl().get(id); |
try |
{ |
response.setContentType(image.getContentType()); |
/impl/src/java/pt/utl/ist/berserk/storage/hibernate/HibernateTransactionBroker.java |
---|
37,28 → 37,36 |
{ |
HibernateUtils.getCurrentSession().beginTransaction(); |
} |
public void commitTransaction() throws StorageException |
public void commitTransaction() throws StorageException |
{ |
HibernateUtils.getCurrentSession().getTransaction().commit(); |
// HibernateUtils.getCurrentSession().close(); |
} |
public void abortTransaction() throws StorageException |
public void abortTransaction() throws StorageException |
{ |
Session sess = HibernateUtils.getCurrentSession(); |
Transaction t = sess.getTransaction(); |
t.rollback(); |
// sess.close(); |
} |
public void lockRead(List list) throws StorageException |
public void lockRead(List list) throws StorageException |
{ |
for(Object obj: list) |
{ |
lockRead(obj); |
} |
} |
public void lockRead(Object obj) throws StorageException |
public void lockRead(Object obj) throws StorageException |
{ |
HibernateUtils.getCurrentSession().lock(obj, LockMode.READ); |
} |
public void lockWrite(Object obj) throws StorageException |
public void lockWrite(Object obj) throws StorageException |
{ |
HibernateUtils.getCurrentSession().lock(obj, LockMode.WRITE); |
} |
/impl/src/doc/estgweb.eap |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/impl/src/hbm/pt/estgp/estgweb/domain/GenericUser.hbm.xml |
---|
16,6 → 16,7 |
<property name="superuser" type="boolean"/> |
<property name="name" type="string" index="nameIndex"/> |
<property name="roles" type="string" index="rolesIndex"/> |
<many-to-one name="image" column="image" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all"/> |
<subclass name="pt.estgp.estgweb.domain.GenericUserImpl"> |
<subclass name="pt.estgp.estgweb.domain.Group"> |
<meta attribute="scope-class">public abstract</meta> |
53,15 → 54,15 |
<key column="user_id"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUserAssociation"/> |
</set> |
<set name="creatorRecords" lazy="true" order-by="recordId" table="creatorRecords"> |
<set name="creatorRecords" lazy="true" order-by="recordId" table="creatorrecords"> |
<key column="creatorId"/> |
<many-to-many class="pt.estgp.estgweb.domain.Record" column="recordId"/> |
</set> |
<set name="contributorRecords" lazy="true" order-by="recordId" table="contributorRecords"> |
<set name="contributorRecords" lazy="true" order-by="recordId" table="contributorrecords"> |
<key column="contributorId"/> |
<many-to-many class="pt.estgp.estgweb.domain.Record" column="recordId"/> |
</set> |
<set name="managedIdentifierCollectionsManager" lazy="true" table="managedIdentifierCollectionManagers"> |
<set name="managedIdentifierCollectionsManager" lazy="true" table="managedidentifiercollectionmanagers"> |
<key column="managerId"/> |
<many-to-many class="pt.estgp.estgweb.domain.ManagedIdentifierCollection" column="collectionId"/> |
</set> |
97,7 → 98,7 |
<property name="unitCheck" type="boolean"/> |
<property name="academicDegree" type="string"/> |
<property name="localRemovedTeachedUnits" type="string"/> |
<set name="teachedUnits" lazy="true" order-by="courseUnitId" table="teachedUnits"> |
<set name="teachedUnits" lazy="true" order-by="courseUnitId" table="teachedunits"> |
<key column="teacherId"/> |
<many-to-many class="pt.estgp.estgweb.domain.CourseUnit" column="courseUnitId"/> |
</set> |
/impl/src/hbm/pt/estgp/estgweb/domain/Record.hbm.xml |
---|
4,7 → 4,7 |
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> |
<hibernate-mapping> |
<class name="pt.estgp.estgweb.domain.Record" table="profileRecord" abstract="true"> |
<class name="pt.estgp.estgweb.domain.Record" table="profilerecord" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
24,11 → 24,11 |
<property name="identifier" type="string"/> |
<property name="repositoryStream" type="string" index="repositoryStreamIndex"/> |
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" lazy="false" outer-join="true"/> |
<set name="creators" lazy="true" table="creatorRecords"> |
<set name="creators" lazy="true" table="creatorrecords"> |
<key column="recordId"/> |
<many-to-many class="pt.estgp.estgweb.domain.User" column="creatorId"/> |
</set> |
<set name="contributors" lazy="true" table="contributorRecords"> |
<set name="contributors" lazy="true" table="contributorrecords"> |
<key column="recordId"/> |
<many-to-many class="pt.estgp.estgweb.domain.User" column="contributorId"/> |
</set> |
/impl/src/hbm/pt/estgp/estgweb/domain/RepositoryFile.hbm.xml |
---|
4,7 → 4,7 |
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> |
<hibernate-mapping> |
<class name="pt.estgp.estgweb.domain.RepositoryFile" table="repositoryFile" abstract="true"> |
<class name="pt.estgp.estgweb.domain.RepositoryFile" table="repositoryfile" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
24,7 → 24,7 |
<subclass name="pt.estgp.estgweb.domain.RepositoryFileImpl" discriminator-value="RepositoryFileImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.RepositoryFileVersion" table="repositoryFileVersion" abstract="true"> |
<class name="pt.estgp.estgweb.domain.RepositoryFileVersion" table="repositoryfileversion" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
/impl/src/hbm/pt/estgp/estgweb/domain/Image.hbm.xml |
---|
17,7 → 17,6 |
<property name="contentType" type="string"/> |
<property name="size" type="int"/> |
<property name="description" type="text"/> |
<property name="image" type="binary" length="4194304"/> |
<subclass name="pt.estgp.estgweb.domain.ImageImpl" discriminator-value="ImageImpl"/> |
</class> |
</hibernate-mapping> |
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml |
---|
4,7 → 4,7 |
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> |
<hibernate-mapping> |
<class name="pt.estgp.estgweb.domain.CourseUnit" table="courseUnit" abstract="true"> |
<class name="pt.estgp.estgweb.domain.CourseUnit" table="courseunit" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
31,7 → 31,7 |
<key column="courseUnit"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitBlog" /> |
</set> |
<set name="teachers" lazy="true" table="teachedUnits"> |
<set name="teachers" lazy="true" table="teachedunits"> |
<key column="courseUnitId"/> |
<many-to-many class="pt.estgp.estgweb.domain.TeacherImpl" column="teacherId"/> |
</set> |
54,7 → 54,7 |
<subclass name="pt.estgp.estgweb.domain.CourseUnitImpl" discriminator-value="CourseUnitImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.CourseUnitQuestion" table="courseUnitQuestion" abstract="true"> |
<class name="pt.estgp.estgweb.domain.CourseUnitQuestion" table="courseunitquestion" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
71,7 → 71,7 |
<subclass name="pt.estgp.estgweb.domain.CourseUnitQuestionImpl" discriminator-value="CourseUnitQuestionImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.CourseUnitAssignement" table="courseUnitAssignement" abstract="true"> |
<class name="pt.estgp.estgweb.domain.CourseUnitAssignement" table="courseunitassignement" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
95,7 → 95,7 |
<subclass name="pt.estgp.estgweb.domain.CourseUnitAssignementImpl" discriminator-value="CourseUnitAssignementImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.CourseUnitDeliverable" table="courseUnitDeliverable" abstract="true"> |
<class name="pt.estgp.estgweb.domain.CourseUnitDeliverable" table="courseunitdeliverable" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
113,7 → 113,7 |
<subclass name="pt.estgp.estgweb.domain.CourseUnitDeliverableImpl" discriminator-value="CourseUnitDeliverableImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.CourseUnitGrade" table="courseUnitGrade" abstract="true"> |
<class name="pt.estgp.estgweb.domain.CourseUnitGrade" table="courseunitgrade" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
132,7 → 132,7 |
<subclass name="pt.estgp.estgweb.domain.CourseUnitGradeImpl" discriminator-value="CourseUnitGradeImpl"/> |
</class> |
<!--<class name="pt.estgp.estgweb.domain.CourseUnit" table="courseUnitAssignement" abstract="true">--> |
<!--<class name="pt.estgp.estgweb.domain.CourseUnit" table="courseunitassignement" abstract="true">--> |
<!--<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta>--> |
<!--<meta attribute="scope-class">public abstract</meta>--> |
<!--<id name="id" type="long">--> |
/impl/src/hbm/pt/estgp/estgweb/domain/IdentifiersManagement.hbm.xml |
---|
4,7 → 4,7 |
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> |
<hibernate-mapping> |
<class name="pt.estgp.estgweb.domain.ManagedIdentifier" table="managedIdentifier" abstract="true"> |
<class name="pt.estgp.estgweb.domain.ManagedIdentifier" table="managedidentifier" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
20,7 → 20,7 |
<subclass name="pt.estgp.estgweb.domain.ManagedIdentifierImpl" discriminator-value="ManagedIdentifierImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.ManagedIdentifierCollection" table="managedIdentifierCollection" abstract="true"> |
<class name="pt.estgp.estgweb.domain.ManagedIdentifierCollection" table="managedidentifiercollection" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.OwnedDomainObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
33,7 → 33,7 |
<property name="sequenceNumber" type="long"/> |
<property name="description" type="text"/> |
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" lazy="false" outer-join="true"/> |
<set name="managers" lazy="true" table="managedIdentifierCollectionManagers"> |
<set name="managers" lazy="true" table="managedIdentifiercollectionmanagers"> |
<key column="collectionId"/> |
<many-to-many class="pt.estgp.estgweb.domain.User" column="managerId"/> |
</set> |
/impl/src/web/imgs/top.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/impl/src/web/admin/profile/profileCurriculum.jsp |
---|
36,6 → 36,7 |
<html:select property="recordView.type"> |
<html:option value="RecordThesisImpl" key="profile.RecordThesisImpl"/> |
<html:option value="RecordPaperImpl" key="profile.RecordPaperImpl"/> |
<%--todo Falta Artigo de Opinião e falta meter artigo cientifico, revista, conferencia, workshop--%> |
<html:option value="RecordJobImpl" key="profile.RecordJobImpl"/> |
<html:option value="RecordEventOrganizationImpl" key="profile.RecordEventOrganizationImpl"/> |
<html:option value="RecordProjectImpl" key="profile.RecordProjectImpl"/> |
/impl/src/web/admin/courseunits/courseunit.jsp |
---|
84,74 → 84,89 |
<bean:message key="courseunit.teachers"/> |
</th> |
<td> |
<html:select property="teacherId"> |
<logic:present name="CourseUnitsForm" property="teachers"> |
<logic:iterate id="teacher" name="CourseUnitsForm" property="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
<jomm:option itemName="teacher" itemProperty="id" comparableObjectName="CourseUnitsForm" |
comparableObjectProperty="teacherId"> |
(${teacher.code}) ${teacher.name} |
</jomm:option> |
</logic:iterate> |
<input type="button" value="<bean:message key="add"/>" |
onclick="set(this.form,'addTeacher');this.form.submit();"> |
</logic:present> |
</html:select> |
<logic:greaterThan name="CourseUnitView" property="teachersSize" value="0"> |
<table class="dataTable removeButton"> |
<logic:iterate id="userView" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
<tr> |
<th> |
${userView.code} |
</th> |
<th> |
${userView.name} |
</th> |
<td><input type="button" class="removeButton" |
onclick="CourseUnitsForm.id.value='${userView.id}';set(this.form,'removeTeacher');this.form.submit();"> |
</td> |
</tr> |
</logic:iterate> |
</table> |
<logic:lessEqual value="0" name="CourseUnitView" property="id"> |
<i><bean:message key="courseunit.to.add.teachers.save.first"/></i> |
</logic:lessEqual> |
<logic:greaterThan value="0" name="CourseUnitView" property="id"> |
<html:select property="teacherId"> |
<logic:present name="CourseUnitsForm" property="teachers"> |
<logic:iterate id="teacher" name="CourseUnitsForm" property="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
<jomm:option itemName="teacher" itemProperty="id" comparableObjectName="CourseUnitsForm" |
comparableObjectProperty="teacherId"> |
(${teacher.code}) ${teacher.name} |
</jomm:option> |
</logic:iterate> |
<input type="button" value="<bean:message key="add"/>" |
onclick="set(this.form,'addTeacher');this.form.submit();"> |
</logic:present> |
</html:select> |
<logic:greaterThan name="CourseUnitView" property="teachersSize" value="0"> |
<table class="dataTable removeButton"> |
<logic:iterate id="userView" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
<tr> |
<th> |
${userView.code} |
</th> |
<th> |
${userView.name} |
</th> |
<td><input type="button" class="removeButton" |
onclick="CourseUnitsForm.id.value='${userView.id}';set(this.form,'removeTeacher');this.form.submit();"> |
</td> |
</tr> |
</logic:iterate> |
</table> |
</logic:greaterThan> |
</logic:greaterThan> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="courseunit.students"/> |
</th> |
<td> |
<html:text styleClass="text" property="studentCode"/> |
<input type="button" value="<bean:message key="add"/>" |
onclick="set(this.form,'addStudent');this.form.submit();"> |
<logic:greaterThan name="CourseUnitView" property="studentsSize" value="0"> |
<table class="dataTable removeButton"> |
<logic:iterate id="userView" name="CourseUnitView" property="students" type="pt.estgp.estgweb.domain.views.UserView"> |
<tr> |
<th> |
${userView.code} |
</th> |
<th> |
${userView.username} |
</th> |
<th> |
${userView.name} |
</th> |
<th> |
${userView.email} |
</th> |
<th> |
${userView.address} |
</th> |
<td><input type="button" class="removeButton" |
onclick="CourseUnitsForm.id.value='${userView.code}';set(this.form,'removeStudent');this.form.submit();"> |
</td> |
</tr> |
</logic:iterate> |
</table> |
<logic:lessEqual value="0" name="CourseUnitView" property="id"> |
<i><bean:message key="courseunit.to.add.students.save.first"/></i> |
</logic:lessEqual> |
<logic:greaterThan value="0" name="CourseUnitView" property="id"> |
<html:text styleClass="text" property="studentCode"/> |
<input type="button" value="<bean:message key="add"/>" |
onclick="set(this.form,'addStudent');this.form.submit();"> |
<logic:greaterThan name="CourseUnitView" property="studentsSize" value="0"> |
<table class="dataTable removeButton"> |
<logic:iterate id="userView" name="CourseUnitView" property="students" type="pt.estgp.estgweb.domain.views.UserView"> |
<tr> |
<th> |
${userView.code} |
</th> |
<th> |
${userView.username} |
</th> |
<th> |
${userView.name} |
</th> |
<th> |
${userView.email} |
</th> |
<th> |
${userView.address} |
</th> |
<td><input type="button" class="removeButton" |
onclick="CourseUnitsForm.id.value='${userView.code}';set(this.form,'removeStudent');this.form.submit();"> |
</td> |
</tr> |
</logic:iterate> |
</table> |
</logic:greaterThan> |
</logic:greaterThan> |
</td> |
</tr> |
</table> |
<input type="button" onclick="set(form,'createOrUpdateAdmin');form.submit()" value="<bean:message key="confirm"/>"> |
</html:form> |
/impl/src/web/css/style.css |
---|
494,19 → 494,40 |
} |
.block ul li ul li |
{ |
padding-left: 10px; |
padding-left: 0; |
} |
.block p, .navLeftMenu h2 { |
background-color: #8EC73F; |
padding-left: 10px; |
padding-left: 0; |
margin: 0; |
} |
.intranetLayout .block ul |
{ |
LIST-STYLE-TYPE: square; |
} |
.block ul { |
LIST-STYLE-TYPE: none; |
padding-left: 10px; |
list-style:none; |
padding-left: 18px; |
margin-left:0; |
} |
.intranetLayout .block ul ul{ |
LIST-STYLE-TYPE: circle; |
} |
.block ul ul |
{ |
list-style:none; |
padding-left: 15px; |
margin-left:0; |
} |
.block ul li{ |
padding-top:5px; |
padding-left:0; |
margin-left:0; |
} |
.block a { |
color: #4d4d4d; |
/impl/src/web/js/functions.js |
---|
71,3 → 71,5 |
{ |
return confirm(msg); |
} |
/impl/src/web/layout/header.jsp |
---|
1,3 → 1,5 |
<%@ page import="pt.estgp.estgweb.web.utils.ProxyUtils" %> |
<%@ page import="pt.estgp.estgweb.web.filters.TopImageFilter" %> |
<%@ 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" %> |
7,7 → 9,22 |
<table width="100%"> |
<tr> |
<td> |
<img alt="estg" src="<%=request.getContextPath()%>/imgs/top.jpg"/> |
<% |
String link = (String) request.getAttribute(TopImageFilter.TOP_IMAGE); |
if (link == null) |
{ |
%> |
<img alt="estg" src="<%=request.getContextPath()%>/imgs/top.jpg"/> |
<% |
} |
else |
{ |
%> |
<img alt="estg" src="<%=link%>"/> |
<% |
} |
%> |
</td> |
</tr> |
</table> |
/impl/src/web/layout/headerIntranet.jsp |
---|
7,7 → 7,9 |
<table width="100%" id="headerIntranet"> |
<tr> |
<td class="title"> |
INTRANET - ESTG (<bean:write name="UserSession" property="user.name"/> online) |
<logic:present name="UserSession"> |
INTRANET - ESTG (<bean:write name="UserSession" property="user.name"/> online) |
</logic:present> |
</td> |
<td class="links"> |
<ul> |
/impl/src/web/layout/topnav.jsp |
---|
12,10 → 12,15 |
List<NavPlace> navKeys = topNav.getNavPlaces(); |
for (NavPlace navPlace : navKeys) |
{ |
if (navPlace.getUrl() != null) |
{ |
String context = ""; |
if(navPlace.getUrl().startsWith("/")) |
context = request.getContextPath(); |
%> |
<li class="navPlace"><a href="<%=request.getContextPath() + navPlace.getUrl()%>"><%=navPlace.getMessage(request)%></a> ></li> |
<li class="navPlace"><a href="<%=context + navPlace.getUrl()%>"><%=navPlace.getMessage(request)%></a> ></li> |
<% |
} |
else |
/impl/src/web/layout/layoutintranet.jsp |
---|
14,7 → 14,7 |
<jsp:include page="/layout/scripts.jsp"/> |
</head> |
<body class="small" marginwidth="0" marginheight="0" bgcolor="#ffffff" topmargin="0" leftmargin="0"> |
<div id="body"> |
<div id="body" class="intranetLayout"> |
<div id="header"> |
<tiles:insert attribute="header"/> |
</div> |
/impl/src/web/layout/separators.jsp |
---|
33,7 → 33,7 |
String link3 = "href=\"" + request.getContextPath() + "/user/startProfile.do\""; |
String link4 = "href=\"" + request.getContextPath() + "/user/startServiceZone.do\""; |
String link5 = "href=\"" + request.getContextPath() + "/proxy/layoutIOnline/ionline/\""; |
String link6 = "href=\"" + request.getContextPath() + "/proxy/layoutIntranetUtils/estgp/intranet/utils.html\""; |
String link6 = "href=\"" + request.getContextPath() + "/proxy/layoutIntranetUtils/estgp/intranet/escola/utils.html\""; |
if(sep == 0) |
{ |
/impl/src/web/public/profile/profileHome.jsp |
---|
81,7 → 81,7 |
<bean:message key="email.institucion"/> |
</th> |
<td> |
<bean:write name="ProfileForm" property="userView.email"/> |
${ProfileForm.userView.safeEmail} |
</td> |
</tr> |
115,7 → 115,7 |
<ul> |
<logic:iterate id="courseUnit" name="course" property="courseUnits"> |
<li> |
<html:link action="${user}/startLoadCourseUnit${fromAction}?courseUnitView.id=${courseUnit.id}"><bean:write name="courseUnit" property="name"/> (<bean:write name="courseUnit" property="code"/>)</html:link> |
(<bean:write name="courseUnit" property="importYear"/>) <html:link action="${user}/startLoadCourseUnit${fromAction}?courseUnitView.id=${courseUnit.id}"><bean:write name="courseUnit" property="name"/> (<bean:write name="courseUnit" property="code"/>)</html:link> |
</li> |
</logic:iterate> |
</ul> |
/impl/src/web/public/announcements/announcementsPortalLeft.jsp |
---|
21,7 → 21,7 |
IServiceManager sm = ServiceManager.getInstance(); |
String subTarget = null; |
String[] names = new String[]{}; |
Object[] args = new Object[]{request.getParameter("role"), Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS, subTarget}; |
Object[] args = new Object[]{request.getParameter("role"), Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS + "," +Globals.ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS, subTarget}; |
List<AnnouncementView> announcementViews = (List<AnnouncementView>) sm.execute(RequestUtils.getRequester(request, response), "LoadRoleTypeMaxAnnouncements", args, names); |
request.setAttribute("Announcements", announcementViews); |
/impl/src/web/public/announcements/loadAnnouncement.jsp |
---|
85,9 → 85,13 |
if (Announcement.getUrl() != null) |
{ |
%> |
<html:link href="${Announcement.url}">Ver +</html:link> |
>> <html:link href="${Announcement.url}">Ver +</html:link> |
<% |
}%> |
<div class="pFooter"> |
Posted by: ${Announcement.ownerUsername} AT ${Announcement.formatedSaveDate} |
</div> |
</p> |
<% |
} |
120,6 → 124,14 |
<tr> |
<td>${Announcement.formatedText}</td> |
</tr> |
<tr> |
<td> >> <html:link href="${Announcement.url}">${Announcement.url}</html:link></td> |
</tr> |
<tr> |
<td class="pFooter"> |
Posted by: ${Announcement.ownerUsername} AT ${Announcement.formatedSaveDate} |
</td> |
</tr> |
</table> |
<% |
} |
150,6 → 162,14 |
</td> |
<td>${Announcement.formatedText}</td> |
</tr> |
<tr> |
<td colspan="2"> >> <html:link href="${Announcement.url}">${Announcement.url}</html:link></td> |
</tr> |
<tr> |
<td colspan="2" class="pFooter"> |
Posted by: ${Announcement.ownerUsername} AT ${Announcement.formatedSaveDate} |
</td> |
</tr> |
</table> |
<% |
} |
180,6 → 200,14 |
</div> |
</td> |
</tr> |
<tr> |
<td colspan="2"> >> <html:link href="${Announcement.url}">${Announcement.url}</html:link></td> |
</tr> |
<tr> |
<td colspan="2" class="pFooter"> |
Posted by: ${Announcement.ownerUsername} AT ${Announcement.formatedSaveDate} |
</td> |
</tr> |
</table> |
<% |
} |
/impl/src/web/templates/intranet/escola/secretaria/documentosApoio.html |
---|
85,6 → 85,8 |
</ul> |
</li> |
</ul> |
<a href="teste/teste.html?nav0=Documentos de apoio&navUrl0=../documentosApoio.html%3Fnav0%3DDocumentos de Apoio&nav1=teste">teste</a> |
</div> |
</div> |
</div> |
/impl/src/web/user/courseunits/courseunitworks.jsp |
---|
83,7 → 83,7 |
<bean:message key="courseunit.description"/> |
</th> |
<td> |
<html:textarea styleClass="textarea" property="courseUnitAssignementView.description"/> |
<html:textarea styleClass="textarea" property="courseUnitAssignementView.formatedDescription"/> |
</td> |
</tr> |
<tr> |
/impl/src/web/user/courseunits/courseunit.jsp |
---|
85,7 → 85,7 |
<html:link action="${user}/startLoadTeacherCourseUnit${fromAction}?code=${teacher.code}&courseUnitView.id=${CourseUnitView.id}">${teacher.name}</html:link> |
</td> |
<td> |
${teacher.email} |
${teacher.safeEmail} |
</td> |
</tr> |
</logic:iterate> |
102,7 → 102,7 |
<logic:iterate id="announcement" name="CourseUnitView" property="announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView"> |
<li> |
<h3><html:link action="/user/startLoadAnnouncementFromCourseUnit?id=${announcement.id}">${announcement.title}</html:link></h3> |
<p>${announcement.text}</p> |
<p>${announcement.formatedText}</p> |
<p class="pFooterSeccao"><bean:message key="from"/>: ${announcement.owner.name} (${announcement.owner.username}) <bean:message key="at"/> ${announcement.formatedSaveDate} </p> |
</li> |
</logic:iterate> |
/impl/src/web/user/courseunits/menu.jsp |
---|
49,9 → 49,9 |
<li> |
<html:link action="/user/startSubmitAnnouncementFromCourseUnit?announcementView.courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.put.announcement"/></html:link> |
</li> |
<li> |
<!--<li> |
<a href="<%=request.getContextPath()%>/"><bean:message key="courseunit.menu.put.question"/></a> |
</li> |
</li>--> |
<li> |
<a href="<%=request.getContextPath()%>${user}/startLoadCourseUnitWorks${fromAction}.do?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.assignements"/></a> |
</li> |
/impl/src/web/user/courseunits/students.jsp |
---|
44,7 → 44,7 |
${student.username} |
</td> |
<td> |
${student.email} |
${student.safeEmail} |
</td> |
</tr> |
</logic:iterate> |
/impl/src/web/user/home.jsp |
---|
4,6 → 4,7 |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<jomm:messages/> |
<html:errors/> |
11,7 → 12,8 |
<table width="100%" cellpadding="0" cellspacing="0"> |
<tr> |
<td id="leftPage"> |
<jsp:include page="/public/announcements/announcementsPortalLeft.jsp?role=student&from=Home"/> |
<jsp:include page="/public/announcements/announcementsPortalLeft.jsp?role=${UserSession.user.roles}&from=Home"/> |
</td> |
<td class="contentPortal"> |
<jsp:include page="/user/home/student.jsp"/> |
22,7 → 24,7 |
<%--</table>--%> |
</td> |
<td id="rightPagePortal"> |
<jsp:include page="/public/announcements/announcementsPortalRight.jsp?role=student&from=Home"/> |
<jsp:include page="/public/announcements/announcementsPortalRight.jsp?role=${UserSession.user.roles}&from=Home"/> |
</td> |
</tr> |
</table> |
31,7 → 33,7 |
<table> |
<tr> |
<td id="leftPage"> |
<jsp:include page="/public/announcements/announcementsPortalLeft.jsp?role=teacher&from=Home"/> |
<jsp:include page="/public/announcements/announcementsPortalLeft.jsp?role=${UserSession.user.roles}&from=Home"/> |
</td> |
<td class="contentPortal"> |
<jsp:include page="/user/home/teacher.jsp"/> |
42,7 → 44,7 |
<%--</table>--%> |
</td> |
<td id="rightPagePortal"> |
<jsp:include page="/public/announcements/announcementsPortalRight.jsp?role=teacher&from=Home"/> |
<jsp:include page="/public/announcements/announcementsPortalRight.jsp?role=${UserSession.user.roles}&from=Home"/> |
</td> |
</tr> |
</table> |
/impl/src/web/user/home/student.jsp |
---|
8,24 → 8,62 |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<div class="portal"> |
<ul> |
<li class="WARNING"> |
<logic:notMatch value="StudentImpl" name="UserSession" property="user.class.name"> |
<bean:message key="profile.bad.profile.student.iregular.user.class"/> |
</logic:notMatch> |
</li> |
</ul> |
<table class="columnTable" width="100%"> |
<tbody> |
<tr> |
<baco:isModuleOn module="courseunits"> |
<td class="column"> |
<div class="block"> |
<p><bean:message key="intranet.course.units"/></p> |
<ul> |
<logic:present name="UserSession" property="user.subscribedUnitsView"> |
<logic:notEmpty name="UserSession" property="user.subscribedUnitsView"> |
<logic:iterate id="unit" name="UserSession" property="user.subscribedUnitsView" type="pt.estgp.estgweb.domain.CourseUnit"> |
<li> |
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name}</html:link> |
</li> |
</logic:iterate> |
</logic:notEmpty> |
</logic:present> |
<li> |
<p><bean:message key="courseunit.semestre"/> 1</p> |
<logic:present name="UserSession" property="user.subscribedUnitsCurrentYearViewS1"> |
<logic:empty name="UserSession" property="user.subscribedUnitsCurrentYearViewS1"> |
<bean:message key="courseunit.zero.units"/> |
</logic:empty> |
</logic:present> |
<logic:present name="UserSession" property="user.subscribedUnitsCurrentYearViewS1"> |
<logic:notEmpty name="UserSession" property="user.subscribedUnitsCurrentYearViewS1"> |
<ul> |
<logic:iterate id="unit" name="UserSession" property="user.subscribedUnitsCurrentYearViewS1" type="pt.estgp.estgweb.domain.CourseUnit"> |
<li> |
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name} (${unit.importYear})</html:link> |
</li> |
</logic:iterate> |
</ul> |
</logic:notEmpty> |
</logic:present> |
</li> |
<li> |
<p><bean:message key="courseunit.semestre"/> 2</p> |
<logic:present name="UserSession" property="user.subscribedUnitsCurrentYearViewS2"> |
<logic:empty name="UserSession" property="user.subscribedUnitsCurrentYearViewS2"> |
<bean:message key="courseunit.zero.units"/> |
</logic:empty> |
</logic:present> |
<logic:present name="UserSession" property="user.subscribedUnitsCurrentYearViewS2"> |
<logic:notEmpty name="UserSession" property="user.subscribedUnitsCurrentYearViewS2"> |
<ul> |
<logic:iterate id="unit" name="UserSession" property="user.subscribedUnitsCurrentYearViewS2" type="pt.estgp.estgweb.domain.CourseUnit"> |
<li> |
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name} (${unit.importYear})</html:link> |
</li> |
</logic:iterate> |
</ul> |
</logic:notEmpty> |
</logic:present> |
</li> |
</ul> |
<!--Can put year all other units in the future calling service user.subscribedUnitsOldYearsView--> |
</div> |
</td> |
</baco:isModuleOn> |
/impl/src/web/user/home/teacher.jsp |
---|
8,6 → 8,13 |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<div class="portal"> |
<ul> |
<li class="WARNING"> |
<logic:notMatch value="TeacherImpl" name="UserSession" property="user.class.name"> |
<bean:message key="profile.bad.profile.teacher.iregular.user.class"/> |
</logic:notMatch> |
</li> |
</ul> |
<table class="columnTable" width="100%"> |
<tbody> |
<tr> |
16,17 → 23,45 |
<div class="block"> |
<p><bean:message key="intranet.course.units"/></p> |
<ul> |
<logic:present name="UserSession" property="user.teachedUnitsView"> |
<logic:notEmpty name="UserSession" property="user.teachedUnitsView"> |
<logic:iterate id="unit" name="UserSession" property="user.teachedUnitsView" type="pt.estgp.estgweb.domain.CourseUnit"> |
<li> |
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name} (${unit.courseName})</html:link> |
</li> |
</logic:iterate> |
</logic:notEmpty> |
</logic:present> |
<li> |
<p><bean:message key="courseunit.semestre"/> 1</p> |
<logic:present name="UserSession" property="user.teachedUnitsCurrentYearViewS1"> |
<logic:empty name="UserSession" property="user.teachedUnitsCurrentYearViewS1"> |
<bean:message key="courseunit.zero.units"/> |
</logic:empty> |
</logic:present> |
<logic:present name="UserSession" property="user.teachedUnitsCurrentYearViewS1"> |
<logic:notEmpty name="UserSession" property="user.teachedUnitsCurrentYearViewS1"> |
<ul> |
<logic:iterate id="unit" name="UserSession" property="user.teachedUnitsCurrentYearViewS1" type="pt.estgp.estgweb.domain.CourseUnit"> |
<li> |
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name}</html:link> |
</li> |
</logic:iterate> |
</ul> |
</logic:notEmpty> |
</logic:present> |
</li> |
<li> |
<p><bean:message key="courseunit.semestre"/> 2</p> |
<logic:present name="UserSession" property="user.teachedUnitsCurrentYearViewS2"> |
<logic:empty name="UserSession" property="user.teachedUnitsCurrentYearViewS2"> |
<bean:message key="courseunit.zero.units"/> |
</logic:empty> |
</logic:present> |
<logic:present name="UserSession" property="user.teachedUnitsCurrentYearViewS2"> |
<logic:notEmpty name="UserSession" property="user.teachedUnitsCurrentYearViewS2"> |
<ul> |
<logic:iterate id="unit" name="UserSession" property="user.teachedUnitsCurrentYearViewS2" type="pt.estgp.estgweb.domain.CourseUnit"> |
<li> |
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name}</html:link> |
</li> |
</logic:iterate> |
</ul> |
</logic:notEmpty> |
</logic:present> |
</li> |
</ul> |
</div> |
</td> |
</baco:isModuleOn> |
/impl/src/web/user/serviceZone/serviceZone.jsp |
---|
85,8 → 85,9 |
</baco:hasRole> |
</baco:isModuleOn> |
<li> |
<baco:isAdmin> |
<baco:isAdmin> |
<li> |
<bean:message key="users"/> |
<ul> |
<li> |
112,11 → 113,12 |
</li> |
</baco:isModuleOn> |
</ul> |
</baco:isAdmin> |
</li> |
</li> |
</baco:isAdmin> |
<baco:isModuleOn module="courseunits"> |
<li> |
<baco:isAdmin> |
<baco:isAdmin> |
<li> |
<bean:message key="courses"/> |
<ul> |
<li> |
139,8 → 141,16 |
<bean:message key="courseunit.search"/> |
</html:link> |
</li> |
<%--<li>--%> |
<%--<html:link action="/user/startFindCourseUnitAdminFromServiceZone">--%> |
<%--<bean:message key="courseunit.program.archive"/>--%> |
<%--</html:link>--%> |
<%--</li>--%> |
</ul> |
</baco:isAdmin> |
</li> |
</baco:isAdmin> |
<li> |
<bean:message key="backups"/> |
<ul> |
<baco:isAdmin> |
162,7 → 172,6 |
</html:link> |
</li> |
</baco:hasRole> |
</ul> |
</li> |
</baco:isModuleOn> |
/impl/build.properties |
---|
11,7 → 11,7 |
database.catalog=estgweb |
database.username=root |
database.password= |
database.connection.url=jdbc:mysql://${database.host}:${database.port}/${database.catalog}?useUnicode=true&characterEncoding=UTF-8 |
database.connection.url=jdbc:mysql://${database.host}:${database.port}/${database.catalog}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true |
hibernate.show.sql=false |
use.ldap=true |
104,7 → 104,8 |
log4j.properties=${conf.dir}/${log4j.properties.filename} |
#log file confirguration |
log.file=${data.dir}/estgweb.log |
log.file=${data.dir}/../estgweb-local.log |
log.level=info |
#email templates |
email.templates.dir=/template/email |
175,4 → 176,4 |
#Google Service Specific Configuration |
ws.google.package=com.google.api.ws.clients |
ws.google.package=com.google.api.ws.clients |
/impl/etc/todo/todo.txt |
---|
1,3 → 1,15 |
Questão da identificacao dos Noturnos |
Listagem de Programas |
- Ano > Curso > |
[CODIGO-NOMEUNI-SEMESTRE.pdf] |
No caso de não haver: |
[CODIGO-NOMEUNI-SEMESTRE-FALTA.pdf] |
No dia da Instalação: |
Pasta de Deliberações CC copy paste. |
Configuracoes de Teste |
Server ESTGP esta definido para o localhost |
Start Path do IOnline esta para a raiz mas para testar unidades tem de apontar para /Erasmus/baco |
12,10 → 24,13 |
Calendario de Exames > passa a pasta ionline |
Projectos Finais > criar pasta escola\projectos ionline |
Actas do Conselho directivo > ionline com permissões especias |
Pasta da Legislação > NovaWeb |
Pasta da Legislação > NovaWeb |
Pasta Bolonha ZIP Pack deploy |
Pasta Horarios Criar hierarquia. > Intranet/horarios |
Jorge Meu |
Tirar o getSerializable de noovo do domainObject e ver de onde devem herdar |
/impl/build.xml |
---|
1,4 → 1,4 |
<?xml version="1.0" encoding="UTF-8"?> |
<?xml version="1.0" encoding="UTF-8"?> |
<project name="estgweb" basedir="." default="help"> |
29,6 → 29,8 |
--> |
<!--caso queiramos apagar os pregen hbm delPreGenAppScripts--> |
<target name="all" depends="clean,initDirs,createConfigurationFiles,generateHibernateDomainObjects,generateHibernateDaoClasses,build,generateHibernateSql,build.war,dbInit"/> |
<target name="allWebNode" depends="clean,initDirs,createConfigurationFiles,generateHibernateDomainObjects,generateHibernateDaoClasses,build.war"/> |
<target name="dataNode" depends="clean,initDirs,createConfigurationFiles,generateHibernateDomainObjects,generateHibernateDaoClasses,build,generateHibernateSql"/> |
<!-- |
98,19 → 100,19 |
<target name="tomcat.redeployContext" depends="tomcat.undeploy,build.war" > |
<echo message="${tomcat.manager}"/> |
<tomcat.install url="${tomcat.manager}" path="${tomcat.context.path.install}" |
config="file:/${basedir}/${dist.dir}/estgweb.xml" |
config="file:${basedir}/${dist.dir}/estgweb.xml" |
username="${tomcat.username}" password="${tomcat.password}" /> |
</target> |
<target name="tomcat.deploy" depends="build.war" > |
<echo message="${tomcat.manager}"/> |
<target name="tomcat.deploy" depends="war" > |
<echo message="${tomcat.manager} path:${tomcat.context.path.install} warfile:file:${basedir}/${dist.dir}/${tomcat.war.file}"/> |
<tomcat.deploy url="${tomcat.manager}" path="${tomcat.context.path.install}" |
war="file:/${basedir}/${dist.dir}/${tomcat.war.file}" |
war="file:${basedir}/${dist.dir}/${tomcat.war.file}" |
username="${tomcat.username}" password="${tomcat.password}" /> |
</target> |
<target name="tomcat.redeploy" depends="tomcat.undeploy,build.war"> |
<echo message="${tomcat.manager}"/> |
<target name="tomcat.redeploy" depends="tomcat.undeploy,war"> |
<echo message="${tomcat.manager} path:${tomcat.context.path.install} warfile:file:${basedir}/${dist.dir}/${tomcat.war.file}"/> |
<tomcat.deploy url="${tomcat.manager}" path="${tomcat.context.path.install}" |
war="file:/${basedir}/${dist.dir}/${tomcat.war.file}" |
war="file:${basedir}/${dist.dir}/${tomcat.war.file}" |
username="${tomcat.username}" password="${tomcat.password}" /> |
</target> |
<target name="tomcat.undeploy"> |
195,7 → 197,7 |
</replace> |
</target> |
<target name="build.war" depends="build,dist" description="Make war distribution"> |
<target name="build.war" depends="dist" description="Make war distribution"> |
<mkdir dir="${build.dir.war}"/> |
<mkdir dir="${build.dir.war}/WEB-INF"/> |
<mkdir dir="${build.dir.war}/WEB-INF/lib"/> |
331,8 → 333,8 |
<copy overwrite="true" todir="${build.dir.intranet.setup.folders.file}" file="${intranet.setup.folders.file.src}"/> |
<java classname="${scripts.buider.class}" classpath="${build.dir.classes}"> |
<arg value="${basedir}\..\common"/> |
<arg value="${basedir}\build\ant\classes"/> |
<arg value="${basedir}${file.separator}..${file.separator}common"/> |
<arg value="${basedir}${file.separator}build${file.separator}ant${file.separator}classes"/> |
<arg value="${build.dir.scripts}"/> |
<arg value="${scripts.target.libs.file}"/> |
</java> |
374,6 → 376,7 |
</replace> |
<replace file="${build.dir.classes}/${log4j.properties.filename}"> |
<replacefilter token="@log.file@" value="${log.file}"/> |
<replacefilter token="@log.level@" value="${log.level}"/> |
</replace> |
<replace file="${build.dir.scripts}/${scripts.setenv.file}"> |
<replacefilter token="@tomcat.home@" value="${tomcat.home}"/> |
495,4 → 498,4 |
<!--<java classname="mitra.oaiharvest.index.IndexEngine" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/>--> |
<!--</target>--> |
</project> |
</project> |