Subversion Repositories bacoAlunos

Rev

Rev 1310 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1310 Rev 1315
1
package pt.estgp.estgweb.services.courseunits;
1
package pt.estgp.estgweb.services.courseunits;
2
 
2
 
3
import jomm.dao.impl.AbstractDao;
3
import jomm.dao.impl.AbstractDao;
4
import org.apache.log4j.Logger;
4
import org.apache.log4j.Logger;
5
import org.hibernate.Query;
5
import org.hibernate.Query;
6
import pt.estgp.estgweb.domain.*;
6
import pt.estgp.estgweb.domain.*;
7
import pt.estgp.estgweb.domain.dao.DaoFactory;
7
import pt.estgp.estgweb.domain.dao.DaoFactory;
8
import pt.estgp.estgweb.domain.views.CourseUnitView;
8
import pt.estgp.estgweb.domain.views.CourseUnitView;
9
import pt.utl.ist.berserk.logic.serviceManager.IService;
9
import pt.utl.ist.berserk.logic.serviceManager.IService;
10
 
10
 
11
import java.util.ArrayList;
11
import java.util.ArrayList;
12
import java.util.Iterator;
12
import java.util.Iterator;
13
import java.util.List;
13
import java.util.List;
14
import java.util.Set;
14
import java.util.Set;
15
 
15
 
16
/**
16
/**
17
 * Created by jorgemachado on 15/12/15.
17
 * Created by jorgemachado on 15/12/15.
18
 */
18
 */
19
public class DeleteCourseUnitService implements IService
19
public class DeleteCourseUnitService implements IService
20
{
20
{
21
 
21
 
22
    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(DeleteCourseUnitService.class);
22
    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(DeleteCourseUnitService.class);
23
 
23
 
24
    public static class CourseUnitContentsInfo
24
    public static class CourseUnitContentsInfo
25
    {
25
    {
26
        public List<String> warnings = new ArrayList<String>();
26
        public List<String> warnings = new ArrayList<String>();
27
        public 1.5.0/docs/api/java/lang/String.html">String messageResult = "";
27
        public 1.5.0/docs/api/java/lang/String.html">String messageResult = "";
28
        boolean canDelete = false;
28
        boolean canDelete = false;
29
        public CourseUnitView cuv;
29
        public CourseUnitView cuv;
-
 
30
        boolean deleted = false;
30
 
31
 
31
        public List<String> getWarnings() {
32
        public List<String> getWarnings() {
32
            return warnings;
33
            return warnings;
33
        }
34
        }
34
 
35
 
35
        public 1.5.0/docs/api/java/lang/String.html">String getMessageResult() {
36
        public 1.5.0/docs/api/java/lang/String.html">String getMessageResult() {
36
            return messageResult;
37
            return messageResult;
37
        }
38
        }
38
 
39
 
39
        public boolean isCanDelete() {
40
        public boolean isCanDelete() {
40
            return canDelete;
41
            return canDelete;
41
        }
42
        }
42
 
43
 
43
        public CourseUnitView getCuv() {
44
        public CourseUnitView getCuv() {
44
            return cuv;
45
            return cuv;
45
        }
46
        }
46
    }
47
    }
47
    /**
48
    /**
48
     *
49
     *
49
     * @param courseUnitId
50
     * @param courseUnitId
50
     * @return a list of warnings
51
     * @return a list of warnings
51
     *
52
     *
52
     */
53
     */
53
    public CourseUnitContentsInfo checkDelete(long courseUnitId,UserSession session)
54
    public CourseUnitContentsInfo checkDelete(long courseUnitId,UserSession session)
54
    {
55
    {
55
        CourseUnitContentsInfo result = new CourseUnitContentsInfo();
56
        CourseUnitContentsInfo result = new CourseUnitContentsInfo();
56
        result.canDelete = true;
57
        result.canDelete = true;
57
 
58
 
58
        CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId);
59
        CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId);
59
 
60
 
60
        boolean alert = false;
61
        boolean alert = false;
61
        if(cu.getStudents() != null && cu.getStudents().size() > 0)
