хранить более одного массива разного размера в источнике данных - PullRequest
0 голосов
/ 02 ноября 2019

Я создаю levey-jennings-report Если у меня есть массив с размером, меньшим, чем размер остальных массивов, я получаю arrayoutofboundsexception, и если я заполняю массивы, чтобы иметь такой же размер,значения, которые он не выдает, однако он отображает значения, которых я хочу, чтобы их там не было

Попытка заполнения массива до одинакового размера каждого массива в источнике данных

public class Implementation implements JRDataSource{

static List<Records> items = new ArrayList<Records>();

private static final  Integer[] lotNum = {33301141,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143,33301143 };
private static final Integer[] level= {1,3,3,3,3,3,33,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2};
private static final double[] mean= {4.49,457.04,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49,4.49};
private static final double[] SD= {0.30,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58,22.58};
private static final double[] CV= {6.79,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,4.94,3.40,3.50};
private static final Integer[] N= {54,53,54,66,77,88,87,65,45,34,34,23,45,67,78,98,43,23,12,34,67,87,43,23,56,12,33,45,21,22,32};


private static final double[] mean2= {3.92,465.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95,5.95};
private static final double[] SD2= {0.35,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11,31.11};
private static final double[] CV2= {9.04,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68,6.68};
private static final Integer[] N2= {333,340,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40};

  private static final String[] department = {"GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL","GENERAL"}; 
  private static final String[] instruementArray = {"ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR","ARCHITECT cI4100-I1SR"};
  private static final String[] test = {"Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL","Human Chronic Gonadotropin (BhCG) {7K78}(mIU/mL"};
  private static final String[] method = {"NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE","NONE"};
  private static final String[] reagentArray = {"ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT","ABBOTT"};

  private static final String[] month = {"January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015","January, 2015"};
  private static final String[] shift = {"All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All","All"};
  private static final String[] qcProduct = {"MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)","MULTICHEM IA PLUS(05P76-10)"};
  private static final Double[] chartmean = {3.57,3.88,4.18,4.49,4.79,5.10,5.40,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79,4.79};
  private static final Double[] chartsd =   {-3.0,2.0,-1.0,0.0,1.0,2.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0};
  private static final Integer[] daysinmonth = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
  private static final Double[] controlvalue = {4.49,4.19,5.09,3.89,5.39,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59,3.59};
  private static final Double[] cYvalue = {0.00,4.08,4.47,4.18,4.46,4.45,4.52,4.81,4.21,4.52,4.50,4.76,4.48,4.51,4.50,0.00,4.78,4.80,4.79,4.43,4.48,4.51,4.53,4.49,4.90,4.48,4.20,4.49,3.90,4.50,4.48};
  private static final Double[] dvalue = {0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30,0.30};
  private static final Double[] sd3value = {-3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0};
  private static final Double[] sd2value = {-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0};
  private static final Double[] sd1value = {-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0};
  private static final Double[] sdP2value = {2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0};


  private int counter = -1;




