~stian-sandvold/dhis2/AnalyticsByUser

« back to all changes in this revision

Viewing changes to dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTable.java

  • Committer: Stian Sandvold
  • Date: 2016-08-03 09:05:19 UTC
  • mfrom: (23568.1.32 dhis2)
  • Revision ID: stian.sandvold@gmail.com-20160803090519-sw34m18dzycv2amz
merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
29
 */
30
30
 
31
 
import static org.hisp.dhis.common.DimensionalObject.CATEGORYOPTIONCOMBO_DIM_ID;
32
 
import static org.hisp.dhis.common.DimensionalObject.DATA_X_DIM_ID;
33
 
import static org.hisp.dhis.common.DimensionalObject.ORGUNIT_DIM_ID;
34
 
import static org.hisp.dhis.common.DimensionalObject.PERIOD_DIM_ID;
35
 
 
36
 
import java.util.ArrayList;
37
 
import java.util.Arrays;
38
 
import java.util.Date;
39
 
import java.util.HashMap;
40
 
import java.util.List;
41
 
import java.util.Map;
42
 
 
 
31
import com.fasterxml.jackson.annotation.JsonIgnore;
 
32
import com.fasterxml.jackson.annotation.JsonProperty;
 
33
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 
34
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 
35
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
43
36
import org.apache.commons.lang3.StringUtils;
44
37
import org.hisp.dhis.analytics.AnalyticsMetaDataKey;
45
38
import org.hisp.dhis.common.BaseAnalyticalObject;
57
50
import org.hisp.dhis.common.IdentifiableObjectUtils;
58
51
import org.hisp.dhis.common.MergeMode;
59
52
import org.hisp.dhis.common.ReportingRate;
60
 
import org.hisp.dhis.common.view.DetailedView;
61
 
import org.hisp.dhis.common.view.DimensionalView;
62
 
import org.hisp.dhis.common.view.ExportView;
63
53
import org.hisp.dhis.dataelement.DataElement;
64
54
import org.hisp.dhis.dataelement.DataElementCategoryCombo;
65
55
import org.hisp.dhis.i18n.I18nFormat;
70
60
import org.hisp.dhis.period.RelativePeriods;
71
61
import org.hisp.dhis.user.User;
72
62
 
73
 
import com.fasterxml.jackson.annotation.JsonIgnore;
74
 
import com.fasterxml.jackson.annotation.JsonProperty;
75
 
import com.fasterxml.jackson.annotation.JsonView;
76
 
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
77
 
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
78
 
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 
63
import java.util.ArrayList;
 
64
import java.util.Arrays;
 
65
import java.util.Date;
 
66
import java.util.HashMap;
 
67
import java.util.List;
 
68
import java.util.Map;
 
69
 
 
70
import static org.hisp.dhis.common.DimensionalObject.*;
79
71
 
80
72
/**
81
73
 * @author Lars Helge Overland
411
403
    public boolean isDimensional()
412
404
    {
413
405
        return !getDataElements().isEmpty() && (
414
 
            columnDimensions.contains( CATEGORYOPTIONCOMBO_DIM_ID ) || rowDimensions.contains( CATEGORYOPTIONCOMBO_DIM_ID ) );
 
406
            columnDimensions.contains( CATEGORYOPTIONCOMBO_DIM_ID ) || rowDimensions.contains( CATEGORYOPTIONCOMBO_DIM_ID ));
415
407
    }
416
408
 
417
409
    /**
424
416
 
425
417
        for ( DimensionalItemObject object : objects )
426
418
        {
427
 
            builder.append( object != null ? ( object.getDisplayProperty( displayProperty ) + SPACE ) : EMPTY );
 
419
            builder.append( object != null ? (object.getDisplayProperty( displayProperty ) + SPACE) : EMPTY );
428
420
        }
429
421
 
430
422
        return builder.length() > 0 ? builder.substring( 0, builder.lastIndexOf( SPACE ) ) : TOTAL_COLUMN_PRETTY_NAME;
450
442
            }
451
443
            else
452
444
            {
453
 
                buffer.append( object != null ? ( object.getShortName() + SEPARATOR ) : EMPTY );
 
445
                buffer.append( object != null ? (object.getShortName() + SEPARATOR) : EMPTY );
454
446
            }
455
447
        }
456
448
 
527
519
     * Generates a grid for this report table based on the given aggregate value
528
520
     * map.
529
521
     *
530
 
     * @param grid the grid, should be empty and not null.
531
 
     * @param valueMap the mapping of identifiers to aggregate values.
 
522
     * @param grid            the grid, should be empty and not null.
 
523
     * @param valueMap        the mapping of identifiers to aggregate values.
532
524
     * @param displayProperty the display property to use for meta data.
533
 
     * @param paramColumns whether to include report parameter columns.
 
525
     * @param paramColumns    whether to include report parameter columns.
534
526
     * @return a grid.
535
527
     */
536
528
    @SuppressWarnings( "unchecked" )
671
663
 
