/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 |