Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 331 → Rev 332

/impl/src/java/pt/estgp/estgweb/services/courses/CoursesService.java
107,7 → 107,7
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);
String identifier = repositoryService.storeRepositoryFile(stream, contentType, extension, size, name, "course.studies.plan " + c.getName(), ResourceAccessControlEnum.publicDomain,userSession);
c.setStudiesPlan(identifier);
}
else
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java
48,7 → 48,7
}
catch (MalformedURLException e)
{
logMessages.addMessage(new DefaultLogMessage("import.error",e.toString(),"erro na configuracao do WEB Service", LogMessageTypeEnum.INFO));
logMessages.addMessage(new DefaultLogMessage("import.error", e.toString(), "erro na configuracao do WEB Service", LogMessageTypeEnum.INFO));
logger.fatal(e, e);
return logMessages;
}
65,7 → 65,15
DaoFactory.getTeacherDaoImpl().save(t);
newUser = true;
}
persist(d, t);
try
{
persist(d, t);
}
catch (Exception e)
{
logger.error(e, e);
throw e;
}
if (newUser)
CommonServicesManager.getInstance().adviseNew(t);
else
95,67 → 103,76
* @param d docente
* @param t teacher
*/
private void persist(Docente d, Teacher t)
private void persist(Docente d, Teacher t) throws Exception
{
t.setName(d.getNomeFuncionarioInt());
t.setEmail(d.getEmail());
if(d.getEmail() != null && d.getEmail().endsWith(Globals.EMAIL_LOCAL_SUFFIX))
try
{
int atIndex = d.getEmail().indexOf("@");
if(atIndex > 0)
t.setUsername(d.getEmail().substring(0,atIndex));
}
t.setSigesCode(d.getCodigoFuncionario().intValue());
t.setAddress(d.getMorada());
t.setZip("" + d.getCodigoPostal().intValue());
t.setBi(d.getNumeroBi());
t.setEmployerName(d.getNomeFuncionario());
t.setAcademicName(d.getNomeAcademico());
t.setBirthDate(d.getDataNascimento().toGregorianCalendar().getTime());
//Desta forma as relacoes antigas sao ignoradas cria-se uma lista nova e atribui-se ao Teacher, o Hibernate faz resto e apaga as chaves estrangeiras antigas
if (d.getDisciplinas() == null || d.getDisciplinas().getDisciplina() == null || d.getDisciplinas().getDisciplina().size() == 0)
logger.warn("ATENTION TEACHER WITH ZERO UNITS: codigoFuncionario " + d.getCodigoFuncionario());
else
{
Set<CourseUnit> units = new HashSet<CourseUnit>();
for (Disciplina disciplina : d.getDisciplinas().getDisciplina())
t.setName(d.getNomeFuncionarioInt());
t.setEmail(d.getEmail());
if (d.getEmail() != null && d.getEmail().endsWith(Globals.EMAIL_LOCAL_SUFFIX))
{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(),"" + disciplina.getCodigoCurso(),"" + disciplina.getCdDuracao(),"" + disciplina.getCdLectivo());
int atIndex = d.getEmail().indexOf("@");
if (atIndex > 0)
t.setUsername(d.getEmail().substring(0, atIndex));
}
t.setSigesCode(d.getCodigoFuncionario().intValue());
t.setAddress(d.getMorada());
t.setZip("" + d.getCodigoPostal().intValue());
t.setBi(d.getNumeroBi());
t.setEmployerName(d.getNomeFuncionario());
t.setAcademicName(d.getNomeAcademico());
t.setBirthDate(d.getDataNascimento().toGregorianCalendar().getTime());
//Desta forma as relacoes antigas sao ignoradas cria-se uma lista nova e atribui-se ao Teacher, o Hibernate faz resto e apaga as chaves estrangeiras antigas
if (d.getDisciplinas() == null || d.getDisciplinas().getDisciplina() == null || d.getDisciplinas().getDisciplina().size() == 0)
logger.warn("ATENTION TEACHER WITH ZERO UNITS: codigoFuncionario " + d.getCodigoFuncionario());
else
{
Set<CourseUnit> units = new HashSet<CourseUnit>();
for (Disciplina disciplina : d.getDisciplinas().getDisciplina())
{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo());
 
if(courseUnit == null)
if (courseUnit == null)
{
logger.warn("Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + disciplina.getCodigoCurso() + " year:" + disciplina.getCdLectivo());
}
else
units.add(courseUnit);
}
Iterator<CourseUnit> iter = units.iterator();
while (iter.hasNext())
{
logger.warn("Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + disciplina.getCodigoCurso() + " year:" + disciplina.getCdLectivo());
CourseUnit courseUnit = iter.next();
if (((TeacherImpl) t).isLocalRemovedUnit(courseUnit))
iter.remove();
}
else
units.add(courseUnit);
}
Iterator<CourseUnit> iter = units.iterator();
while (iter.hasNext())
{
CourseUnit courseUnit = iter.next();
if(((TeacherImpl)t).isLocalRemovedUnit(courseUnit))
iter.remove();
}
if(t.getTeachedUnits() != null)
{
for(CourseUnit c: units)
if (t.getTeachedUnits() != null)
{
boolean isIn = false;
for(CourseUnit tc : t.getTeachedUnits())
for (CourseUnit c : units)
{
if(tc.equals(c))
boolean isIn = false;
for (CourseUnit tc : t.getTeachedUnits())
{
isIn = true;
break;
if (tc.equals(c))
{
isIn = true;
break;
}
}
if (!isIn)
t.getTeachedUnits().add(c);
}
if(!isIn)
t.getTeachedUnits().add(c);
}
else
t.setTeachedUnits(units);
}
else
t.setTeachedUnits(units);
}
catch (Exception e)
{
logger.error(e, e);
throw e;
}
 
}
 
/**
/impl/src/java/pt/estgp/estgweb/services/data/RepositoryService.java
1,10 → 1,7
package pt.estgp.estgweb.services.data;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.RepositoryFileImpl;
import pt.estgp.estgweb.domain.RepositoryFileVersionImpl;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.impl.DefaultRepositoryFile;
16,6 → 13,10
import java.util.List;
import java.util.ArrayList;
 
import org.dom4j.DocumentFactory;
import org.dom4j.Element;
import org.dom4j.Document;
 
/**
* @author Jorge Machado
* @date 4/Jun/2008
26,12 → 27,15
 
/**
*
* @param stream
* @param contentType
* @param size
* @param name
* @param description
* @param stream .
* @param contentType .
* @param size .
* @param name .
* @param description .
* @return the identifier to retrieve the document
* @param extension .
* @param accessControl .
* @param userSession .
*/
public String storeRepositoryFile(InputStream stream, String contentType, String extension,int size, String name, String description, ResourceAccessControlEnum accessControl, UserSession userSession)
{
49,6 → 53,8
repositoryFileVersion.setContentType(contentType);
repositoryFileVersion.setExtension(extension);
 
Document dom = createXMLdescription(repositoryFileVersion);
RepositoryManager.storeDescription(dom,repositoryFileVersion.getId());
RepositoryManager.store(stream,repositoryFileVersion.getId());
return new StringBuilder().append(repositoryFile.getId()).toString();
}
57,30 → 63,29
 
/**
*
* @param stream
* @param contentType
* @param size
* @param name
* @param description
* @return the identifier to retrieve the document
* @param stream .
* @param contentType .
* @param size .
* @param name .
* @param description .
* @param identifier .
* @param extension .
* @param accessControl .
*/
public void updateRepositoryFile(String identifier, InputStream stream, String contentType, String extension, int size, String name, String description, ResourceAccessControlEnum accessControl)
{
 
RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().get(Long.parseLong(identifier));
 
repositoryFile.setSaveDate(new Date());
repositoryFile.setAccessControl(accessControl.getKey());
 
 
 
RepositoryFileVersionImpl repositoryFileVersion = createVersion(repositoryFile);
repositoryFileVersion.setName(name);
repositoryFileVersion.setSize(size);
repositoryFileVersion.setDescription(description);
repositoryFileVersion.setContentType(contentType);
repositoryFileVersion.setExtension(extension);
 
Document dom = createXMLdescription(repositoryFileVersion);
RepositoryManager.storeDescription(dom,repositoryFileVersion.getId());
RepositoryManager.store(stream,repositoryFileVersion.getId());
}
 
89,7 → 94,7
 
/**
*
* @param identifier
* @param identifier .
* @return a view of a document
*/
public RepositoryFileImpl loadView(String identifier)
104,8 → 109,9
 
/**
*
* @param identifier
* @param identifier .
* @return a view with an inputStream for document
* @param userSession .
*/
public IRepositoryFile load(String identifier,UserSession userSession)
{
120,8 → 126,9
 
/**
*
* @param identifier
* @param identifier .
* @return a view with an inputStream for document
* @param userSession .
*/
public List<IRepositoryFile> loadVersions(String identifier,UserSession userSession)
{
141,8 → 148,8
 
/**
* Create a new File Version
* @param repositoryFile
* @return
* @param repositoryFile .
* @return .
*/
private RepositoryFileVersionImpl createVersion(RepositoryFileImpl repositoryFile)
{
155,4 → 162,71
DaoFactory.getRepositoryFileVersionDaoImpl().save(repositoryFileVersion);
return repositoryFileVersion;
}
 
private Document createXMLdescription(RepositoryFileVersionImpl repositoryFile)
{
org.dom4j.Document dom = DocumentFactory.getInstance().createDocument();
Element rootElement = DocumentFactory.getInstance().createElement("repositoryFileVersion");
dom.setRootElement(rootElement);
rootElement.addAttribute("id",""+repositoryFile.getId());
 
Element saveDate = DocumentFactory.getInstance().createElement("saveDate",DatesUtils.getStringFromDateForFilename(repositoryFile.getSaveDate()));
Element name = DocumentFactory.getInstance().createElement("name",""+repositoryFile.getName());
Element contentType = DocumentFactory.getInstance().createElement("contentType",repositoryFile.getContentType());
Element extension = DocumentFactory.getInstance().createElement("extension",""+repositoryFile.getExtension());
Element size = DocumentFactory.getInstance().createElement("sizeKb",""+repositoryFile.getSizeKb());
Element description = DocumentFactory.getInstance().createElement("description",repositoryFile.getDescription());
rootElement.add(saveDate);
rootElement.add(name);
rootElement.add(contentType);
rootElement.add(extension);
rootElement.add(size);
rootElement.add(description);
 
//Repository File Generics
Element repositoryFileElem = DocumentFactory.getInstance().createElement("repositoryFile");
rootElement.add(repositoryFileElem);
 
repositoryFileElem.addAttribute("id","" + repositoryFile.getRepositoryFile().getId());
Element rSaveDate = DocumentFactory.getInstance().createElement("saveDate",DatesUtils.getStringFromDateForFilename(repositoryFile.getRepositoryFile().getSaveDate()));
Element rUpdateDate = DocumentFactory.getInstance().createElement("updateDate",DatesUtils.getStringFromDateForFilename(repositoryFile.getRepositoryFile().getUpdateDate()));
Element accessControl = DocumentFactory.getInstance().createElement("accessControl",repositoryFile.getRepositoryFile().getAccessControl());
Element deleted = DocumentFactory.getInstance().createElement("deleted","" + repositoryFile.getRepositoryFile().isDeleted());
repositoryFileElem.add(rSaveDate);
repositoryFileElem.add(rUpdateDate);
repositoryFileElem.add(accessControl);
repositoryFileElem.add(deleted);
 
Element owner = DocumentFactory.getInstance().createElement("owner");
repositoryFileElem.add(owner);
owner.addAttribute("id","" + repositoryFile.getRepositoryFile().getOwner().getId());
Element oName = DocumentFactory.getInstance().createElement("name",repositoryFile.getRepositoryFile().getOwner().getName());
Element oRoles = DocumentFactory.getInstance().createElement("roles",repositoryFile.getRepositoryFile().getOwner().getRoles());
Element oClass = DocumentFactory.getInstance().createElement("class",repositoryFile.getRepositoryFile().getOwner().getClass().getSimpleName());
owner.add(oName);
owner.add(oRoles);
owner.add(oClass);
if(repositoryFile.getRepositoryFile().getOwner() instanceof User)
{
Element oUsername = DocumentFactory.getInstance().createElement("username",((User)repositoryFile.getRepositoryFile().getOwner()).getUsername());
Element oEmail = DocumentFactory.getInstance().createElement("email",((User)repositoryFile.getRepositoryFile().getOwner()).getEmail());
Element outEmail = DocumentFactory.getInstance().createElement("outEmail",((User)repositoryFile.getRepositoryFile().getOwner()).getOutEmail());
Element biEmail = DocumentFactory.getInstance().createElement("bi",((User)repositoryFile.getRepositoryFile().getOwner()).getBi());
owner.add(oUsername);
owner.add(oEmail);
owner.add(outEmail);
owner.add(biEmail);
if(repositoryFile.getRepositoryFile().getOwner() instanceof Teacher)
{
Element code = DocumentFactory.getInstance().createElement("teacherCode",""+((Teacher)repositoryFile.getRepositoryFile().getOwner()).getSigesCode());
owner.add(code);
}
if(repositoryFile.getRepositoryFile().getOwner() instanceof Student)
{
Element code = DocumentFactory.getInstance().createElement("studentCode",""+((Student)repositoryFile.getRepositoryFile().getOwner()).getSigesCode());
owner.add(code);
}
}
return dom;
}
}
/impl/src/java/pt/estgp/estgweb/services/data/ResourceManager.java
1,12 → 1,12
package pt.estgp.estgweb.services.data;
 
import jomm.utils.StreamsUtils;
import org.dom4j.Document;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.utils.Dom4jUtil;
 
import java.io.*;
 
import jomm.utils.StreamsUtils;
import org.apache.log4j.Logger;
 
/**
* @author Jorge Machado
* @date 28/Mai/2008
15,14 → 15,25
public class ResourceManager
{
 
 
 
 
public static final int DOCS_IN_PATH = 1000;
public static final int DOCS_FIRST_DIR_LEN = 20;
public static final int DOCS_IN_PATH_LEVEL1 = DOCS_IN_PATH * DOCS_IN_PATH;
public static final int DOCS_IN_PATH_LEVEL2 = DOCS_IN_PATH * DOCS_IN_PATH * DOCS_IN_PATH;
public static final int DOCS_FIRST_DIR_LEN = 10;
 
public static void saveResource(InputStream stream, String resourcePath, long id) throws IOException
{
StreamsUtils.inputStream2File(stream, new File(Globals.DATA_DIR + resourcePath + getDocumentPathById(id)));
}
 
public static void saveResource(Document dom, String resourcePath, long id) throws IOException
{
new File(Globals.DATA_DIR + resourcePath + getDocumentPathById(id)+".xml").getParentFile().mkdirs();
Dom4jUtil.write(dom,Globals.DATA_DIR + resourcePath + getDocumentPathById(id)+".xml");
}
 
public static InputStream getResource(String resourcePath, long id) throws FileNotFoundException
{
return new FileInputStream(Globals.DATA_DIR + resourcePath + getDocumentPathById(id));
49,14 → 60,33
 
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;
char[] dir0 = new char[DOCS_FIRST_DIR_LEN];
setAllChars('0', dir0);
char[] dir1 = new char[DOCS_FIRST_DIR_LEN];
setAllChars('0', dir1);
char[] dir2 = new char[DOCS_FIRST_DIR_LEN];
setAllChars('0', dir2);
 
long dirNumber0 = id / DOCS_IN_PATH_LEVEL2;
long dirNumber1 = id / DOCS_IN_PATH_LEVEL1;
long dirNumber2 = id / DOCS_IN_PATH;
 
 
dirNumber0 = dirNumber0 * DOCS_IN_PATH_LEVEL2;
dirNumber1 = dirNumber1 * DOCS_IN_PATH_LEVEL1;
dirNumber2 = dirNumber2 * DOCS_IN_PATH;
 
 
String dirNumberStr0 = "" + dirNumber0;
String dirNumberStr1 = "" + dirNumber1;
String dirNumberStr2 = "" + dirNumber2;
copyCharsToArray(dir0, dirNumberStr0);
copyCharsToArray(dir1, dirNumberStr1);
copyCharsToArray(dir2, dirNumberStr2);
dirNumberStr0 = new String(dir0);
dirNumberStr1 = new String(dir1);
dirNumberStr2 = new String(dir2);
return "/" + dirNumberStr0 + "/" + dirNumberStr1 + "/" + dirNumberStr2 + "/" + id;
}
 
}
/impl/src/java/pt/estgp/estgweb/services/data/RepositoryManager.java
1,6 → 1,7
package pt.estgp.estgweb.services.data;
 
import org.apache.log4j.Logger;
import org.dom4j.Document;
import pt.estgp.estgweb.domain.Image;
 
import java.io.ByteArrayInputStream;
32,6 → 33,20
return false;
}
 
public static boolean storeDescription(Document dom, long identifier)
{
try
{
ResourceManager.saveResource(dom, RESOURCE_PATH, identifier);
return true;
}
catch (IOException e)
{
logger.error(e,e);
}
return false;
}
 
public static InputStream load(long identifier)
{
try
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/TeacherDaoImpl.java
3,7 → 3,9
import pt.estgp.estgweb.domain.Teacher;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.CourseUnitImpl;
import pt.estgp.estgweb.domain.TeacherImpl;
import static org.hibernate.criterion.Restrictions.*;
import org.hibernate.exception.GenericJDBCException;
 
import java.util.List;
 
17,6 → 19,10
{
private TeacherDaoImpl(){}
 
// protected Class getReferenceClass() {
// return TeacherImpl.class;
// }
 
public static TeacherDaoImpl getInstance()
{
if (myInstance == null)
26,7 → 32,14
 
public Teacher loadBySigesCode(int sigesCode)
{
return (Teacher) createCriteria().add(eq("sigesCode",sigesCode)).uniqueResult();
try
{
return (Teacher) createCriteria().add(eq("sigesCode",sigesCode)).uniqueResult();
}
catch(GenericJDBCException e)
{
throw e;
}
}
 
public Teacher loadByBi(String bi)
34,7 → 47,7
return (Teacher) createCriteria().add(eq("bi",bi)).uniqueResult();
}
 
 
 
 
}