src/main/java/de/uapcore/lightpit/entities/VersionStatistics.java

Sun, 24 May 2020 15:30:43 +0200

author
Mike Becker <universe@uap-core.de>
date
Sun, 24 May 2020 15:30:43 +0200
changeset 80
27a25f32048e
permissions
-rw-r--r--

adds project overview page

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright 2018 Mike Becker. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *   1. Redistributions of source code must retain the above copyright
 *      notice, this list of conditions and the following disclaimer.
 *
 *   2. Redistributions in binary form must reproduce the above copyright
 *      notice, this list of conditions and the following disclaimer in the
 *      documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 */
package de.uapcore.lightpit.entities;

public class VersionStatistics {

    private final Version version;
    private int[][] issueCount;

    private int[] rowTotals = null;
    private int[] columnTotals = null;
    private int total = -1;

    public VersionStatistics(Version version) {
        this.version = version;
        issueCount = new int[IssueCategory.values().length][IssueStatus.values().length];
    }

    public Version getVersion() {
        return version;
    }

    public void setIssueCount(IssueCategory category, IssueStatus status, int count) {
        issueCount[category.ordinal()][status.ordinal()] = count;
        total = -1;
        rowTotals = columnTotals = null;
    }

    public int[][] getIssueCount() {
        return issueCount;
    }

    public int[] getRowTotals() {
        if (rowTotals != null) return rowTotals;
        final int cn = IssueCategory.values().length;
        final int sn = IssueStatus.values().length;
        final var totals = new int[cn];
        for (int i = 0 ; i < cn ; i++) {
            totals[i] = 0;
            for (int j = 0 ; j < sn ; j++) {
                totals[i] += issueCount[i][j];
            }
        }
        return rowTotals = totals;
    }

    public int[] getColumnTotals() {
        if (columnTotals != null) return columnTotals;
        final int cn = IssueCategory.values().length;
        final int sn = IssueStatus.values().length;
        final var totals = new int[sn];
        for (int i = 0 ; i < sn ; i++) {
            totals[i] = 0;
            for (int j = 0 ; j < cn ; j++) {
                totals[i] += issueCount[j][i];
            }
        }
        return columnTotals = totals;
    }

    public int getTotal() {
        if (this.total >= 0) {
            return this.total;
        }
        int total = 0;
        final int cn = IssueCategory.values().length;
        final int sn = IssueStatus.values().length;
        for (int i = 0 ; i < sn ; i++) {
            for (int j = 0 ; j < cn ; j++) {
                total += issueCount[j][i];
            }
        }
        return this.total = total;
    }
}

mercurial