62
        if(cu.getStudents() != null && cu.getStudents().size() > 0)
62
        {
63
        {
63
            result.warnings.add("ALERT - Tem Alunos (NAO PODE APAGAR, remova os alunos primeiro)");
64
            result.warnings.add("ALERT - Tem Alunos (NAO PODE APAGAR, remova os alunos primeiro)");
64
            result.canDelete  = false;
65
            result.canDelete  = false;
65
        }
66
        }
66
        if(cu.getTeachers() != null && cu.getTeachers().size() > 0)
67
        if(cu.getTeachers() != null && cu.getTeachers().size() > 0)
67
        {
68
        {
68
            result.warnings.add("ALERT - Tem Professores");
69
            result.warnings.add("ALERT - Tem Professores");
69
        }
70
        }
70
        if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0)
71
        if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0)
71
        {
72
        {
72
            result.warnings.add("ALERT - Tem Anuncios");
73
            result.warnings.add("ALERT - Tem Anuncios");
73
        }
74
        }
74
        if(cu.getAssignements() != null && cu.getAssignements().size() > 0)
75
        if(cu.getAssignements() != null && cu.getAssignements().size() > 0)
75
        {
76
        {
76
            result.warnings.add("ALERT - Tem Trabalhos (NAO PODE APAGAR, remova os trabalhos primeiro (tarefa do professor))");
77
            result.warnings.add("ALERT - Tem Trabalhos (NAO PODE APAGAR, remova os trabalhos primeiro (tarefa do professor))");
77
        }
78
        }
78
        if(cu.getBlogs() != null && cu.getBlogs().size() > 0)
79
        if(cu.getBlogs() != null && cu.getBlogs().size() > 0)
79
        {
80
        {
80
            result.warnings.add("ALERT - Tem BLOGS");
81
            result.warnings.add("ALERT - Tem BLOGS");
81
        }
82
        }
82
        if(cu.getCourseUnitEvaluation() != null)
83
        if(cu.getCourseUnitEvaluation() != null)
83
        {
84
        {
84
            result.warnings.add("ALERT - Tem Relatorio de Avaliacao (NAO PODE APAGAR, contacte a equipa de desenvolvimento para encontrar solucao)");
85
            result.warnings.add("ALERT - Tem Relatorio de Avaliacao (NAO PODE APAGAR, contacte a equipa de desenvolvimento para encontrar solucao)");
85
            result.canDelete = false;
86
            result.canDelete = false;
86
        }
87
        }
87
        if(cu.getCourseUnitProgram() != null)
88
        if(cu.getCourseUnitProgram() != null)
88
        {
89
        {
89
            result.warnings.add("ALERT - Tem ficha curricular, nao vai apagar a ficha fica em backup id ficha: (" + cu.getCourseUnitProgram().getId() + ") pdf: (http://SITE_URL/repositoryStream/" + cu.getProgramStreamId() + "), exporte a ficha para backup");
90
            result.warnings.add("ALERT - Tem ficha curricular, nao vai apagar a ficha fica em backup id ficha: (" + cu.getCourseUnitProgram().getId() + ") pdf: (http://SITE_URL/repositoryStream/" + cu.getProgramStreamId() + "), exporte a ficha para backup");
90
        }
91
        }
91
        if(cu.getSummaries() != null && cu.getSummaries().size() > 0)
92
        if(cu.getSummaries() != null && cu.getSummaries().size() > 0)
92
        {
93
        {
93
            result.warnings.add("ALERT - Tem Sumarios, vai apagar os sumarios localmente");
94
            result.warnings.add("ALERT - Tem Sumarios, vai apagar os sumarios localmente");
94
        }
95
        }
95
        if(result.canDelete)
96
        if(result.canDelete)
96
        {
97
        {
97
            result.messageResult ="Pode Apagar";
98
            result.messageResult ="Pode Apagar";
98
        }
99
        }
99
        else
100
        else
100
        {
101
        {
101
            result.messageResult ="Não é permitido apagar esta unidade";
102
            result.messageResult ="Não é permitido apagar esta unidade";
102
        }
103
        }
