Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 751 → Rev 767

/impl/importRoutines.xml
6,7 → 6,9
 
 
<target name="courses">
<java classname="pt.estgp.estgweb.services.sigesimports.ImportCourseService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/>
<java classname="pt.estgp.estgweb.services.sigesimports.ImportCourseService" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<arg value="201314"/>
</java>
</target>
<target name="teachers">
<java classname="pt.estgp.estgweb.services.sigesimports.ImportTeachersService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/>
33,8 → 35,9
 
<target name="importPrograms">
<java fork="true" classname="pt.estgp.estgweb.domain.CourseUnitProgramImpl" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<arg value="APM.20.dez.12.xml"/>
<arg value="fichas/DC - 10.jan.13.xml"/>
<arg value="true"/>
<arg value="false"/>
</java>
</target>
</project>
/impl/conf/language/MessageResourcesImportSiges.properties
23,4 → 23,7
 
import.grades=Importação de Notas
 
import.warning=Aviso de importação
import.warning=Aviso de importação
 
courseunitprograms.sincronization=Sincronizando programas de unidades Curriculares
courseunitprograms.sincronization.terminating=Terminando sincronização de programas
/impl/conf/language/MessageResourcesAnnouncements.properties
44,6 → 44,7
announcements.type.bottom.flash.news=Destaques Secundarios
announcements.type.todo=Trabalho a fazer
announcements.type.courseUnitAnnouncement=Anúncio de Unidade Curricular
announcements.type.popup=POPUP
announcement.protocol.error.http=http
announcement.protocol.error.https=https
announcement.protocol.error.ftp=ftp
/impl/conf/language/MessageResources.properties
448,6 → 448,9
user.role.courseValidateProgramG=Comissão de Curso de G
user.role.courseValidateProgramID=Comissão de Curso de ID
 
user.role.courseValidateProgramRPS=Comissão de Curso de RPS
user.role.courseValidateProgramTGI=Comissão de Curso de TGI
user.role.courseValidateProgramRU=Comissão de Curso de RU
 
 
 
