Project

General

Profile

« Previous | Next » 

Revision 57637

1. Add IndicatorDAO.java & MongoDBIndicatorDAO.java.
2. StakeholderDAO.java & MongoDBStakeholderDAO.java: Add methods 'findById()' and 'delete()'.
3. Category.java & SubCategory.java & Topic.java: Add fields 'id' and 'isDefault' and getters/setters for 'isDefault'.
4. Indicator.java: Add field 'isDefault' and getters/setters.
5. IndicatorPath.java: Change 'image' to 'other' in IndicatorPathType enum.
6. StakeholderController.java: Add methods: 'deleteStakeholder()' (by id), 'deleteTopic()', 'deleteCategory()', 'deleteSubCategory()', 'reorderIndicators()'.

View differences:

StakeholderController.java
119 119

  
120 120
        Stakeholder stakeholderFull = new Stakeholder(stakeholder);
121 121

  
122
        //this.minimizeIndicatorsForStakeholder(stakeholder);
123 122
        List<Topic> topicsFull = new ArrayList<>();
124 123

  
125 124
        for (Topic topic: stakeholder.getTopics()) {
......
183 182
        return stakeholderFull;
184 183
    }
185 184

  
186
    @RequestMapping(value = "/{stakeholder}/{topic}/{category}/{subcategory}/indicator/{id}", method = RequestMethod.DELETE)
185
    @RequestMapping(value = "/{stakeholder}", method = RequestMethod.DELETE)
186
    public boolean deleteStakeholder(@PathVariable("stakeholder") String stakeholder) {
187
        Stakeholder _stakeholder = stakeholderDAO.findById(stakeholder);
188
        if(_stakeholder != null) {
189
            for (Topic topic : _stakeholder.getTopics()) {
190
                for (Category category : topic.getCategories()) {
191
                    for (SubCategory<String> subcategory : category.getSubCategories()) {
192
                        for(String chartId : subcategory.getCharts()) {
193
                            indicatorDAO.delete(chartId);
194
                        }
195
                        for(String numberId : subcategory.getNumbers()) {
196
                            indicatorDAO.delete(numberId);
197
                        }
198

  
199
                        subcategory.setCharts(null);
200
                        subcategory.setNumbers(null);
201
                    }
202
                    category.setSubCategories(null);
203
                }
204
                topic.setCategories(null);
205
            }
206

  
207
        } else {
208
            return false;
209
            // EXCEPTION - Stakeholder not found
210
        }
211

  
212
        stakeholderDAO.delete(_stakeholder.getId());
213
        _stakeholder = null;
214
        return true;
215
    }
216

  
217
    @RequestMapping(value = "/{stakeholder}/{topic}", method = RequestMethod.DELETE)
218
    public Stakeholder deleteTopic(@PathVariable("stakeholder") String stakeholder,
219
                                   @PathVariable("topic") String topic) {
220

  
221
        Stakeholder _stakeholder = stakeholderDAO.findByAlias(stakeholder);
222
        if(_stakeholder != null) {
223
            boolean topicFound = false;
224

  
225
            Iterator<Topic> topicIterator = _stakeholder.getTopics().iterator();
226
            while (topicIterator.hasNext()) {
227
                Topic _topic = topicIterator.next();
228
                if(_topic.getAlias().equals(topic)) {
229
                    for (Category category : _topic.getCategories()) {
230
                        for (SubCategory<String> subcategory : category.getSubCategories()) {
231
                            for(String chartId : subcategory.getCharts()) {
232
                                indicatorDAO.delete(chartId);
233
                            }
234
                            for(String numberId : subcategory.getNumbers()) {
235
                                indicatorDAO.delete(numberId);
236
                            }
237

  
238
                            subcategory.setCharts(null);
239
                            subcategory.setNumbers(null);
240
                        }
241
                        category.setSubCategories(null);
242
                    }
243
                    _topic.setCategories(null);
244
                    topicIterator.remove();
245
                    stakeholderDAO.save(_stakeholder);
246

  
247
                    topicFound = true;
248
                    break;
249
                }
250
            }
251
            if(!topicFound) {
252
                // EXCEPTION - Topic not found
253
            }
254
        } else {
255
            // EXCEPTION - Stakeholder not found
256
        }
257
        this.setIndicatorsForStakeholder(_stakeholder);
258

  
259
        return _stakeholder;
260
    }
261

  
262
    @RequestMapping(value = "/{stakeholder}/{topic}/{category}", method = RequestMethod.DELETE)
263
    public Stakeholder deleteCategory(@PathVariable("stakeholder") String stakeholder,
264
                                      @PathVariable("topic") String topic,
265
                                      @PathVariable("category") String category) {
266

  
267
        Stakeholder _stakeholder = stakeholderDAO.findByAlias(stakeholder);
268
        if(_stakeholder != null) {
269
            Topic _topic = _stakeholder.getTopics().stream()
270
                    .filter(current_topic -> current_topic.getAlias().equals(topic))
271
                    .findFirst()
272
                    .orElse(null);
273
            if(_topic != null) {
274
                boolean categoryFound = false;
275

  
276
                Iterator<Category> categoryIterator = _topic.getCategories().iterator();
277
                while (categoryIterator.hasNext()) {
278
                    Category _category = categoryIterator.next();
279
                    if (_category.getAlias().equals(category)) {
280
                        for (SubCategory<String> subcategory : _category.getSubCategories()) {
281
                            for(String chartId : subcategory.getCharts()) {
282
                                indicatorDAO.delete(chartId);
283
                            }
284
                            for(String numberId : subcategory.getNumbers()) {
285
                                indicatorDAO.delete(numberId);
286
                            }
287

  
288
                            subcategory.setCharts(null);
289
                            subcategory.setNumbers(null);
290
                        }
291
                        _category.setSubCategories(null);
292
                        categoryIterator.remove();
293
                        stakeholderDAO.save(_stakeholder);
294

  
295
                        categoryFound = true;
296
                        break;
297
                    }
298
                }
299
                if(!categoryFound) {
300
                    // EXCEPTION - Category not found
301
                }
302
            } else {
303
                // EXCEPTION - Topic not found
304
            }
305
        } else {
306
            // EXCEPTION - Stakeholder not found
307
        }
308
        this.setIndicatorsForStakeholder(_stakeholder);
309

  
310
        return _stakeholder;
311
    }
