@Override protected void customAnalyze( GetXMLDataMeta meta, IMetaverseNode node ) throws MetaverseAnalyzerException { super.customAnalyze( meta, node ); // Add the XPath Loop to the step node node.setProperty( "loopXPath", meta.getLoopXPath() ); }
@Override public void onStart( final LifeEventHandler lifeEventHandler ) throws LifecycleException { // instantiate a new analyzer final ExternalResourceStepAnalyzer analyzer = new JsonOutputAnalyzer(); // construct the external resource consumer for the files that it reads from final IStepExternalResourceConsumer consumer = new JsonOutputExternalResourceConsumer(); analyzer.setExternalResourceConsumer( consumer ); // register the analyzer with PentahoSystem PentahoSystem.registerObject( analyzer ); // register the consumer with PentahoSystem PentahoSystem.registerObject( consumer ); }
@Override public Set<ComponentDerivationRecord> getChangeRecords( GetXMLDataMeta meta ) throws MetaverseAnalyzerException { Set<ComponentDerivationRecord> changes = new HashSet<>(); boolean isInFields = meta.isInFields(); boolean isAFile = meta.getIsAFile(); boolean isAUrl = meta.isReadUrl(); // if we are getting xml from a field, we need to add the "derives" links from the xml to the output fields if ( isInFields && !isAFile && !isAUrl ) { GetXMLDataField[] fields = baseStepMeta.getInputFields(); if ( getInputs() != null ) { Set<StepField> inputFields = getInputs().getFieldNames(); for ( StepField inputField : inputFields ) { if ( inputField.getFieldName().equals( meta.getXMLField() ) ) { // link this to all of the outputs that come from the xml for ( GetXMLDataField field : fields ) { ComponentDerivationRecord change = new ComponentDerivationRecord( meta.getXMLField(), field.getName() ); changes.add( change ); } break; } } } } return changes; }
.loadMappingMeta( baseStepMeta, parentTransMeta.getRepository(), parentTransMeta.getMetaStore(), parentTransMeta ); SubtransAnalyzer<KafkaConsumerInputMeta> subtransAnalyzer = new SubtransAnalyzer<>( this, log ); HashSet<StepField> stepFields = new HashSet<>(); for ( KafkaConsumerField.Name kafkaField : KafkaConsumerField.Name.values() ) { IMetaverseNode inputNode = this.getInputs().findNode( stepField ); String outputName = baseStepMeta.getFieldDefinitions().stream() .filter( kcf -> kcf.getKafkaName().toString().equals( stepField.getFieldName() ) ) .map( KafkaConsumerField::getOutputName ) .findFirst().orElse( "" ); subtransAnalyzer.linkUsedFieldToSubTrans( inputNode, subTransMeta, subTransNode, descriptor, ( fieldName ) -> fieldName.equals( outputName ) );
final IMetaverseNode matchingInjectorFieldNode = getInputs().findNode( injectorStepName, injectotFieldName ); if ( matchingInjectorFieldNode != null ) {
@Override protected Set<StepField> getUsedFields( KafkaProducerOutputMeta meta ) { LinkedHashSet<StepField> usedFields = new LinkedHashSet<>(); Set<String> stepNames = getInputs().getStepNames(); for ( String stepName : stepNames ) { if ( meta.getKeyField() != null ) { usedFields.add( new StepField( stepName, meta.getKeyField() ) ); } if ( meta.getMessageField() != null ) { usedFields.add( new StepField( stepName, meta.getMessageField() ) ); } } return usedFields; }
@Override protected IMetaverseNode createOutputFieldNode( IAnalysisContext context, ValueMetaInterface fieldMeta, String targetStepName, String nodeType ) { IMetaverseNode fieldNode = super.createOutputFieldNode( context, fieldMeta, targetStepName, nodeType ); GetXMLDataField[] fields = baseStepMeta.getInputFields(); for ( GetXMLDataField field : fields ) { if ( fieldMeta.getName().equals( field.getName() ) ) { fieldNode.setProperty( "xpath", Const.NVL( field.getXPath(), "" ) ); fieldNode.setProperty( "element", Const.NVL( field.getElementTypeCode(), "" ) ); fieldNode.setProperty( "resultType", Const.NVL( field.getResultTypeCode(), "" ) ); fieldNode.setProperty( "repeat", field.isRepeated() ); break; } } return fieldNode; }
@Override protected Map<String, RowMetaInterface> getOutputRowMetaInterfaces( KafkaProducerOutputMeta meta ) { Map<String, RowMetaInterface> outputRows = super.getOutputRowMetaInterfaces( meta ); RowMetaInterface topicFields = new RowMeta(); if ( meta.getKeyField() != null ) { topicFields.addValueMeta( new ValueMetaNone( KEY ) ); } if ( meta.getMessageField() != null ) { topicFields.addValueMeta( new ValueMetaNone( MESSAGE ) ); } outputRows.put( RESOURCE, topicFields ); return outputRows; }
@Override protected void customAnalyze( XMLOutputMeta meta, IMetaverseNode node ) throws MetaverseAnalyzerException { super.customAnalyze( meta, node ); node.setProperty( "parentnode", meta.getMainElement() ); node.setProperty( "rownode", meta.getRepeatElement() ); }
@Override public Set<ComponentDerivationRecord> getChangeRecords( KafkaProducerOutputMeta meta ) { LinkedHashSet<ComponentDerivationRecord> changes = new LinkedHashSet<>(); Set<String> stepNames = getInputs().getStepNames(); for ( String stepName : stepNames ) { changes.add( new ComponentDerivationRecord( new StepField( stepName, meta.getKeyField() ), new StepField( RESOURCE, KEY ) ) ); changes.add( new ComponentDerivationRecord( new StepField( stepName, meta.getMessageField() ), new StepField( RESOURCE, MESSAGE ) ) ); } return changes; }
@Override protected void customAnalyze( final JsonOutputMeta meta, final IMetaverseNode rootNode ) throws MetaverseAnalyzerException { super.customAnalyze( meta, rootNode ); rootNode.setProperty( "isFileAppended", meta.isFileAppended() ); rootNode.setProperty( "passDataToServletOutput", meta.passDataToServletOutput() ); rootNode.setProperty( "addToResult", meta.AddToResult() ); rootNode.setProperty( "jsonBloc", meta.getJsonBloc() ); rootNode.setProperty( "operationType", meta.getOperationType() ); if ( !StringUtils.isBlank( meta.getOutputValue() ) ) { rootNode.setProperty( "outputValue", meta.getOutputValue() ); } }
@Override protected void customAnalyze( final JsonInputMeta meta, final IMetaverseNode rootNode ) throws MetaverseAnalyzerException { super.customAnalyze( meta, rootNode ); if ( meta.isAcceptingFilenames() ) { rootNode.setProperty( "sourceField", meta.getAcceptingField() ); rootNode.setProperty( "sourceFieldIsFile", meta.getIsAFile() ); rootNode.setProperty( "sourceFieldIsUrl", meta.isReadUrl() ); rootNode.setProperty( "removeSourceField", meta.isRemoveSourceField() ); } else { rootNode.setProperty( "fileDirName", meta.getFilenameField() ); } }