481,3 → 484,6
 
 
 
 
 
 
/impl/conf/WEB-INF/web.xml
212,6 → 212,10
<servlet-class>pt.estgp.estgweb.web.RepositoryStream</servlet-class>
</servlet>
<servlet>
<servlet-name>repositoryStreamVersion</servlet-name>
<servlet-class>pt.estgp.estgweb.web.RepositoryStreamVersion</servlet-class>
</servlet>
<servlet>
<servlet-name>ServicosImpressao</servlet-name>
<servlet-class>pt.estgp.estgweb.web.ajaxapis.ServicosImpressao</servlet-class>
</servlet>
268,6 → 272,10
<url-pattern>/repositoryStream/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>repositoryStreamVersion</servlet-name>
<url-pattern>/repositoryStreamVersion/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>BlogServlet</servlet-name>
<url-pattern>/blog/*</url-pattern>
</servlet-mapping>
/impl/conf/app.properties
185,11 → 185,16
user.role.77=courseValidateProgramEGPMEestranho
 
 
user.role.78=courseValidatePrograms
user.role.78=courseValidateProgramRPS
user.role.79=courseValidateProgramTGI
user.role.80=courseValidateProgramRU
 
 
user.role.81=courseValidatePrograms
 
 
 
 
#########################################################################
#
# Modules
211,6 → 216,7
announcements.type.2=bottom.flash.news
announcements.type.3=todo
announcements.type.4=courseUnitAnnouncement
announcements.type.5=popup
 
#separate with , example helpdocs,reunions
announcements.not.standard.0=todo
/impl/conf/berserk/sd.xml
1306,11 → 1306,24
</filterChains>
</service>
 
<service>
<name>LoadRepositoryFileVersion</name>
<implementationClass>pt.estgp.estgweb.services.data.RepositoryService</implementationClass>
<description>Load student units</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadVersion</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="ResourceAccessControlVersion"/>
</filterChains>
</service>
 
 
 
 
 
 
<!--Managed Identifiers-->
<service>
<name>managedIdentiferLoadCollections</name>
/impl/conf/berserk/fd.xml
178,6 → 178,12
<isTransactional>false</isTransactional>
</filter>
<filter>
<name>ResourceAccessControlVersion</name>
<implementationClass>pt.estgp.estgweb.filters.filters.ResourceAccessControlVersion</implementationClass>
<description>Check if a resource can be loaded</description>
<isTransactional>false</isTransactional>
</filter>
<filter>
<name>ResourceAccessControlCourseUnit</name>
<implementationClass>pt.estgp.estgweb.filters.filters.ResourceAccessControlCourseUnitFilter</implementationClass>
<description>Check if a resource can be loaded</description>
/impl/conf/berserk/fcd.xml
263,6 → 263,13
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>ResourceAccessControlVersion</name>
<expression>ResourceAccessControlVersion("identifier")</expression>
<description>Owner of an object Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
 
 
<!--CourseUnits-->
/impl/src/java/pt/estgp/estgweb/utils/DatesUtils.java
63,6 → 63,20
}
}
 
public static String getImportYearBefore(String year) {
String year1 = year.substring(0,4);
 
int year1Int = Integer.parseInt(year1);
 
year1Int -= 1;
int year2Int = year1Int + 1;
String part2 = ("" + year2Int).substring(2);
 
String yearTarget = "" + year1Int + part2;
 
return yearTarget;
}
 
public static enum SemestreModerate
{
S1,
180,6 → 194,7
 
public static void main(String [] args)
{
System.out.println(getImportYearBefore("200001"));
System.out.println(getImportYear());
}
}
/impl/src/java/pt/estgp/estgweb/Globals.java
107,6 → 107,7
public static final String ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS = "top.flash.news";
public static final String ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS = "bottom.flash.news";
public static final String ANNOUNCEMENT_TYPE_TODO = "todo";
public static final String ANNOUNCEMENT_TYPE_POPUP = "popup";
public static final String ANNOUNCEMENT_TYPE_COURSE_UNIT = "courseUnitAnnouncement";
public static final int NUMBER_ANNOUNCEMENT_TYPE_NEW_INDEX = 5;
public static final int NUMBER_ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_INDEX = 1;
/impl/src/java/pt/estgp/estgweb/services/courseunits/DirectedCoordinatedUnitsService.java
265,7 → 265,7
{
courseUnit.setValidProgram(courseUnitView.isValidProgram());
counter++;
new SaveCourseUnitProgram().createPdf(courseUnit,null);
new SaveCourseUnitProgram().createPdf(courseUnit,null,usession);
 
 
if(courseUnitView.isValidProgram())
/impl/src/java/pt/estgp/estgweb/services/courseunits/SaveCourseUnitProgram.java
52,6 → 52,7
private static final Logger logger = Logger.getLogger(SaveCourseUnitProgram.class);
 
public CourseUnitProgramView run(CourseUnitProgramView cupv, Long coursUnitId, UserSession usession) throws ServiceException, TransformerException, IOException, FOPException {
 
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(coursUnitId);
 
CourseUnitProgram program = c.getCourseUnitProgram();
138,8 → 139,15
if(cu.getResponsableTeacher() != null)
{
Element responsavel = curriculum.addElement(new QName("responsavel",namespace));
responsavel.setText(cu.getResponsableTeacher().getName());
 
if(cu.getResponsableTeacher().getName()==null)
{
errors.add("Erro a carregar docente responsavel da unidade " + cu.getCode());
responsavel.setText("erro");
}
else
responsavel.setText(StringsUtils.getNormalizedName(cu.getResponsableTeacher().getName()));
 
Element responsavelEmail = curriculum.addElement(new QName("responsavelEmail",namespace));
if(cu.getResponsableTeacher().getEmail()==null)
{
167,7 → 175,13
Element codigoSIGESDocente1 = curriculum.addElement(new QName("codigoSIGESDocente" + docenteNumber,namespace));
codigoSIGESDocente1.setText(t.getSigesCode()+"");
Element outroDocente1 = curriculum.addElement(new QName("outroDocente" + docenteNumber,namespace));
outroDocente1.setText(StringsUtils.getNormalizedName(t.getName()));
if(t.getName()==null)
{
errors.add("Erro a carregar docente da unidade " + cu.getCode());
outroDocente1.setText("erro");
}
else
outroDocente1.setText(StringsUtils.getNormalizedName(t.getName()));
Element docenteEmail1 = curriculum.addElement(new QName("docenteEmail" + docenteNumber,namespace));
 
if(t.getEmail()==null)
245,7 → 259,7
lingua1.setText(cu.getCourseUnitProgram().getLingua1());
 
Element lingua2 = curriculum.addElement(new QName("lingua2",namespace));
lingua2.setText(cu.getCourseUnitProgram().getLingua1());
lingua2.setText(cu.getCourseUnitProgram().getLingua2());
 
Element cargaHorariaT = curriculum.addElement(new QName("cargaHorariaT",namespace));
cargaHorariaT.setText(cu.getCourseUnitProgram().getCargaHorariaT());
/impl/src/java/pt/estgp/estgweb/services/courseunits/courseunitprogram.fo.xsl
274,7 → 274,7
<xsl:call-template name="tableWhiteLine">
<xsl:with-param name="label">Língua de ensino</xsl:with-param>
<xsl:with-param name="label2"></xsl:with-param>
<xsl:with-param name="value"><xsl:value-of select="//uc:lingua1"/> <xsl:value-of select="//uc:lingua2"/></xsl:with-param>
<xsl:with-param name="value"><xsl:value-of select="//uc:lingua1"/><xsl:text> </xsl:text><xsl:value-of select="//uc:lingua2"/></xsl:with-param>
</xsl:call-template>
 
<xsl:call-template name="tableWhiteLine2Fields">
/impl/src/java/pt/estgp/estgweb/services/sigesimports/SincronizeLastYearCourseUnitProgramsService.java
New file
0,0 → 1,76
package pt.estgp.estgweb.services.sigesimports;
 
import jomm.dao.impl.AbstractDao;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.services.logresults.ILogMessages;
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum;
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage;
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import java.util.List;
 
/**
* @author Jorge Machado
*/
public class SincronizeLastYearCourseUnitProgramsService implements IService
{
private static final Logger logger = Logger.getLogger(SincronizeLastYearCourseUnitProgramsService.class);
 
private SincronizeLastYearCourseUnitProgramsService coursesService = new SincronizeLastYearCourseUnitProgramsService();
 
public ILogMessages run(String year) throws ServiceException
{
 
String importYearBefore = DatesUtils.getImportYearBefore(year);
DefaultLogMessages logMessages = new DefaultLogMessages();
try
{
logMessages.addMessage(new DefaultLogMessage("courseunitprograms.sincronization", LogMessageTypeEnum.INFO, "instituicao " + Globals.SIGES_INSTITUTION_CODE));
logger.info("S1");
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().load(year,"S1");
for (CourseUnit cu: units)
{
if(cu.getCourseUnitProgram() == null)
{
 
List<CourseUnit> lista = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique(cu.getCode(),cu.getCourseCode(),importYearBefore);
if(lista != null && lista.size() > 0)
{
logger.info("OK - Unit siges: " + cu.getCode() + " without program will try found old to clone");
}
else
{
logger.info("NOT FOUND - Unit siges: " + cu.getCode() + " without program don't have old to clone");
}
}
}
}
catch (Throwable e)
{
logger.error(e,e);
logMessages.addMessage(new DefaultLogMessage("import.error",e.toString(), "see log for details", LogMessageTypeEnum.ERROR));
}
logger.info("terminating programs sincronization");
logMessages.addMessage(new DefaultLogMessage("courseunitprograms.sincronization.terminating", LogMessageTypeEnum.INFO));
return logMessages;
}
 
 
public static void main(String[] args) throws ServiceException
{
String year = DatesUtils.getImportYear();
if(args != null && args.length > 0)
year = args[0];
AbstractDao.getCurrentSession().beginTransaction();
new SincronizeLastYearCourseUnitProgramsService().run(year);
AbstractDao.getCurrentSession().getTransaction().commit();
}
 
 
}
/impl/src/java/pt/estgp/estgweb/services/data/RepositoryService.java
104,6 → 104,17
return repositoryFile;
}
 
 
public RepositoryFileImpl loadView(String identifier,UserSession sess)
{
RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().get(Long.parseLong(identifier));
for (RepositoryFileVersionImpl version : repositoryFile.getRepositoryFileVersions())
{
version.getSaveDate();
}
return repositoryFile;
}
 
