Package clips.administrator.register.writer

Source Code of clips.administrator.register.writer.WriterAbstract

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

package clips.administrator.register.writer;
import beans.report.register.RegisterBean;
import beans.report.register.RegisterData;
import cli_fmw.delegate.directory.complex.DirectoryKladr;
import cli_fmw.delegate.directory.complex.DirectoryKladrItem;
import cli_fmw.delegate.directory.complex.DirectoryKladrType;
import cli_fmw.delegate.directory.complex.DirectoryKladrTypeItem;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import cli_fmw.main.ClipsException;
import clips.administrator.register.ErrorList;
import clips.administrator.register.InfoFields;
import clips.administrator.register.LpuFields;
import clips.delegate.directory.ro.DirectoryLpuItem;
import clips.delegate.directory.simple.clientDocumentType.DirectoryDocumentType;
import clips.delegate.directory.simple.diagnosisEncounter.DirectoryDiagnosisEncounter;
import clips.delegate.directory.simple.diagnosisEncounter.DirectoryDiagnosisEncounterItem;
import clips.delegate.directory.simple.diseaseResult.DirectoryDiseaseResult;
import clips.delegate.directory.simple.diseaseResult.DirectoryDiseaseResultItem;
import clips.delegate.directory.simple.dvr.DirectoryDvr;
import clips.delegate.directory.simple.dvr.DirectoryDvrItem;
import clips.delegate.directory.simple.insurer.DirectoryInsurer;
import clips.delegate.directory.simple.insurer.DirectoryInsurerItem;
import clips.delegate.directory.simple.medicalAidType.DirectoryMedicalAidType;
import clips.delegate.directory.simple.medicalAidType.DirectoryMedicalAidTypeItem;
import clips.delegate.directory.simple.name.DirectoryName;
import clips.delegate.directory.simple.pathron.DirectoryPathron;
import clips.delegate.directory.simple.receptionType.DirectoryReceptionType;
import clips.delegate.directory.simple.receptionType.DirectoryReceptionTypeItem;
import clips.delegate.directory.simple.regionIdCode.DirectoryRegionIdCode;
import clips.delegate.directory.simple.socialStatus.DirectorySocialStatus;
import clips.delegate.directory.simple.surname.DirectorySurname;
import clips.delegate.directory.simple.visitingPurpose.DirectoryVisitingPurpose;
import clips.delegate.directory.simple.visitingPurpose.DirectoryVisitingPurposeItem;
import clips.dicom.utils.Pair;
import clips.login.UserInfo;
import clips.main.ClipsConfig;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.regex.Pattern;
import org.xBaseJ.micro.DBF;
import org.xBaseJ.micro.fields.DateField;
import org.xBaseJ.micro.fields.Field;
import org.xBaseJ.micro.xBaseJException;

/**
*
* @author vip
*/
public abstract class WriterAbstract {
    protected DBF lpuInfo;
    protected DBF regLpu;
    protected InfoFields inf;
    protected LpuFields lf;
    protected int count;
    protected Integer quickCount;
    protected DirectoryInsurer dirInsurer;

    abstract String getDirName();
    abstract boolean needWrite(RegisterData data);
    abstract int getIdsmo();
    abstract public String getSmoName() throws ClipsException;
    abstract public String getTitle();


    public void openLpuInfo(boolean delete) throws xBaseJException, IOException {
        if (lpuInfo == null) {
            ClipsConfig cfg = ClipsConfig.getInstance();
            File dir = new File(cfg.getRegisterExportPath(), "SEND");
            dir.mkdir();
            dir = new File(dir, getDirName());
            dir.mkdir();
            File dbfFile = new File(dir, "lpu_info.dbf");
            if (delete) {
                lpuInfo = new DBF(dbfFile.getAbsolutePath(), true, "cp866");
            } else {
                lpuInfo = new DBF(dbfFile.getAbsolutePath(), "cp866");
            }
        }
        lpuInfo.startTop();
    }

    public void createLpuInfo() throws xBaseJException, IOException, ClipsException {
        openLpuInfo(true);
        inf = new InfoFields();
        try {
            for (int i = 0; i < inf.getFields().length; i++) {
                Field f = inf.getFields()[i];
                lpuInfo.addField(f);
            }
        } catch (xBaseJException ex) {
            throw new ClipsException("Ошибка при чтении данных из файла " + lpuInfo.getName(), ex);
        }
    }

