Skip to content

Releases: walmartlabs/gozer

0.3.4

26 Apr 16:17
Compare
Choose a tag to compare

Quick update to add additional attributes for the REF segment
#143

0.3.3

01 Apr 16:05
Compare
Choose a tag to compare

Quick update to add another method to CheckSum interface
#141

0.3.2

04 Mar 21:23
Compare
Choose a tag to compare

Two issues are fixed in this patch
#140
#137

The following changes affect backward compatibility:

  • With the addition of the N1 segments to the order loop any code relying on unparsed segments to access this data will have to be updated

0.3.1

04 Feb 20:19
Compare
Choose a tag to compare

This was intended as a maintenance release for 0.3.0 however several changes can affect backward compatibility

The following issues were fixed:
#122
#131

The following changes affect backward compatibility:

  • The RetailSellingUnitUtil was removed from the project (#125)
  • the isLoopingValid method was not added to the X12TransactionSetWithLoop interface and was removed from Asn856TransactionSet (#130)
  • the attribute lineNumber was removed from X12ErrorDetail (#133)
  • the attribute message was renamed to issueText on X12ErrorDetail

The following changes were also made:

  • several looping error messages (reported in X12ErrorDetail) were updated so that the issueText was more generic for ease in reporting. Any specific values related to the looping error are now placed in the invalidValue attribute.
  • The getLoopingErrors method was added to new X12TransactionSetWithLoop interface so that it was accessible in a standard way for any Transaction Set that supports loops. Originally it was added directly to the Asn856TransactionSet.
  • there is a new AbstractX12TransactionSetWithLoop that handles implementing X12TransactionSetWithLoop with additional helper methods
  • The README was updated to reflect the latest in Gozer. The sample parsers were updated as well to (hopefully) make usage of Gozer more clear. However, the pages to create parsers and transaction set parsers was deferred to later (#71)
  • Spring 5 as a dependency was removed and replaced w/ Apache Commons
  • The Batch Util was updated

0.3.0

06 Aug 16:08
Compare
Choose a tag to compare

The Choice is Made and the Release has Come!
The long awaited next release of Gozer is finally here!

This release should NOT break backward compatibility with the DEX 894 support. This official release will break backward compatibility with the 0.3.0 milestones (1-6). It is compatible with milestone 8.

ASN Transaction Set Parser
Over the last several milestones the DefaultAsn856TransactionSetParser was added and refined in the Walmart Labs staging environment using production data. This implements #43

Changing the way HL issues are handled
In order to enable users to easily generate an 824 error message when there are looping errors a significant change was made to the GenericTransactionSetParser and the DefaultAsn856TransactionSetParser. Neither of these parsers will throw an X12ParserException when the looping structure of a document is broken (see the X12LoopUtil and #115 ). This is a change starting in milestone 8.

Instead the GenericTransactionSet and the AsnTransactionSet will have new attributes:

  • boolean loopingValid
  • List loopingErrors

When an error in looping occurs then loopingValid will be set to false and all of the issues will be added to the loopingErrors list.

It is expected that after parsing, the code should verify how looping was handled.

StandardX12Document x12 = asnParser.parse(new String(asnBytes));
List<X12TransactionSet> txForGroupOne = x12.getGroups().get(0).getTransactions();
AsnTransactionSet asnTx = (AsnTransactionSet) txForGroupOne.get(0);
if (!asnTx.isLoopingValid()) {
     // handle looping errors
} else {
     // looping ok
}

Generic Transaction Set Parser
A GenericTransactionSet and GenericTransactionSetParser was added. This capability can handle any standard EDI X12 format. However it is generic and only provides the raw data in X12Segment and X12Loop rather than the parsed out objects.

Here is how the ASN parser would allow code to get the shipping id:

String docNumber = asnTx.getShippingIdentifer();

Here is how to do the same thing w/ the generic capability:

X12Segment beginSegment =  txSet. getBeginningSegment();
if (beginSegment.getIdentifier()).equals(“BSN”) {
    String docNumber = beginSegment.getElement(2); 

Access to unparsed segments on Loops
The X12ParsedLoop has a new attribute - a list of unparsedSegments
When an unexpected segment is encountered on a Loop it will be added to this list.

An example:

    private void doTareSegments(X12Segment segment, SegmentIterator segmentIterator, Tare tare) {
        switch (segment.getIdentifier()) {
            case PKGPackaging.IDENTIFIER:
                tare.addPKGPackaging(PKGPackagingParser.parse(segment));
                break;       
            case PALPalletType.IDENTIFIER:
                tare.setPal(PALPalletTypeParser.parse(segment));
                break;
            case MANMarkNumber.IDENTIFIER:
                tare.addMANMarkNumber(MANMarkNumberParser.parse(segment));
                break;                
            default:
                tare.addUnparsedSegment(segment);
                break;
        }
    }

Various changes across the 0.3.0 Milestones
Updated the package structure
The packages were originally organized as follows
*.asn856
*.common
*.po850
*.dex.dex894
*.standard

They are now organized as follows:
*.common
*.dex.dex894
*.standard
*.standard.txset.asn856
*.standard.txset.asn856.loop
*.standard.txset.asn856.segment
*.standard.txset.generic
*.standard.txset.po850

Changes to types of attributes in ASN Segments
Several segments used BigDecimal to capture data elements. These have been switched to a String. This will prevent Gozer from throwing an X12ParserException when a supplier passes a non-numeric value. This will allow users of the framework to check the values and to easily generate an 824 file indicating the problem as well as include the pertinent identifying information for the EDI file and transaction set.

  • SN1ItemDetail
    -- no longer uses BigDecimal for segment data elements
  • TD1CarrierDetail
    -- no longer uses BigDecimal for segment data elements

The ConversionUtil will remain part of Gozer so that applications can use it to convert values to a BigDecimal.

Updated ASN Loops and ASN segments
The primary reason is the following segments have been updated on the ASN loops based on comparison with the various EDI guides used in Walmart

  • Shipment
    -- updated TD1 segment to a List
    -- updated TD5 segment to a List
    -- updated TD3 segment to a List
  • Order
    -- added TD1 segment as a List
  • Tare
    -- updated PKG segment to a List
    -- added PAL segment
    -- updated MAN segment to a List
  • Pack
    -- updated MAN segment to a List
    -- updated TD1 segment to a List
    -- added N1 segment
    -- added PO4 segment
  • Item
    -- added DTM segment as a List
    -- added REF segment as a List
  • N1PartyIdentification
    -- updated N3 segment to a List
    -- added REF segment as a List

0.3.0 Milestone 8

10 May 13:45
Compare
Choose a tag to compare
0.3.0 Milestone 8 Pre-release
Pre-release

This release patches issues #115, #49 and wraps up #43
The biggest change:
Changing the way HL issues are handled
In order to enable users to easily generate an 824 error message when there are looping errors a significant change was made to the GenericTransactionSetParser and the DefaultAsn856TransactionSetParser. Neither of these parsers will throw an X12ParserException when the looping structure of a document is broken (see the X12LoopUtil and #115 ).

Instead the GenericTransactionSet and the AsnTransactionSet will have new attributes:

  • boolean loopingValid
  • List loopingErrors

When an error in looping occurs then loopingValid will be set to false and all of the issues will be added to the loopingErrors list.

It is expected that after parsing, the code should verify how looping was handled.

StandardX12Document x12 = asnParser.parse(new String(asnBytes));
List<X12TransactionSet> txForGroupOne = x12.getGroups().get(0).getTransactions();
AsnTransactionSet asnTx = (AsnTransactionSet) txForGroupOne.get(0);
if (!asnTx.isLoopingValid()) {
     // handle looping errors
} else {
     // looping ok
}

0.3.0 Milestone 7

26 Apr 19:18
Compare
Choose a tag to compare
0.3.0 Milestone 7 Pre-release
Pre-release

This milestone will break backward compatibility with the previous milestones for 0.3.0

Updated ASN Segments
Several segments used BigDecimal to capture data elements. These have been switched to a String. This will prevent Gozer from throwing an X12ParserException when a supplier passes a non-numeric value. This will allow users of the framework to check the values and to easily generate an 824 file indicating the problem as well as include the pertinent identifying information for the EDI file and transaction set.

  • SN1ItemDetail
    -- no longer uses BigDecimal for segment data elements
  • TD1CarrierDetail
    -- no longer uses BigDecimal for segment data elements
  • N1PartyIdentification
    -- updated N3 segment to a List
    -- added REF as a List

The ConversionUtil will remain part of Gozer so that applications can use it to convert values to a BigDecimal.

Updated ASN Loops
The primary reason is the following segments have been updated on the ASN loops based on comparison with the various EDI guides used in Walmart

  • Shipment
    -- updated TD1 segment to a List
    -- updated TD5 segment to a List
    -- updated TD3 segment to a List
  • Order
    -- added TD1 segment as a List
  • Tare
    -- updated PKG segment to a List
    -- added PAL segment
    -- updated MAN segment to a List
  • Pack
    -- updated MAN segment to a List
    -- added N1 segment
    -- added PO4 segment
    -- added TD1 segment as a List
  • Item
    -- added DTM segment as a List
    -- added REF segment as a List

Access to unparsed segments on Loops
The X12ParsedLoop has a new attribute - a list of unparsedSegments
When an unexpected segment is encountered on a Loop it will be added to this list.

An example:

    private void doTareSegments(X12Segment segment, SegmentIterator segmentIterator, Tare tare) {
        switch (segment.getIdentifier()) {
            case PKGPackaging.IDENTIFIER:
                tare.addPKGPackaging(PKGPackagingParser.parse(segment));
                break;       
            case PALPalletType.IDENTIFIER:
                tare.setPal(PALPalletTypeParser.parse(segment));
                break;
            case MANMarkNumber.IDENTIFIER:
                tare.addMANMarkNumber(MANMarkNumberParser.parse(segment));
                break;                
            default:
                tare.addUnparsedSegment(segment);
                break;
        }
    }

0.3.0 Milestone 6

25 Mar 17:53
Compare
Choose a tag to compare
0.3.0 Milestone 6 Pre-release
Pre-release

This milestone release represents the current work on the 0.3.0 version of Gozer

Additions since M4 (there was no M5)

#107

This release is stable and has been heavily tested against Walmart production data

0.3.0 Milestone 4

09 Dec 22:22
Compare
Choose a tag to compare
0.3.0 Milestone 4 Pre-release
Pre-release

This milestone release represents the current work on the 0.3.0 version of Gozer

Additions since M3

#105
#106

This release is stable but is still considered a beta.
It has been released for two reasons:

  • the work that has been done is stable and can be used to start development while we finish things up
  • the Walmart Labs policies currently restrict the ability for the Walmart internal repository (Proximity) to mirror snapshots

0.3.0 Milestone 3

01 Dec 14:30
Compare
Choose a tag to compare
0.3.0 Milestone 3 Pre-release
Pre-release

This milestone release represents the current work on the 0.3.0 version of Gozer

Additions since M2

#103

Important Note:
The TD1 object was using the UnitOfMeasure enum (from DEX). This was changed to a String to align w/ the other objects in the ASN. This will break backward compatibility with the prior M1 and M2 milestone releases as we prepare for the final 0.3.0 release.

This release is stable but is still considered a beta.
It has been released for two reasons:

  • the work that has been done is stable and can be used to start development while we finish things up
  • the Walmart Labs policies currently restrict the ability for the Walmart internal repository (Proximity) to mirror snapshots