@Override public AnalysisResultFuture dispatchJob(final AnalysisJob job, final DistributedJobContext context) throws Exception { // determine endpoint url final int index = context.getJobDivisionIndex(); final String slaveEndpoint = _slaveEndpoints.get(index); // write the job as XML final JaxbJobWriter jobWriter = new JaxbJobWriter(context.getMasterConfiguration()); final ByteArrayOutputStream baos = new ByteArrayOutputStream(); jobWriter.write(job, baos); final byte[] bytes = baos.toByteArray(); // send the request in another thread final List<Throwable> errors = new LinkedList<>(); final String slaveJobUuid = UUID.randomUUID().toString(); final LazyRef<AnalysisResult> resultRef = sendExecuteRequest(slaveEndpoint, bytes, errors, slaveJobUuid); resultRef.requestLoad(errors::add); return new LazyRefAnalysisResultFuture(resultRef, errors) { @Override public void cancel() { sendCancelRequest(slaveEndpoint, slaveJobUuid); } }; }
private void configureJobType(final AnalysisJob analysisJob, final JobType jobType, final boolean includeMetadata) { final BiMap<InputColumn<?>, String> columnMappings = HashBiMap.create(50); configureJobType(analysisJob, jobType, columnMappings, includeMetadata); }
final String columnPathQualification = getColumnPathQualification(datastore, sourceColumns); for (final InputColumn<?> inputColumn : sourceColumns) { final ColumnType jaxbColumn = new ColumnType(); final Column physicalColumn = inputColumn.getPhysicalColumn(); jaxbColumn.setPath(getColumnPath(physicalColumn, columnPathQualification)); jaxbColumn.setId(getColumnId(inputColumn, columnMappings)); addComponents(jobType, analysisJob, columnMappings, transformerMappings, filterMappings, analyzerMappings); addTransformedColumns(columnMappings, transformerMappings); addRequirements(outcomeMappings, transformerMappings, filterMappings, analyzerMappings, columnMappings); addConfiguration(analysisJob, transformerMappings, filterMappings, analyzerMappings, columnMappings);
elementType.getInput().addAll(createInputConfiguration(configuration, configuredProperties, columnMappings, stringConverter)); elementType.setProperties(createPropertyConfiguration(configuration, configuredProperties, stringConverter, job.getMetadataProperties())); elementType.setMetadataProperties(createMetadataProperties(job.getMetadataProperties())); elementType.getInput().addAll(createInputConfiguration(configuration, configuredProperties, columnMappings, stringConverter)); elementType.setProperties(createPropertyConfiguration(configuration, configuredProperties, stringConverter, job.getMetadataProperties())); elementType.setMetadataProperties(createMetadataProperties(job.getMetadataProperties())); .addAll(createInputConfiguration(configuration, escalatingInputProperties, columnMappings, stringConverter, true)); } else { .addAll(createInputConfiguration(configuration, configuredProperties, columnMappings, stringConverter)); createPropertyConfiguration(configuration, configuredProperties, stringConverter, metadataProperties)); elementType.setMetadataProperties(createMetadataProperties(metadataProperties));
final TransformerType transformerType = new TransformerType(); transformerType.setName(transformerJob.getName()); setDescriptor(transformerType, transformerJob.getDescriptor()); addOutputDataStreams(transformerType, transformerJob, columnMappings); final FilterType filterType = new FilterType(); filterType.setName(filterJob.getName()); setDescriptor(filterType, filterJob.getDescriptor()); addOutputDataStreams(filterType, filterJob, columnMappings); final AnalyzerType analyzerType = new AnalyzerType(); analyzerType.setName(analyzerJob.getName()); setDescriptor(analyzerType, analyzerJob.getDescriptor()); addOutputDataStreams(analyzerType, analyzerJob, columnMappings);
stringConverter.serialize(columnValue, property.createCustomConverter())); } else { inputType.setRef(getColumnId(inputColumn, columnMappings));
lastSavedJob.replaceAll("\n", "").replaceAll("<job-metadata>.*</job-metadata>", ""); final JaxbJobWriter writer = new JaxbJobWriter(_configuration); currentOutputStream = new ByteArrayOutputStream(); writer.write(_analysisJobBuilder.toAnalysisJob(false), currentOutputStream); final String currentJob = new String(currentOutputStream.toByteArray()); final String currentJobNoMetadata =
@Override public void write(final AnalysisJob analysisJob, final OutputStream outputStream) { logger.debug("write({},{}}", analysisJob, outputStream); final Job job = new Job(); configureJobType(analysisJob, job, true); try { final Marshaller marshaller = _jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); marshaller.setEventHandler(new JaxbValidationEventHandler()); marshaller.marshal(job, outputStream); } catch (final JAXBException e) { throw new IllegalStateException(e); } }
new JaxbJobWriter(configuration).write(analysisJob, jobWriter); jobWriter.close();
private void addOutputDataStreams(final ComponentType componentType, final ComponentJob componentJob, final BiMap<InputColumn<?>, String> columnMappings) { final OutputDataStreamJob[] outputDataStreamJobs = componentJob.getOutputDataStreamJobs(); for (final OutputDataStreamJob outputDataStreamJob : outputDataStreamJobs) { final OutputDataStreamType outputDataStreamType = new OutputDataStreamType(); outputDataStreamType.setName(outputDataStreamJob.getOutputDataStream().getName()); final JobType childJobType = new JobType(); configureJobType(outputDataStreamJob.getJob(), childJobType, columnMappings, false); outputDataStreamType.setJob(childJobType); componentType.getOutputDataStream().add(outputDataStreamType); } }
final JaxbJobWriter writer = new JaxbJobWriter(_configuration, new JaxbJobMetadataFactoryImpl(author, jobName, jobDescription, jobVersion)); try { outputStream = file.getContent().getOutputStream(); writer.write(analysisJob, outputStream); } catch (final IOException e) { throw new IllegalStateException(e);