ref #8679 move AggregationMode to ConfiguratorBase
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / description / DistributionAggregationConfiguration.java
1 /**
2 * Copyright (C) 2019 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.cdm.api.service.description;
10
11 import java.util.List;
12 import java.util.UUID;
13
14 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
15 import eu.etaxonomy.cdm.filter.LogicFilter;
16 import eu.etaxonomy.cdm.filter.TaxonNodeFilter;
17 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
18 import eu.etaxonomy.cdm.model.location.NamedArea;
19 import eu.etaxonomy.cdm.model.name.Rank;
20 import eu.etaxonomy.cdm.model.term.TermCollection;
21 import eu.etaxonomy.cdm.model.term.TermNode;
22 import eu.etaxonomy.cdm.model.term.TermTree;
23
24 /**
25 * @author a.mueller
26 * @since 05.11.2019
27 */
28 public class DistributionAggregationConfiguration
29 extends DescriptionAggregationConfigurationBase<DistributionAggregation> {
30
31 private static final long serialVersionUID = 2542246141660930545L;
32
33 private AggregationMode aggregationMode;
34
35 private List<NamedArea> superAreas;
36
37 private TermCollection<PresenceAbsenceTerm, TermNode> statusOrder;
38
39 // **************************************** FACTORY ************************************/
40
41 public static DistributionAggregationConfiguration NewInstance(AggregationMode aggregationMode, List<NamedArea> superAreas,
42 TaxonNodeFilter filter, IProgressMonitor monitor){
43 return new DistributionAggregationConfiguration(aggregationMode, superAreas, filter, monitor);
44 }
45
46 public static DistributionAggregationConfiguration NewInstance(AggregationMode aggregationMode, List<NamedArea> superAreas,
47 TaxonNodeFilter filter, TermTree<PresenceAbsenceTerm> statusOrder, IProgressMonitor monitor){
48 DistributionAggregationConfiguration result = new DistributionAggregationConfiguration(aggregationMode, superAreas, filter, monitor);
49 result.setStatusOrder(statusOrder);
50 return result;
51 }
52
53
54 // ************************ CONSTRUCTOR *****************************/
55
56 private DistributionAggregationConfiguration(AggregationMode aggregationMode, List<NamedArea> superAreas,
57 TaxonNodeFilter filter, IProgressMonitor monitor) {
58 super(filter, monitor);
59 this.aggregationMode = aggregationMode;
60 this.superAreas = superAreas;
61 }
62
63 // ******************** METHOD **************************************/
64
65 @Override
66 public DistributionAggregation getTaskInstance() {
67 return new DistributionAggregation();
68 }
69
70 // ******************* GETTER / SETTER ****************************/
71
72 public AggregationMode getAggregationMode() {
73 return aggregationMode;
74 }
75 public void setAggregationMode(AggregationMode aggregationMode) {
76 this.aggregationMode = aggregationMode;
77 }
78
79 public List<NamedArea> getSuperAreas() {
80 return superAreas;
81 }
82 public void setSuperAreas(List<NamedArea> superAreas) {
83 this.superAreas = superAreas;
84 }
85
86 public UUID getLowerRank() {
87 LogicFilter<Rank> rankMin = getTaxonNodeFilter().getRankMin();
88 return rankMin == null ? null: rankMin.getUuid();
89 }
90
91 public UUID getUpperRank() {
92 LogicFilter<Rank> rankMax = getTaxonNodeFilter().getRankMax();
93 return rankMax == null ? null: rankMax.getUuid();
94 }
95
96 public TermCollection<PresenceAbsenceTerm, TermNode> getStatusOrder() {
97 return statusOrder;
98 }
99 public void setStatusOrder(TermCollection<PresenceAbsenceTerm, TermNode> statusOrder) {
100 this.statusOrder = statusOrder;
101 }
102 }