103
        result.cuv = new CourseUnitView(cu,false,false,false,false);
104
        result.cuv = new CourseUnitView(cu,false,false,false,false);
104
        return result;
105
        return result;
105
    }
106
    }
106
 
107
 
107
    /**
108
    /**
108
     *
109
     *
109
     * @param courseUnitId
110
     * @param courseUnitId
110
     * @return a list of warnings
111
     * @return a list of warnings
111
     *
112
     *
112
     */
113
     */
113
    public CourseUnitContentsInfo tryDelete(long courseUnitId,UserSession session)
114
    public CourseUnitContentsInfo tryDelete(long courseUnitId,UserSession session)
114
    {
115
    {
115
        CourseUnitContentsInfo result = checkDelete(courseUnitId,session);
116
        CourseUnitContentsInfo result = checkDelete(courseUnitId,session);
116
 
117
 
117
        if(result.canDelete)
118
        if(result.canDelete)
118
        {
119
        {
119
            CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId);
120
            CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId);
120
            logger.warn("Will Delete courseUnit: " + cu.getImportYear() + ";" + cu.getSemestre() + ";" + cu.getCode() + ";" + cu.getName() + ";" + cu.getCourseCode() + ";" + cu.getCourseName());
121
            logger.warn("Will Delete courseUnit: " + cu.getImportYear() + ";" + cu.getSemestre() + ";" + cu.getCode() + ";" + cu.getName() + ";" + cu.getCourseCode() + ";" + cu.getCourseName());
121
 
122
 
122
            if(cu.getTeachers() != null && cu.getTeachers().size() > 0)
123
            if(cu.getTeachers() != null && cu.getTeachers().size() > 0)
123
            {
124
            {
124
                Iterator<TeacherImpl> teachers = cu.getTeachers().iterator();
125
                Iterator<TeacherImpl> teachers = cu.getTeachers().iterator();
125
                while(teachers.hasNext())
126
                while(teachers.hasNext())
126
                {
127
                {
127
                    Teacher t = teachers.next();
128
                    Teacher t = teachers.next();
128
                    teachers.remove();
129
                    teachers.remove();
129
                    t.getTeachedUnits().remove(cu);
130
                    t.getTeachedUnits().remove(cu);
130
                    logger.warn("Removing Teacher: " + t.getSigesCode() + " - id:" + t.getId() + " name:" + t.getName());
131
                    logger.warn("Removing Teacher: " + t.getSigesCode() + " - id:" + t.getId() + " name:" + t.getName());
131
                }
132
                }
132
            }
133
            }
133
            if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0)
134
            if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0)
134
            {
135
            {
135
                Iterator<CourseUnitAnnouncement> annoucements = cu.getAnnouncements().iterator();
136
                Iterator<CourseUnitAnnouncement> annoucements = cu.getAnnouncements().iterator();
136
                while(annoucements.hasNext())
137
                while(annoucements.hasNext())
137
                {
138
                {
138
                    CourseUnitAnnouncement a = annoucements.next();
139
                    CourseUnitAnnouncement a = annoucements.next();
139
                    annoucements.remove();
140
                    annoucements.remove();
140
                    a.setCourseUnit(null);
141
                    a.setCourseUnit(null);
141
                    logger.warn("Removing Annoucement: " + a.getId());
142
                    logger.warn("Removing Annoucement: " + a.getId());
142
                    DaoFactory.getAnnouncementDaoImpl().delete(a);
143
                    DaoFactory.getAnnouncementDaoImpl().delete(a);
143
                }
144
                }
144
            }
145
            }
145
            if(cu.getBlogs() != null && cu.getBlogs().size() > 0)
146
            if(cu.getBlogs() != null && cu.getBlogs().size() > 0)
