Class TransposePathElement

  • All Implemented Interfaces:
    EvaluatablePathElement, MatchablePathElement, PathElement

    public class TransposePathElement
    extends BasePathElement
    implements MatchablePathElement, EvaluatablePathElement
    This PathElement is used by Shiftr to Transpose data. It can be used on the Left and Right hand sides of the spec. Input { "author" : "Stephen Hawking", "book" : "A Brief History of Time" } Wanted { "Stephen Hawking" : "A Brief History of Time" } The first part of the process is to allow a CompositeShiftr node to look down the input JSON tree. Spec { "@author" : "@book" } Secondly, we can look up the tree, and come down a different path to locate data. For example of this see the following ShiftrUnit tests : LHS Lookup : json/shiftr/filterParents.json RHS Lookup : json/shiftr/transposeComplex6_rhs-complex-at.json CanonicalForm Expansion Sugar "@2 -> "@(2,) "@(2) -> "@(2,) "@author" -> "@(0,author)" "@(author)" -> "@(0,author)" Splenda "@(a.b)" -> "@(0,a.b)" "@(a.&2.c)" -> "@(0,a.&(2,0).c)"
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private TransposePathElement​(java.lang.String originalKey, int upLevel, java.lang.String subPath)
      Private constructor used after parsing is done.
    • Field Detail

      • upLevel

        private final int upLevel
      • canonicalForm

        private final java.lang.String canonicalForm
    • Constructor Detail

      • TransposePathElement

        private TransposePathElement​(java.lang.String originalKey,
                                     int upLevel,
                                     java.lang.String subPath)
        Private constructor used after parsing is done.
        Parameters:
        originalKey - for reference
        upLevel - How far up the tree to go
        subPath - Where to go down the tree
    • Method Detail

      • parse

        public static TransposePathElement parse​(java.lang.String key)
        Parse a text value from a Spec, into a TransposePathElement.
        Parameters:
        key - rawKey from a Jolt Spec file
        Returns:
        a TransposePathElement
      • innerParse

        private static TransposePathElement innerParse​(java.lang.String originalKey,
                                                       java.lang.String meat)
        Parse the core of the TransposePathElement key, once basic errors have been checked and syntax has been handled.
        Parameters:
        originalKey - The original text for reference.
        meat - The string to actually parse into a TransposePathElement
        Returns:
        TransposePathElement
      • objectEvaluate

        public Optional<java.lang.Object> objectEvaluate​(WalkedPath walkedPath)
        This method is used when the TransposePathElement is used on the LFH as data. Aka, normal "evaluate" returns either a Number or a String.
        Parameters:
        walkedPath - WalkedPath to evaluate against
        Returns:
        The data specified by this TransposePathElement.
      • evaluate

        public java.lang.String evaluate​(WalkedPath walkedPath)
        Description copied from interface: EvaluatablePathElement
        Evaluate this key as if it is an write path element.
        Specified by:
        evaluate in interface EvaluatablePathElement
        Parameters:
        walkedPath - "up the tree" list of LiteralPathElements, that may be used by this key as it is computing
        Returns:
        String path element to use for write tree building
      • match

        public MatchedElement match​(java.lang.String dataKey,
                                    WalkedPath walkedPath)
        Description copied from interface: MatchablePathElement
        See if this PathElement matches the given dataKey. If it does not match, this method returns null. If this PathElement does match, it returns a LiteralPathElement with subKeys filled in.
        Specified by:
        match in interface MatchablePathElement
        Parameters:
        dataKey - String key value from the input data
        walkedPath - "up the tree" list of LiteralPathElements, that may be used by this key as it is computing its match
        Returns:
        null or a matched LiteralPathElement
      • getCanonicalForm

        public java.lang.String getCanonicalForm()
        Description copied from interface: PathElement
        Get the canonical form of this PathElement. Really only interesting for the Reference Path element, where it will expand "&" to "&0(0)".
        Specified by:
        getCanonicalForm in interface PathElement
        Returns:
        canonical String version of this PathElement