package pt.estgp.estgweb.services.courseunits;
import jomm.utils.BytesUtils;
import jomm.utils.FilesUtils;
import jomm.utils.StringsUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.utl.ist.berserk.logic.serviceManager.IService;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
/*
* @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 CreateCourseUnitDirPackageServiceBat
implements IService
{
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(CreateCourseUnitDirPackageServiceBat.
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 = DaoFactory.
getConfigurationDaoImpl().
getInterfaceImportYear();
1.5.0/docs/api/java/lang/String.html">String importYearIntranet = DatesUtils.
getImportYearIntranet(importYear
);
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);
List
<Course
> courses = DaoFactory.
getCourseDaoImpl().
findAll();
List
<User
> usersFullControlDtp =
null;
if(Globals.
INTRANET_DTP_FULLCONTROL_ROLES !=
null && Globals.
INTRANET_DTP_FULLCONTROL_ROLES.
size() > 0
)
{
usersFullControlDtp = DaoFactory.
getUserDaoImpl().
loadRolesUsers(Globals.
INTRANET_DTP_FULLCONTROL_ROLES);
}
List
<User
> usersInqueritoPedagogico =
null;
if(Globals.
INTRANET_DTP_INQUERITO_PEDAGOGICO_ROLE !=
null && Globals.
INTRANET_DTP_INQUERITO_PEDAGOGICO_ROLE.
trim().
length() > 0
)
{
usersInqueritoPedagogico = DaoFactory.
getUserDaoImpl().
loadRoleUsers(Globals.
INTRANET_DTP_INQUERITO_PEDAGOGICO_ROLE.
trim());
}
List
<User
> usersServicesPrograms = DaoFactory.
getUserDaoImpl().
loadRoleUsers("servicesPrograms");
try
{
1.5.0/docs/api/java/io/FileWriter.html">FileWriter batRunner =
new 1.5.0/docs/api/java/io/FileWriter.html">FileWriter(tmpDir +
"/create.bat");
1.5.0/docs/api/java/lang/String.html">String back =
"";
for(Course c: courses
)
{
//O curso é sempre o mesmo ID mas muda de Ano consoante o ano de importação
List
<CourseUnit
> courseUnits = DaoFactory.
getCourseUnitDaoImpl().
loadByCourse(c.
getId(),importYear
);
if(courseUnits ==
null || courseUnits.
size() ==
0)
{
logger.
info("Skipping course: " + c.
getCode() +
":" + c.
getName() +
" zero units in " + importYear
);
}
else{
1.5.0/docs/api/java/lang/String.html">String courseNormalizedName = StringsUtils.
normalizeResourceName(c.
getName()) +
'.' + c.
getCode();
1.5.0/docs/api/java/lang/String.html">String couseDirPath = tmpDir +
"/" + courseNormalizedName
;
// File courseDir = new File(couseDirPath);
//courseDir.mkdirs();
try
{
1.5.0/docs/api/java/lang/String.html">String courseImportYearPathDos = couseDirPath +
"\\" + importYearIntranet
;
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();
//new File(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S1).mkdirs();
//new File(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S2).mkdirs();
//new File(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_A).mkdirs();
//FilesUtils.copy(CreateCourseUnitDirPackageServiceBat.class.getResourceAsStream(Globals.INTRANET_SETUP_FILE),courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S1 + "/" + Globals.INTRANET_SETUP_FILE_NAME);
//FilesUtils.copy(CreateCourseUnitDirPackageServiceBat.class.getResourceAsStream(Globals.INTRANET_SETUP_FILE),courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S2 + "/" + Globals.INTRANET_SETUP_FILE_NAME);
//FilesUtils.copy(CreateCourseUnitDirPackageServiceBat.class.getResourceAsStream(Globals.INTRANET_SETUP_FILE),courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_A + "/" + Globals.INTRANET_SETUP_FILE_NAME);
1.5.0/docs/api/java/lang/String.html">String relativeDirCourse = courseImportYearPathDos.
substring(tmpDir.
length() + 1
);
//String callPathS1 = (courseImportYearPathDos + "\\" + Globals.INTRANET_SEMESTRE_S1 + "\\").substring(tmpDir.length() + 1);
//String callPathS2 = (courseImportYearPathDos + "\\" + Globals.INTRANET_SEMESTRE_S2 + "\\").substring(tmpDir.length() + 1);
//String callPathA = (courseImportYearPathDos + "\\" + Globals.INTRANET_SEMESTRE_A + "\\").substring(tmpDir.length() + 1);
//batRunner.write("cd " + back + relativeDirCourse + "\\");
//back = "..\\..\\..\\";
//back = "..\\..\\";
//batRunner.write("\n");
/*batRunner.write(Globals.INTRANET_SETUP_FILE_NAME + " " + Globals.INTRANET_USERS_SETUP_FILE_NAME);
batRunner.write("\n");
batRunner.write("cd " + back + callPathS2);
batRunner.write("\n");
batRunner.write(Globals.INTRANET_SETUP_FILE_NAME + " " + Globals.INTRANET_USERS_SETUP_FILE_NAME);
batRunner.write("\n");
batRunner.write("cd " + back + callPathA);
batRunner.write("\n");
batRunner.write(Globals.INTRANET_SETUP_FILE_NAME + " " + Globals.INTRANET_USERS_SETUP_FILE_NAME);
batRunner.write("\n");*/
//RETIRADO
//FileWriter confWriterSemestre1 = new FileWriter(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S1 + "/" + Globals.INTRANET_USERS_SETUP_FILE_NAME);
//FileWriter confWriterSemestre2 = new FileWriter(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S2 + "/" + Globals.INTRANET_USERS_SETUP_FILE_NAME);
// FileWriter confWriterA = new FileWriter(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_A + "/" + Globals.INTRANET_USERS_SETUP_FILE_NAME);
boolean at =
false;
boolean s1t =
false;
boolean s2t =
false;
boolean t1t =
false;
boolean t2t =
false;
boolean t3t =
false;
boolean t4t =
false;
for(CourseUnit courseUnit: courseUnits
)
{
if(courseUnit.
getSemestre().
equals("S1"))
s1t =
true;
else if(courseUnit.
getSemestre().
equals("S2"))
s2t =
true;
else if(courseUnit.
getSemestre().
equals("A"))
at =
true;
else if(courseUnit.
getSemestre().
equals("T1"))
t1t =
true;
else if(courseUnit.
getSemestre().
equals("T2"))
t2t =
true;
else if(courseUnit.
getSemestre().
equals("T3"))
t3t =
true;
else if(courseUnit.
getSemestre().
equals("T4"))
t4t =
true;
}
batRunner.
write("md " + courseNormalizedName +
"\\\n");
batRunner.
write("md " + relativeDirCourse +
"\\\n");
/**
* Relatorio de Curso Novo
*/
batRunner.
write("md " + relativeDirCourse +
"\\" +
"Relatorio.Curso" +
"\n");
batRunner.
write("cd " + relativeDirCourse +
"\\\n");
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /p \"Domain Users\":n\n");
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /p \"Authenticated Users\":n\n");
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /p \"Intranet\":n\n");
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /p \"Alunos\":n\n");
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /r \"Domain Users\"\n");
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /r \"Authenticated Users\"\n");
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /r \"Intranet\"\n");
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /r \"Alunos\"\n");
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /g \"" + ConfigProperties.
getProperty("ionline.user") +
"\":f\n");
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /g \"Docentes\":r\n");
if(c.
getUserGroupStudents() !=
null)
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /g \"" + c.
getUserGroupStudents() +
"\":r\n");
if(c.
getDirector() !=
null)
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /g \"" + c.
getDirector().
getUsername() +
"\":f\n");
if(c.
getCoordinator() !=
null)
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /g \"" + c.
getCoordinator().
getUsername() +
"\":f\n");
for(User serviceUser: usersServicesPrograms
)
batRunner.
write("cacls " +
"Relatorio.Curso" +
" /t /e /g \"" + serviceUser.
getUsername() +
"\":f\n");
batRunner.
write("cd ..\\..\\\n");
/*Fim de Relatorio de Curso*/
if(s1t
)
batRunner.
write("md " + relativeDirCourse +
"\\" + Globals.
INTRANET_SEMESTRE_S1 +
"\\\n");
if(s2t
)
batRunner.
write("md " + relativeDirCourse +
"\\" + Globals.
INTRANET_SEMESTRE_S2 +
"\\\n");
if(at
)
batRunner.
write("md " + relativeDirCourse +
"\\" + Globals.
INTRANET_SEMESTRE_A +
"\\\n");
if(t1t
)
batRunner.
write("md " + relativeDirCourse +
"\\" + Globals.
INTRANET_SEMESTRE_T1 +
"\\\n");
if(t2t
)
batRunner.
write("md " + relativeDirCourse +
"\\" + Globals.
INTRANET_SEMESTRE_T2 +
"\\\n");
if(t3t
)
batRunner.
write("md " + relativeDirCourse +
"\\" + Globals.
INTRANET_SEMESTRE_T3 +
"\\\n");
if(t4t
)
batRunner.
write("md " + relativeDirCourse +
"\\" + Globals.
INTRANET_SEMESTRE_T4 +
"\\\n");
batRunner.
write("cd " + relativeDirCourse +
"\\\n");
//back = "..\\..\\";
//batRunner.write("\n");
// List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadByCourse(c.getId(),importYear);
for(CourseUnit courseUnit: courseUnits
)
{
boolean turmasMultiplas =
false;
for(CourseUnit cuCompare: courseUnits
)
{
if(cuCompare.
getId() == courseUnit.
getId())
continue;
if(((CourseUnitImpl
)cuCompare
).
equalsIgnoringTurma(courseUnit
))
{
turmasMultiplas =
true;
break;
}
}
//FileWriter nowWriter;
1.5.0/docs/api/java/lang/String.html">String semestre
;
if(courseUnit.
getSemestre().
equals("S1"))
{
//nowWriter = confWriterSemestre1;
semestre = Globals.
INTRANET_SEMESTRE_S1;
}
else if(courseUnit.
getSemestre().
equals("S2"))
{
//nowWriter = confWriterSemestre2;
semestre = Globals.
INTRANET_SEMESTRE_S2;
}
else if(courseUnit.
getSemestre().
equals("T1"))
{
//nowWriter = confWriterSemestre2;
semestre = Globals.
INTRANET_SEMESTRE_T1;
}
else if(courseUnit.
getSemestre().
equals("T2"))
{
//nowWriter = confWriterSemestre2;
semestre = Globals.
INTRANET_SEMESTRE_T2;
}
else if(courseUnit.
getSemestre().
equals("T3"))
{
//nowWriter = confWriterSemestre2;
semestre = Globals.
INTRANET_SEMESTRE_T3;
}
else if(courseUnit.
getSemestre().
equals("T4"))
{
//nowWriter = confWriterSemestre2;
semestre = Globals.
INTRANET_SEMESTRE_T4;
}
else
{
//nowWriter = confWriterA;
semestre = Globals.
INTRANET_SEMESTRE_A;
}
/*md Unidade\DTP
md Unidade\DTP\1.Planeamento
md Unidade\DTP\2.Ficha.Curricular
md Unidade\DTP\3.Sumarios
md Unidade\DTP\4.Avaliacao
md Unidade\DTP\5.Ficha.de.Avaliacao.da.Unidade.Curricular
md Unidade\DTP\6.Inquerito.Pedagogico.Unidade.Curricular
md Unidade\DTP\7.Relatorio.Final*/
1.5.0/docs/api/java/lang/String.html">String normalizedName = StringsUtils.
normalizeResourceName(courseUnit.
getName());
//Em caso de turmas multiplas necessitamos de colocar na path a turma
//todo mudar isto no futuro para meter sempre que houver turma
if(turmasMultiplas
&& courseUnit.
getCdTurma() !=
null && courseUnit.
getCdTurma().
trim().
length() > 0)
{
normalizedName = normalizedName +
"." + courseUnit.
getCdTurma();
batRunner.
write("REM Unidade de Turma Multipla " + courseImportYearPath +
"/" + semestre +
"/" + normalizedName +
" \n");
}
courseUnit.
setNormalizedName(normalizedName
);
1.5.0/docs/api/java/lang/String.html">String unitPath = courseImportYearPath +
"/" + semestre +
"/" + normalizedName
;
courseUnit.
setPathIntranet(unitPath.
substring(tmpDir.
length()));
1.5.0/docs/api/java/lang/String.html">String semestreUnitName = semestre +
"\\" + normalizedName +
"\\";
1.5.0/docs/api/java/lang/String.html">String dtpUnitFolder = semestreUnitName + Globals.
INTRANET_DTP +
"\\";
1.5.0/docs/api/java/lang/String.html">String conteudosUnitFolder = semestreUnitName + Globals.
INTRANET_CONTENTS +
"\\";
batRunner.
write("md " + semestreUnitName +
"\n");
batRunner.
write("md " + conteudosUnitFolder +
"\n");
batRunner.
write("md " + dtpUnitFolder +
"\n");
batRunner.
write("md " + dtpUnitFolder + Globals.
INTRANET_DTP_Planeamento +
"\\\n");
batRunner.
write("md " + dtpUnitFolder + Globals.
INTRANET_DTP_FichaCurricular +
"\\\n");
batRunner.
write("md " + dtpUnitFolder + Globals.
INTRANET_DTP_Sumarios +
"\\\n");
batRunner.
write("md " + dtpUnitFolder + Globals.
INTRANET_DTP_Avaliacao +
"\\\n");
batRunner.
write("md " + dtpUnitFolder + Globals.
INTRANET_DTP_Avaliacao +
"\\" + Globals.
INTRANET_DTP_Avaliacao_enunciados +
"\\\n");
batRunner.
write("md " + dtpUnitFolder + Globals.
INTRANET_DTP_Avaliacao +
"\\" + Globals.
INTRANET_DTP_Avaliacao_pautas +
"\\\n");
batRunner.
write("md " + dtpUnitFolder + Globals.
INTRANET_DTP_FichaAvaliacao +
"\\\n");
batRunner.
write("md " + dtpUnitFolder + Globals.
INTRANET_DTP_InqueritoPedagogico +
"\\\n");
batRunner.
write("cd " + semestreUnitName +
"\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /p \"Domain Users\":n\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /p \"Authenticated Users\":n\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /p \"Intranet\":n\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /p \"Alunos\":n\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /r \"Domain Users\"\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /r \"Authenticated Users\"\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /r \"Intranet\"\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /r \"Alunos\"\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /g \"Docentes\":r\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /g \"" + c.
getUserGroupStudents() +
"\":r\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /g \"" + ConfigProperties.
getProperty("ionline.user") +
"\":f\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /g \"" + ConfigProperties.
getProperty("ionline.user") +
"\":f\n");
/*
echo CACLS Seminario.Ii /T /E /R [NOME DO GRUPO DE TODOS OS ALUNOS DA ESTG tira os parentisis rectos]
echo CACLS Seminario.Ii /T /E /G [NOME DO GRUPO DE TODOS OS DOCENTES]:R
echo CACLS Seminario.Ii /T /E /G [NOME DO GRUPO DE TODOS OS ALUNOS DO CURSO]:R
echo CACLS Seminario.Ii /T /E /G secundino.lopes:C
*/
//batRunner.write("\n");
//nowWriter.write(normalizedName);
1.5.0/docs/api/java/lang/System.html">System.
out.
println("GENERATING LINE: " + normalizedName
);
if(courseUnit.
getTeachers() !=
null)
{
1.5.0/docs/api/java/lang/String.html">String users =
"";
int counter =
0;
for(Teacher t: courseUnit.
getTeachers())
{
if(t.
getUsername() !=
null)
{
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /g \"" + t.
getUsername() +
"\":c\n");
//batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /r \"" + t.getUsername() + "\":c\n");
batRunner.
write("cd " + Globals.
INTRANET_DTP +
"\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP_FichaCurricular +
" /t /e /r \"" + t.
getUsername() +
"\"\n");
//batRunner.write("cacls " + Globals.INTRANET_DTP_FichaAvaliacao + " /t /e /r \"" + t.getUsername() + "\"\n");
batRunner.
write("cd ..\\\n");
batRunner.
write("cacls " + Globals.
INTRANET_CONTENTS +
" /t /e /g \"" + t.
getUsername() +
"\":c\n");
//users += " " + t.getUsername();
//counter++;
}
}
// nowWriter.write(" " + counter + users);
//nowWriter.write("\n");
}
if(Globals.
INTRANET_DTP_CourseUnitResponsibleWrite && courseUnit.
getResponsableTeacher() !=
null )
{
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /g \"" + courseUnit.
getResponsableTeacher().
getUsername() +
"\":c\n");
batRunner.
write("cd " + Globals.
INTRANET_DTP +
"\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP_FichaCurricular +
" /t /e /r \"" + courseUnit.
getResponsableTeacher().
getUsername() +
"\"\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP_FichaAvaliacao +
" /t /e /r \"" + courseUnit.
getResponsableTeacher().
getUsername() +
"\"\n");
batRunner.
write("cd ..\\\n");
}
if(Globals.
INTRANET_DTP_CourseCoordinatorWrite && c.
getCoordinator() !=
null)
{
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /g \"" + c.
getCoordinator().
getUsername() +
"\":c\n");
batRunner.
write("cd " + Globals.
INTRANET_DTP +
"\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP_FichaCurricular +
" /t /e /r \"" + c.
getCoordinator().
getUsername() +
"\"\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP_FichaAvaliacao +
" /t /e /r \"" + c.
getCoordinator().
getUsername() +
"\"\n");
batRunner.
write("cd ..\\\n");
}
if(Globals.
INTRANET_DTP_CourseDirectorWrite && c.
getDirector() !=
null)
{
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /g \"" + c.
getDirector().
getUsername() +
"\":c\n");
batRunner.
write("cd " + Globals.
INTRANET_DTP +
"\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP_FichaCurricular +
" /t /e /r \"" + c.
getDirector().
getUsername() +
"\"\n");
batRunner.
write("cacls " + Globals.
INTRANET_DTP_FichaAvaliacao +
" /t /e /r \"" + c.
getDirector().
getUsername() +
"\"\n");
batRunner.
write("cd ..\\\n");
}
if(usersInqueritoPedagogico
!=
null && usersInqueritoPedagogico.
size() > 0
)
{
for(User u: usersInqueritoPedagogico
)
{
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /g \"" + u.
getUsername() +
"\":r\n");
}
batRunner.
write("cd " + Globals.
INTRANET_DTP +
"\n");
for(User u: usersInqueritoPedagogico
)
{
batRunner.
write("cacls " + Globals.
INTRANET_DTP_InqueritoPedagogico +
" /t /e /g \"" + u.
getUsername() +
"\":f\n");
}
batRunner.
write("cd ..\\\n");
}
if(usersFullControlDtp
!=
null && usersFullControlDtp.
size() > 0
)
{
for(User u: usersFullControlDtp
)
{
batRunner.
write("cacls " + Globals.
INTRANET_DTP +
" /t /e /g \"" + u.
getUsername() +
"\":f\n");
}
}
batRunner.
write("cd ..\\..\\\n");
}
batRunner.
write("cd ..\\..\\\n");
//confWriterSemestre1.flush();
//confWriterSemestre2.flush();
// confWriterA.flush();
// confWriterSemestre1.close();
// confWriterSemestre2.close();
// confWriterA.close();
}
catch (1.5.0/docs/api/java/io/IOException.html">IOException e
)
{
logger.
error(e,e
);
}
}
}
batRunner.
write("cd " + back
);
batRunner.
close();
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 static void main
(1.5.0/docs/api/java/lang/String.html">String[] args
) throws ServiceException
{
1.5.0/docs/api/java/lang/String.html">String teste =
"Sistemas Térmicos, Hidráulicos e Pneumáticos";
1.5.0/docs/api/java/lang/System.html">System.
out.
println(StringsUtils.
normalizeResourceName(teste
));
// AbstractDao.getCurrentSession().beginTransaction();
// new CreateCourseUnitDirPackageService().run(null,null);
// AbstractDao.getCurrentSession().getTransaction().commit();
}
}
/******
*
* MEMO COMANDOS WINDOWS
* Ok Jaime testa este comando se faz favor.
Por partes:
O ficheiro de input do mkcursos.exe é assim:
Seminario.Ii 1 secundino.lopes
Bases.De.Dados.Ii 1 vrealinho
Redes.De.Computadores.I 1 secundino.lopes
Teoria.Da.Computacao 1 jmachado
Seguranca 1 secundino.lopes
Em que o primeiro parâmetro é a pasta da unidade
O segundo é o numero de users que vêm seguidamente
O programa faz isto
O inicio cria uma pasta para a cadeira e 3 pastas lá dentro:
fscanf(fic, " %s", disc); //SCAN DO FICHEIRO DE UMA STRING para a var disc isto é o nome da pasta para a unidade
if (feof(fic)) exit(0);
sprintf(linha,"echo md %s", disc); //CONSTRUCAO DO COMANDO DE MD para a var linha para criar os três directorios
//disc = Seminario.Ii
//fica: linha = " echo md Seminario.Ii "
system(linha); //EXECUTA O COMANDO em Linha
sprintf(linha,"echo md %s\\\\Conteudos", disc); //fica: linha = " echo md Seminario.Ii\\Conteudos "
system(linha);
sprintf(linha,"echo md %s\\\\Avaliacao", disc); //fica: linha = " echo md Seminario.Ii\\ Avaliacao "
system(linha);
sprintf(linha,"echo md %s\\\\Assiduidade", disc); //fica: linha = " echo md Seminario.Ii\\ Assiduidade "
system(linha);
seguidamente o programa lê o inteiro no caso do seminario é "1" e de 0 até 1 ou seja só uma vez neste caso lê a próxima String neste caso secundino.lopes o ActiveDirectory tem lá este user
fscanf(fic, "%i", &n);
for (i=0; i<n; i++) {
fscanf(fic, " %s", doc); //Lê secundino.lopes aqui
sprintf(linha, "echo CACLS %s /T /E /G %s:C", disc, doc);
//fica linha=echo CACLS Seminario.Ii /T /E /G secundino.lopes:C
system(linha);
}
O CACLS muda isto:
discretionary access control list (DACL) da pasta
JAIME Metes-te no Donald em linha de comandos crias uma pasta num sitio de teste e escreves isto:
segundo a documentação da Microsoft:
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cacls.mspx?mfr=true
O /T significa aplicar às subpastas
O /E significa editar em vez de a destruir o DACL para manter as permissões anteriores
O /G para garantir acesso ao user especificado no fomato User:permission permission pode ser C, R etc
logo Secundino.lopes:CREATE é o que quer dizer o secundino.lopes:C
/R User revoga direitos de acesso a um User
O que queremos é revogar a todos os utilizadores e de seguida adicionar permissões de leitura a
todos os docentes, leitura aos users do Curso e por fim escrita aos docentes da unidade
Agora resta saber a ordem como fazer isto para funcionar e isso tens de ser tu a testar JAIME
Tenta isto numa pasta de teste fora do i.online para não estragarmos nada
Retiramos aos alunos todos, damos leitura aos docentes todos, damos leitura aos alunos do curso
e por fim escrita ao docente de teste
echo CACLS Seminario.Ii /T /E /R [NOME DO GRUPO DE TODOS OS ALUNOS DA ESTG tira os parentisis rectos]
echo CACLS Seminario.Ii /T /E /G [NOME DO GRUPO DE TODOS OS DOCENTES]:R
echo CACLS Seminario.Ii /T /E /G [NOME DO GRUPO DE TODOS OS ALUNOS DO CURSO]:R
echo CACLS Seminario.Ii /T /E /G secundino.lopes:C
Experimenta isto ou noutra ordem e verifica como ficaram as permissões no fim e quando acertares o passo
manda-me o resultado para eu criar o ficheiro final com os BATS todos
*/