146
            {
147
            {
147
                Iterator<CourseUnitBlog> blogs = cu.getBlogs().iterator();
148
                Iterator<CourseUnitBlog> blogs = cu.getBlogs().iterator();
148
                while(blogs.hasNext())
149
                while(blogs.hasNext())
149
                {
150
                {
150
                    CourseUnitBlog a = blogs.next();
151
                    CourseUnitBlog a = blogs.next();
151
                    blogs.remove();
152
                    blogs.remove();
152
                    Set<BlogPost> posts = a.getPosts();
153
                    Set<BlogPost> posts = a.getPosts();
153
                    Iterator<BlogPost> postsIter = posts.iterator();
154
                    Iterator<BlogPost> postsIter = posts.iterator();
154
                    while(postsIter.hasNext())
155
                    while(postsIter.hasNext())
155
                    {
156
                    {
156
                        BlogPost bp = postsIter.next();
157
                        BlogPost bp = postsIter.next();
157
                        a.getPosts().remove(bp);
158
                        a.getPosts().remove(bp);
158
                        bp.setBlog(null);
159
                        bp.setBlog(null);
159
                        DaoFactory.getBlogPostDaoImpl().delete(bp);
160
                        DaoFactory.getBlogPostDaoImpl().delete(bp);
160
                    }
161
                    }
161
                    a.setCourseUnit(null);
162
                    a.setCourseUnit(null);
162
                    logger.warn("Removing Blog: " + a.getId());
163
                    logger.warn("Removing Blog: " + a.getId());
163
                    DaoFactory.getCourseUnitBlogDaoImpl().delete(a);
164
                    DaoFactory.getCourseUnitBlogDaoImpl().delete(a);
164
                }
165
                }
165
            }
166
            }
166
 
167
 
167
            if(cu.getCourseUnitProgram() != null)
168
            if(cu.getCourseUnitProgram() != null)
168
            {
169
            {
169
                result.warnings.add("ALERT - Tem ficha curricular, nao vai apagar a ficha fica em backup id ficha: (" + cu.getCourseUnitProgram().getId() + ") pdf: (http://SITE_URL/repositoryStream/" + cu.getProgramStreamId() + "), exporte a ficha para backup");
170
                result.warnings.add("ALERT - Tem ficha curricular, nao vai apagar a ficha fica em backup id ficha: (" + cu.getCourseUnitProgram().getId() + ") pdf: (http://SITE_URL/repositoryStream/" + cu.getProgramStreamId() + "), exporte a ficha para backup");
170
                cu.setCourseUnitProgram(null);
171
                cu.setCourseUnitProgram(null);
171
            }
172
            }
172
            if(cu.getSummaries() != null && cu.getSummaries().size() > 0)
173
            if(cu.getSummaries() != null && cu.getSummaries().size() > 0)
173
            {
174
            {
174
                result.warnings.add("ALERT - Tem Sumarios, vai apagar os sumarios localmente");
175
                result.warnings.add("ALERT - Tem Sumarios, vai apagar os sumarios localmente");
175
                Iterator<CourseUnitSummary> summaries = cu.getSummaries().iterator();
176
                Iterator<CourseUnitSummary> summaries = cu.getSummaries().iterator();
176
                while(summaries.hasNext())
177
                while(summaries.hasNext())
177
                {
178
                {
178
                    CourseUnitSummary a = summaries.next();
179
                    CourseUnitSummary a = summaries.next();
179
                    summaries.remove();
180
                    summaries.remove();
180
                    a.setCourseUnit(null);
181
                    a.setCourseUnit(null);
181
                    logger.warn("Removing Summary: " + a.getId());
182
                    logger.warn("Removing Summary: " + a.getId());
182
                    DaoFactory.getCourseUnitSummaryDaoImpl().delete(a);
183
                    DaoFactory.getCourseUnitSummaryDaoImpl().delete(a);
183
                }
184
                }
184
 
185
 
185
            }
186
            }
186
            DaoFactory.getCourseUnitDaoImpl().delete(cu);
187
            DaoFactory.getCourseUnitDaoImpl().delete(cu);
-
 
188
            result.deleted = true;
187
            result.messageResult = "Unidade Apagada";
189
            result.messageResult = "Unidade Apagada";
188
        }
190
        }
189
 
191
 
190
        return result;
192
        return result;
191
    }
193
    }
192
 
194
 
