Skip to content

Commit 1816847

Browse files
committed
Cleanup: Moved logic from the controller to service
1 parent 1844d57 commit 1816847

File tree

2 files changed

+48
-38
lines changed

2 files changed

+48
-38
lines changed

quick-start/src/main/java/com/marklogic/hub/service/FlowManagerService.java

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,39 @@
44
import java.io.IOException;
55
import java.util.List;
66

7+
import org.codehaus.jettison.json.JSONException;
78
import org.slf4j.Logger;
89
import org.slf4j.LoggerFactory;
910
import org.springframework.batch.core.JobExecution;
1011
import org.springframework.batch.core.JobExecutionListener;
1112
import org.springframework.beans.factory.annotation.Autowired;
1213
import org.springframework.stereotype.Service;
14+
import org.springframework.util.StringUtils;
1315

1416
import com.marklogic.client.DatabaseClient;
1517
import com.marklogic.client.DatabaseClientFactory;
1618
import com.marklogic.client.DatabaseClientFactory.Authentication;
1719
import com.marklogic.client.io.Format;
1820
import com.marklogic.hub.FlowManager;
21+
import com.marklogic.hub.Mlcp;
1922
import com.marklogic.hub.PluginFormat;
23+
import com.marklogic.hub.Mlcp.MlcpSource;
24+
import com.marklogic.hub.Mlcp.SourceOptions;
2025
import com.marklogic.hub.config.EnvironmentConfiguration;
2126
import com.marklogic.hub.exception.FlowManagerException;
2227
import com.marklogic.hub.factory.FlowModelFactory;
2328
import com.marklogic.hub.flow.Flow;
2429
import com.marklogic.hub.flow.FlowType;
2530
import com.marklogic.hub.model.FlowModel;
31+
import com.marklogic.hub.model.FlowOptionsModel;
2632

2733
@Service
2834
public class FlowManagerService {
2935

3036
private static final Logger LOGGER = LoggerFactory
3137
.getLogger(FlowManagerService.class);
38+
39+
private static final String NEW_LINE = "\n";
3240

3341
@Autowired
3442
private EnvironmentConfiguration environmentConfiguration;
@@ -98,4 +106,42 @@ public FlowModel createFlow(String entityName, String flowName,
98106
}
99107
return flowModel;
100108
}
109+
110+
public void loadData(FlowOptionsModel flowOptionsModel) throws IOException, JSONException {
111+
SourceOptions sourceOptions = createSourceOptionsInstance(flowOptionsModel);
112+
Mlcp mlcp = createMlcpInstance(flowOptionsModel,sourceOptions);
113+
mlcp.loadContent();
114+
}
115+
116+
private SourceOptions createSourceOptionsInstance(FlowOptionsModel flowOptionsModel) {
117+
Flow flow = getFlow(flowOptionsModel.getEntityName(), flowOptionsModel.getFlowName());
118+
119+
SourceOptions sourceOptions = new SourceOptions(
120+
flowOptionsModel.getEntityName(), flowOptionsModel.getFlowName(),
121+
FlowType.INPUT.toString(),
122+
flow.getDataFormat());
123+
124+
sourceOptions.setInputFileType(flowOptionsModel.getInputFileType());
125+
sourceOptions.setOtherOptions(flowOptionsModel.getOtherOptions());
126+
127+
return sourceOptions;
128+
}
129+
130+
private Mlcp createMlcpInstance(FlowOptionsModel flowOptionsModel, SourceOptions sourceOptions) throws IOException {
131+
Mlcp mlcp = new Mlcp(
132+
environmentConfiguration.getMLHost()
133+
,Integer.parseInt(environmentConfiguration.getMLStagingRestPort())
134+
,environmentConfiguration.getMLUsername()
135+
,environmentConfiguration.getMLPassword()
136+
);
137+
mlcp.addSourceDirectory(flowOptionsModel.getInputPath(), sourceOptions);
138+
return mlcp;
139+
}
140+
141+
public String buildMlcpConfigContent(FlowOptionsModel flowOptionsModel) throws NumberFormatException, IOException, JSONException {
142+
SourceOptions sourceOptions = createSourceOptionsInstance(flowOptionsModel);
143+
Mlcp mlcp = createMlcpInstance(flowOptionsModel,sourceOptions);
144+
List<String> mlcpOptions = mlcp.getMlcpOptions(new MlcpSource(flowOptionsModel.getInputPath(), sourceOptions));
145+
return StringUtils.collectionToDelimitedString(mlcpOptions, NEW_LINE);
146+
}
101147
}