    public void closeLpuInfo() throws IOException {
        lpuInfo.close();
        lpuInfo = null;
    }

    public void fillLpuInfo(Calendar from, Calendar till) throws xBaseJException, IOException, ClipsException {
        try {
            DirectoryLpuItem lpu = UserInfo.get().getCollaborator().getLpu();
            inf.id_smo.put(getIdsmo());
            inf.id_sub_lpu.put(lpu.getLpuSubdivisionCode());
            inf.type.put(RegisterBean.TYPE);
            long ms = (from.getTimeInMillis() + till.getTimeInMillis()) / 2;
            GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance();
            gc.setTimeInMillis(ms);
            inf.year.put(gc.get(GregorianCalendar.YEAR));
            inf.month.put(till.get(GregorianCalendar.MONTH) + 1);
            inf.date_beg.put(from);
            inf.date_end.put(till);
            lpuInfo.write();
            closeLpuInfo();
        } catch (IOException ex) {
            closeLpuInfo();
            throw ex;
        } catch (ClipsException ex) {
            closeLpuInfo();
            throw ex;
        } catch (xBaseJException ex) {
            closeLpuInfo();
            throw ex;
        }
    }

    public Pair<Date, Date> getDates() throws xBaseJException, IOException {
        openLpuInfo(false);
        lpuInfo.read();
        Date date1 = ((DateField) lpuInfo.getField(InfoFields.DATE_BEG)).getCalendar().getTime();
        Date date2 = ((DateField) lpuInfo.getField(InfoFields.DATE_END)).getCalendar().getTime();
        closeLpuInfo();
        return new Pair<Date, Date>(date1, date2);
    }

    public Date getDateGenerated() {
        ClipsConfig cfg = ClipsConfig.getInstance();
        File dir = new File(cfg.getRegisterExportPath(), "SEND");
        dir.mkdir();
        dir = new File(dir, getDirName());
        dir.mkdir();
        File dbfFile = new File(dir, "reg_lpu.dbf");
        if (dbfFile.exists()) {
            Date date = new Date();
            date.setTime(dbfFile.lastModified());
            return date;
        } else {
            return null;
        }
    }

    public void openRegLpu(boolean delete) throws xBaseJException, IOException {
        if (regLpu == null) {
            ClipsConfig cfg = ClipsConfig.getInstance();
            File dir = new File(cfg.getRegisterExportPath(), "SEND");
            dir.mkdir();
            dir = new File(dir, getDirName());
            dir.mkdir();
            File dbfFile = new File(dir, "reg_lpu.dbf");
            if (delete) {
                regLpu = new DBF(dbfFile.getAbsolutePath(), true, "cp866");
            } else {
                regLpu = new DBF(dbfFile.getAbsolutePath(), "cp866");
            }
        }
        regLpu.startTop();
    }

    public void closeRegLpu() throws IOException {
        regLpu.close();
        regLpu = null;
    }

    public void createRegLpu() throws xBaseJException, IOException, ClipsException {
        openRegLpu(true);
        lf = new LpuFields();
        try {
            for (int i = 0; i < lf.getFields().length; i++) {
                Field f = lf.getFields()[i];
                regLpu.addField(f);
            }
        } catch (xBaseJException ex) {
            throw new ClipsException("Ошибка при чтении данных из файла " + regLpu.getName(), ex);
        }
    }