/**
* @param identifier .
* @param userSession .
125,6 → 136,22
* @param userSession .
* @return a view with an inputStream for document
*/
public IRepositoryFile loadVersion(String identifier, UserSession userSession)
{
DefaultRepositoryFile iRepositoryFile = new DefaultRepositoryFile();
RepositoryFileVersionImpl repositoryFile = (RepositoryFileVersionImpl) DaoFactory.getRepositoryFileVersionDaoImpl().load(Long.parseLong(identifier));
iRepositoryFile.setContentType(repositoryFile.getContentType());
iRepositoryFile.setSize(repositoryFile.getSize());
iRepositoryFile.setName(repositoryFile.getName());
iRepositoryFile.setInput(RepositoryManager.load(repositoryFile.getId()));
return iRepositoryFile;
}
 
/**
* @param identifier .
* @param userSession .
* @return a view with an inputStream for document
*/
public List<IRepositoryFile> loadVersions(String identifier, UserSession userSession)
{
RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().load(Long.parseLong(identifier));
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitProgramImpl.java
2,10 → 2,7
 
import jomm.dao.utils.HibernateUtils;
import org.apache.fop.apps.FOPException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.XPath;
import org.dom4j.*;
import org.hibernate.NonUniqueResultException;
import org.hibernate.Session;
import pt.estgp.estgweb.Globals;
230,6 → 227,7
 
static boolean valiPrograms = true;
static int contaProgramas = 0;
static boolean considerProblems = false;
public static void main(String[] args) throws IOException, DocumentException, SQLException, TransformerException, FOPException {
 
 
239,11 → 237,13
HibernateUtils.getCurrentSession().getTransaction().commit();
System.out.println("Done");
 
String file = "D:\\Jorge\\Documents\\estg\\projectos\\Fichas Curriculares Baco\\FICHAS_CORRIGIDAS";
String file = "D:\\Jorge\\Documents\\estg\\projectos\\Fichas Curriculares Baco\\FICHAS_CORRIGIDAS\\DC - 10.jan.13.xml";
if(args.length > 0)
file = args[0];
if(args.length > 1)
valiPrograms = Boolean.parseBoolean(args[1]);
if(args.length > 2)
considerProblems = Boolean.parseBoolean(args[2]);
File f = new File(file);
File f2 = f;
 
299,10 → 299,12
 
Map<String,String> namespaces = new HashMap<String,String>();
namespaces.put("m","urn:schemas-microsoft-com:office:spreadsheet");
namespaces.put("ss","urn:schemas-microsoft-com:office:spreadsheet");
 
XPath xPath = dom.createXPath("//m:Worksheet");
xPath.setNamespaceURIs(namespaces);
List<Element> worksheets = xPath.selectNodes(dom.getRootElement());
Map<Integer,String> affectedRows = new HashMap<Integer,String>();
for(Element worksheet:worksheets)
{
xPath = worksheet.createXPath(".//m:Row");
317,9 → 319,32
XPath xPathCells = dom.createXPath("m:Cell");
xPathCells.setNamespaceURIs(namespaces);
List<Element> cells = xPathCells.selectNodes(row);
 
for(int i = 6; i < cells.size();i++)
{
 
Element cell = cells.get(i);
Attribute attr = cell.attribute("Index");
System.out.println("###############################" + attr);
if(attr != null)
{
if(attr.getValue() != null && attr.getValue().length() > 0)
{
System.out.println("###############################");
int index = Integer.parseInt(attr.getValue());
affectedRows.put((r-3),"AFFECTED");
if(index > i+1)
{
int indexHoles = index - 1 - i ; //porque o Index começa em 1
for(int j=0; j < indexHoles;j++)
{
System.out.println("SPACES ###############################");
lista[r-3].add("");
}
}
}
}
 
XPath xPathData = dom.createXPath("m:Data");
xPathData.setNamespaceURIs(namespaces);
Element data = (Element) xPathData.selectSingleNode(cell);
330,11 → 355,21
}
else
lista[r-3].add("");
 
}
}
 
}
 
