Package beans.report.selectors.disease

Source Code of beans.report.selectors.disease.DeseaseDataSelector

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package beans.report.selectors.disease;

import beans.report.selectors.baseSelectors.AbstractLineSelector;
import beans.report.selectors.data.DateRange;
import beans.report.selectors.disease.DiseaseTableLineData;
import beans.service.search.SerRenFilter;
import beans.directory.mkb10.entity.Mkb10;
import beans.service.ServiceRender;
import framework.generic.ClipsServerException;
import java.util.ArrayList;
import javax.persistence.EntityManager;

/**
*
* @author finder
* @param <DataLineType>
* @param <DataSetType>
*/
public abstract class DeseaseDataSelector<DataLineType extends DiseaseTableLineData, DataSetType> extends AbstractLineSelector<DiseaseLine, DataLineType, DataSetType> {
  protected static final int      OFF_RES_MKB = 0;
   
  public DeseaseDataSelector(EntityManager manager, ArrayList<DiseaseLine> lines) {
    super(manager, lines);
  }
 
  protected Mkb10 getMkbForItem(DataSetType item){
    return (Mkb10)((Object[])item)[OFF_RES_MKB];
  }

  abstract protected boolean isMale(DataSetType itm);
 
  protected abstract void addDataItem(DataSetType ds, DataLineType data);
 
  /*
   protected boolean isParentMkbForItem(Object ds, int mkbID){
    Mkb10      dsMkb = getMkbForItem(ds);
    return isParent(dsMkb, mkbID);
  }
  */
 
  protected boolean isIncludedToLine(Mkb10 dsMkb, DiseaseLine line){
    for (int id : line.getRoLineItems()) {
      if (dsMkb.isParent(id)){
        return true;
      }
    }
    return false;
  }
 
  protected boolean isExcludedFromLine(Mkb10 dsMkb, DiseaseLine line){
    int[]      exitems = line.getExcludedItems();
    if (exitems != null){
      for (int exid: exitems){
        if (dsMkb.isParent(exid)){
          return true;
        }
      }
    }
    return false;
  }
     
  protected boolean isValidForLine(DataSetType ds, DiseaseLine line){
    Mkb10      dsMkb = getMkbForItem(ds);
    if (dsMkb == null){
      throw new IllegalStateException();
    }
    if (isIncludedToLine(dsMkb, line)) {
      if (!isExcludedFromLine(dsMkb, line)) {
        return true;
      }
    }
    return false;
 

  protected Object[] getLineExtraData(DataSetType data){
    return (Object[]) data;
  }

  protected void buildLineData(DiseaseLine line, DataLineType data){
    for (DataSetType ds: getDataSet()) {
      if (isValidForLine(ds, line)){
        if (!filtersPresent() || isAcceptedByFilters(getLineExtraData(ds))){
          addDataItem(ds, data);
        }
      }
    }
  }
 
  protected String buildMkbString(int[] itemMkbIds) throws ClipsServerException{
    boolean            first = true;
    StringBuffer        itemCodes = null;
    for (int mkb10id : itemMkbIds) {
      Mkb10      mkb10 = findEntity(Mkb10.class, mkb10id);
      if (first) {
        first = false;
        itemCodes = new StringBuffer(mkb10.getCode());
      }
      else {
        itemCodes.append(", ");
        itemCodes.append(mkb10.getCode());
      }
    }
    return itemCodes == null? "": itemCodes.toString();
  }
 
  protected abstract DataLineType createDataLine()
 
  @Override
  protected void buildLineHeader(DataLineType target, DiseaseLine line, int sexLineIdx, int realLineIdx, int partthrows ClipsServerException {
    super.buildLineHeader(target, line, sexLineIdx, realLineIdx, part);
    if (line.getAlternativeMkbCode() != null) {
      target.setMkbCode(line.getAlternativeMkbCode());
    }
    else {
      target.setMkbCode(buildMkbString(line.getItems()));
    }
  }
   
  @Override
  protected DataLineType buildTableLine(DiseaseLine line, int sexLineIdx, int realLineIdx, int part) throws ClipsServerException{
    DataLineType        target = createDataLine();
    buildLineHeader(target, line, sexLineIdx, realLineIdx, part);
    buildLineData(line, target);
    return target;
  }

}
TOP

Related Classes of beans.report.selectors.disease.DeseaseDataSelector

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.