Class AbstractMasterDetailProcessor<T extends Context>

    • Constructor Detail

      • AbstractMasterDetailProcessor

        public AbstractMasterDetailProcessor​(RowPlacement rowPlacement,
                                             AbstractObjectListProcessor detailProcessor)
        Creates a MasterDetailProcessor
        Parameters:
        rowPlacement - indication whether the master records are placed in relation its detail records in the input.
        
         Master record (Totals)       Master record (Totals)
          above detail records         under detail records
        
            Totals | 100                 Item   | 60
            Item   | 60                  Item   | 40
            Item   | 40                  Totals | 100
         

        detailProcessor - the ObjectRowListProcessor that processes detail rows.
      • AbstractMasterDetailProcessor

        public AbstractMasterDetailProcessor​(AbstractObjectListProcessor detailProcessor)
        Creates a MasterDetailProcessor assuming master records are positioned above its detail records in the input.
        Parameters:
        detailProcessor - the AbstractObjectListProcessor that processes detail rows.
    • Method Detail

      • processStarted

        public void processStarted​(T context)
        Description copied from interface: Processor
        This method will by invoked by the parser once, when it is ready to start processing the input.
        Specified by:
        processStarted in interface Processor<T extends Context>
        Overrides:
        processStarted in class AbstractObjectProcessor<T extends Context>
        Parameters:
        context - A contextual object with information and controls over the current state of the parsing process
      • rowProcessed

        public final void rowProcessed​(java.lang.String[] row,
                                       T context)
        Invoked by the parser after all values of a valid record have been processed.

        This method will then try to identify whether the given record is a master record.

        If it is, any conversions applied to the fields of the master record will be executed;

        Otherwise, the parsed row will be delegated to the detailProcessor given in the constructor, and a detail record will be associated with the current MasterDetailRecord

        Specified by:
        rowProcessed in interface Processor<T extends Context>
        Overrides:
        rowProcessed in class AbstractObjectProcessor<T extends Context>
        Parameters:
        row - the data extracted by the parser for an individual record.
        context - A contextual object with information and controls over the current state of the parsing process
      • rowProcessed

        public final void rowProcessed​(java.lang.Object[] row,
                                       T context)
        Invoked by the parser after all values of a valid record have been processed and any conversions have been executed.
        Specified by:
        rowProcessed in class AbstractObjectProcessor<T extends Context>
        Parameters:
        row - the data extracted by the parser for an individual record.
        context - A contextual object with information and controls over the current state of the parsing process
      • processRecord

        private void processRecord​(java.lang.Object[] row,
                                   T context)
        Associates individual rows to a MasterDetailRecord and invokes AbstractMasterDetailProcessor#masterDetailRecordProcessed(MasterDetailRecord, T) when it is fully populated.
        Parameters:
        row - a record extracted from the parser that had all (if any) conversions executed and is ready to be sent to the user.
        context - A contextual object with information and controls over the current state of the parsing process
      • processEnded

        public void processEnded​(T context)
        Description copied from interface: Processor
        This method will by invoked by the parser once, after the parsing process stopped and all resources were closed.

        It will always be called by the parser: in case of errors, if the end of the input us reached, or if the user stopped the process manually using Context.stop().

        Specified by:
        processEnded in interface Processor<T extends Context>
        Overrides:
        processEnded in class AbstractObjectProcessor<T extends Context>
        Parameters:
        context - A contextual object with information and controls over the state of the parsing process
      • isMasterRecord

        protected abstract boolean isMasterRecord​(java.lang.String[] row,
                                                  T context)
        Queries whether or not the given row is a master record.
        Parameters:
        row - the data extracted by the parser for an individual record.
        context - A contextual object with information and controls over the current state of the parsing process
        Returns:
        true if the row is a master record, false if it is a detail record.
      • masterDetailRecordProcessed

        protected abstract void masterDetailRecordProcessed​(MasterDetailRecord record,
                                                            T context)
        Invoked by the processor after a master row and all associated detail rows have been processed.
        Parameters:
        record - The master detail records
        context - A contextual object with information and controls over the current state of the parsing process