    /**
     * Variables to store the number of fields, and their names, in the report
     */
    private HashMap<String, Integer> fieldsNumber = new HashMap<>();
    Map<String,List<Integer>> multiMap = new HashMap<String,List<Integer>>();
    /**
     * Method used to know if there are records to read.
     */
    private int lastFieldsAdded = 0;

public Implementation(List <Records> items) {
    // TODO Auto-generated constructor stub
    super();
    Implementation.items = items;

}




@Override
public Object getFieldValue(JRField jrField) throws JRException {
    Integer fieldIndex;
    //fieldIndex=items.get(counter).getN().length;
    int c=0;
    Records rec = items.get(c);

    //items.iterator().equals(jrField.getName())
    if (fieldsNumber.containsKey(jrField.getName())) {
        fieldIndex = fieldsNumber.get(jrField.getName());

    }
    else {
        fieldsNumber.put(jrField.getName(), lastFieldsAdded);
        fieldIndex = lastFieldsAdded;
        lastFieldsAdded ++;
    }
    if (fieldIndex == 0) return rec.getLotnum()[counter];//Field_1
    else if (fieldIndex == 1) return rec.getLevel()[counter];//Field_2
    else if (fieldIndex == 2) return rec.getMean()[counter];//Field_3
    else if (fieldIndex == 3) return rec.getSd()[counter];//Field_4
    else if (fieldIndex == 4) return rec.getCv()[counter];//Field_5
    else if (fieldIndex == 5) return rec.getN()[counter];//Field_6

    else if (fieldIndex == 6) return rec.getMean2()[counter];//Field_7
    else if (fieldIndex == 7) return rec.getSd2()[counter];//Field_8
    else if (fieldIndex == 8) return rec.getCv2()[counter];//Field_9
    else if (fieldIndex == 9) return rec.getN2()[counter];//field_10

    else if (fieldIndex == 10) return rec.getDepartment()[counter];//field_11
    else if (fieldIndex == 11) return rec.getInstrument()[counter];//field_12
    else if (fieldIndex == 12) return rec.getTest()[counter];//field_13
    else if (fieldIndex == 13) return rec.getMethod()[counter];//field_14
    else if (fieldIndex == 14) return rec.getReagent()[counter];//field_15
    else if (fieldIndex == 15) return rec.getMonth()[counter];//field_16
    else if (fieldIndex == 16) return rec.getShift()[counter];//field_17
    else if (fieldIndex == 17) return rec.getQcproduct()[counter];//field_18
    else if (fieldIndex == 18)return rec.getDaysinmonth()[counter];//field_19
    else if (fieldIndex == 19)return rec.getChartmean()[counter];//field_20
    if (fieldIndex == 20)return rec.getChartmean()[counter];//field_21
    if(fieldIndex ==21)return rec.getControlvalue()[counter];//field_22
    if(fieldIndex ==22)return rec.getcYvalue()[counter];//field_22
    if(fieldIndex == 23)return dvalue[counter];
    if(fieldIndex == 24)return sd3value[counter];
    if(fieldIndex == 25)return sd2value[counter];
    if(fieldIndex == 26)return sd1value[counter];
    if(fieldIndex == 27)return sdP2value[counter];

    return "";
}


/**
 * Method used to know if there are records to read.
 */
@Override
public boolean next() throws JRException {
    if (counter< daysinmonth.length -1) {
        counter++;
        return true;

    }
    return false;
}

/**
 * Return an instance of the class that implements the custom data adapter.
 */
public static JRDataSource getDataSource(){

    Records rec=new Records();
    rec.setLotnum(lotNum);
    rec.setLevel(level);
    rec.setMean(mean);
    rec.setSd(SD);
    rec.setCv(CV);
    rec.setN(N);
    rec.setMean2(mean2);
    rec.setSd2(SD2);
    rec.setCv2(CV2);
    rec.setN2(N2);
    rec.setDepartment(department);
    rec.setInstrument(instruementArray);
    rec.setTest(test);
    rec.setMethod(method);
    rec.setReagent(reagentArray);
    rec.setMonth(month);
    rec.setShift(shift);
    rec.setQcproduct(qcProduct);
    rec.setDaysinmonth(daysinmonth);
    rec.setChartsd(chartsd);
    rec.setChartmean(chartmean);
    rec.setControlvalue(controlvalue);
    rec.setcYvalue(cYvalue);
    items.add(rec);
    return new Implementation(items);
}

}

когда это сделано таким образом, есть линия, идущая от 2 по оси x, потому что используемая переменная является cyvalue для графика, я хочу, чтобы он не помещал 0,00 на графике, как мне выполнитьэто или есть лучший способ реализовать класс, чтобы избежать исключения исключений и иметь массивы с конкретными желаемыми значениями?

щелкните, чтобы увидеть изображение диаграммы

...