/** * Validate EIA template table * * @param eiaTemplate the EIA template table to be parsed * @return an array of Incompliances */ public static ArrayList<Incompliance> parseEIATemplateTable(EDFTable eiaTemplate) { ArrayList<Incompliance> eiaIncompliances = new ArrayList<Incompliance>(); final int errorSrcTypeIndex = Incompliance.index_incomp_src_eiatemplate; final String incomplianceType = Incompliance.typeOfErrorHeader[errorSrcTypeIndex]; Incompliance incomp; String description; boolean bASCII; String fileName = eiaTemplate.getMasterFile().getPath(); int row = 0, col; final int COL_INDEX_LOCAL_PATIENT_ID = 2; final int COL_INDEX_LOCAL_RECORDING_ID = 3; final int COL_INDEX_START_DATE = 4; /** * ********************************************************** 80 ascii : local patient * identification ********************************************************** */ col = 0; String partient_id = ((String) eiaTemplate.getModel().getValueAt(row, COL_INDEX_LOCAL_PATIENT_ID)); if (partient_id == null || partient_id.equals("")) { // [Partient_id](B.2) can be empty field } else { // [Partient_id](B.1) check for ascii bASCII = checkAsciiF(partient_id); if (!bASCII) { description = Incompliance.error_eia_ascii; incomp = new Incompliance(incomplianceType, description, fileName, row, col, errorSrcTypeIndex); eiaIncompliances.add(incomp); } } /** * ********************************************************** 80 ascii : local recording * identification ********************************************************** */ col = 1; String recording_id = ((String) eiaTemplate.getModel().getValueAt(row, COL_INDEX_LOCAL_RECORDING_ID)); if (recording_id == null || recording_id.equals("")) { // [Recording_id](C.2) can be empty field } else { // [Recording_id](C.1) check for ascii bASCII = checkAsciiF(recording_id); if (!bASCII) { description = Incompliance.error_eia_ascii; incomp = new Incompliance(incomplianceType, description, fileName, row, col, errorSrcTypeIndex); eiaIncompliances.add(incomp); } } /** * ********************************************************** 8 ascii : startdate of recording * (dd.mm.yy) ********************************************************** */ col = 2; String startdate = ((String) eiaTemplate.getModel().getValueAt(row, COL_INDEX_START_DATE)).trim(); if (startdate == null || startdate.equals("")) { // [Startdate](D.2) cannot be empty field description = Incompliance.error_eia_empty; incomp = new Incompliance(incomplianceType, description, fileName, row, col, errorSrcTypeIndex); eiaIncompliances.add(incomp); } else { // [Startdate](D.1) check for ascii bASCII = checkAsciiF(startdate); if (!bASCII) { description = Incompliance.error_eia_ascii; incomp = new Incompliance(incomplianceType, description, fileName, row, col, errorSrcTypeIndex); eiaIncompliances.add(incomp); } else { // [Startdate](D.4) separator between digits should be only �period� String[] items = startdate.split("\\."); if (items.length != 3) { description = Incompliance.error_eia_dateformat; incomp = new Incompliance( incomplianceType, description, fileName, row, col, errorSrcTypeIndex); eiaIncompliances.add(incomp); } else { // [Startdate](D.3) dd:00-31, mm:00-12, yy:00-99 try { int dd = Integer.parseInt(items[0]); int mm = Integer.parseInt(items[1]); int yy = Integer.parseInt(items[2]); if (dd >= 0 && dd <= 31 && mm >= 0 && mm <= 12 && yy >= 00 && yy <= 99) { // valid date format } else { description = Incompliance.error_eia_daterange; incomp = new Incompliance( incomplianceType, description, fileName, row, col, errorSrcTypeIndex); eiaIncompliances.add(incomp); } } catch (NumberFormatException e) { description = Incompliance.error_eia_daterange; incomp = new Incompliance( incomplianceType, description, fileName, row, col, errorSrcTypeIndex); eiaIncompliances.add(incomp); } } } } if (eiaIncompliances.size() > 0) { eiaTemplate.setEdfValid(false); } return eiaIncompliances; }