dirWeightUnit = DirectoryLocator.getDirectory(DirectoryDrugWeightUnit.class);
dirFarmGroup = DirectoryLocator.getDirectory(DirectoryDrugFarmGroup.class);
dirSection = DirectoryLocator.getDirectory(DirectoryDloDrugSection.class);
File file = new File(cfg.getLastDBFImportPath(),getFilename());
DBF dbf = createDBF(file);
HashMap<Col, Field> fields = new HashMap<Col, Field>();
try {
for (int i = 0; i < Col.values().length; i++) {
Col col = Col.values()[i];
fields.put(col, dbf.getField(col.toString()));
}
} catch (xBaseJException ex) {
throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName(), ex);
}
GregorianCalendar gc1 = new GregorianCalendar();
int recordCount = dbf.getRecordCount();
for (int i = 0; i < recordCount; i++) {
try {
dbf.read();
if ((i%1000) == 0) {
System.out.println("Обновление пациентов : " + i/((float)recordCount)*100 + "% (" + i + ") запись");
GregorianCalendar gc2 = new GregorianCalendar();
long mc = gc2.getTimeInMillis() - gc1.getTimeInMillis();
System.out.println("Work time: " + mc + " ms");
}
if (dbf.deleted()) {
continue;
}
DloDrugListDetails det = new DloDrugListDetails();
det.code = Integer.parseInt(fields.get(Col.NOMK_LS).get().trim());
det.title = fields.get(Col.NAME_MED).get().trim();
det.tradeNameId = dirTradeName.getItemFromExtKey(fields.get(Col.C_TRN).get().trim()).getID();
det.mnnId = dirMNN.getItemFromExtKey(fields.get(Col.C_MNN).get().trim()).getID();
det.dosageFormId = dirDosageForm.getItemFromExtKey(fields.get(Col.C_LF).get().trim()).getID();
det.dosage = fields.get(Col.D_LS).get().trim();
det.dosageUnitId = dirDosageUnit.getItemFromExtKey(fields.get(Col.C_DLS).get().trim()).getID();
det.dosageQuantity = Integer.parseInt(fields.get(Col.N_DOZA).get().trim());
det.volume = Double.parseDouble(fields.get(Col.V_LF).get().trim());
det.volumeUnitId = dirVolumeUnit.getItemFromExtKey(fields.get(Col.C_VLF).get().trim()).getID();
det.weight = Double.parseDouble(fields.get(Col.M_LF).get().trim());
det.weightUnitId = dirWeightUnit.getItemFromExtKey(fields.get(Col.C_MLF).get().trim()).getID();
det.packNumber = Integer.parseInt(fields.get(Col.N_FV).get().trim());
det.producer = fields.get(Col.NAME_FCT).get().trim();
det.producerCountry = fields.get(Col.NAME_CNF).get().trim();
det.packer = fields.get(Col.NAME_PCK).get().trim();
det.packerCountry = fields.get(Col.NAME_CNP).get().trim();
det.completeness = fields.get(Col.COMPL).get().trim();
det.farmGroupId = dirFarmGroup.getItemFromExtKey(fields.get(Col.C_FARG).get().trim()).getID();
int flag = Integer.parseInt(fields.get(Col.FLAG_KEK).get().trim());
if (flag == 0) {
det.kekRequired = false;
}
else {
det.kekRequired = true;
}
flag = Integer.parseInt(fields.get(Col.FLAG1).get().trim());
if (flag == 0) {
det.vital = false;
}
else {
det.vital = true;
}
flag = Integer.parseInt(fields.get(Col.FLAG2).get().trim());
if (flag == 0) {
det.forbidden = false;
}
else {
det.forbidden = true;
}
det.dateIn = null;
try {
Calendar nsuBegin = ((DateField)fields.get(Col.DATE_B)).getCalendar();
if (Comparator.dataEqual(nullDate, nsuBegin.getTime())) {
det.dateIn = null;
}
else {
det.dateIn = nsuBegin.getTime();
}
} catch (NumberFormatException ex) {
System.out.println("Предупреждение : Дата вкючения в перечень некорректна " + dbf.getName() + " code=(" + det.code + ")");
out.println("Предупреждение : Дата включения в перечень некорректна " + dbf.getName() + " code=(" + det.code + ")");
}
det.dateOut = null;
try {
Calendar nsuBegin = ((DateField)fields.get(Col.DATE_E)).getCalendar();
if (Comparator.dataEqual(nullDate, nsuBegin.getTime())) {
det.dateOut = null;
}
else {
det.dateOut = nsuBegin.getTime();
}
} catch (NumberFormatException ex) {
System.out.println("Предупреждение : Дата исключения из перечня некорректна " + dbf.getName() + " code=(" + det.code + ")");
out.println("Предупреждение : Дата исключения из перечня некорректна " + dbf.getName() + " code=(" + det.code + ")");
}
det.msg = fields.get(Col.MSG_TEXT).get().trim();
try {
det.sectionId = dirSection.getItemByCode(Integer.parseInt(fields.get(Col.C_RLP).get().trim())).getID();
} catch (ClipsException ex) {
det.sectionId = 0;
System.out.println("Предупреждение: Не найден раздел перечня " + dbf.getName() + " code=(" + det.code + ")");
out.println("Предупреждение: Не найден раздел перечня " + dbf.getName() + " code=(" + det.code + ")");
}
DirectoryDrugListItem item = new DirectoryDrugListItem(det);
drugList.getItems().append(item);
} catch (IOException ex) {
closeDBF(dbf);
throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName() + " (строка " + i + ")", ex);
} catch (xBaseJException ex) {
closeDBF(dbf);
throw new ClipsException("Ошибка при чтении данных из файла " + dbf.getName() + " (строка " + i + ")", ex);
}
}
}