Subversion Repositories bacoAlunos

Rev

Rev 1306 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

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
 */