public static function parse($filePath, $folderSeq) { $gagalFolderSeq = array(33, 40, 35); //$content = file("D:/dat.lsi"); //$folderSeq = 33; $content = file($filePath); $numLines = count($content); $lineRow = 0; for ($i = 0; $i < $numLines; $i++) { if (trim($content[$i]) == "") { } else { $lineRow = $i; $i = $numLines; } } $arrayCount = 0; $WQDDataArray = new ArrayObject(); $numLines = count($content); for ($i = $lineRow; $i < $numLines; $i++) { $WQDData = new WQDData(); $line = trim($content[$i]); $line = rtrim($line, ','); $lineVals = explode(',', $line); $totalChannels = count($lineVals) - 2; $totalChannels = $totalChannels / 2; $reportNo = $lineVals[0]; if ($reportNo != "1") { continue; } $dateStr = $lineVals[1]; $dateStr = preg_replace('~\\x{00a0}~u', ' ', $dateStr); $dateStr = trim(html_entity_decode($dateStr)); if (in_array($folderSeq, $gagalFolderSeq)) { $dateStr = ParserStackLsi::convertDate($dateStr); } //$dateStr = ParserStackLsi::convertDate($dateStr); $dated = new DateTime($dateStr); $channels = array(); $varLocation = 2; for ($channelNo = 1; $channelNo <= $totalChannels; $channelNo++) { $channelValue = $lineVals[$varLocation]; $channelStatus = $lineVals[$varLocation + 1]; if ($channelStatus == "1" || $channelStatus == "Ok") { $channelStatus = "128"; } if ($channelStatus == "Abnormal") { $channelStatus = "0"; } $channelInfo = array(); $channelInfo['value'] = round($channelValue, 2); $channelInfo['status'] = $channelStatus; $channels[$channelNo] = $channelInfo; $varLocation++; $varLocation++; } $WQDData->setReportNo($reportNo); $WQDData->setFolderSeq($folderSeq); $WQDData->setDataDate(DateUtils::getSQLDateFromDateObj($dated)); $WQDData->setChannels($channels); $WQDData->setTotalChannels($totalChannels); $WQDData->setChecksum(0); $WQDDataArray[$arrayCount] = $WQDData; $arrayCount = $arrayCount + 1; } return $WQDDataArray; }
} if (strtoupper($fileType) == "WQD" || strtoupper($fileType) == "TXT" || strtoupper($fileType) == "WAD" || strtoupper($fileType) == "LSI") { echo "\n" . date("Y-m-d H:i:s") . " Parsing " . $fileType . " file " . $value; $WQDDataArray = null; try { if (strtoupper($fileType) == "TXT" && $folder->getSeq() == 20) { $WQDDataArray = ParserAppcbHyd::parse($value, $folder->getSeq()); } elseif (strtoupper($fileType) == "TXT" && $folder->getSeq() == 9) { $WQDDataArray = ParserDuplicateAQMS::parse($value, $folder->getSeq()); } elseif (strtoupper($fileType) == "WAD" && $folder->getLocationSeq() == 10) { echo "\n" . "Parsing WAD of APPCB file"; //this case of APPCB exponential files $WQDDataArray = ParserWADAPPCB::parse($value, $folder->getSeq()); } elseif (strtoupper($fileType) == "LSI") { //this case of AMBUJA lsi files for stack folders $WQDDataArray = ParserStackLsi::parse($value, $folder->getSeq()); } elseif (strtoupper($fileType) == "TXT" && ($folder->getSeq() == 48 || $folder->getSeq() == 49)) { //this case of Bhoomi instruments first parser $WQDDataArray = ParserBhoomiFiles::parse($value, $folder->getSeq()); } else { $WQDDataArray = ParserWQD::parseWQD($value, $folder->getSeq()); } if ($WQDDataArray != null) { if ($folder->getStationType() == "stack" || $folder->getStationType() == "effluent") { $WDSD = WQDStackDataStore::getInstance(); $WDSD->saveSyncedData($WQDDataArray); echo "\n" . date("Y-m-d H:i:s") . " Stack File Saved Successfully"; } else { $WDD = WQDDataDataStore::getInstance(); $WDD->SaveList($WQDDataArray); echo "\n" . date("Y-m-d H:i:s") . " AQMS File Saved Successfully";