if(!considerProblems || affectedRows.size() > 0)
{
errors.add("IMPORTING AGAIN COURSE: " + f.getName());
}
else
{
errors.add("COURSE " + f.getName() + "no problems found");
return;
}
int maxUnits = lista[0].size();
for(int unit = 0; unit < maxUnits; unit++)
{
/impl/src/java/pt/estgp/estgweb/domain/views/AnnouncementView.java
1,21 → 1,19
package pt.estgp.estgweb.domain.views;
 
import jomm.utils.StringsUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.enums.AnnouncementStyleEnum;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.RoleManager;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.web.utils.DatesUtils;
 
import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Date;
import java.io.Serializable;
 
import org.apache.log4j.Logger;
import jomm.utils.StringsUtils;
 
import javax.servlet.http.HttpServletRequest;
 
/**
* @author Jorge Machado
* @date 2/Mar/2008
63,6 → 61,9
 
private CourseUnitView courseUnitView;
 
private int popupwidth;
private int popupheight;
 
public AnnouncementView()
{
courseUnitView = new CourseUnitView();
104,6 → 105,8
this.internal = announcement.isInternal();
this.updateDate = announcement.getUpdateDate();
this.saveDate = announcement.getSaveDate();
this.popupwidth = announcement.getPopupwidthpx();
this.popupheight = announcement.getPopupheightpx();
if(announcement instanceof CourseUnitAnnouncementImpl)
{
courseUnitView = new CourseUnitView(((CourseUnitAnnouncement)announcement).getCourseUnit());
130,6 → 133,8
announcement.setStyle(style);
announcement.setInternalUrlInclude(internalUrlInclude);
announcement.setInternal(internal);
announcement.setPopupheightpx(popupheight);
announcement.setPopupwidthpx(popupwidth);
if(announcement instanceof CourseUnitAnnouncement && courseUnitView != null && courseUnitView.getId() > 0)
{
((CourseUnitAnnouncement)announcement).setCourseUnit(DaoFactory.getCourseUnitDaoImpl().load(courseUnitView.getId()));
137,6 → 142,22
}
}
 
public int getPopupheight() {
return popupheight;
}
 
public void setPopupheight(int popupheight) {
this.popupheight = popupheight;
}
 
public int getPopupwidth() {
return popupwidth;
}
 
public void setPopupwidth(int popupwidth) {
this.popupwidth = popupwidth;
}
 
public boolean isCourseUnitInternal()
{
return courseUnitInternal;
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java
55,6 → 55,8
return createCriteria().add(eq("importYear", importYear)).add(eq("semestre", semestre)).list();
}
 
 
public List<Long> loadIds(String importYear, String semestre)
{
Query q = createQuery("select c.id from c in class " + CourseUnit.class.getName() + " where c.importYear = ? and c.semestre = ?");
206,6 → 208,17
.add(eq("importYear", year))
.uniqueResult();
}
 
public List<CourseUnit> loadBySigesCodeUnique(String sigesCode, String courseCode, String year)
{
return createCriteria()
.add(eq("code", sigesCode))
.add(eq("courseCode", courseCode))
.add(eq("importYear", year))
.addOrder(Order.desc("id"))
.list();
}
 
public List<CourseUnit> loadBySigesCodes(String sigesCode, String courseCode)
{
return (List<CourseUnit>) createCriteria()
/impl/src/java/pt/estgp/estgweb/filters/filters/ResourceAccessControlVersion.java
New file
0,0 → 1,36
package pt.estgp.estgweb.filters.filters;
 
import javassist.NotFoundException;
import pt.estgp.estgweb.domain.RepositoryFileVersion;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.LoadControlFilter;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.utl.ist.berserk.ServiceRequest;
import pt.utl.ist.berserk.ServiceResponse;
import pt.utl.ist.berserk.logic.filterManager.FilterParameters;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException;
 
/**
* @author Jorge Machado
* @date 4/Jun/2008
* @see pt.estgp.estgweb.filters.filters
*/
public class ResourceAccessControlVersion extends LoadControlFilter
{
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception
{
String idStr = (String) request.getServiceParameters().getParameter((String) filterParameters.parametersArray()[0]);
long id;
try
{
id = Long.parseLong(idStr);
}
catch(NumberFormatException e)
{
throw new NotFoundException(e.toString(),e);
}
RepositoryFileVersion repositoryFile = DaoFactory.getRepositoryFileVersionDaoImpl().load(id);
ResourceAccessControlEnum accessControl = ResourceAccessControlEnum.parse(repositoryFile.getRepositoryFile().getAccessControl());
accessControl.getFilter().execute(request,response,filterParameters);
}
}
/impl/src/java/pt/estgp/estgweb/web/RepositoryStreamVersion.java
New file
0,0 → 1,76
package pt.estgp.estgweb.web;
 
import jomm.utils.StreamsUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.services.data.IRepositoryFile;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
 
/**
* @author Fabio
* @date 4/Abr/2008
* @time 11:03:00
* @see pt.estgp.estgweb.web
*/
public class RepositoryStreamVersion extends HttpServlet
{
 
private static final Logger logger = Logger.getLogger(RepositoryStreamVersion.class);
 
 
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
 
String objectRequired = request.getPathInfo();
objectRequired = objectRequired.substring(1);
 
long id = Long.parseLong(objectRequired.trim());
 
IServiceManager sm = null;
try
{
sm = ServiceManager.getInstance();
}
catch (Throwable e)
{
logger.error(e,e);
response.sendError(500);
return;
}
 
String[] names = new String[]{"identifier"};
Object[] args = new Object[]{""+ id};
try
{
IRepositoryFile iRepositoryFile = (IRepositoryFile) sm.execute(RequestUtils.getRequester(request, response), "LoadRepositoryFileVersion", args, names);
if(iRepositoryFile == null)
{
response.sendError(404);
return;
}
response.setContentLength(iRepositoryFile.getSize());
response.setContentType(iRepositoryFile.getContentType());
response.setHeader("Content-disposition","inline; filename=" + iRepositoryFile.getName());
StreamsUtils.inputStream2OutputStream(iRepositoryFile.getInput(),response.getOutputStream());
}
catch(FilterChainFailedException fail)
{
response.sendError(401);
}
catch(Throwable e)
{
logger.error(e,e);
response.sendError(500);
}
}
 
}
/impl/src/doc/estgweb.eap
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/impl/src/updates/db/update13popups.sql
New file
0,0 → 1,2
ALTER TABLE `announcement` ADD COLUMN `popupwidthpx` INTEGER UNSIGNED NOT NULL DEFAULT 100 AFTER `courseUnit`,
ADD COLUMN `popupheightpx` INTEGER UNSIGNED NOT NULL DEFAULT 100 AFTER `popupwidthpx`;
/impl/src/hbm/pt/estgp/estgweb/domain/Announcement.hbm.xml
29,6 → 29,8
<property name="status" type="boolean" />
<property name="internal" type="boolean" />
<property name="counter" type="integer" />
<property name="popupwidthpx" type="integer" />
<property name="popupheightpx" type="integer" />
<many-to-one name="bigImage" column="bigImage" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all" />
<many-to-one name="smallImage" column="smallImage" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all"/>
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" lazy="false" outer-join="true"/>
/impl/src/web/admin/courseunits/courseunit.jsp
158,7 → 158,7
<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();">
onclick="if(this.form.studentCode.value=='0' || this.form.studentCode.value==''){alert('Por favor coloque o numero de aluno antes de adicionar');}else{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="studentsOrderedByNumber" type="pt.estgp.estgweb.domain.views.UserView">
/impl/src/web/admin/data.jsp
New file
0,0 → 1,70
<%@ page import="pt.estgp.estgweb.domain.RepositoryFileVersion" %>
<%@ page import="java.util.Collections" %>
<%@ page import="java.util.Comparator" %>
<%@ page import="pt.estgp.estgweb.services.data.RepositoryService" %>
<%@ page import="jomm.dao.utils.HibernateUtils" %>
<%@page pageEncoding="UTF-8" contentType="text/html"%>
<html>
<body>
<h1>Serviço de Histórico Escondido do Baco</h1>
<form action="data.jsp">
 
