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 @@
+
+
+
+
+
+
+