Skip to content

Commit

Permalink
rearrange code
Browse files Browse the repository at this point in the history
  • Loading branch information
ozlerhakan committed Jan 24, 2017
1 parent 35eff54 commit 7e08070
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 30 deletions.
35 changes: 19 additions & 16 deletions src/main/java/com/poiji/internal/PoiWorkbook.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.poiji.internal;

import com.poiji.exception.InvalidExcelFileExtension;
import com.poiji.exception.PoijiException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
Expand All @@ -12,56 +13,58 @@
*/
public abstract class PoiWorkbook {

protected final PoijiStream poiParser;
private final PoijiStream stream;

private PoiWorkbook(PoijiStream poiParser) {
this.poiParser = poiParser;
private PoiWorkbook(PoijiStream stream) {
this.stream = stream;
}

public abstract Workbook workbook();

static PoiWorkbook workbook(String fileExtension, PoijiStream poiParser) {
public static PoiWorkbook workbook(String fileExtension, PoijiStream stream) {
switch (fileExtension) {
case ".xls":
return new PoiWorkbookHSSH(poiParser);
return new PoiWorkbookHSSH(stream);
case ".xlsx":
return new PoiWorkbookXSSH(poiParser);
return new PoiWorkbookXSSH(stream);
default:
throw new InvalidExcelFileExtension("Invalid file extension (" + fileExtension + "), excepted .xls or .xlsx");
}
}

protected PoijiStream stream() {
return stream;
}

private static class PoiWorkbookXSSH extends PoiWorkbook {

private PoiWorkbookXSSH(PoijiStream poiParser) {
super(poiParser);
private PoiWorkbookXSSH(PoijiStream stream) {
super(stream);
}

@Override
public Workbook workbook() {
try {
return new XSSFWorkbook(poiParser.getFis());
return new XSSFWorkbook(stream().get());
} catch (IOException e) {
throw new RuntimeException(e);
throw new PoijiException("Problem occurred while creating XSSFWorkbook", e);
}
}

}

private static class PoiWorkbookHSSH extends PoiWorkbook {

private PoiWorkbookHSSH(PoijiStream poiParser) {
super(poiParser);
private PoiWorkbookHSSH(PoijiStream stream) {
super(stream);
}

@Override
public Workbook workbook() {
try {
return new HSSFWorkbook(poiParser.getFis());
return new HSSFWorkbook(stream().get());
} catch (IOException e) {
throw new RuntimeException("Problem occurred while creting ");
} catch (NullPointerException e) {
throw new RuntimeException("Problem occurred while cre");
throw new PoijiException("Problem occurred while creating HSSFWorkbook", e);
}
}

Expand Down
3 changes: 1 addition & 2 deletions src/main/java/com/poiji/internal/Poiji.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.poiji.internal.PoijiOptions.PoijiOptionsBuilder;
import com.poiji.internal.marshaller.Deserializer;
import com.poiji.internal.marshaller.Unmarshaller;
import com.poiji.util.Files;

import java.io.File;
Expand Down Expand Up @@ -34,7 +33,7 @@ public static <T> List<T> fromExcel(File file, Class<T> clazz, PoijiOptions opti
private static Deserializer deserializer(File file) throws FileNotFoundException {
final PoijiStream poiParser = new PoijiStream(fileInputStream(file));
final PoiWorkbook workbook = PoiWorkbook.workbook(Files.getExtension(file.getName()), poiParser);
return Unmarshaller.instance(workbook);
return Deserializer.instance(workbook);
}

private static <T> List<T> deserialize(final Class<T> type, final Deserializer unmarshaller) {
Expand Down
14 changes: 9 additions & 5 deletions src/main/java/com/poiji/internal/PoijiStream.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@
*/
class PoijiStream<T extends InputStream> {

private final T fis;
private final T t;

PoijiStream(T fis) {
this.fis = fis;
PoijiStream(T t) {
this.t = t;
}

T getFis() {
return fis;
/**
* the T derived from {@link InputStream}
* @return T
*/
public T get() {
return t;
}
}
5 changes: 5 additions & 0 deletions src/main/java/com/poiji/internal/marshaller/Deserializer.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.poiji.internal.marshaller;

import com.poiji.internal.PoiWorkbook;
import com.poiji.internal.PoijiOptions;

import java.util.List;
Expand All @@ -10,4 +11,8 @@
public interface Deserializer {

<T> List<T> deserialize(Class<T> type, PoijiOptions options);

static Deserializer instance(PoiWorkbook workbook) {
return new Unmarshaller(workbook);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public final class Unmarshaller implements Deserializer {
private final PoiWorkbook poiWorkbook;
private final DataFormatter df = new DataFormatter();

private Unmarshaller(final PoiWorkbook poiWorkbook) {
Unmarshaller(final PoiWorkbook poiWorkbook) {
this.poiWorkbook = poiWorkbook;
}

Expand Down Expand Up @@ -138,8 +138,4 @@ private Object castValue(Class<?> fieldType, String value) {
private boolean skip(final Row currentRow, int skip) {
return currentRow.getRowNum() + 1 <= skip;
}

public static Deserializer instance(PoiWorkbook workbook) {
return new Unmarshaller(workbook);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import java.util.Arrays;
import java.util.List;

import static com.poiji.internal.PoijiOptions.*;
import static com.poiji.internal.PoijiOptions.PoijiOptionsBuilder;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
Expand Down
1 change: 0 additions & 1 deletion src/test/java/com/poiji/deserialize/InheritanceTest.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.poiji.deserialize;

import com.poiji.deserialize.model.Car;
import com.poiji.deserialize.model.Employee;
import com.poiji.deserialize.model.Vehicle;
import com.poiji.internal.Poiji;
import org.junit.Test;
Expand Down

0 comments on commit 7e08070

Please sign in to comment.