Colque aqui o identificador do Ficheiro: <input name="id"><br/>
<input type="submit">
</form>
 
<table border="1" style="border:1px solid black">
<tr>
<th>Nome do Ficheiro</th>
<th>Content Type</th>
<th>Descrição</th>
<th>Tamanho Kb</th>
<th>Data</th>
</tr>
 
<%
String id = request.getParameter("id");
if(id != null)
{
pt.utl.ist.berserk.logic.serviceManager.IServiceManager sm = pt.utl.ist.berserk.logic.serviceManager.ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{id};
//pt.estgp.estgweb.domain.RepositoryFileImpl view
// = (pt.estgp.estgweb.domain.RepositoryFileImpl)
// sm.execute(pt.estgp.estgweb.web.utils.RequestUtils.getRequester(request, response), "LoadRepositoryFileView", args, names);
jomm.dao.utils.HibernateUtils.getCurrentSession().beginTransaction();
pt.estgp.estgweb.domain.RepositoryFileImpl view = new pt.estgp.estgweb.services.data.RepositoryService().loadView(id);
if(view != null)
{
java.util.List<pt.estgp.estgweb.domain.RepositoryFileVersion> lista = new java.util.ArrayList<pt.estgp.estgweb.domain.RepositoryFileVersion>(view.getRepositoryFileVersions());
java.util.Collections.sort(lista,new java.util.Comparator<pt.estgp.estgweb.domain.RepositoryFileVersion>()
{
public int compare(RepositoryFileVersion o1, RepositoryFileVersion o2) {
return (int) (o1.getSaveDate().getTime() - o2.getSaveDate().getTime());
}
});
for(pt.estgp.estgweb.domain.RepositoryFileVersion version: lista)
{
 
%>
<tr>
<td><a href="<%=request.getContextPath()%>/repositoryStreamVersion/<%=version.getId()%>"><%=version.getName()%></a></td>
<td><%=version.getContentType()%></td>
<td><%=version.getDescription()%></td>
<td><%=(version.getSize()/1024)%></td>
<td><%=version.getSaveDate()%></td>
 
</tr>
<%
 
}
}
jomm.dao.utils.HibernateUtils.getCurrentSession().getTransaction().commit();
}
%>
</table>
</body>
 
 
 
