package com.revolsys.record.io.format.moep; import java.io.File; import java.io.IOException; import java.sql.Date; import com.revolsys.io.FileUtil; import com.revolsys.io.Reader; import com.revolsys.record.ArrayRecord; import com.revolsys.record.Record; import com.revolsys.record.io.RecordDirectoryReader; import com.revolsys.record.schema.RecordDefinition; import com.revolsys.record.schema.RecordDefinitionFactory; import com.revolsys.spring.resource.FileSystemResource; import com.revolsys.spring.resource.Resource; import com.revolsys.util.Dates; public class MoepDirectoryReader extends RecordDirectoryReader implements RecordDefinitionFactory { private Date integrationDate; private String revisionKey; private String specificationsRelease; private Date submissionDate; public MoepDirectoryReader() { setFileExtensions("bin"); } public MoepDirectoryReader(final File directory) throws IOException { setFileExtensions("bin"); setDirectory(directory); } public Date getIntegrationDate() { return this.integrationDate; } @Override public RecordDefinition getRecordDefinition(final String typePath) { if (typePath.equals(MoepConstants.TYPE_NAME)) { return MoepConstants.RECORD_DEFINITION; } else { return null; } } public String getRevisionKey() { return this.revisionKey; } public String getSpecificationsRelease() { return this.specificationsRelease; } public Date getSubmissionDate() { return this.submissionDate; } /** * Construct a new new {@link MoepBinaryReader} to read the file. * * @param file The file to read. * @return The reader for the file. * @throws IOException If an I/O error occurs. */ @Override protected Reader<Record> newReader(final Resource resource) { return new MoepBinaryReader(this, resource, ArrayRecord.FACTORY); } @Override public void setDirectory(final File directory) { super.setDirectory(directory); final String name = FileUtil.getFileName(directory); final File file = new File(directory, name + "s.bin"); final Reader<Record> supDataReader = newReader(new FileSystemResource(file)); for (final Record supData : supDataReader) { final String featureCode = supData.getValue(MoepConstants.FEATURE_CODE); if (featureCode.equals("KN00020000")) { final String text = supData.getValue(MoepConstants.TEXT); final String[] versionFields = text.split(" "); final String dateString = versionFields[2]; this.submissionDate = new Date(Dates.getDate("yyyyMMdd", dateString).getTime()); this.revisionKey = versionFields[3]; this.integrationDate = new Date(Dates.getDate("yyyyMMdd", versionFields[4]).getTime()); this.specificationsRelease = versionFields[5]; } } } }