/impl/importRoutines.xml |
---|
33,8 → 33,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/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 |
/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/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/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/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/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/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> |
/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 |