</html>
/impl/src/web/admin/announcements/submitAnnouncement.jsp
92,6 → 92,15
</td>
</tr>
 
<tr>
<th>Largura Popup PX</th>
<td><html:text property="announcementView.popupwidth"/></td>
</tr>
<tr>
<th>Altura Popup PX</th>
<td><html:text property="announcementView.popupheight"/></td>
</tr>
 
<logic:present name="UserSession" property="user">
<baco:isRealOwner name="AnnouncementsForm" property="announcementView">
<logic:notEmpty name="UserSession" property="user.ownerRoles">
/impl/src/web/layout/navigationLeftAdmin.jsp
22,11 → 22,17
<bean:message key="authenticate"/>
</html:link>
</li>
<li>
<!--<li>
<a href="<%=request.getContextPath()%>/layout/webmailRedirect.jsp">
Webmail
</a>
</li>-->
<li>
<a href="http://mail.google.com/a/estgp.pt" target="_blank">
Webmail
</a>
</li>
 
</baco:isNotAuthenticated>
 
 
/impl/src/web/public/index.jsp
17,7 → 17,28
String[] names = new String[]{};
Object[] args = new Object[]{Globals.ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS, subTarget};
List<AnnouncementView> announcementViews = (List<AnnouncementView>) sm.execute(RequestUtils.getRequester(request, response), "LoadTypeMaxAnnouncements", args, names); request.setAttribute("Announcements", announcementViews);
 
 
 