672
664
        if ( showHierarchy && rowDimensions.contains( ORGUNIT_DIM_ID ) && grid.hasMetaDataKey( AnalyticsMetaDataKey.ORG_UNIT_NAME_HIERARCHY.getKey() ) )
673
665
        {
674
 
            int ouIdIndex = ( rowDimensions.indexOf( ORGUNIT_DIM_ID ) * 4 ); // Org unit name position
 
666
            int ouIdIndex = (rowDimensions.indexOf( ORGUNIT_DIM_ID ) * 4); // Org unit name position
675
667
            int ouNameIndex = ouIdIndex + 1;
676
668
            Map<Object, Object> hierarchyNameMap = (Map<Object, Object>) grid.getMetaData().get( AnalyticsMetaDataKey.ORG_UNIT_NAME_HIERARCHY.getKey() );
677
669
            grid.substituteMetaData( ouIdIndex, ouNameIndex, hierarchyNameMap );
737
729
    }
738
730
 
739
731
    @JsonProperty
740
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
741
732
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
742
733
    public boolean isRegression()
743
734
    {
750
741
    }
751
742
 
752
743
    @JsonProperty
753
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
754
744
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
755
745
    public boolean isCumulative()
756
746
    {
763
753
    }
764
754
 
765
755
    @JsonProperty
766
 
    @JsonView( { DetailedView.class, ExportView.class } )
767
756
    @JacksonXmlElementWrapper( localName = "columnDimensions", namespace = DxfNamespaces.DXF_2_0 )
768
757
    @JacksonXmlProperty( localName = "columnDimension", namespace = DxfNamespaces.DXF_2_0 )
769
758
    public List<String> getColumnDimensions()
777
766
    }
778
767
 
779
768
    @JsonProperty
780
 
    @JsonView( { DetailedView.class, ExportView.class } )
781
769
    @JacksonXmlElementWrapper( localName = "rowDimensions", namespace = DxfNamespaces.DXF_2_0 )
782
770
    @JacksonXmlProperty( localName = "rowDimension", namespace = DxfNamespaces.DXF_2_0 )
783
771
    public List<String> getRowDimensions()
791
779
    }
792
780
 
793
781
    @JsonProperty
794
 
    @JsonView( { DetailedView.class, ExportView.class } )
795
782
    @JacksonXmlElementWrapper( localName = "filterDimensions", namespace = DxfNamespaces.DXF_2_0 )
796
783
    @JacksonXmlProperty( localName = "filterDimension", namespace = DxfNamespaces.DXF_2_0 )
797
784
    public List<String> getFilterDimensions()
805
792
    }
806
793
 
807
794
    @JsonProperty
808
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
809
795
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
810
796
    public ReportParams getReportParams()
811
797
    {
819
805
 
820
806
    @Override
821
807
    @JsonProperty
822
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
823
808
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
824
809
    public int getSortOrder()
825
810
    {
834
819
 
835
820
    @Override
836
821
    @JsonProperty
837
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
838
822
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
839
823
    public int getTopLimit()
840
824
    {
848
832
    }
849
833
 
850
834
    @JsonProperty
851
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
852
835
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
853
836
    public boolean isRowTotals()
854
837
    {
861
844
    }
862
845
 
863
846
    @JsonProperty
864
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
865
847
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
866
848
    public boolean isColTotals()
867
849
    {
874
856
    }
875
857
 
876
858
    @JsonProperty
877
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
878
859
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
879
860
    public boolean isRowSubTotals()
880
861
    {
887
868
    }
888
869
 
889
870
    @JsonProperty
890
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
891
871
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
892
872
    public boolean isColSubTotals()
893
873
    {
900
880
    }
901
881
 
902
882
    @JsonProperty
903
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
904
883
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
905
884
    public boolean isHideEmptyRows()
906
885
    {
914
893
    }
915
894
 
916
895
    @JsonProperty
917
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
918
896
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
919
897
    public DisplayDensity getDisplayDensity()
920
898
    {
927
905
    }
928
906
 
929
907
    @JsonProperty
930
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
931
908
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
932
909
    public FontSize getFontSize()
933
910
    {
940
917
    }
941
918
 
942
919
    @JsonProperty
943
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
944
920
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
945
921
    public LegendSet getLegendSet()
946
922
    {
953
929
    }
954
930
 
955
931
    @JsonProperty
956
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
957
932
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
958
933
    public boolean isShowHierarchy()
959
934
    {
967
942
 
968
943
 
969
944
    @JsonProperty
970
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
971
945
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
972
946
    public boolean isShowDimensionLabels()
973
947
    {
980
954
    }
981
955
 
982
956
    @JsonProperty
983
 
    @JsonView( { DetailedView.class, ExportView.class, DimensionalView.class } )
984
957
    @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
985
958
    public boolean isSkipRounding()
986
959
    {
996
969
    // Get- and set-methods for transient properties
997
970
    // -------------------------------------------------------------------------
998
971
 
999
 
        @JsonIgnore
 
972
    @JsonIgnore
1000
973
    public String getReportingPeriodName()
1001
974
    {
1002
975
        return reportingPeriodName;