193
    public List<CourseUnitContentsInfo> loadDeleteCandidates(1.5.0/docs/api/java/lang/String.html">String importYear,UserSession session)
195
    public List<CourseUnitContentsInfo> loadDeleteCandidates(1.5.0/docs/api/java/lang/String.html">String importYear,UserSession session)
194
    {
196
    {
195
        List<CourseUnitContentsInfo> courseUnitContentsInfos = new ArrayList<CourseUnitContentsInfo>();
197
        List<CourseUnitContentsInfo> courseUnitContentsInfos = new ArrayList<CourseUnitContentsInfo>();
196
        1.5.0/docs/api/javax/management/Query.html">Query q = AbstractDao.getCurrentSession().createQuery("select c.id from c in class " + CourseUnit.class.getName() +
198
        1.5.0/docs/api/javax/management/Query.html">Query q = AbstractDao.getCurrentSession().createQuery("select c.id from c in class " + CourseUnit.class.getName() +
197
                " where size(c.students) = 0 and c.importYear = ?  order by c.importYear, c.semestre, c.code");
199
                " where size(c.students) = 0 and c.importYear = ?  order by c.importYear, c.semestre, c.code");
198
        q.setString(0,importYear);
200
        q.setString(0,importYear);
199
        1.5.0/docs/api/java/util/Iterator.html">Iterator iter = q.iterate();
201
        1.5.0/docs/api/java/util/Iterator.html">Iterator iter = q.iterate();
200
        while(iter.hasNext())
202
        while(iter.hasNext())
201
        {
203
        {
202
            1.5.0/docs/api/java/lang/Long.html">Long id = (1.5.0/docs/api/java/lang/Long.html">Long) iter.next();
204
            1.5.0/docs/api/java/lang/Long.html">Long id = (1.5.0/docs/api/java/lang/Long.html">Long) iter.next();
203
            CourseUnitContentsInfo cuInfo = checkDelete(id,session);
205
            CourseUnitContentsInfo cuInfo = checkDelete(id,session);
204
            courseUnitContentsInfos.add(cuInfo);
206
            courseUnitContentsInfos.add(cuInfo);
205
        }
207
        }
206
        return courseUnitContentsInfos;
208
        return courseUnitContentsInfos;
207
    }
209
    }
-
 
210
 
-
 
211
 
-
 
212
    public 1.5.0/docs/api/java/lang/Integer.html">Integer deleteCandidatesNoWarn(1.5.0/docs/api/java/lang/String.html">String importYear,UserSession session)
-
 
213
    {
-
 
214
        int count = 0;
-
 
215
        List<CourseUnitContentsInfo> courseUnitContentsInfos = loadDeleteCandidates(importYear,session);
-
 
216
        for(CourseUnitContentsInfo info: courseUnitContentsInfos)
-
 
217
        {
-
 
218
            if(info.isCanDelete() && info.getWarnings().size() == 0)
-
 
219
            {
-
 
220
                CourseUnitContentsInfo result = tryDelete(info.getCuv().getId(),session);
-
 
221
                if(result.deleted)
-
 
222
                    count++;
-
 
223
            }
-
 
224
        }
-
 
225
        return count;
-
 
226
    }
-
 
227
 
-
 
228
    public 1.5.0/docs/api/java/lang/Integer.html">Integer deleteCandidatesAll(1.5.0/docs/api/java/lang/String.html">String importYear,UserSession session)
-
 
229
    {
-
 
230
        int count = 0;
-
 
231
        List<CourseUnitContentsInfo> courseUnitContentsInfos = loadDeleteCandidates(importYear,session);
-
 
232
 
-
 
233
        for(CourseUnitContentsInfo info: courseUnitContentsInfos)
-
 
234
        {
-
 
235
            if(info.isCanDelete())
-
 
236
            {
-
 
237
                CourseUnitContentsInfo result = tryDelete(info.getCuv().getId(),session);
-
 
238
                if(result.deleted)
-
 
239
                    count++;
-
 
240
            }
-
 
241
        }
-
 
242
        return count;
-
 
243
    }
-
 
244
 
-
 
245
 
208
}
246
}
209
 
247