names = new String[]{};
args = new Object[]{Globals.ANNOUNCEMENT_TYPE_POPUP, subTarget};
List<AnnouncementView> popupViews = (List<AnnouncementView>) sm.execute(RequestUtils.getRequester(request, response), "LoadTypeMaxAnnouncements", args, names);
 
request.setAttribute("Popups", popupViews);
 
for(AnnouncementView popup: popupViews)
{
%>
<script type="text/javascript">
 
window.open('<%=popup.getUrl()%>','<%=popup.getTitle()%>',"status=0,toolbar=0,menubar=0,scrollbars=0,location=0,resizable=0,width=<%=popup.getPopupwidth()%>,height=<%=popup.getPopupheight()%>");
 
</script>
<%
}
%>
 
 
<jomm:messages/>
<html:errors/>
 
/impl/src/web/user/courseunits/courseunit.jsp
143,6 → 143,12
</logic:equal>
</logic:present>
 
<logic:present name="CourseUnitView" property="programStreamId">
<baco:isAdmin>
<a href="<%=request.getContextPath()%>/admin/data.jsp?id=${CourseUnitView.programStreamId}"">Ver todas as versoes do programa</a>
</baco:isAdmin>
</logic:present>
 
</p>
</baco:isAuthenticated>
 
/impl/src/web/user/home.jsp
1,3 → 1,9
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="pt.estgp.estgweb.domain.views.AnnouncementView" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
8,6 → 14,34
<jomm:messages/>
<html:errors/>
 
