package pt.estgp.estgweb.services.courseunits;
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.services.data.IRepositoryFile;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.Globals;
import org.apache.log4j.Logger;
import jomm.utils.BytesUtils;
import jomm.utils.StringsUtils;
import jomm.utils.FilesUtils;
import jomm.utils.TemplateUtils;
import jomm.dao.impl.AbstractDao;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import java.text.MessageFormat;
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class CreateCourseUnitWorksBackupService
implements IService
{
private RepositoryService repositoryService =
new RepositoryService
();
public static 1.5.0/docs/api/java/lang/String.html">String ASSIGNEMENT_TEMPLATES_PATH =
"/template/assignement";
private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger =
1.5.0/docs/api/java/util/logging/Logger.html">Logger.
getLogger(CreateCourseUnitWorksBackupService.
class);
public 1.5.0/docs/api/java/lang/String.html">String run
(1.5.0/docs/api/java/lang/String.html">String importYear , UserSession userSession
) throws ServiceException
{
if(importYear ==
null || importYear.
trim().
length() == 0
)
importYear = DatesUtils.
getImportYear();
1.5.0/docs/api/java/lang/String.html">String importYearIntranet = DatesUtils.
getImportYearIntranet();
1.5.0/docs/api/java/lang/String.html">String tmpName = BytesUtils.
generateHexKey();
1.5.0/docs/api/java/lang/String.html">String tmpDir = Globals.
TMP_DIR +
"/" + tmpName
;
new 1.5.0/docs/api/java/io/File.html">File(tmpDir
).
mkdirs();
List
<Course
> courses = DaoFactory.
getCourseDaoImpl().
findAll(importYear
);
try
{
for(Course c: courses
)
{
1.5.0/docs/api/java/lang/String.html">String couseDirPath = tmpDir +
"/" + StringsUtils.
normalizeResourceName(c.
getName()) +
'.' + c.
getCode();
try
{
1.5.0/docs/api/java/lang/String.html">String courseImportYearPath = couseDirPath +
"/" + importYearIntranet
;
1.5.0/docs/api/java/io/File.html">File courseImportYearDir =
new 1.5.0/docs/api/java/io/File.html">File(courseImportYearPath
);
courseImportYearDir.
mkdirs();
List
<CourseUnit
> courseUnits = DaoFactory.
getCourseUnitDaoImpl().
loadByCourse(c.
getId(),importYear
);
for(CourseUnit courseUnit: courseUnits
)
{
1.5.0/docs/api/java/lang/String.html">String semestre
;
if(courseUnit.
getSemestre().
equals("S1"))
{
semestre = Globals.
INTRANET_SEMESTRE_S1;
}
else
{
semestre = Globals.
INTRANET_SEMESTRE_S2;
}
1.5.0/docs/api/java/lang/String.html">String normalizedName = StringsUtils.
normalizeResourceName(courseUnit.
getName());
1.5.0/docs/api/java/lang/String.html">String unitPath = courseImportYearPath +
"/" + semestre +
"/" + normalizedName
;
for(CourseUnitAssignement assignement : courseUnit.
getAssignements())
{
1.5.0/docs/api/java/lang/String.html">String fileContent = buildAssignementTemplate
(assignement
);
1.5.0/docs/api/java/lang/String.html">String assignementDir = unitPath +
"/assignement" + assignement.
getId();
new 1.5.0/docs/api/java/io/File.html">File(assignementDir
).
mkdirs();
1.5.0/docs/api/java/io/FileWriter.html">FileWriter assignementDesc =
new 1.5.0/docs/api/java/io/FileWriter.html">FileWriter(assignementDir +
"/description.txt");
assignementDesc.
write(fileContent
);
assignementDesc.
close();
if(assignement.
getRepositoryStream() !=
null && assignement.
getRepositoryStream().
length() > 0
)
{
IRepositoryFile iRepositoryFile = repositoryService.
load(assignement.
getRepositoryStream(),userSession
);
FilesUtils.
copy(iRepositoryFile.
getInput(),assignementDir +
"/" + StringsUtils.
normalizeResourceName(iRepositoryFile.
getName()));
}
if(!assignement.
getDeliverType().
equals(Globals.
COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.
getDeliverables() !=
null && assignement.
getDeliverables().
size() > 0
)
{
for(CourseUnitDeliverable deliverable: assignement.
getDeliverables())
{
1.5.0/docs/api/java/lang/String.html">String deliverDir = assignementDir +
"/deliverable" + deliverable.
getId() +
"-" + deliverable.
getStudent().
getId() +
"numero" + deliverable.
getStudent().
getSigesCode();
new 1.5.0/docs/api/java/io/File.html">File(deliverDir
).
mkdirs();
if(deliverable.
getDeliverableRepositoryStream() !=
null && deliverable.
getDeliverableRepositoryStream().
length() > 0
)
{
IRepositoryFile iRepositoryFile = repositoryService.
load(deliverable.
getDeliverableRepositoryStream(),userSession
);
FilesUtils.
copy(iRepositoryFile.
getInput(),deliverDir +
"/" + StringsUtils.
normalizeResourceName(iRepositoryFile.
getName()));
}
}
}
}
}
}
catch (1.5.0/docs/api/java/io/IOException.html">IOException e
)
{
logger.
error(e,e
);
}
}
FilesUtils.
zipFolder(tmpDir,tmpDir +
".zip");
FilesUtils.
delete(tmpDir
);
return tmpName +
".zip";
}
catch (1.5.0/docs/api/java/io/IOException.html">IOException e
)
{
logger.
error(e,e
);
}
return null;
}
public 1.5.0/docs/api/java/lang/String.html">String buildAssignementTemplate
(CourseUnitAssignement assignement
)
{
1.5.0/docs/api/java/lang/String.html">String assignementDir = StringsUtils.
normalizeResourceName(assignement.
getTitle()) + assignement.
getId();
new 1.5.0/docs/api/java/io/File.html">File(assignementDir
).
mkdirs();
1.5.0/docs/api/java/lang/String.html">String[] args =
new 1.5.0/docs/api/java/lang/String.html">String[]
{
assignement.
getCourseUnit().
getName(),
assignement.
getTitle(),
pt.
estgp.
estgweb.
web.
utils.
DatesUtils.
getStringFromDate(assignement.
getDeliverDate()),
assignement.
getDescription()
};
1.5.0/docs/api/java/lang/String.html">String content = TemplateUtils.
getOrLoadTemplate(ASSIGNEMENT_TEMPLATES_PATH +
"/Assignement.txt");
// Format the mail message
return 1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.
format(content, args
);
}
public static void main
(1.5.0/docs/api/java/lang/String.html">String[] args
) throws ServiceException
{
AbstractDao.
getCurrentSession().
beginTransaction();
new CreateCourseUnitWorksBackupService
().
run(null,
null);
AbstractDao.
getCurrentSession().
getTransaction().
commit();
}
}