Skip to content

Commit dc78d0c

Browse files
committed
Mica source plugin could be an Initialisable
1 parent 9ea7b9b commit dc78d0c

File tree

5 files changed

+23
-17
lines changed

5 files changed

+23
-17
lines changed

mica-core/src/main/java/org/obiba/mica/core/service/StudyTableSourceServiceRegistry.java

+10-5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.apache.commons.math3.util.Pair;
1717
import org.obiba.magma.NoSuchValueTableException;
1818
import org.obiba.magma.support.Disposables;
19+
import org.obiba.magma.support.Initialisables;
1920
import org.obiba.mica.core.source.ExcelTableSource;
2021
import org.obiba.mica.core.source.OpalTableSource;
2122
import org.obiba.mica.dataset.domain.StudyDataset;
@@ -92,13 +93,13 @@ private StudyTableSource makeStudyTableSourceInternal(StudyTableContext context,
9293
if (OpalTableSource.isFor(source)) {
9394
OpalTableSource tableSource = OpalTableSource.fromURN(source);
9495
tableSource.setStudyTableContext(context);
95-
tableSource.initialise(opalService);
96+
tableSource.setOpalService(opalService);
9697
return tableSource;
9798
}
9899
if (ExcelTableSource.isFor(source)) {
99100
ExcelTableSource tableSource = ExcelTableSource.fromURN(source);
100101
tableSource.setStudyTableContext(context);
101-
tableSource.initialise(new AttachmentStream(context, tableSource.getPath()));
102+
tableSource.setStudyTableFileStreamProvider(new AttachmentStreamProvider(context, tableSource.getPath()));
102103
return tableSource;
103104
}
104105
Optional<StudyTableSourceService> serviceOptional = pluginsService.getStudyTableSourceServices().stream()
@@ -108,20 +109,24 @@ private StudyTableSource makeStudyTableSourceInternal(StudyTableContext context,
108109
tableSource.setStudyTableContext(context);
109110
if (tableSource instanceof StudyTableFileSource) {
110111
StudyTableFileSource fileSource = (StudyTableFileSource)tableSource;
111-
fileSource.initialise(new AttachmentStream(context, fileSource.getPath()));
112+
fileSource.setStudyTableFileStreamProvider(new AttachmentStreamProvider(context, fileSource.getPath()));
112113
}
114+
Initialisables.initialise(tableSource);
113115
return tableSource;
114116
}
115117
throw new NoSuchElementException("Missing study-table-source plugin to handle source: " + source);
116118
}
117119

118120

119-
private class AttachmentStream implements StudyTableFileStream {
121+
/**
122+
* Get the input stream from an {@link AttachmentState} object.
123+
*/
124+
private class AttachmentStreamProvider implements StudyTableFileStreamProvider {
120125

121126
private final StudyTableContext context;
122127
private final String path;
123128

124-
private AttachmentStream(StudyTableContext context, String path) {
129+
private AttachmentStreamProvider(StudyTableContext context, String path) {
125130
this.context = context;
126131
this.path = path;
127132
}

mica-core/src/main/java/org/obiba/mica/core/source/ExcelTableSource.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import org.obiba.magma.support.Initialisables;
1818
import org.obiba.mica.spi.source.AbstractStudyTableSource;
1919
import org.obiba.mica.spi.source.StudyTableFileSource;
20-
import org.obiba.mica.spi.source.StudyTableFileStream;
20+
import org.obiba.mica.spi.source.StudyTableFileStreamProvider;
2121

2222
import javax.validation.constraints.NotNull;
2323
import java.util.List;
@@ -33,7 +33,7 @@ public class ExcelTableSource extends AbstractStudyTableSource implements StudyT
3333

3434
private ExcelDatasource excelDatasource;
3535

36-
private StudyTableFileStream fileStream;
36+
private StudyTableFileStreamProvider fileStreamProvider;
3737

3838
public static boolean isFor(String source) {
3939
if (Strings.isNullOrEmpty(source) || !source.startsWith("urn:file:"))
@@ -84,15 +84,15 @@ public String getURN() {
8484
}
8585

8686
@Override
87-
public void initialise(StudyTableFileStream in) {
88-
this.fileStream = in;
87+
public void setStudyTableFileStreamProvider(StudyTableFileStreamProvider provider) {
88+
this.fileStreamProvider = provider;
8989
// deferred init
9090
this.initialized = false;
9191
}
9292

9393
private void ensureInitialized() {
9494
if (!initialized) {
95-
excelDatasource = new ExcelDatasource(path, fileStream.getInputStream());
95+
excelDatasource = new ExcelDatasource(path, fileStreamProvider.getInputStream());
9696
Initialisables.initialise(excelDatasource);
9797
initialized = true;
9898
}

mica-core/src/main/java/org/obiba/mica/core/source/OpalTableSource.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public static String toTableName(String source) {
117117
return source.replace("urn:opal:", "");
118118
}
119119

120-
public void initialise(OpalService opalService) {
120+
public void setOpalService(OpalService opalService) {
121121
this.opalService = opalService;
122122
this.opalUrl = getContext().getStudy().getOpal();
123123
}

mica-spi/src/main/java/org/obiba/mica/spi/source/StudyTableFileSource.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010

1111
package org.obiba.mica.spi.source;
1212

13-
import java.io.InputStream;
14-
1513
/**
1614
* Study table is to be extracted from a file which path applies to the Mica's internal file system.
1715
*/
@@ -25,10 +23,10 @@ public interface StudyTableFileSource extends StudyTableSource {
2523
String getPath();
2624

2725
/**
28-
* Initialise the source from the given input stream that represents the file content.
26+
* Set the accessor to the input stream that represents the file content.
2927
*
30-
* @param in
28+
* @param provider
3129
*/
32-
void initialise(StudyTableFileStream in);
30+
void setStudyTableFileStreamProvider(StudyTableFileStreamProvider provider);
3331

3432
}

mica-spi/src/main/java/org/obiba/mica/spi/source/StudyTableFileStream.java mica-spi/src/main/java/org/obiba/mica/spi/source/StudyTableFileStreamProvider.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212

1313
import java.io.InputStream;
1414

15-
public interface StudyTableFileStream {
15+
/**
16+
* Define an accessor to a file stream.
17+
*/
18+
public interface StudyTableFileStreamProvider {
1619

1720
/**
1821
* Get the Mica file input stream on demand.

0 commit comments

Comments
 (0)