diff --git a/.gitignore b/.gitignore index 6240411..129d624 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ *.iml .idea target +/.checkstyle +/.classpath +/.project +/.settings \ No newline at end of file diff --git a/pom.xml b/pom.xml index 136d2e6..5ad4c81 100644 --- a/pom.xml +++ b/pom.xml @@ -3,8 +3,8 @@ 4.0.0 com.epam parso - 2.0 - jar + 2.1.0-SNAPSHOT + bundle parso Parso is a lightweight Java library designed to read SAS7BDAT datasets. The Parso interfaces are analogous to libraries designed to read table-storing files, for example, CSVReader library. @@ -89,6 +89,26 @@ + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.10 + + + set-osgi-version + package + + parse-version + + + + + org.apache.maven.plugins maven-source-plugin @@ -102,6 +122,18 @@ + + + + 2 + ${project.name} + ${groupId}.${artifactId}.source + ${organization.name} + ${parsedVersion.osgiVersion} + ${groupId}.${artifactId};version=${parsedVersion.osgiVersion};roots:="." + + + org.sonatype.plugins @@ -135,6 +167,22 @@ + + org.apache.felix + maven-bundle-plugin + 3.0.1 + true + + + com.epam.parso + com.epam.parso.impl.* + + + lazy + OSGi-INF/component.xml + + + diff --git a/src/main/java/com/epam/parso/CSVDataWriter.java b/src/main/java/com/epam/parso/CSVDataWriter.java index b57808c..6b36efb 100644 --- a/src/main/java/com/epam/parso/CSVDataWriter.java +++ b/src/main/java/com/epam/parso/CSVDataWriter.java @@ -21,6 +21,7 @@ /** * Interface for exporting data from sas7bdat file to csv. + * @since 2.1 */ public interface CSVDataWriter { /** diff --git a/src/main/java/com/epam/parso/CSVMetadataWriter.java b/src/main/java/com/epam/parso/CSVMetadataWriter.java index 30b3caa..4aca86f 100644 --- a/src/main/java/com/epam/parso/CSVMetadataWriter.java +++ b/src/main/java/com/epam/parso/CSVMetadataWriter.java @@ -21,6 +21,7 @@ /** * Interface for exporting metadata from sas7bdat file to csv. + * @since 2.1 */ public interface CSVMetadataWriter { /** diff --git a/src/main/java/com/epam/parso/Column.java b/src/main/java/com/epam/parso/Column.java index 3742d2a..63ea644 100644 --- a/src/main/java/com/epam/parso/Column.java +++ b/src/main/java/com/epam/parso/Column.java @@ -18,6 +18,7 @@ /** * A class to store column metadata. + * @since 2.1 */ public class Column { /** diff --git a/src/main/java/com/epam/parso/SasFileReader.java b/src/main/java/com/epam/parso/SasFileReader.java index a06eedd..4bdf7f0 100644 --- a/src/main/java/com/epam/parso/SasFileReader.java +++ b/src/main/java/com/epam/parso/SasFileReader.java @@ -21,6 +21,7 @@ /** * Main interface for working with library. + * @since 2.1 */ public interface SasFileReader { /** diff --git a/src/main/java/com/epam/parso/SasFileReaderFactory.java b/src/main/java/com/epam/parso/SasFileReaderFactory.java new file mode 100644 index 0000000..9569d3f --- /dev/null +++ b/src/main/java/com/epam/parso/SasFileReaderFactory.java @@ -0,0 +1,42 @@ +package com.epam.parso; + +import java.io.InputStream; + +/** + * Factory for creating {@link SasFileReader}s using {@link InputStream}s. + * + * @author Gabor Bakos + * @since 2.1 + */ +public interface SasFileReaderFactory { + /** + * Creates a new {@link SasFileReader} using {@code stream}. + * + * @param stream + * an input stream which should contain a correct sas7bdat file. + * @return An {@link SasFileReader} instance. + */ + SasFileReader create(InputStream stream); + + /** + * Creates a new {@link SasFileReader} using {@code stream}. + * + * @param stream + * an input stream which should contain a correct sas7bdat file. + * @param encoding + * the string containing the encoding to use in strings output + * @return An {@link SasFileReader} instance. + */ + SasFileReader create(InputStream stream, String encoding); + + /** + * Creates a new {@link SasFileReader} using {@code stream}. + * + * @param stream + * an input stream which should contain a correct sas7bdat file. + * @param byteOutput + * the flag of data output in binary or string format + * @return An {@link SasFileReader} instance. + */ + SasFileReader create(InputStream stream, Boolean byteOutput); +} diff --git a/src/main/java/com/epam/parso/impl/CharDecompressor.java b/src/main/java/com/epam/parso/impl/CharDecompressor.java old mode 100644 new mode 100755 index 942bb32..e105d8d --- a/src/main/java/com/epam/parso/impl/CharDecompressor.java +++ b/src/main/java/com/epam/parso/impl/CharDecompressor.java @@ -81,6 +81,12 @@ public byte[] decompressRow(int offset, int length, int resultLength, byte[] pag } currentByteIndex += 2; break; + case 0x50: + for (int i = 0; i < endOfFirstByte * 256 + (page[offset + currentByteIndex + 1] & 0xFF) + 17; i++) { + resultByteArray[currentResultArrayIndex++] = 0x40; + } + currentByteIndex++; + break; case 0x60: for (int i = 0; i < endOfFirstByte * 256 + (page[offset + currentByteIndex + 1] & 0xFF) + 17; i++) { resultByteArray[currentResultArrayIndex++] = 0x20; diff --git a/src/main/java/com/epam/parso/impl/SasFileReaderFactoryImpl.java b/src/main/java/com/epam/parso/impl/SasFileReaderFactoryImpl.java new file mode 100644 index 0000000..3bc9c6d --- /dev/null +++ b/src/main/java/com/epam/parso/impl/SasFileReaderFactoryImpl.java @@ -0,0 +1,56 @@ +/** + * + */ +package com.epam.parso.impl; + +import java.io.InputStream; + +import com.epam.parso.SasFileReader; +import com.epam.parso.SasFileReaderFactory; + +/** + * @author Gabor Bakos + * + */ +public class SasFileReaderFactoryImpl implements SasFileReaderFactory { + + /** + * + */ + public SasFileReaderFactoryImpl() { + // TODO Auto-generated constructor stub + } + + /* + * (non-Javadoc) + * + * @see com.epam.parso.SasFileReaderFactory#create(java.io.InputStream) + */ + @Override + public SasFileReader create(final InputStream stream) { + return new SasFileReaderImpl(stream); + } + + /* + * (non-Javadoc) + * + * @see com.epam.parso.SasFileReaderFactory#create(java.io.InputStream, + * java.lang.String) + */ + @Override + public SasFileReader create(final InputStream stream, final String encoding) { + return new SasFileReaderImpl(stream, encoding); + } + + /* + * (non-Javadoc) + * + * @see com.epam.parso.SasFileReaderFactory#create(java.io.InputStream, + * java.lang.Boolean) + */ + @Override + public SasFileReader create(final InputStream stream, final Boolean byteOutput) { + return new SasFileReaderImpl(stream, byteOutput); + } + +} diff --git a/src/main/resources/OSGi-INF/component.xml b/src/main/resources/OSGi-INF/component.xml new file mode 100644 index 0000000..498047d --- /dev/null +++ b/src/main/resources/OSGi-INF/component.xml @@ -0,0 +1,7 @@ + + + + + + +