312

  
313
    @RequestMapping(value = "/{stakeholder}/{topic}/{category}/{subcategory}", method = RequestMethod.DELETE)
314
    public Stakeholder deleteSubCategory(@PathVariable("stakeholder") String stakeholder,
315
                                         @PathVariable("topic") String topic,
316
                                         @PathVariable("category") String category,
317
                                         @PathVariable("subcategory") String subcategory) {
318

  
319
        Stakeholder _stakeholder = stakeholderDAO.findByAlias(stakeholder);
320
        if(_stakeholder != null) {
321
            Topic _topic = _stakeholder.getTopics().stream()
322
                    .filter(current_topic -> current_topic.getAlias().equals(topic))
323
                    .findFirst()
324
                    .orElse(null);
325
            if(_topic != null) {
326
                Category _category = _topic.getCategories().stream()
327
                        .filter(current_category -> current_category.getAlias().equals(category))
328
                        .findFirst()
329
                        .orElse(null);
330
                if(_category != null) {
331
                    boolean subCategoryFound = false;
332

  
333
                    Iterator<SubCategory> subCategoryIterator = _category.getSubCategories().iterator();
334
                    while (subCategoryIterator.hasNext()) {
335
                        SubCategory<String> _subCategory = subCategoryIterator.next();
336
                        if (_subCategory.getAlias().equals(subcategory)) {
337

  
338
                            for(String chartId : _subCategory.getCharts()) {
339
                                indicatorDAO.delete(chartId);
340
                            }
341
                            for(String numberId : _subCategory.getNumbers()) {
342
                                indicatorDAO.delete(numberId);
343
                            }
344

  
345
                            _subCategory.setCharts(null);
346
                            _subCategory.setNumbers(null);
347

  
348
                            subCategoryIterator.remove();
349
                            stakeholderDAO.save(_stakeholder);
350

  
351
                            subCategoryFound = true;
352
                            break;
353

  
354
                        }
355
                    }
356
                    if (!subCategoryFound) {
357
                        // EXCEPTION - SubCategory not found
358
                    }
359
                } else {
360
                    // EXCEPTION - Category not found
361
                }
362
            } else {
363
                // EXCEPTION - Topic not found
364
            }
365
        } else {
366
            // EXCEPTION - Stakeholder not found
367
        }
368
        this.setIndicatorsForStakeholder(_stakeholder);
369

  
370
        return _stakeholder;
371
    }
372

  
373
    @RequestMapping(value = "/{stakeholder}/{topic}/{category}/{subcategory}/{id}", method = RequestMethod.DELETE)
187 374
    public boolean deleteIndicator(@PathVariable("stakeholder") String stakeholder,
188 375
                            @PathVariable("topic") String topic,
189 376
                            @PathVariable("category") String category,
......
344 531
        return indicatorSaved;
345 532
    }
346 533

  
534
    @RequestMapping(value = "/{stakeholder}/{topic}/{category}/{subcategory}/indicators/reorder", method = RequestMethod.POST)
535
    public List<Indicator> reorderIndicators(String stakeholder, String topic,
536
                                          String category, String subcategory,
537
                                          List<Indicator> indicators, String type) {
538
        Stakeholder _stakeholder = stakeholderDAO.findByAlias(stakeholder);
539
        if(_stakeholder != null) {
540
            Topic _topic = _stakeholder.getTopics().stream()
541
                    .filter(current_topic -> current_topic.getAlias().equals(topic))
542
                    .findFirst()
543
                    .orElse(null);
544
            if(_topic != null) {
545
                Category _category = _topic.getCategories().stream()
546
                        .filter(current_category -> current_category.getAlias().equals(category))
547
                        .findFirst()
548
                        .orElse(null);
549
                if(_category != null) {
550
                    SubCategory _subCategory = _category.getSubCategories().stream()
551
                            .filter(current_subCategory -> current_subCategory.getAlias().equals(subcategory))
552
                            .findFirst()
553
                            .orElse(null);
554
                    if(_subCategory != null) {
555
                        List<String> _indicators = null;
556
                        if(type.equals("chart")) {
557
                            _indicators = _subCategory.getCharts();
558
                        } else if(type.equals("number")) {
559
                            _indicators = _subCategory.getNumbers();
560
                        }
347 561

  
562
                        _indicators.clear();
563
                        for(Indicator indicator : indicators) {
564
                            _indicators.add(indicator.getId());
565
                        }
566
                        stakeholderDAO.save(_stakeholder);
567
                    } else {
568
                        // EXCEPTION - Subcategory not found
569
                    }
570
                } else {
571
                    // EXCEPTION - Vategory not found
572
                }
573
            } else {
574
                // EXCEPTION - Topic not found
575
            }
576
        } else {
577
            // EXCEPTION - Stakeholder not found
578
        }
579

  
580
        return indicators;
581
    }
582

  
583

  
584

  
348 585
    // The following are not supposed to be used
349 586

  
350 587
    // should i delete indicators that were in the list but they are not in the new list?

Also available in: Unified diff