quick-start/src/main/java/com/marklogic/hub/web/controller/api/FlowApiController.java

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@ public class FlowApiController extends BaseController {
5656

5757
private static final String MLCP_OPTIONS_FILENAME = "mlcpOptions.txt";
5858

59-
private static final String NEW_LINE = "\n";
60-
6159
@Autowired
6260
private EnvironmentConfiguration environmentConfiguration;
6361

@@ -216,9 +214,7 @@ public void cancel(BasicFuture<?> resultFuture) {
216214
@Override
217215
public void run(BasicFuture<?> resultFuture) {
218216
try {
219-
SourceOptions sourceOptions = createSourceOptionsInstance(flowOptionsModel);
220-
Mlcp mlcp = createMlcpInstance(flowOptionsModel,sourceOptions);
221-
mlcp.loadContent();
217+
flowManagerService.loadData(flowOptionsModel);
222218

223219
resultFuture.completed(null);
224220
}
@@ -235,31 +231,6 @@ public void run(BasicFuture<?> resultFuture) {
235231
return taskManagerService.addTask(task);
236232
}
237233

238-
protected Mlcp createMlcpInstance(FlowOptionsModel flowOptionsModel, SourceOptions sourceOptions) throws NumberFormatException, IOException {
239-
Mlcp mlcp = new Mlcp(
240-
environmentConfiguration.getMLHost()
241-
,Integer.parseInt(environmentConfiguration.getMLStagingRestPort())
242-
,environmentConfiguration.getMLUsername()
243-
,environmentConfiguration.getMLPassword()
244-
);
245-
mlcp.addSourceDirectory(flowOptionsModel.getInputPath(), sourceOptions);
246-
return mlcp;
247-
}
248-
249-
protected SourceOptions createSourceOptionsInstance(FlowOptionsModel flowOptionsModel) throws NumberFormatException, IOException {
250-
Flow flow = flowManagerService.getFlow(flowOptionsModel.getEntityName(), flowOptionsModel.getFlowName());
251-
252-
SourceOptions sourceOptions = new SourceOptions(
253-
flowOptionsModel.getEntityName(), flowOptionsModel.getFlowName(),
254-
FlowType.INPUT.toString(),
255-
flow.getDataFormat());
256-
257-
sourceOptions.setInputFileType(flowOptionsModel.getInputFileType());
258-
sourceOptions.setOtherOptions(flowOptionsModel.getOtherOptions());
259-
260-
return sourceOptions;
261-
}
262-
263234
@RequestMapping(value = "/input-path", method = RequestMethod.GET, produces = { MediaType.TEXT_PLAIN_VALUE })
264235
@ResponseBody
265236
public String getPreviousInputPath(HttpServletRequest request) {
@@ -292,7 +263,7 @@ public void runFlowsInParallel(HttpServletRequest request) {
292263

293264
@RequestMapping(value = "/options/download", method = RequestMethod.POST, consumes = { MediaType.APPLICATION_JSON_UTF8_VALUE }, produces = { MediaType.TEXT_PLAIN_VALUE })
294265
public ResponseEntity<InputStreamResource> downloadMlcpConfig(@RequestBody FlowOptionsModel flowOptionsModel) throws IOException, NumberFormatException, JSONException {
295-
String mlcpConfigContent = buildMlcpConfigContent(flowOptionsModel);
266+
String mlcpConfigContent = flowManagerService.buildMlcpConfigContent(flowOptionsModel);
296267
byte[] contentBytes = mlcpConfigContent.getBytes(StandardCharsets.UTF_8);
297268
InputStream inputStream = new ByteArrayInputStream(contentBytes);
298269
HttpHeaders headers = new HttpHeaders();
@@ -306,13 +277,6 @@ public ResponseEntity<InputStreamResource> downloadMlcpConfig(@RequestBody FlowO
306277
.body(new InputStreamResource(inputStream));
307278
}
308279

309-
private String buildMlcpConfigContent(FlowOptionsModel flowOptionsModel) throws NumberFormatException, IOException, JSONException {
310-
SourceOptions sourceOptions = createSourceOptionsInstance(flowOptionsModel);
311-
Mlcp mlcp = createMlcpInstance(flowOptionsModel,sourceOptions);
312-
List<String> mlcpOptions = mlcp.getMlcpOptions(new MlcpSource(flowOptionsModel.getInputPath(), sourceOptions));
313-
return StringUtils.collectionToDelimitedString(mlcpOptions, NEW_LINE);
314-
}
315-
316280
private void addRemoveCachingInHeaders(HttpHeaders headers) {
317281
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
318282
headers.add("Pragma", "no-cache");

0 commit comments

Comments
 (0)