<%
 
IServiceManager sm = ServiceManager.getInstance();
String subTarget = null;
String[] names = new String[]{};
Object[] args = new Object[]{Globals.ANNOUNCEMENT_TYPE_POPUP, subTarget};
List<AnnouncementView> popupViews = (List<AnnouncementView>) sm.execute(RequestUtils.getRequester(request, response), "LoadTypeMaxAnnouncements", args, names);
 
request.setAttribute("Popups", popupViews);
 
for(AnnouncementView popup: popupViews)
{
%>
<script type="text/javascript">
 
window.open('<%=popup.getUrl()%>','<%=popup.getTitle()%>',"status=0,toolbar=0,menubar=0,scrollbars=0,location=0,resizable=0,width=<%=popup.getPopupwidth()%>,height=<%=popup.getPopupheight()%>");
 
</script>
<%
}
%>
 
 
 
 
 
 
 
<baco:hasRole role="student">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
71,4 → 105,4
</tr>
</table>
</baco:hasNotRole>
</baco:hasNotRole>
</baco:hasNotRole>
/impl/src/web/user/home/student.jsp
1,3 → 1,9
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="pt.estgp.estgweb.domain.views.AnnouncementView" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page import="org.hibernate.SQLQuery" %>
<%@ page import="java.math.BigInteger" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
9,10 → 15,32
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
 
 
<%
IServiceManager sm = ServiceManager.getInstance();
String subTarget = null;
String[] names = new String[]{};
Object[] args = new Object[]{Globals.ANNOUNCEMENT_TYPE_POPUP, subTarget};
List<AnnouncementView> popupViews = (List<AnnouncementView>) sm.execute(RequestUtils.getRequester(request, response), "LoadTypeMaxAnnouncements", args, names);
 
request.setAttribute("Popups", popupViews);
 
for(AnnouncementView popup: popupViews)
{
%>
<script type="text/javascript">
 
window.open('<%=popup.getUrl()%>','<%=popup.getTitle()%>',"status=0,toolbar=0,menubar=0,scrollbars=0,location=0,resizable=0,width=<%=popup.getPopupwidth()%>,height=<%=popup.getPopupheight()%>");
 
</script>
<%
}
%>
 
 
 
 
<div class="portal">
<logic:notMatch value="StudentImpl" name="UserSession" property="user.class.name">
<ul>
299,4 → 327,4
</tr>
</tbody>
</table>
</div>
</div>
/common/saxon/saxon9-dom.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream