31,10 → 31,9 |
*/ |
/** |
* @author Jorge Machado |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
* <p/> |
* <p/> |
* Created at 17/Out/2003 , 23:45:24 |
*/ |
public class CreateCourseUnitWorksBackupService implements IService |
{ |
45,16 → 44,16 |
|
public String createSystemActualYearBackup(String importYear, UserSession userSession) throws ServiceException |
{ |
if(importYear == null || importYear.trim().length() == 0) |
if (importYear == null || importYear.trim().length() == 0) |
importYear = DatesUtils.getImportYear(); |
String importYearIntranet = DatesUtils.getImportYearIntranet(); |
String tmpName = BytesUtils.generateHexKey(); |
String tmpName = BytesUtils.generateHexKey(); |
String tmpDir = Globals.TMP_DIR + "/" + tmpName; |
new File(tmpDir).mkdirs(); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(importYear); |
try |
{ |
for(Course c: courses) |
for (Course c : courses) |
{ |
String couseDirPath = tmpDir + "/" + StringsUtils.normalizeResourceName(c.getName()) + '.' + c.getCode(); |
try |
62,11 → 61,11 |
String courseImportYearPath = couseDirPath + "/" + importYearIntranet; |
File courseImportYearDir = new File(courseImportYearPath); |
courseImportYearDir.mkdirs(); |
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadByCourse(c.getId(),importYear); |
for(CourseUnit courseUnit: courseUnits) |
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadByCourse(c.getId(), importYear); |
for (CourseUnit courseUnit : courseUnits) |
{ |
String semestre; |
if(courseUnit.getSemestre().equals("S1")) |
if (courseUnit.getSemestre().equals("S1")) |
{ |
semestre = Globals.INTRANET_SEMESTRE_S1; |
} |
77,15 → 76,15 |
String normalizedName = StringsUtils.normalizeResourceName(courseUnit.getName()); |
String unitPath = courseImportYearPath + "/" + semestre + "/" + normalizedName; |
|
for(CourseUnitAssignement assignement : courseUnit.getAssignements()) |
for (CourseUnitAssignement assignement : courseUnit.getAssignements()) |
{ |
String assignementDir = unitPath + "/assignement" + assignement.getId(); |
createAssignementCopy(assignement,assignementDir,userSession); |
if(!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0) |
createAssignementCopy(assignement, assignementDir, userSession); |
if (!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0) |
{ |
for(CourseUnitDeliverable deliverable: assignement.getDeliverables()) |
for (CourseUnitDeliverable deliverable : assignement.getDeliverables()) |
{ |
copyDeliverableVersions(deliverable,assignementDir,userSession); |
copyDeliverableVersions(deliverable, assignementDir, userSession); |
} |
} |
} |
93,48 → 92,49 |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
} |
} |
FilesUtils.zipFolder(tmpDir,tmpDir + ".zip"); |
FilesUtils.zipFolder(tmpDir, tmpDir + ".zip"); |
FilesUtils.delete(tmpDir); |
return tmpName + ".zip"; |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
} |
return null; |
} |
|
/** |
* In case of student create a backup with student deliverables in actual year subscribed units, in case of teacher create a backup of all deliverables in actual year teached units |
* In case of student create a backup with student deliverables in actual year subscribed units, in case of teacher create a backup of all deliverables in actual year teached units |
* |
* @param userSession |
* @return |
* @throws ServiceException |
*/ |
public String createActualYearBackup(UserSession userSession) throws ServiceException |
{ |
if(userSession.getUser() instanceof Teacher) |
if (userSession.getUser() instanceof Teacher) |
return createLoginTeacherActualYearBackup(userSession); |
else if(userSession.getUser() instanceof Student) |
else if (userSession.getUser() instanceof Student) |
return createLoginStudentActualYearBackup(userSession); |
return null; |
} |
|
|
/** |
* In case of student create a backup with student deliverables subscribed units, in case of teacher create a backup of all deliverables of teached units |
* |
* In case of student create a backup with student deliverables subscribed units, in case of teacher create a backup of all deliverables of teached units |
* @param userSession |
* @return |
* @throws ServiceException |
*/ |
public String createBackup(UserSession userSession) throws ServiceException |
{ |
if(userSession.getUser() instanceof Teacher) |
if (userSession.getUser() instanceof Teacher) |
return createLoginTeacherBackup(userSession); |
else if(userSession.getUser() instanceof Student) |
else if (userSession.getUser() instanceof Student) |
return createLoginStudentBackup(userSession); |
return null; |
} |
142,97 → 142,93 |
public String createLoginStudentBackup(UserSession userSession) throws ServiceException |
{ |
Student s = (Student) userSession.getUser(); |
return createStudentBackup(s,userSession); |
return createStudentBackup(s, userSession); |
} |
|
|
public String createLoginTeacherBackup(UserSession userSession) throws ServiceException |
{ |
Teacher t = (Teacher) userSession.getUser(); |
return createTeacherBackup(t,userSession); |
return createTeacherBackup(t, userSession); |
} |
|
|
public String createLoginStudentActualYearBackup(UserSession userSession) throws ServiceException |
{ |
Student s = (Student) userSession.getUser(); |
return createStudentActualYearBackup(s,userSession); |
return createStudentActualYearBackup(s, userSession); |
} |
|
|
public String createLoginTeacherActualYearBackup(UserSession userSession) throws ServiceException |
{ |
Teacher t = (Teacher) userSession.getUser(); |
return createTeacherActualYearBackup(t,userSession); |
return createTeacherActualYearBackup(t, userSession); |
} |
|
public String createStudentActualYearBackup(long studentId, UserSession userSession) throws ServiceException |
{ |
Student s = DaoFactory.getStudentDaoImpl().get(studentId); |
return createStudentActualYearBackup(s,userSession); |
return createStudentActualYearBackup(s, userSession); |
} |
|
public String createTeacherActualYearBackup(long teacherId, UserSession userSession) throws ServiceException |
{ |
Teacher t = DaoFactory.getTeacherDaoImpl().get(teacherId); |
return createTeacherActualYearBackup(t,userSession); |
return createTeacherActualYearBackup(t, userSession); |
} |
|
|
public String createStudentBackup(long studentId, UserSession userSession) throws ServiceException |
{ |
Student s = DaoFactory.getStudentDaoImpl().get(studentId); |
return createStudentBackup(s,userSession); |
return createStudentBackup(s, userSession); |
} |
|
public String createTeacherBackup(long teacherId, UserSession userSession) throws ServiceException |
{ |
Teacher t = DaoFactory.getTeacherDaoImpl().get(teacherId); |
return createTeacherBackup(t,userSession); |
return createTeacherBackup(t, userSession); |
} |
|
|
|
private String createStudentActualYearBackup(Student s, UserSession userSession) throws ServiceException |
{ |
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadSubscribedImportYearUnits(s.getId(),DatesUtils.getImportYear()); |
if(units == null || units.size() == 0) |
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadSubscribedImportYearUnits(s.getId(), DatesUtils.getImportYear()); |
if (units == null || units.size() == 0) |
return null; |
return createStudentBackup(units,s,userSession); |
return createStudentBackup(units, s, userSession); |
} |
|
private String createTeacherActualYearBackup(Teacher t, UserSession userSession) throws ServiceException |
{ |
List units = DaoFactory.getCourseUnitDaoImpl().loadTeachedImportYearUnits(t.getId(),DatesUtils.getImportYear()); |
if(units == null || units.size() == 0) |
List units = DaoFactory.getCourseUnitDaoImpl().loadTeachedImportYearUnits(t.getId(), DatesUtils.getImportYear()); |
if (units == null || units.size() == 0) |
return null; |
return createTeacherBackup(units,t,userSession); |
return createTeacherBackup(units, t, userSession); |
} |
|
|
|
private String createStudentBackup(Student s, UserSession userSession) throws ServiceException |
{ |
List<CourseUnit> units = new ArrayList<CourseUnit>(s.getSubscribedUnits()); |
if(units == null || units.size() == 0) |
if (units == null || units.size() == 0) |
return null; |
return createStudentBackup(units,s,userSession); |
return createStudentBackup(units, s, userSession); |
} |
|
private String createTeacherBackup(Teacher t, UserSession userSession) throws ServiceException |
{ |
List<CourseUnit> units = new ArrayList<CourseUnit>(t.getTeachedUnits()); |
if(units == null || units.size() == 0) |
if (units == null || units.size() == 0) |
return null; |
return createTeacherBackup(units,t,userSession); |
return createTeacherBackup(units, t, userSession); |
} |
|
|
|
|
private String createStudentBackup(List<CourseUnit> courseUnits, Student s, UserSession userSession) throws ServiceException |
{ |
String tmpName = BytesUtils.generateHexKey(); |
String tmpName = BytesUtils.generateHexKey(); |
String tmpDir = Globals.TMP_DIR + "/" + tmpName; |
new File(tmpDir).mkdirs(); |
|
240,12 → 236,12 |
{ |
try |
{ |
for(CourseUnit courseUnit: courseUnits) |
for (CourseUnit courseUnit : courseUnits) |
{ |
String courseDirPath = tmpDir + "/" + StringsUtils.normalizeResourceName(courseUnit.getCourse().getName()) + '.' + courseUnit.getCourse().getCode(); |
String courseImportYearPath = courseDirPath + "/" + courseUnit.getImportYear(); |
String semestre; |
if(courseUnit.getSemestre().equals("S1")) |
if (courseUnit.getSemestre().equals("S1")) |
{ |
semestre = Globals.INTRANET_SEMESTRE_S1; |
} |
256,36 → 252,36 |
String normalizedName = StringsUtils.normalizeResourceName(courseUnit.getName()); |
String unitPath = courseImportYearPath + "/" + semestre + "/" + normalizedName; |
|
for(CourseUnitAssignement assignement : courseUnit.getAssignements()) |
for (CourseUnitAssignement assignement : courseUnit.getAssignements()) |
{ |
String assignementDir = unitPath + "/assignement" + assignement.getId(); |
createAssignementCopy(assignement,assignementDir,userSession); |
if(!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0) |
createAssignementCopy(assignement, assignementDir, userSession); |
if (!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0) |
{ |
CourseUnitDeliverable deliverable = DaoFactory.getCourseUnitDeliverableDaoImpl().loadDeliverable(s.getId(),assignement.getId()); |
copyDeliverableVersions(deliverable,assignementDir,userSession); |
CourseUnitDeliverable deliverable = DaoFactory.getCourseUnitDeliverableDaoImpl().loadDeliverable(s.getId(), assignement.getId()); |
copyDeliverableVersions(deliverable, assignementDir, userSession); |
} |
} |
} |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
} |
FilesUtils.zipFolder(tmpDir,tmpDir + ".zip"); |
FilesUtils.zipFolder(tmpDir, tmpDir + ".zip"); |
FilesUtils.delete(tmpDir); |
return tmpName + ".zip"; |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
} |
return null; |
} |
|
private String createTeacherBackup(List<CourseUnit> courseUnits, Teacher t, UserSession userSession) throws ServiceException |
{ |
String tmpName = BytesUtils.generateHexKey(); |
String tmpName = BytesUtils.generateHexKey(); |
String tmpDir = Globals.TMP_DIR + "/" + tmpName; |
new File(tmpDir).mkdirs(); |
|
293,12 → 289,12 |
{ |
try |
{ |
for(CourseUnit courseUnit: courseUnits) |
for (CourseUnit courseUnit : courseUnits) |
{ |
String courseDirPath = tmpDir + "/" + StringsUtils.normalizeResourceName(courseUnit.getCourse().getName()) + '.' + courseUnit.getCourse().getCode(); |
String courseImportYearPath = courseDirPath + "/" + courseUnit.getImportYear(); |
String semestre; |
if(courseUnit.getSemestre().equals("S1")) |
if (courseUnit.getSemestre().equals("S1")) |
{ |
semestre = Globals.INTRANET_SEMESTRE_S1; |
} |
309,15 → 305,15 |
String normalizedName = StringsUtils.normalizeResourceName(courseUnit.getName()); |
String unitPath = courseImportYearPath + "/" + semestre + "/" + normalizedName; |
|
for(CourseUnitAssignement assignement : courseUnit.getAssignements()) |
for (CourseUnitAssignement assignement : courseUnit.getAssignements()) |
{ |
String assignementDir = unitPath + "/assignement" + assignement.getId(); |
createAssignementCopy(assignement,assignementDir,userSession); |
if(!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0) |
createAssignementCopy(assignement, assignementDir, userSession); |
if (!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0) |
{ |
for(CourseUnitDeliverable deliverable: assignement.getDeliverables()) |
for (CourseUnitDeliverable deliverable : assignement.getDeliverables()) |
{ |
copyDeliverableVersions(deliverable,assignementDir,userSession); |
copyDeliverableVersions(deliverable, assignementDir, userSession); |
} |
} |
} |
325,15 → 321,15 |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
} |
FilesUtils.zipFolder(tmpDir,tmpDir + ".zip"); |
FilesUtils.zipFolder(tmpDir, tmpDir + ".zip"); |
FilesUtils.delete(tmpDir); |
return tmpName + ".zip"; |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
} |
return null; |
} |
341,20 → 337,20 |
|
private void copyDeliverableVersions(CourseUnitDeliverable deliverable, String toDir, UserSession userSession) |
{ |
if(deliverable.getDeliverableRepositoryStream() != null && deliverable.getDeliverableRepositoryStream().length() > 0) |
if (deliverable.getDeliverableRepositoryStream() != null && deliverable.getDeliverableRepositoryStream().length() > 0) |
{ |
String deliverDir = toDir + "/deliverable" + deliverable.getId() + "-" + deliverable.getStudent().getId() + "numero" + deliverable.getStudent().getSigesCode(); |
new File(deliverDir).mkdirs(); |
List<IRepositoryFile> iRepositoryFiles = repositoryService.loadVersions(deliverable.getDeliverableRepositoryStream(),userSession); |
for(IRepositoryFile iRepositoryFile: iRepositoryFiles) |
List<IRepositoryFile> iRepositoryFiles = repositoryService.loadVersions(deliverable.getDeliverableRepositoryStream(), userSession); |
for (IRepositoryFile iRepositoryFile : iRepositoryFiles) |
{ |
try |
{ |
FilesUtils.copy(iRepositoryFile.getInput(),deliverDir + "/version" + getResourceFileName(iRepositoryFile.getName())); |
FilesUtils.copy(iRepositoryFile.getInput(), deliverDir + "/version" + getResourceFileName(iRepositoryFile.getName())); |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
} |
} |
} |
362,12 → 358,12 |
|
public String getResourceFileName(String resourceName) |
{ |
String extension = FilesUtils.getExtension( resourceName); |
if(extension != null) |
String extension = FilesUtils.getExtension(resourceName); |
if (extension != null) |
{ |
resourceName = resourceName.substring(0,resourceName.length() - extension.length()); |
resourceName = resourceName.substring(0, resourceName.length() - extension.length()); |
} |
if(extension == null) |
if (extension == null) |
extension = ".unknown"; |
return resourceName + extension; |
} |
379,17 → 375,15 |
FileWriter assignementDesc = new FileWriter(assignementDir + "/description.txt"); |
assignementDesc.write(fileContent); |
assignementDesc.close(); |
if(assignement.getRepositoryStream() != null && assignement.getRepositoryStream().length() > 0) |
if (assignement.getRepositoryStream() != null && assignement.getRepositoryStream().length() > 0) |
{ |
IRepositoryFile iRepositoryFile = repositoryService.load(assignement.getRepositoryStream(),userSession); |
FilesUtils.copy(iRepositoryFile.getInput(),assignementDir + "/" + getResourceFileName(iRepositoryFile.getName())); |
IRepositoryFile iRepositoryFile = repositoryService.load(assignement.getRepositoryStream(), userSession); |
FilesUtils.copy(iRepositoryFile.getInput(), assignementDir + "/" + getResourceFileName(iRepositoryFile.getName())); |
} |
} |
|
public String buildAssignementTemplate(CourseUnitAssignement assignement) |
{ |
String assignementDir = StringsUtils.normalizeResourceName(assignement.getTitle()) + assignement.getId(); |
new File(assignementDir).mkdirs(); |
String[] args = new String[] |
{ |
assignement.getCourseUnit().getName(), |
398,16 → 392,15 |
assignement.getDescription() |
}; |
String content = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_ASSIGNEMENT_PATH + "/Assignement.txt"); |
// Format the mail message |
// Format the mail message |
return MessageFormat.format(content, args); |
} |
|
|
|
public static void main(String[] args) throws ServiceException |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
new CreateCourseUnitWorksBackupService().createSystemActualYearBackup(null,null); |
new CreateCourseUnitWorksBackupService().createSystemActualYearBackup(null, null); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
|