    public ErrorList fillRegLpu(List<RegisterData> list) throws xBaseJException, IOException, ClipsException {
        try {
            DirectorySurname dirSurname = DirectoryLocator.getDirectory(DirectorySurname.class);
            DirectoryName dirName = DirectoryLocator.getDirectory(DirectoryName.class);
            DirectoryPathron dirPatron = DirectoryLocator.getDirectory(DirectoryPathron.class);
            DirectoryReceptionType dirRecType = DirectoryLocator.getDirectory(DirectoryReceptionType.class);
            DirectorySocialStatus dirStatus = DirectoryLocator.getDirectory(DirectorySocialStatus.class);
            DirectoryDocumentType dirDocType = DirectoryLocator.getDirectory(DirectoryDocumentType.class);
            DirectoryRegionIdCode dirRegCode = DirectoryLocator.getDirectory(DirectoryRegionIdCode.class);
            dirInsurer = DirectoryLocator.getDirectory(DirectoryInsurer.class);
            DirectoryKladr dirKladr = DirectoryLocator.getDirectory(DirectoryKladr.class);
            DirectoryKladrType dirKladrType = DirectoryLocator.getDirectory(DirectoryKladrType.class);
            DirectoryDiseaseResult dirDisResult = DirectoryLocator.getDirectory(DirectoryDiseaseResult.class);
            DirectoryDvr dirDvr = DirectoryLocator.getDirectory(DirectoryDvr.class);
            DirectoryDiagnosisEncounter dirDiagEnc = DirectoryLocator.getDirectory(DirectoryDiagnosisEncounter.class);
            DirectoryMedicalAidType dirVmu = DirectoryLocator.getDirectory(DirectoryMedicalAidType.class);
            DirectoryVisitingPurpose dirVisPurp = DirectoryLocator.getDirectory(DirectoryVisitingPurpose.class);

            ErrorList target = new ErrorList();
            count = 0;
            for (RegisterData data : list) {
                if (!needWrite(data)) {
                    continue;
                }
                int id = data.id;

                //ID
                lf.id.put(id, target, data.uuid);
                //System.out.println("Запись посещения id = " + id);

                //HISTORY
                if (data.history.trim().isEmpty()) {
                    target.add(id, "Номер мед. карты не указан", ErrorList.CLIENT_ERROR);
                }
                lf.history.put(id, target, data.history);

                //FAM
                if (data.fam == 0) {
                    target.add(id, "Фамилия не указана", ErrorList.CLIENT_ERROR);
                    lf.fam.put(id, target, "");
                } else {
                    String surname = dirSurname.getItemFromID(data.fam).getTitle();
                    if (surname.trim().isEmpty()) {
                        target.add(id, "Фамилия пустая", ErrorList.CLIENT_ERROR);
                    }
                    lf.fam.put(id, target, surname);
                }

                //NAM
                if (data.nam == 0) {
                    target.add(id, "Имя не указано", ErrorList.CLIENT_ERROR);
                    lf.nam.put(id, target, "");
                } else {
                    String name = dirName.getItemFromID(data.nam).getTitle();
                    if (name.trim().isEmpty()) {
                        target.add(id, "Имя пустое", ErrorList.CLIENT_ERROR);
                    }
                    lf.nam.put(id, target, name);
                }

                //FNAM
                if (data.fnam == 0) {
                    target.add(id, "Отчество не указано", ErrorList.CLIENT_ERROR);
                    lf.fnam.put(id, target, "-");
                } else {
                    String patron = dirPatron.getItemFromID(data.fnam).getTitle();
                    if (patron.trim().isEmpty()) {
                        target.add(id, "Отчество пустое", ErrorList.CLIENT_ERROR);
                        patron = "-";
                    }
                    lf.fnam.put(id, target, patron);
                }

                //POL_SER
                lf.pol_ser.put(id, target, data.pol_ser);

                //POL_NUM
                if (data.pol_num.equals("0000000000000000")) {
                    target.add(id, "Полис фиктивный", ErrorList.CLIENT_ERROR);
                }
                lf.pol_num.put(id, target, data.pol_num);

                //BDAY
                if (data.bday == null) {
                    target.add(id, "Дата рождения не указана", ErrorList.CLIENT_ERROR);
                    lf.bday.put("");
                } else {
                    Calendar cal = Calendar.getInstance();
                    cal.setTime(data.bday);
                    lf.bday.put(cal);
                }

                //SEX
                if (data.sex == 0) {
                    target.add(id, "Пол не указан", ErrorList.CLIENT_ERROR);
                }
                lf.sex.put(data.sex);

                //STATUS
                if (data.status == 0) {
                    target.add(id, "Социальный статус не указан", ErrorList.CLIENT_ERROR);
                    lf.status.put(0);
                } else {
                    try {
                        String extKey = dirStatus.getItemFromID(data.status).getExtKey();
                        lf.status.put(Integer.parseInt(extKey));
                    } catch (NumberFormatException ex) {
                        target.add(id, "Код социального статуса должен быть числом", ErrorList.CLIENT_ERROR);
                        lf.status.put(0);
                    }

                }

                //PRED
                lf.pred.put(data.pred);

                //P_STATUS
                if (data.p_status == 0) {
                    lf.p_status.put("");
                } else {
                    lf.p_status.put(data.p_status);
                }

                //P_FAM
                if (data.p_fam == 0) {
                    lf.p_fam.put(id, target, "");
                } else {
                    lf.p_fam.put(id, target, dirSurname.getItemFromID(data.p_fam).getTitle());
                }

                //P_NAM
                if (data.p_nam == 0) {
                    lf.p_nam.put(id, target, "");
                } else {
                    lf.p_nam.put(id, target, dirName.getItemFromID(data.p_nam).getTitle());
                }

                //P_FNAM
                if (data.p_fnam == 0) {
                    lf.p_fnam.put(id, target, "");
                } else {
                    lf.p_fnam.put(id, target, dirPatron.getItemFromID(data.p_fnam).getTitle());
                }

                //C_OKSM
                if (data.c_oksm.trim().isEmpty()) {
                    target.add(id, "Гражданство не указано", ErrorList.CLIENT_ERROR);
                }
                lf.oksm.put(id, target, data.c_oksm);

                //DOC_TYPE
                if (data.type_doc == 0) {
                    lf.doc_type.put(0);
                } else {
                    try {
                        String extKey = dirDocType.getItemFromID(data.type_doc).getExtKey();
                        lf.doc_type.put(Integer.parseInt(extKey));
                    } catch (NumberFormatException ex) {
                        target.add(id, "Код социального статуса должен быть числом", ErrorList.CLIENT_ERROR);
                        lf.doc_type.put(0);
                    }
                }

                //DOC_SER
                lf.doc_ser.put(id, target, data.doc_ser);

                //DOC_NUM
                lf.doc_num.put(id, target, data.doc_num);

                //INS_ID_AR
                if (data.ins_id_ar == 0) {
                    lf.ins_id_ar.put("0");
                } else {
                    try {
                        String extKey = dirRegCode.getItemFromID(data.ins_id_ar).getExtKey();
                        lf.ins_id_ar.put(Integer.parseInt(extKey));
                    } catch (NumberFormatException ex) {
                        target.add(id, "ИД территории страховой организации должен быть числом", ErrorList.CLIENT_ERROR);
                        lf.ins_id_ar.put("");
                    }
                }

                //INS_ORG
                String arExtKey = dirRegCode.getItemFromID(data.ins_id_ar).getExtKey();
                DirectoryInsurerItem insurer = dirInsurer.getItemFromID(data.id_ins_org);
                if (!arExtKey.equals(RegisterBean.REGION_CODE) && !insurer.getExtKey().isEmpty()) {
                    lf.ins_org.put(id, target, "");
                } else if (data.pol_num.isEmpty() && insurer.getExtKey() != null && !insurer.getExtKey().isEmpty()) {
                    lf.ins_org.put(id, target, "");
                } else {
                    lf.ins_org.put(id, target, insurer.getTitle());
                }

                if (!arExtKey.equals(RegisterBean.REGION_CODE)
                        && lf.ins_org.get().trim().isEmpty()) {
                    target.add(id, "Для инотерриториального больного не указан филиал ФОМС", ErrorList.CLIENT_ERROR);
                }

                //INS_ID
                try {
                    String extKey = insurer.getExtKey();
                    if (!arExtKey.equals(RegisterBean.REGION_CODE) && !insurer.getExtKey().isEmpty()) {
                        lf.ins_id.put("");
                    } else if (data.pol_num.isEmpty() && extKey != null && !extKey.isEmpty()) {
                        lf.ins_id.put("0");
                    } else if (extKey == null || extKey.isEmpty()) {
                        lf.ins_id.put("");
                    } else {
                        lf.ins_id.put(Integer.parseInt(extKey));
                    }
                } catch (NumberFormatException ex) {
                    target.add(id, "ИД страховой организации должен быть числом", ErrorList.CLIENT_ERROR);
                    lf.ins_id.put("");
                }

                //KLADR
                lf.kladr.put(id, target, data.kladr);

                //AREA
                DirectoryKladrItem area = dirKladr.getItemFromID(data.area);
                if (area != null) {
                    lf.area.put(id, target, area.getTitle());
                } else {
                    lf.area.put(id, target, "");
                }

                //REGION
                lf.region.put(id, target, data.region);

                //REG_CITY
                if (data.region.trim().toUpperCase().equals("УФА") && data.reg_city.isEmpty()) {
                    target.add(id, "Неполный адрес: отсутствует район г. Уфа", ErrorList.CLIENT_ERROR);
                }
                lf.reg_city.put(id, target, data.reg_city);

                //ITEM
                lf.item.put(id, target, data.item);

                //TYPE_ITEM
                DirectoryKladrTypeItem typeItem = dirKladrType.getItemFromID(data.type_item);
                if (typeItem == null) {
                    lf.type_item.put("");
                } else {
                    try {
                        String extKey = typeItem.getExtKey();
                        if (extKey == null || extKey.isEmpty()) {
                            lf.type_item.put("");
                        } else {
                            lf.type_item.put(Integer.parseInt(extKey));
                        }
                    } catch (NumberFormatException ex) {
                        target.add(id, "Код типа населенного пункта должен быть числом", ErrorList.CLIENT_ERROR);
                        lf.type_item.put("");
                    }
                }

                //TYPE_UL
                if (data.type_ul == 0) {
                    lf.type_ul.put("");
                } else {
                    lf.type_ul.put(data.type_ul);
                }

                //STREET
                lf.street.put(id, target, data.street);

                //HOUSE
                try {
                    if (data.house.isEmpty()) {
                        lf.house.put("");
                    } else {
                        lf.house.put(Integer.parseInt(data.house));
                    }
                } catch (NumberFormatException ex) {
                    target.add(id, "Номер дома должен быть числом", ErrorList.CLIENT_ERROR);
                    lf.house.put("");
                }

                //LITER
                if (data.liter.length() > 1) {
                    try {
                        Integer.parseInt(data.liter);
                    } catch (NumberFormatException ex) {
                        target.add(id, "Буква дома имеет неправильный формат : " + data.liter, ErrorList.CLIENT_ERROR);
                    }
                }
                lf.liter.put(id, target, data.liter);

                //FLAT
                if (data.flat.equals("0")) {
                    lf.flat.put(id, target, "");
                } else {
                    lf.flat.put(id, target, data.flat);
                }

                //WORK
                if (data.is_ext != 0) {
                    lf.work.put(id, target, data.work);
                } else {
                    lf.work.put(id, target, "");
                }

                //DATE_BEGIN
                Calendar cal = Calendar.getInstance();
                cal.setTime(data.date_begin);
                lf.date_begin.put(cal);
                //DATE_END
                lf.date_end.put("");
                //MES
                if (!Pattern.matches("[0-9]{6}",data.mes)) {
                    target.add(id, "Неправильный код посещения");
                }
                lf.mes.put(id, target, data.mes);

                //UKL
                //Для поликлиник не заполняется
                lf.ukl.put("");

                //OUT
                if (data.out == 0) {
                    target.add(id, "Не указан исход лечения");
                    lf.out.put("");
                } else {
                    try {
                        DirectoryDiseaseResultItem item = dirDisResult.getItemFromID(data.out);
                        lf.out.put(Integer.parseInt(item.getExtKey()));
                    } catch (NumberFormatException ex) {
                        target.add(id, "Исход лечения должен быть числом");
                        lf.out.put("");
                    }
                }

                //FLAG
                lf.flag.put(id, target, "");

                //MKB
                if (data.mkb.isEmpty()) {
                    target.add(id, "Отсутствует диагноз");
                }
                lf.mkb.put(id, target, data.mkb);

                //MKB_S
                lf.mkb_s.put(id, target, data.mkb_s);

                //INN
                lf.inn.put(id, target, data.inn);

                //MU
                lf.mu.put(data.c_mu);

                //KMU
                lf.kmu.put(data.k_mu / 100.0);

                //SS
                lf.ss.put(id, target, data.ss);

                //SSD
                lf.ssd.put(id, target, data.ssd);

                //VR_SPEC
                if (data.vr_spec == 0) {
                    target.add(id, "Не указан код специальности врача");
                    lf.vr_spec.put("");
                } else {
                    try {
                        DirectoryReceptionTypeItem item = dirRecType.getItemFromID(data.vr_spec);
                        lf.vr_spec.put(Integer.parseInt(item.getExtKey()));
                    } catch (NumberFormatException ex) {
                        target.add(id, "Код специальности врача должен быть числом");
                        lf.vr_spec.put("");
                    }
                }

                //VR_DOL
                if (data.vr_dol == 0) {
                    //target.add(id, "Не указан код должности врача");
                    lf.vr_dol.put(0);
                } else {
                    try {
                        DirectoryDvrItem item = dirDvr.getItemFromID(data.vr_dol);
                        lf.vr_dol.put(Integer.parseInt(item.getExtKey()));
                    } catch (NumberFormatException ex) {
                        target.add(id, "Код должности врача должен быть числом");
                        lf.vr_dol.put("");
                    }
                }

                //QZ
                if (data.qz == 0) {
                    target.add(id, "Не указан код характера заболевания");
                    lf.qz.put("0");
                } else {
                    try {
                        DirectoryDiagnosisEncounterItem item = dirDiagEnc.getItemFromID(data.qz);
                        int qz = Integer.parseInt(item.getExtKey());
                        /* Не знаю почему, но у них в отчетах характер заболевания
                         * на 1 меньше чем в базе.
                         * К примеру код 1 - здоров в отчет идет как 0
                         * (у них это в ТАЛ2008. У АММовской проги вообще не заполняется)
                         */
                        lf.qz.put(qz - 1);
                    } catch (NumberFormatException ex) {
                        target.add(id, "Код характера заболевания должен быть числом");
                        lf.qz.put("");
                    }
                }

                //VMU
                if (data.vmu == 0) {
                    target.add(id, "Не указан вид первичной медико-санитарной помощи");
                    lf.vmu.put("");
                } else {
                    try {
                        DirectoryMedicalAidTypeItem item = dirVmu.getItemFromID(data.vmu);
                        lf.vmu.put(Integer.parseInt(item.getExtKey()));
                    } catch (NumberFormatException ex) {
                        target.add(id, "Вид первичной медико-санитарной помощи должен быть числом");
                        lf.vmu.put("");
                    }
                }

                //D_LISTIN
                if (data.d_listin == null) {
                    lf.d_listin.put("");
                } else {
                    cal.setTime(data.d_listin);
                    lf.d_listin.put(cal);
                }

                //D_LISTOUT
                if (data.d_listout == null) {
                    lf.d_listout.put("");
                } else {
                    cal.setTime(data.d_listout);
                    lf.d_listout.put(cal);
                }

                //DF_CODES
                //только для диспансеризации
                lf.df_codes.put(id, target, data.df_codes);

                //KOD_IF
                lf.code_if.put(data.cod_if);

                //RESD
                //только для диспансеризации
                if (data.resd == 0) {
                    lf.resd.put("");
                } else {
                    lf.resd.put(data.resd);
                }

                //CODE_GOAL
                if (data.code_goal == 0) {
                    //target.add(id, "Не указан вид первичной медико-санитарной помощи");
                    lf.code_goal.put(id, target, "");
                } else {
                    DirectoryVisitingPurposeItem item = dirVisPurp.getItemFromID(data.code_goal);
                    lf.code_goal.put(id, target, item.getExtKey());
                }

                //OKVED
                //только для диспансеризации
                lf.okved.put(id, target, data.okved);

                //DAT_N
                if (data.dat_n == null) {
                    lf.dat_n.put("");
                } else {
                    Calendar caln = Calendar.getInstance();
                    caln.setTime(data.dat_n);
                    lf.dat_n.put(caln);
                }
                //DAT_E
                if (data.dat_e == null) {
                    lf.dat_e.put("");
                } else {
                    Calendar cale = Calendar.getInstance();
                    cale.setTime(data.dat_e);
                    lf.dat_e.put(cale);
                }

                count ++;
                regLpu.write();
            }
            closeRegLpu();
            return target;
        } catch (IOException ex) {
            closeRegLpu();
            throw ex;
        } catch (ClipsException ex) {
            closeRegLpu();
            throw ex;
        } catch (xBaseJException ex) {
            closeRegLpu();
            throw ex;
        }
    }

    @Override
    public String toString() {
        if (quickCount == null) {
            try {
                quickCount = getRowCount();
                closeRegLpu();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        return getTitle() + " (" + quickCount + " записей)";
    }

    public int getRowCount() {
        try {
            openRegLpu(false);
            return regLpu.getRecordCount();
        } catch (xBaseJException ex) {
            ex.printStackTrace();
            return 0;
        } catch (IOException ex) {
            ex.printStackTrace();
            return 0;
        }
    }

    public DBF read(int row) throws xBaseJException, IOException {
        openRegLpu(false);
        if (row == 0) {
            regLpu.startTop();
        } else {
            regLpu.gotoRecord(row);
        }
        regLpu.read();
        return regLpu;
    }

}
TOP

Related Classes of clips.administrator.register.writer.WriterAbstract

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.